Gamestudio Links
Zorro Links
Newest Posts
Blobsculptor tools and objects download here
by NeoDumont. 03/28/24 03:01
Issue with Multi-Core WFO Training
by aliswee. 03/24/24 20:20
Why Zorro supports up to 72 cores?
by Edgar_Herrera. 03/23/24 21:41
Zorro Trader GPT
by TipmyPip. 03/06/24 09:27
VSCode instead of SED
by 3run. 03/01/24 19:06
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
2 registered members (AndrewAMD, Imhotep), 567 guests, and 4 spiders.
Key: Admin, Global Mod, Mod
Newest Members
sakolin, rajesh7827, juergen_wue, NITRO_FOREVER, jack0roses
19043 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Wegfindung per WED Pfade #402741
06/09/12 18:40
06/09/12 18:40
Joined: Apr 2006
Posts: 273
Germany, NRW
Meerkat Offline OP
Member
Meerkat  Offline OP
Member

Joined: Apr 2006
Posts: 273
Germany, NRW
Hallo liebe Community,

ich bin mir nicht sicher ob ich einen Bug gefunden habe oder aber es einfach nur einen dicken Logikfehler habe im Code. Und zwar möchte ich mit diesem Code das eine Entity einem mit WED gesetzten Pfad folgt. Hier ist der Code:

Code:
VECTOR Temp_var;
var AIReichweite;

action GegnerAI()
{
	while(!player){wait(1);} //warte bis Spieler da ist!
	
	my.skill4 = 1; //Aktueller Wegpunkt!
	path_set(my, "path_000");
	path_getnode(my,my.skill4,Temp_var,NULL);
	
	while(1)
	{
		my.skill3 = c_trace(my.x,Temp_var, IGNORE_ME | USE_POLYGON);
		AIReichweite = my.skill3; //Globale Variable um zu sehen ob die Reichweitenmessung funktioniert!
		
		if(my.skill3 > 30) //skill3 = Reichweite bis zum nächsten Wegpunkt!
		{
			path_getnode(my,my.skill4,Temp_var,NULL);
			vec_sub(Temp_var, my.x);
			vec_to_angle(my.pan,Temp_var);
			
			c_move(my, vector(3*time_step,0,0), nullvector, GLIDE);
		}
		else
		{
			my.skill4 += 1; //Wenn Wegpunkt erreicht, setze nächsten!
		}
		wait(1);
	}
	return;
}



Ich warte erstmal mit der AI bis der Spieler im Level erstellt worden ist. Dann setz ich mit Skill4 den anzupeilenden Wegpunkt. Mit Path_Set setze ich die AI auf eine Route von WED und sage mit Path_Getnode das ich die erste Position von der Node in dem vordefinierten Vector gespeichert haben will. Per C_Trace möchte ich dann prüfen wie weit die AI vom Wegpunkt entfernt ist damit ich damit bestimmen kann ab welcher Entfernung auf den nächsten Wegpunkt umgesprungen wird. Das ist meine Theorie und in der Praxis sollte das auch funktionieren. Ich habe jedoch die Feststellung gemacht das sich die AI keinen Meter bewegt. Der Tracewert ist "0"! Lasse ich jedoch eine Temporäre Entity an der Nodeposition erscheinen und lasse diese antracen, dann funktioniert die Reichweitenmessung. Warum ist das so? Ist das ein Bug oder mache ich wie gesagt einen Fehler? Immerhin denke ich das in Temp_var ja die Position von der ersten Node gespeichert ist und das antracebar sein sollte. Ich arbeite derzeit wieder mit der A7. Wenn da jemand eine Lösung weiss oder was ich halt falsch mach, bitte gebt mir einen Ratschlag bzw. Tip.


MfG

Meerkat Laru


http://www.gpi-studios.com

OS: Windows 7 Home Premium (64 Bit Version)
AMD Athlon 64 X2 Dual Core Processor 5200+
6gb DDR 2 - RAM
NVIDIA GeForce GTX 460
GameStudio Version A8 Commercial
Re: Wegfindung per WED Pfade [Re: Meerkat] #402748
06/09/12 19:12
06/09/12 19:12
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline
Senior Expert
Superku  Offline
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Quote:
Per C_Trace möchte ich dann prüfen wie weit die AI vom Wegpunkt entfernt ist damit ich damit bestimmen kann ab welcher Entfernung auf den nächsten Wegpunkt umgesprungen wird. Das ist meine Theorie und in der Praxis sollte das auch funktionieren.

Das ist leider eine schlechte und sehr langsame Lösung, benutze doch einfach vec_dist(), um Distanzen zu bestimmen.
Wie du dem Manual entnehmen kannst, liefert c_trace nur dann einen Wert größer 0 zurück, wenn etwas getroffen worden ist. Sonst ist der Rückgabewert 0.

EDIT: Übrigens, wenn du nah genug am Ziel bist und den Node-Skill erhöhst, musst du natürlich auch deinen Ziel-Vektor (temp_var) neu setzen.

Last edited by Superku; 06/09/12 19:13.

"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends
Re: Wegfindung per WED Pfade [Re: Superku] #402750
06/09/12 19:49
06/09/12 19:49
Joined: Apr 2006
Posts: 273
Germany, NRW
Meerkat Offline OP
Member
Meerkat  Offline OP
Member

Joined: Apr 2006
Posts: 273
Germany, NRW
Ah ok, danke. Werd ich nachher mal probieren. Ich bin neu im Gebiet des Pathfinding. ^^

Edit: Templates will ich nicht benutzen da ich es von Grund auf neu lernen möchte damit ich es besser verstehe. laugh

Edit2: Okay ich bin verwirrt. Auf der 1. Hälfte der Strecke zählt er normal runter, ab der 2. Hälfte zählt er wieder hoch??? Und dabei erreicht er nichtmal die "0" sondern schnellt bei ca. 320 wieder hoch. Wasn das? Heißt ergo ich kann immer noch nicht prüfen wann er den Wegpunkt erreicht. Dabei mache ich das schon mit "my.skill3 = vec_dist(Temp_var, my.x);". ^^

Letzter Edit:

Ich hab es ans laufen bekommen. Gott was bin ich happy. ^^

Last edited by Meerkat; 06/09/12 21:10.

http://www.gpi-studios.com

OS: Windows 7 Home Premium (64 Bit Version)
AMD Athlon 64 X2 Dual Core Processor 5200+
6gb DDR 2 - RAM
NVIDIA GeForce GTX 460
GameStudio Version A8 Commercial

Moderated by  HeelX, Spirit 

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