Gamestudio Links
Zorro Links
Newest Posts
Data from CSV not parsed correctly
by dr_panther. 05/06/24 18:50
Help with plotting multiple ZigZag
by degenerate_762. 04/30/24 23:23
M1 Oversampling
by 11honza11. 04/30/24 08:16
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
1 registered members (AndrewAMD), 1,135 guests, and 2 spiders.
Key: Admin, Global Mod, Mod
Newest Members
firatv, wandaluciaia, Mega_Rod, EternallyCurious, howardR
19050 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
AI - in Deckung gehen klappt nicht !! #141309
07/15/07 21:55
07/15/07 21:55
Joined: Jan 2006
Posts: 168
Germany, Hannover
DexLoomer Offline OP
Member
DexLoomer  Offline OP
Member

Joined: Jan 2006
Posts: 168
Germany, Hannover
Hallo Leute,
ich versuche eine Gegner-Ai, nach dem Tutorial aus dem 3DGS-Magazin zu scripten, die in Deckung geht wenn sie getroffen wird. Leider fuktioniert das ganze noch nicht sauber..
Zum einen werden die Zielpunkte nicht immer richtig gesetzt, zum anderen "hängen" die meissten Gegner fest und "flackern" sobald sie ihren Zielpunkt erreichen!
Hier der entsprechende Codeteil:

Code:
  
.
.
.
// MY.action_state=4: ENEMIE SUCHT DECKUNG
while (my.action_state == 4)
{
if (my.hint_counter <= 360)
{
my.hint_counter += 36;
temp.x = my.x + fsin(my.hint_counter, 300);
temp.y = my.y + fcos(my.hint_counter, 300);
temp.z = my.z;

c_trace(my.x, temp.x, Ignore_me | Ignore_passable);
result = c_trace(target.x, plBiped01_entity.x, Ignore_me | Ignore_passable);

if((result != 0) && (you != plBiped01_entity))
{
My.move_pos_x = target.x;
My.move_pos_y = target.y;
My.move_pos_z = my.z;

while(1)
{
ent_animate(me, "Run", my.skill46, ANM_CYCLE);
my.skill46 += 10 * time_step;
vec_set (temp.x, my.move_pos_x);
vec_sub (temp.x, my.x);
vec_to_angle (my.pan, temp);
my.tilt = 0;
my.skill53 = 20 * time_step;
my.skill54 = 0;
my.skill55 = 0;
result = c_move (my, my.skill53, nullvector, ignore_passable | glide);

if ((result < (0.5 * my.skill53 * time_step)) || (vec_dist(my.x, My.move_pos_x) < 20))
{
my.action_state = 0;
break;
}
wait (1);
}
}
}
else
{
my.hint_counter = 0;
}
wait(1);
}
.
.
.



Weiss jemand Hilfe oder hat einen Tip? Auch würde ich mich über einen anderen Ansatz freuen, die Gegner Deckung suchen zu lassen...
Dex


A8-Com-v 8.47.1
Re: AI - in Deckung gehen klappt nicht !! [Re: DexLoomer] #141310
07/16/07 08:19
07/16/07 08:19
Joined: Jun 2006
Posts: 2,640
Earth
Germanunkol Offline
Expert
Germanunkol  Offline
Expert

Joined: Jun 2006
Posts: 2,640
Earth
if ((result < (0.5 * my.skill53 * time_step)) || (vec_dist(my.x, My.move_pos_x) < 20))
um das flackern zu verhindern könntest du versuchen, hier die 0.5 größer zu machen. zum beispiel 2.0 oder so...


~"I never let school interfere with my education"~
-Mark Twain
Re: AI - in Deckung gehen klappt nicht !! [Re: Germanunkol] #141311
07/16/07 13:54
07/16/07 13:54
Joined: Jan 2006
Posts: 168
Germany, Hannover
DexLoomer Offline OP
Member
DexLoomer  Offline OP
Member

Joined: Jan 2006
Posts: 168
Germany, Hannover
Hi Germanunkol,
leider hilft auch das erhöhen des 0.5 Wertes nicht weiter!
Was ich festgestellt habe ist, dass in der zweiten Hälfte der Zeile
... || (vec_dist(my.x, My.move_pos_x) < 20)) es Probleme gibt!
Auch wenn ich die ..<20 erhöhe, scheint die Distanz nie drunter zu kommen.
Als ob der Gegner den Zielpunkt nicht erreicht!


A8-Com-v 8.47.1
Re: AI - in Deckung gehen klappt nicht !! [Re: DexLoomer] #141312
07/16/07 19:16
07/16/07 19:16
Joined: Apr 2007
Posts: 582
Germany
Poison Offline
User
Poison  Offline
User

