PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : NPC zu variablen punkten bewegen lassen



biogemmacorporation
28.06.2004, 03:20
hi

ich hätte gern, dass sich ein NPC von einem variablen standpunkt (x/y pos tu ich berechnen) zu:
1. einem festen punkt begibt
2: zu einem anderen variablen punkt begibt.

beispiel: wenn es regnet, sollen sich frei bewegende karnickel in die schäune begeben.

is ja klar, dass ich von den kanninchen die variablen x/y coordinaten berrechnen muß. Von der Stelle in der SChäune auch. Und ich muß noch den berührpunkt ausmachen, was dann halt passiert, wenn sie an der stelle sind. Aber wie bewegen sie sich selbständig dort hin?

DAnke für hilfe, gruß

Dhan
28.06.2004, 03:51
parallel process,
xe = eigene xkoords
ye = eigene ykoords
xz = ziel xkoords
yz = ziel xkoords
fork (xe > xz)
{ move event step left }
fork (xe < xz)
{ move event step right }
fork (ye > yz)
{ move event step up }
fork (ye < yz)
{ move event step down }
wait 0,0

das wars auch scho im prinzip (du kannst es noch erweitern dass er schräg läuft bzw ein auf x eins auf y, so läuft er 2 geraden wenns keine hindernisse gibt)

Dr.Brain
29.06.2004, 03:04
Das Problem ist nur, wenn es doch Hindernisse gibt, hängt
sich dein Spiel auf!
Man müsste ein System bauen das erkennt ob ein hinderniss da is oder nicht. Machbar! Denn man kann die Koordinaten des Hindernisses speichern und wenn das Event davor läuft nen extra ausweich case einbauen. Problem: is recht kompliziert und muss an jede map angepasst werden.(In einem Taktik Ks aber notwendig)

Dhan
29.06.2004, 03:32
lol, natürlich mit "Ignore if can´t be moved" aktiviert ^^

biogemmacorporation
29.06.2004, 23:33
oh, ich hab da ein paar ideen, die sind echt geil. Ich werd alles daran setzten, sie umzusetzten ;-)

eine frage noch:

THEORETISCH müsste es doch möglich sein, eine KI zu erschaffen, die einfach perfekt ist. Hindernissen automatisch ausweichen, Gegenstände benutzen (z.B. ein fass wegrollen) oder dass sich ein npc selbstständig verbarikadiert.
ja ja, natürlich sehr kompliziert, aber möglich?
ich probiers...

Dr.Brain
30.06.2004, 00:35
Njo, schon machbar...eben sau kompliziert!

Dhan
30.06.2004, 01:58
Das wär dann schon ziemlich tiefes Scripting, ich würds net so ohne weiteres machen... da isses sinnvoller, die Gegend in einzelne Areale aufzuteilen mit jeweils einem zentralen Waypoint und wenn die NPCs irgendwohin wollen, gehen sie über die Waypoints bis ins richtige Areal... wenn 2 Waypoint in einer nahen Luftlinie keine direkte Verbindung haben, muss man jedem Waypoint einen Variable für die Wegmöglichkeiten geben

MagiC.SpAwN
30.06.2004, 03:40
das erinnert mich an einen typen der wollte ein fussball spiel mit eigener ki auf dem maker erstellen. Ich denke sowas ist ungefähr so kompliziert wie ein 3D Spiel makern

Wipeout
30.06.2004, 03:44
3D spiele an sich zu proggen is net schwer ;) schwierig ist nur die KI und die Kollisionsprogrammierung

Dhan
30.06.2004, 03:51
Wipe, ich denk mal, er meint mit Engine selbst basteln

Dr.Brain
30.06.2004, 22:27
Also das würd ich mal vergessen...wir phantasieren ja nur...
machbar wärs nur theoretisch.

biogemmacorporation
30.06.2004, 23:01
naja ,so schwer is es nun auch wieder nicht.

z.B. kann ich sagen, dass in meinem spiel eine gegnerspezies außen am fenster vorbei laufen kann (man sieht nur shilouette), und wenn sie das gesicht nach innen drehen und den held sehen, durchs fenster springen. Auch hab ich bereits geschafft, dass sich der held in räumen verbarrikadieren kann (kisten vor tür schieben etc...). Entweder schlagen "dumme" zombies sinnlos auf die tür ein (manchmal bricht sie dann auf) oder sie suchen sich einen anderen weg - ohne skripts.
Eine Kreatur kann sich in nebel auflösen und den helden FAST überall hin verfolgen - und sich in organischem gewebe (z.B. bärenfell auf dem boden) "festsetzten" und dann so angreifen. Das hab ich auch schon geschafft.
Problem war bisher immer nur, wie ich ein gegner auf variable ziele bewegen kann. Jetzt hab ich´s drauf.

