ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4440575
Jetzt (Chat):
17 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-
"Kampfprotokoll" von J. Diehl (joeydee)


Nein, das ist kein Lametta, sondern eine Art „Kampfprotokoll“ meiner neu
entwickelten Space-KI. Das Bild ist entstanden, indem während der Simulation der
Frame- und Depthbuffer nicht gelöscht wurden.
Die Simulation läuft in der originalen „Engine“, d.h., dass man sich auch
frei in der Szene bewegen, am Kampfgeschehen teilnehmen oder die Kamera auf
einen Gegner „draufsetzen“ und mitfliegen kann. Engine ist eigentlich zu viel
gesagt, da sehr viel fehlt.

Zur Szene im Bild: Zu sehen ist eine Raumstation in der Mitte, die von einem
fremden Schiff (rot-gelber Pfad, beginnend am oberen Bildrand) angegriffen
wird. Frühzeitig werden aus der Station vier Abfangjäger (silbrige Streifen)
sowie zwei Raketen (himmelblau gestrichelt) entsandt. Für den Angreifer wurden
zwei Farbmodi gerendert: gelb ist normaler Flug, bei rot hat er die Station
im Fadenkreuz und könnte schießen (die Laser wurden hier wegen der
Übersichtlichkeit nicht gerendert). Dieses Feature wird bei den Abfangjägern
weggelassen. Aber glaubt mir, sie sind ebenso oft genug in Schussposition.

Zum Ablauf des Kampfes: Die erste Rakete trifft schon weit oben außerhalb
des Bildes. Kurze Zeit darauf kommt der Angreifer von oben ins Bild. Sobald er
der Station zu nah ist, weicht er nach links aus, wo ihn die zweite Rakete
trifft (Explosion). Nach dem Ausweichmanöver startet er von links unten in rot
die zweite Angriffswelle, verfolgt von den Abfangjägern. Ausweichen diesmal
nach unten und von dort nach einer Wende Angriff Nr. 3 mit Ausweichen nach
rechts aus dem Bildrand. Wie man erkennen kann, haben die vier Jäger die
Verfolgung längst nicht aufgegeben und lassen sich auch nicht so einfach
abschütteln.

Zur Technik: Die Schiffe sind (genauso wie später der Spieler) auf Rollen
und Nicken beschränkt. Es wurden keine Quaternions interpoliert, alles basiert
ausschließlich auf Matrizen und „normalen“ Achsendrehungen.
Kollisionserkennung ist im Moment nur für Angreifer --> Ziel verwirklicht. Die KI umfasst
momentan zwei Regeln: „verfolge Dein Ziel“ und „kollidiere nicht mit Deinem
Ziel“. Allen Objekten liegt dieselbe KI zugrunde, allerdings mit verschiedenen
Parametern (max. und min. Geschwindigkeit, Reaktionsvermögen, Kamikaze-Index
usw.). Die Startpositionen wurden zufällig gewählt. Alle Objekte sind für diese
Simulation unsterblich, solange sie nicht mit ihrem Ziel kollidieren (was bei
den Raketen ja beabsichtigt ist). In anderen Szenen ist es auch schon
vorgekommen, dass ein Abfangjäger dem Angreifer nicht mehr rechtzeitig ausweichen
konnte und an ihm zerschellt ist.
Verwirklicht wurde dieses Steuerverhalten in Anlehnung an die hier
beschriebenen Ideen: http://www.steeringbehaviors.de , somit lässt sich die KI-Engine auch
sehr einfach für komplettes Schwarmverhalten, Follow-Leader, Empfangen von
Befehlen uvm. erweitern. Natürlich wurde vieles abgeändert für die dritte
Dimension sowie um glattere Pfade bei noch ausreichendem Reaktionsvermögen zu verwirklichen.

Zu den Modellen: alle Modelle sind „In-Line“ entstanden. Der Angreifer ist
in Anlehnung an den Klassiker „Elite“ eine Cobra, die Abfangjäger sind
Papierflieger ;-)
Speed: Zur Geschwindigkeit lässt sich wenig sagen. Das Ganze ist (für
Spieleprogrammierer denkbar ungünstig) auf einem Pentium II 450Mhz mit einer alten
Elsa Erazor II-Graka mittels OpenGL unter (und jetzt kommts!) VisualBasic (!)
entstanden. Trotzdem ließ sich ein Kampf mit 200 computergesteuerten
Schiffen noch einigermaßen in Echtzeit darstellen (ich schätze so um die 20fps).
Und warum VB? Das hat mehrere Gründe, u.a. weil ich darin sehr schnell
solche interaktiven Simulationen entwickeln kann, ohne mich um das
Windows-Grundgerüst kümmern zu müssen. In C++ bin ich leider längst nicht so fit.

