Obwohl das eig. in der Hazarddoku schon sehr gut dokumentiert ist schreibe ich auf Wunsch eines Users dieses Tutorial.
Vorbereitungen Nun, um Bots in ne Map einzufügen, was braucht man da? Natürlich eine Map. Ich hab mir mal so eine einfache Map gemacht: (etwas verkleinert) Dein Szenario sollte als Vorgabe natürlich Hazard.c4d drinnenhaben und als Regel "Regelwahl" drinnenhaben.
Das Wegpunktenetz
Dannach startet ihr euer Szenario OHNE Spieler und navigiert im Editor zum Waypoint Objekt. Hier: Um Bots einzufügen braucht man nähmlich diese "Wegpunkte". Die Hazardbots orientieren sich an diesem Netz von Punkten. Jetzt geht ihr wieder zu eurem Szen zurück und tippt erstmal ins Enginefenster "WaypointsVisible(1)" und drückt enter. Achtet darauf das es 1 zurückgibt. Diese Funktion ist dazu da, wenn ihr Waypoints reinzieht, das ihr sie auch seht. Nun, zieht einen Punkt an eine Stelle der Map wo der Bot hinkommen soll. Zieht noch einen anderen Punkt rein nicht weit entfernt vom ersten. Sollte ungefähr so aussehen: Nun habt ihr zwei Wegpunkte. Der Bot weiß aber noch nicht, wie er zu den Punkten kommt! Deshalb müssen wir die Punkte miteinander verbinden und den Wegtyp angeben, wie er hinkommt.
Dazu gibt es die Diese Funktion: AddPath(object pZuWelchemAnderenWaypoint, Verbindungstyp); Diese Funktion steht in jedem Waypoint.
Path_MoveTo: Man kommt zum anderen Wegpunkt durch Laufen
Path_Jump: Bei Wegpunkt springt der Bot und läuft dann nach möglichkeit zum anderen Wegpunkt weiter.
Path_Backflip: Der Bot macht bei ersten Wagpunkt einen Backflip in Richtung des Waypoints und läuft dann zum Ziel weiter
Path_Lift: Der Bot wartet bis der Lift kommt und benutz diesen um zum anderen Wegpunkt zu kommen.
Das ganze Funktioniert so. Im Enginefenster wählt man den weißen Pfeil aus (Objektmodus) und klickt auf den Wegpunkt, von dem man eine Verbindung zu einem Anderen Wegpunkt aufbauen soll. Dann Rechtsklick->Eigenschaften auf den Wegpunkt und man kann diese Funktion eingeben.
Und wie soll ich jetzt den anderen Wegpunkt als Objekt ausfindig machen? Mit FindObject() oda was??
Nein, natürlich nicht. Wie man beim oberen Screenshot sehen kann steht über jedem Objekt eine Nummer, das ist die Objekt-Nummer, mit dem man auch ein Objekt anhand seiner Nummer ausfindig machen kann. Dazu benutzt man die Funktion Object(iNumber). Aber weiter gehts: Ich gebe in meinem Fall z.B in das Eigenschaftsfenster ein: AddPath(Object(1400),Path_MoveTo) Als Ergebniss sehe ich das hier: Wenn bei Euch nichts kommt drückt einfach Play! Damit weiß der Bot wenn er zu Wegpunkt 1359 kommt und zu Wegpunkt 1400 will, wie er hinkommt. Nun weißt er aber nur wie er von 1359 zu 1400 kommt, was aber wenn er von 1400 kommt und nach 1359 will? Deshalb müssen wir jetzt auch den Weg zurücklegen, also von 1400 nach 1359. Dazu klickt auf Wegpunkt nummero 1400 und wieder Rechtsklick -> Eigenschaften und legt den Weg wieder zurück. (Nicht vergessen Objektnummer zu ändern.) Aber natürlich machen 2 Punkte noch kein komplettes Netz! Deshalb zieht immerwieder Wegpunkte rein bis ein ganzes NETZ entstanden ist. So sah das bei mir am ende aus: Hier sind noch einige Wegpunkte drinnen bei denen der Bot z.B Springen oder einen Backflip machen muss. Seit Kreativ! Und wenn ihr mal einen Pfad falsch gesetzt habt, macht auf den Waypoint ->Rechtsklick->Eigenschaften -> RemovePath(). Solange bis ihr den Richtigen Pfad gelöscht habt.
Testen! Aber nun müssen wir auch schauen ob das Netz funktioniert! Tippt deshalb ins Enginefenster: WaypointsTest(1) Auf Play drücken wenn nix kommt. Jetzt sollten nähmlich aus Euren Wegpunkten Hazards rauskommen die jede Verbindung testen. Wenn sie dann am anderen Wegpunkt angekommen sind sterben sie und ihr wisst das der Weg richtig gesetz war. Bei Fehlern wird auch im Enginefenster eine Meldung ausgegeben, mit Informationen von welchem zu welchem Wegpunkt der Fehler aufgetreten ist. Ich habe z.B oft das Problem gehabt das er zu grüh gesprungen ist oder der Backflip zu spät kommt. Verschiebt eure Wegpunkte Ingame einfach dementsprechen nochmal und überprüft die Punkte nochmal.
Speichern! Wenn ihr keinen Fehler mehr habt dann tippt im Enginefenster wieder was ein: LogWaypoints Dann kommt im Enginefenster ein Log den ihr KOPIERT und im Szenarioscript diesen Codeteil in Initialize() reinmachen. Bei meinem Netz sah die Funktion so aus:
Ein ganz schön langer Code, seid froh das es so tolle Funktionen gibt die sowas loggen. Wenn ihr das Szen startet und im Regelwahlmenü seid, wird automatisch der Eintrag "KI's einstellen" hinzugefügt. Hier könnt ihr dann alle Bots einstellen und ihr könnt euch zurpcklehnen, während ihr bei Bot-schlachten zuseht.
Nachwort und Anmerkung über ein paar andere Funktionen Zuersteinmal: Jegliche Funktionen für Wegpunkte und sonstige Hazarddinger findet ihr in der Hazarddoku. (Hazard.chm). (Habt ihr Vista müsst ihr eventuell Rechtsklick->Eigenschaften->"Zulassen" machen um es anzuschaun zu können!) Ich werde hier nicht extra nochmal alle 15 Funktionen erklären mit denen man Wegpunkte und deren Verhalten steuerrn kann. Dazu gibt es ja die Hazarddoku. Dieses Tutorial ist ja nur dazu da um zeigen wie man auf einfachste Weiße Bots in eine Hazard-Map einfügen kann. Und da reichen die von mir erklärten Funktionen aus. Wie gesagt für weiterführende Funktionen gibt es die Doku, und es soll auch ein Anfängertutorial bleiben, das einfach zu verstehen ist und nicht umbedingt viel mit kompliziertem Scripting zu tun hat. Tut mir Leid, JOK.
Das wars auch schon wieder von meiner Seite, ich denke dieses Tutorial hilft euch Hazardszens Entwicklern ein bischen. Bei Fragen, Anregungen oder sonstigem könnt ihr gerne Posten
MfG Gamer
ENDE!
Zuletzt von Gamer am Di Jan 05, 2010 11:45 pm bearbeitet; insgesamt 6-mal bearbeitet
Lord Helmchen Fregattenkapitän
Alter : 30 Ort : In einem Dorf in Baden Anmeldedatum : 28.10.09
Thema: Re: Hazard Bots in seine Map einfügen Di Jan 05, 2010 9:51 pm
Danke dass du dir die Mühe gemacht hast!
imperatoerchen Brigadegeneral
Alter : 29 Ort : Ebersberg Anmeldedatum : 23.03.09
Thema: Re: Hazard Bots in seine Map einfügen Di Jan 05, 2010 9:57 pm
Sehr schönes Tutorial mit vielen informativen Bildern. Man versteht sofort, wie man Waypoints erstellt und verbindet. Man merkt, das da ordentlich was an Arbeit reingesteckt wurde. Hast du das alles gemacht in der zeit als das tut gewünscht wurde oder schon vorher?. Auf jeden Fall ein Super Tutorial zu dem man nur gratulieren kann. *ganz grosser +Vote*
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Hazard Bots in seine Map einfügen Di Jan 05, 2010 10:39 pm
Wow, das es überhaupt möglich ist, sowas in Clonk zu programmieren erstaunt mich Ist wirklich schön übersichtlich gehalten und auch übersichtlich vorgestellt. Saubere Arbeit!
JOK Fähnrich
Ort : In einer großen Stadt in Mittelfranken (Bayern) Anmeldedatum : 31.12.08
Thema: Re: Hazard Bots in seine Map einfügen Di Jan 05, 2010 11:24 pm
Du könntest noch etwas über die Funktionen schreiben, die die Eigenschaften eines Pfades abfragen und manipulieren.
Gamer Staatsrat
Alter : 28 Ort : In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum : 10.02.09
Thema: Re: Hazard Bots in seine Map einfügen Di Jan 05, 2010 11:41 pm
JOK schrieb:
Du könntest noch etwas über die Funktionen schreiben, die die Eigenschaften eines Pfades abfragen und manipulieren.
Siehe Tutorial. Ich will es möglichst einfach und leicht verständlich halten, für weiterführende Funktionen gibt's ja die Hazard-Doku.
Mozart Kanzler
Alter : 31 Ort : Vaihingen/Enz Anmeldedatum : 24.02.08
Thema: Re: Hazard Bots in seine Map einfügen Di Jan 05, 2010 11:48 pm
Was macht eigentlich eine KI, wenn sie nicht mehr an den Punkt kommt, zB durch Granatenexplosionen? Aufhängen?
Gamer Staatsrat
Alter : 28 Ort : In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum : 10.02.09
Thema: Re: Hazard Bots in seine Map einfügen Di Jan 05, 2010 11:54 pm
Nein sie wird wahrscheinlich einfach zurückgeschleudert und versucht es nochmal.
Mozart Kanzler
Alter : 31 Ort : Vaihingen/Enz Anmeldedatum : 24.02.08
Thema: Re: Hazard Bots in seine Map einfügen Mi Jan 06, 2010 12:09 am
Ja, aber wenn sie jetzt duch eine Granate in einen Schacht fällt, durch den sie nimmer hoch kommt
Gamer Staatsrat
Alter : 28 Ort : In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum : 10.02.09
Thema: Re: Hazard Bots in seine Map einfügen Mi Jan 06, 2010 1:03 am
Ich denke das der Bot so schlau ist und nicht durch diesen Schacht geht, der wird ja nicht so blöd sein und da durchrennen wenn da ne Granate liegt, oder? oO Aber genug des Off-Topics
Patta Großadmiral
Alter : 30 Anmeldedatum : 22.05.09
Thema: Re: Hazard Bots in seine Map einfügen Mi Jan 06, 2010 1:08 am
er meinste wenn man ihn mit ner Granate trifft und er dadurch in den Shcacht fällt glaub ich
zum Tut: sehr gut, und vor allem hilfreich
Markus Oberst
Alter : 28 Ort : Leibnitz Anmeldedatum : 24.07.09
Thema: Re: Hazard Bots in seine Map einfügen Mi Jan 06, 2010 1:48 am
cooles Tutorial
nur was passiert wenn man bei nem Mapteil vergisst solche Wegpunkte zu machen und der Bot dort hinfliegt (zB durch ne Granate)?
Gamer Staatsrat
Alter : 28 Ort : In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum : 10.02.09
Thema: Re: Hazard Bots in seine Map einfügen Mi Jan 06, 2010 1:57 am
Als ich hab das mal ausprobiert und bei mir hängt er sich bei Versuch nen anderen Waypoint zu erreichen auf. (Geht dir Treppe hoch runter hoch rnuter hoch runter kein Plan)
Lord Helmchen Fregattenkapitän
Alter : 30 Ort : In einem Dorf in Baden Anmeldedatum : 28.10.09
Thema: Re: Hazard Bots in seine Map einfügen Mi Jan 06, 2010 1:18 pm
Kann man die Bots auch per drag and drop in ein Szen enfügen, dass sie nicht frei rumlaufen, sondern dass sie z.B. eine Forschungsstation bewachen?
Gamer Staatsrat
Alter : 28 Ort : In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum : 10.02.09
Thema: Re: Hazard Bots in seine Map einfügen Mi Jan 06, 2010 2:11 pm
Lord Helmchen schrieb:
Kann man die Bots auch per drag and drop in ein Szen enfügen, dass sie nicht frei rumlaufen, sondern dass sie z.B. eine Forschungsstation bewachen?
Also ich hab das mal bei meiner Map ausprobiert, ich hab einfach mein Team ausgewählt und hab AIPlayer in die Map gezogen. Daraufhin übernehm der Bot die Kontrolle über meinen Clonk.. oO -> Denke es ist nicht möglich einfach so per Drag & Drop Hazard's reinzuziehen. Die müssen immer mit AddAI(int iTeam) und AddBot(int iTeam) reingemacht werden. Man kann sie zwar mit einer veränderten InitializePlayer() funktion dazu zu bringen i-wo gesammelt zu spawnen, aber sie werden wohl immer eine Art "Angriffswellen" Taktik ausführen und sofort zum nächsten gegnerischen Clonk laufen.
Lord Helmchen Fregattenkapitän
Alter : 30 Ort : In einem Dorf in Baden Anmeldedatum : 28.10.09
Thema: Re: Hazard Bots in seine Map einfügen Fr Jan 08, 2010 3:10 pm
es gibt ja auch andere KIs wie kann ich die benutzen? z.B. für ein Ritter szen
Gamer Staatsrat
Alter : 28 Ort : In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum : 10.02.09
Thema: Re: Hazard Bots in seine Map einfügen Fr Jan 08, 2010 4:09 pm
Lord Helmchen schrieb:
es gibt ja auch andere KIs wie kann ich die benutzen?
War das eine Frage oder eine Feststellung? Sicher gibt's noch andere KI's, z.B die Standart Clonk AI die bei Bonzeone, leicht modifiziert, vorkommt.
Lord Helmchen Fregattenkapitän
Alter : 30 Ort : In einem Dorf in Baden Anmeldedatum : 28.10.09
Thema: Re: Hazard Bots in seine Map einfügen Fr Jan 08, 2010 4:35 pm
Beides ^^ ich wollte fragen, wie ich die in szenarien benutzen kann z.B. dass Ritter eine Burg bewachen
Gamer Staatsrat
Alter : 28 Ort : In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum : 10.02.09
Thema: Re: Hazard Bots in seine Map einfügen Fr Jan 08, 2010 4:40 pm
Lord Helmchen schrieb:
Beides ^^ ich wollte fragen, wie ich die in szenarien benutzen kann z.B. dass Ritter eine Burg bewachen
Das kommt in.. Das Bot Tutorial, die 2te!
Lord Helmchen Fregattenkapitän
Alter : 30 Ort : In einem Dorf in Baden Anmeldedatum : 28.10.09
Thema: Re: Hazard Bots in seine Map einfügen Fr Jan 08, 2010 5:02 pm
JAAAAA =O
JOK Fähnrich
Ort : In einer großen Stadt in Mittelfranken (Bayern) Anmeldedatum : 31.12.08
Thema: Re: Hazard Bots in seine Map einfügen Fr Jan 08, 2010 5:07 pm
Geduld ist eine Tugend. Da er noch online ist, denke ich mal, er schaut gerade nach und editiert den Beitrag dann entsprechend. Er hat ihn nur jetzt schon geschrieben, damit du weißt, dass du gleich eine Antwort bekommst. (denke ich)
Lord Helmchen Fregattenkapitän
Alter : 30 Ort : In einem Dorf in Baden Anmeldedatum : 28.10.09
Thema: Re: Hazard Bots in seine Map einfügen Fr Jan 08, 2010 5:16 pm
ich wollte nur zeigen dass ich mich freue^^
Gamer Staatsrat
Alter : 28 Ort : In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum : 10.02.09
Thema: Re: Hazard Bots in seine Map einfügen Fr Jan 08, 2010 5:17 pm
Okay, aber dazu brauchst du ja nicht nen ganzen Post schreiben Und wie JOK gesagt hat,
Zitat :
Geduld ist eine Tugend.
Ich denke ich bring dsa Tut in 1ner Woche raus.
Lord Helmchen Fregattenkapitän
Alter : 30 Ort : In einem Dorf in Baden Anmeldedatum : 28.10.09
Thema: Re: Hazard Bots in seine Map einfügen Mo Jan 11, 2010 5:12 pm
wie kann ich die tests der waypoints beenden weil wenn ich das Szen beginne laufen da immer hazards zu den waypoints und sterben:D und clonk stürzt ab
Gamer Staatsrat
Alter : 28 Ort : In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum : 10.02.09
Thema: Re: Hazard Bots in seine Map einfügen Mo Jan 11, 2010 6:25 pm
Du kannst das Szenario nochmal ohne Spieler starten und dort alle Hazardbots löschen.