Aber ich will noch weiter: Z.B. wenn der held eine granate wirft, und von einem feinlichen agenten gesehen wird, soll dieser die granate aufheben und zurückwerfen.
DAran arbeite ich bereits.

oh das wird geil - für euch.

Manni
01.07.2004, 20:24
Hier (http://forum.rpg-ring.com/forum/showthread.php?s=&threadid=30960&highlight=Kollision) ist mein bescheidener Beitrag dazu. Mein Kollisionserkennungsscript...

Manni

one-cool
01.07.2004, 21:42
Original geschrieben von MagiC.SpAwN
das erinnert mich an einen typen der wollte ein fussball spiel mit eigener ki auf dem maker erstellen. Ich denke sowas ist ungefähr so kompliziert wie ein 3D Spiel makern
Öhm, da gibt es sogar ein skript...
Und allzu unübersichtlich fnide ich es gar nicht oô
Wenn du das Skript willst, such ich es dir, spontan hab ich es net zur Hand

CapSeb
01.07.2004, 22:06
@Manni:
Echt gut gescriptet, mein Lob :D .
Nur man sieht, dass es bei Escape Ladezeiten gibt (bei mir zumindest).
Eine andere Methode ohne "Tester" ergibt sich, wenn man mit dem Befehl "Set Terrain ID..." arbeitet. Dabei wird die Beschaffenheit des Terrains abgefragt die unter Chipset (Database) festgelegt wird. Das ganze basiert dann ebenfalls auf "Hero-Position +- 1 Feld" und damit indirekt auf einem "Tester" (halt kein unsichtbarer Chara, sondern nur die Variablen).
Also Manni: Rann an die Arbeit :D .

Noch 'ne Frage zum Schluss:
Warum hast du neun gecallte Events erstellt und die Position der Picture per definierter Koordinate ("Position") bestimmt. Mit "By Variable" wär's doch um einiges kürzer gewesen!?
---------
@one-cool:
Wozu gibt's jetzt ein Script: Fußball oder 3D? Zu 3D such ich das nämlich schon die ganze Zeit!

Timmy
01.07.2004, 22:11
Original geschrieben von CapSeb
Eine andere Methode ohne "Tester" ergibt sich, wenn man mit dem Befehl "Set Terrain ID..." arbeitet. Dabei wird die Beschaffenheit des Terrains abgefragt die unter Chipset (Database) festgelegt wird. Das ganze basiert dann ebenfalls auf "Hero-Position +- 1 Feld" und damit indirekt auf einem "Tester" (halt kein unsichtbarer Chara, sondern nur die Variablen).


Allerdings, die gibt es, und ich bin mir auch ziemlich sicher, dass Manni sich dieser Methode bewusst war, nur gibt es dabei den Nachteil, dass man nur den Lower Tiles Terrain ID's zuweisen kann, d.h. die Abfrage würde auf Upper Tiles oder Events, die eigentlich unpassierbar sind nicht reagieren. ^ ^

one-cool
01.07.2004, 22:15
Original geschrieben von CapSeb
@one-cool:
Wozu gibt's jetzt ein Script: Fußball oder 3D? Zu 3D such ich das nämlich schon die ganze Zeit!
fussball

3D gibt es bisher nur so vorgeschaukelte Bilder, nicht mehr...
Kommt darauf an, was du als 3D haben willst, also wie...

CapSeb
01.07.2004, 22:38
@Timmy:
Jo, das stimmt.
Aber Events zu benutzen macht nur Sinn, wenn sich diese auch bewegen und dann ändern sich die begehbaren Felder sowieso, was dazu führt, dass eine längere Ladezeit den selben Effekt hat wie eine erneute "Kolisionsabfrage".
Das mit dem Upper-Layer hängt vom Chipset ab...

Ich will damit jetzt nicht sagen, dass es nur eine wahre Methode ( :p ) gibt, sondern zwei (oder sogar noch mehr?), die verschiedene Vor- und Nachteile haben.

Dr.Brain
01.07.2004, 23:43
Ich hab nochmal ne Frage...(an dhan)
Wenn ich jetzt alles wie besprochen machen würde...
und dann der Fall ignore if cant be moved
eintreten würde, mit was ner fork soll da bitte was anderes aktiviert werden?
Das geht meines Wissens doch gar nicht...oder???