Future: Ob daraus ein Spiel wird (wenn, dann natürlich übersetzt in C++),
weiß ich noch nicht. Sicher wird aber eine kleine „Spacefight“-Demo
verwirklicht, bei der man aktiv an verschiedenen Kampfgeschehen teilnehmen kann. Auch
habe ich daran gedacht, die Informationen der einzelnen Frames für einen
Raytracer zu exportieren und so einen Film mit fotorealistischen Modellen zu
rendern, evtl. auch mit automatischen Schnitten (aus Sicht von Raumstation,
Angreifer, Jäger, außerhalb). Vielleicht bleibt es aber auch vorerst bei dieser
Simulation und ich widme mich einem neuen Projekt.

Ciao
Jochen
Alias joeydee







Von joeydee am 11.06.2003, 08:28:31 Uhr
Wenn jetzt noch jemand mein "Lamettabild" statt das letzte IOTW von Torsten reisetzt... ;-)

Von Stefan Zerbst am 11.06.2003, 08:54:44 Uhr
Hi,

ups, da ist wohl ein kleines Missgeschick passiert. Wir werden das Bild sobald wie möglich ersetzen :)

Ciao,
Stefan

Von ONeinONeill am 11.06.2003, 10:06:05 Uhr
Geiles Bild. Ich glaube hier gab es vor kurzem schonmal so ein Bild, :D :) ;)

Von Morphis am 11.06.2003, 10:20:10 Uhr
Ach ja, in die Homepage-Adresse von joeydee hab ihr auch nen Fehler reingehauen. Man schaue auf das Komma in der Adresse...

Von Stefan Zerbst am 11.06.2003, 11:26:17 Uhr
Hi,

Der Fehler im Link wurde behoben, danke für den Hinweis.

Ciao,
Stefan

EDIT: Bild gefixt

Von Tommi12 am 11.06.2003, 13:24:14 Uhr
Ich progg selber VB, und jetzt sag nie wieder wer, VB ist scheisse :D Man sieht ja hier, was man mit VB "anrichten" kann. Absolut geil! Weiter so! Die KI erscheint mir super ausgearbeitet.

Von SiC am 11.06.2003, 13:57:27 Uhr
Hab mich nie mit KI beschaeftigt aber gute Arbeit auch wenns VB ist :). Ich selber proggrammiere in Delphi, da musste dich noch weniger um den windowsscheiss kuemmern wenn du willst und das ist viel schneller und ausserdem ne richtige Programmiersprache :P
Kannste mal ne demo online stellen?

Von joeydee am 11.06.2003, 14:42:19 Uhr
Ich fand das Bild einfach mal interessant, ist mal was anderes (aber nicht vergleichbar zur Echtzeit-Animation während man mittendrin mitfliegt *g*)
Thx für die Kommentare. Delphi - da müsste ich ja schon wieder was Neues anfangen... nene. Wenn dann gleich C++. Ist ja nicht so dass mir das fremd ist (OGL hab ich mit C gelernt), bin nur zu faul...
Mit Demo ist wohl erstmal nicht viel. Allein wegen dem großen Download (VB-Runtime-Schrott) und dann nichtmal die Garantie dass es überall reibungslos läuft. Und Benutzeroberfläche ist auch nicht vorhanden wie man sieht (Beobachtungsmodi werden im Quelltext eingestellt). Aber vielleicht raff ich mich die Tage auf und produzier doch noch ne kleine komfortable Demo.

Von mastervc am 11.06.2003, 15:01:05 Uhr
@ Sic:

Hehe , denkst du Delphi ist ne richtige Programmiersprache ? (wehe jetzt kommt noch ein ASM Crack und schreib das selbe über C++ :D)

cya

Von sTr33n am 11.06.2003, 17:50:24 Uhr
sieht nicht schlecht aus, cooler effekt :)

Von Eisflamme am 11.06.2003, 19:59:35 Uhr
Interessant...

Die Grafik ist wohl nicht so fein, wenn man das mit echten Modellen realisieren würde, wäre es bestimmt umwerfend.
Gut gelungen, die Modelle sind um die KI zu verstehen auch gut geeignet. :)

PS: Die Programmiersprache ist egal, C++ ist nur in den meisten Fällen besser zu optimieren. ;)

MfG MAV

Von Brandlnator am 11.06.2003, 21:00:31 Uhr
cooler effekt!

zu delphi: *räusper* wenn du C++ kannst, ist delphi/pascal code nur noch nervig.

@mav:
die sprache ist prinzipiell egal, aber der compiler nicht. und so effektiv wie vcpp sind die delphi und vb compiler einfach nicht. von den runtime-libs ganz zu schweigen...

Von mastervc am 11.06.2003, 22:06:53 Uhr
Eben.

Delphi is doch mist. Ich meine := was soll das nun heissen geteilt durch ( in vc: /=) oder is das ne zuweisung ?