Joined: Apr 2007
Posts: 582
Germany
da hast du dier jetyt etwas schweres aus gesucht habs auch mal probiert es klappt aber der gegner fliegt weg falls er aufsteht in deinem fall kann ich dir sagen warum der gegner ist an dem punkt angelangt aber dabei ist er immer in bewegung und kann den punkt nicht richtig bestimmen deswegen flackert es das ist kein kollision fall es hatt etwas mit der distans vom gegner yu seinem punkt zu tun also lass dir etwas einfallen denn von fehlern wird man um 100 royent schlauer in dieser branche, ich kenn mich aus glaubs mir.


Everything is possible, just Do it!
Re: AI - in Deckung gehen klappt nicht !! [Re: Poison] #141313
07/16/07 20:38
07/16/07 20:38
Joined: Jan 2006
Posts: 168
Germany, Hannover
DexLoomer Offline OP
Member
DexLoomer  Offline OP
Member

Joined: Jan 2006
Posts: 168
Germany, Hannover
Yap, ist zum verückt werden!!
Ich hänge nun schon seit Wochen daran, meiner AI Deckungsverhalten beizubringen und nichts klappt! Bin schon drauf und dran alles hinzuschissen...
Ich hab schon sämtliche AUM´s durchsucht, weil ich gehofft hatte, dort einen Anderen CodeSchnipsel zu finden, um die Gegner ausweichen oder Deckung suchen zu lassen. Ich bin halt Grafiker und kein Programmierer


A8-Com-v 8.47.1
Re: AI - in Deckung gehen klappt nicht !! [Re: DexLoomer] #141314
07/16/07 22:22
07/16/07 22:22
Joined: Jan 2006
Posts: 168
Germany, Hannover
DexLoomer Offline OP
Member
DexLoomer  Offline OP
Member

Joined: Jan 2006
Posts: 168
Germany, Hannover
Wo ich gerade dabei bin...
Ich versuche gerade den Gegner nur ein kleines Stück nach links oder rechts (random!) ausweichen zu lassen. Dabei soll dieser aber immer noch zum Player ausgerichtet bleiben, nur eine seitliche Walk-Anim abspielen.
Im Moment bewegt der Gegner sich immer auf der selben Achse, egal von wo der Player kommt! Weiss jemand wie man so etwas geht??
Code:
  
while (my.action_state == 5)
{ var zufall;
var w_counter = 0;
zufall = int(random(2));
while ( w_counter <= 50 )
{ w_counter += 1;
if (zufall == 0)
{my.y += 3;}
else
{my.y -= 3;}
temp.x = my.x;
temp.y = my.y;
temp.z = my.z;
ent_animate(me, "Run", my.skill46, ANM_CYCLE);
my.skill46 += 10 * time_step;
animation speed
vec_set (temp.x, my.move_pos_x);
vec_sub (temp.x, my.x);
vec_to_angle (my.pan, temp);
my.tilt = 0;
//my.skill53 = 1 * time_step;
my.skill54 = 0;
my.skill55 = 0;
result = c_move (my, my.skill53, nullvector, ignore_passable | glide);
if (result < (0.5 * my.skill53 * time_step))
{ my.action_state = 0; //Position erreicht!!
break;
}
wait (1);
}
my.action_state = 0;
wait(1);
}




A8-Com-v 8.47.1
Re: AI - in Deckung gehen klappt nicht !! [Re: DexLoomer] #141315
07/17/07 11:47
07/17/07 11:47
Joined: Jan 2006
Posts: 168
Germany, Hannover
DexLoomer Offline OP
Member
DexLoomer  Offline OP
Member

Joined: Jan 2006
Posts: 168
Germany, Hannover
Habe das Problem mit dem Ausweichen nach Links/Rechts gelöst!
Fehlt nur noch ein bischen finetuning!

Code:
  

while (my.action_state == 5)
{
var zufall;
var w_counter = 0;

//check_state(); // Zustand wird überprüft
//if (my.action_state != 5) {break;}

zufall = int(random(2));

while ( w_counter <= 50 )
{
w_counter += 1;

my.speed_x = 0; // Nach Links oder rechts Strafen
my.speed_y = 0;

if(zufall == 0)
{
my.speed_y = 10;
}
else
{
my.speed_y = -10;
}

my.tilt = 0;
if(my.speed_y != 0)
{
c_move(my,
vector(my.speed_x * time,my.speed_y * time,0),
vector(0,0,my.speed_z * time),
ignore_passable + glide);
}
wait(1);

ent_animate(my,"run",my.skill46,ANM_CYCLE);
my.skill46 = (my.skill46 + 6 * time) % 100;

}
my.action_state = 0; //Position erreicht!!

wait(1);
}




Leider hänge ich bei der Sache mit der Deckungssuche, noch immer fest ...
Hat nicht irgend Jemand eine Idee???


A8-Com-v 8.47.1

Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1