Aber naja.... Delphi (bzw. o pascal) und C/c++ sind 2 verschiedene Sachen.

Trotzdem würd ich nie Delphi lernen, selbst nich für den Job. Da kriegst doch ein Gehirnkolla ^^

Von joeydee am 12.06.2003, 08:02:56 Uhr
@Mis2com: Naja, mit "echten" Modellen würde man auf dem Bild oben auch nicht mehr sehen, da es ja sowieso nur Streifen gibt :) aber in der Animation hast Du recht. Ein wohlgeformtes und gebumpmapptes Raumschiff, das da wie von allein durch den Raum eine Verfolgungsjagd aufnimmt, sieht natürlich beeindruckender aus als ein flatgeshadeter Papierflieger. Was das Programm ausspuckt, ist aber eher als Diagramm für KI-Versuche zu sehen, nicht als Spieleengine.

Die Seite hier ist nicht zur Diskussion für Programmiersprachen gedacht. Die richtige Sprache für ein gestelltes Problem ist immer diejenige, mit der man das Problem mit vertretbarem Aufwand lösen kann.

Von MULTIVITAMIN am 12.06.2003, 14:42:37 Uhr
HUI! Das will ich mal in bewegung sehen! Kannste nich mal was Hochladen ???

Von Fireface am 12.06.2003, 16:44:23 Uhr
Ich würde sagen, das ist eines von den Bildern, denen man es nicht umbedingt ansieht, dass ne rießen Technik dahinter steckt.
Ein Kumpel von mir war von dem Bild absolut unbeeindruckt, weil er eben nur zockt und von Spieleentwicklung Null versteht.
Von mir aber: respekt!

Von joeydee am 12.06.2003, 22:02:11 Uhr
@Multivitamin: Ich werd sehen was ich die Tage so machen kann. Aber ich kann nix versprechen.

@Fireface: Na, ich hoffe doch, dass ich hier unter den Entwicklern gelandet bin ;)
Gegenüber den hier üblichen Shots mit z.T. ausgefeilten grafischen Techniken sieht das natürlich nicht so spektakulär aus. Aber darum gings mir ja auch nicht.

Vor kurzem hab ich hier im Forum zwei Threads über das Thema gestartet, da ich bisher nicht viel vom Thema verstand. Naja, war aber dann doch nicht so schwer wie man sieht (sagt man hinterher ja immer). Scheint im Web keine Tuts darüber zu geben, oder? Wer weiß, vielleicht schreib ich mal eines Tages eins für diese Seite...

Von joeydee am 14.06.2003, 02:14:45 Uhr
Wen's interessiert: eine kleine Demo ist online.
http://enter.diehlsworld.de/ogl/space_ki.zip

Hat ca. 1.5 MB (wegen den doofen VB-DLLs). Ich hoffe, dass es sich ohne Probleme installieren lässt und einigermaßen gut läuft, konnte das nicht testen.

Es ist die Aktuelle Version des Programms, die Kamera fliegt per Autopilot mit.

Viel Spaß!

Von GenkiOjousan am 14.06.2003, 21:06:36 Uhr
@joeydee: echt coole sache, und zum lernen genau richtig.... jedoch ist mir bei der demo aufgefallen, dass die raks ein bischen ungewöhnlich reagieren... versuch sie mal schneller zu machen und ihnen eine etwas geradlinigere bewegungsart zu verpassen...
naja, bastel da dran weiter und es wird ne richtig geile space ki...
ps: danke, jetzt haschs mit denne models geschafft, dass ich mal wieder auf imp jagd in X-Wing Alliance geh ;)

@alle andern die sich über verschiedene prog.sprachen ablassen: ich hab mit delphi angefangen und steig jetzt um auf c++, da wie ich finde delphi eine gute spache ist um irgendwelche "normalen" programme zu scheiben, aber alles was drüber hinaus geht is halt einfach für sie nix, wird zu kompliziert(das gleiche gilt für vb). c++ is einfach flexiebler

Von joeydee am 15.06.2003, 20:02:59 Uhr
Danke für den Kommentar. Die Objekte haben das Problem, dass sich der Fehlerwinkel zum Ziel stark vergrößert, wenn sie zu nah an ihr Ziel kommen und sie deswegen plötzlich hart korrigieren wollen. Das fällt bei den Raketen natürlich auf, da hier ja die Zielentfernung gegen Null geht. Muss ich noch verbessern.
Außerdem schlägt der Angreifer Haken, wenn er von Lasern getroffen wird, da habens die Raketen doppelt schwer ;-)
Entwicklung geht weiter.

P.S.: bin seit heute dabei, das sauber auf C++ zu portieren. Da ich seit meinen letzten bescheidenen VC-Versuchen u.a. Javascript und Java gelernt habe, geht das besser als gedacht. Lohnt sich echt.