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:
4370141
Jetzt (Chat):
12 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-
"Diplom Arbeit" von Eike Anderson (Swordfighter)


Hi,

ein screenshot der Simplen DX8 Terrain-Engine (mit ROAM) die ich fuer meine
Diplomarbeit im Sommer 2001 geschrieben habe. Abgebildet ist ein Schema des
L5 Virtual Machine Prozessors. Die VM war dazu gedacht, Objekte und Animationen,
sowie die Kamera dynamisch zu scripten (obwohl's nie so ganz funktioniert hat).
Ausserdem abgebildet ist eine DOS Box mit dem Script Compiler/Assembler und
Disassembler fuer den VM Bytecode.






Von Richard Schubert am 09.01.2003, 10:47:03 Uhr
jo für ne Diplomarbeit is sowas wahrscheinlich genau das Richtige!

da gabs mal so einen der hat sonen DevKit genommen nen paar sachen geändert und damit seine Dipomarbeit gemacht... das war ne frechheit ... alle ham den hochgelobt wie toll der is .... dabei war das ja nur schwindel....

das hier scheint jedenfalls mit sehr viel aufwand alles selbstgeschrieben zu sein...
Respekt!

Von Timm von Puttkamer am 09.01.2003, 10:47:49 Uhr
och ja, sieht etwas veraltet aus. Aber was mich jetzt mal interessiert: Diese VMs werden auch von QuakeIII verwendet! Was ist denn das Besondere an diesen Virtual Machines??

Von hermitC am 09.01.2003, 16:06:34 Uhr
Script-Interpreter zu schreiben ist nicht einfach. Da muss man schon was auf dem Kasten haben. Aber da es eine Diplomarbeit ist, geh ich davon aus ;)

Ich find es gut, mal die pompöse Grafik wegzulassen und den core zu zeigen. Schließlich ist Grafik allein noch lange kein Spiel.

Bezüglich SlimTimmy´s Frage:
VM´s sind im Prinzip "Dolmetscher", die ein Script nicht wie ein Compiler in Maschinencode übersetzen und ausführen, sondern nur die Sprache interpretieren.

z.B.:
Script:
player1: SHOOTAT player2


wird "umgewandelt" in C++ -Code:

Code:
if(!player1->GunLoaded())
      player1->ReloadGun();
    player1->ShootAt(player2);



So kann man das hardcoden vermeiden und schneller z.B. die AI oder die Kameraführung verändern.

Von mastre2 am 09.01.2003, 19:48:23 Uhr
der screen sieht zwar nicht so atemberaubend aus
aber die technik dahinter iss net schlecht undd wohl auch wichtiger ei einer diplomarbeit

Von Timm von Puttkamer am 10.01.2003, 12:05:16 Uhr
Bist du dir da sicher mit den VMs???
Bei QuakeIII schreibt man das eigentliche Spiel in C und dann wird der Sourcecode kompiliert und raus kommt dann ein VM. Aber man codet ganz normal in C.

Von Swordfighter am 10.01.2003, 13:42:43 Uhr
Ok - erst mal zur Erklaerung - in Quake ist nicht direkt so etwas wie eine Virtual Machine eingebaut, sondern Quake enthaelt einen Interpreter fuer eine Scriptsprache, naemlich QuakeC .

Eine Virtual Machine ist soe etwas aehnliches wie ein Interpreter, aber arbeitet nicht mit Sourcecode sondern einem Bytecode-Zwischenprodukt, das durch die Kompilierung des Sourcecodes in einem Compiler entstanden ist, der als Ausgabe eben den Bytecode fuer die Virtual Machine hat. Die VM selbst arbeitet dann wie ein "virtueller CPU" und interpretiert den Bytecode.

Ein populaeres Beispiel fuer eine VM ist die Java Virtual Machine.

Von BlackDragon am 10.01.2003, 15:19:54 Uhr
Da ist aber die frage ob sich eine VM für ein Spiel auszahlt.
Ein Interpreter ist doch völlig ausreichend.
Und wenn man verhindern will das es ein anderer "entziffert" kann mans ja crypten und packen.
Da du's ja in eine art Assembler umwandelts, wie führst du den dann aus???
Auf jeden fall sieht deine VM ziehmlich eindrucksvoll aus, hab mir die syntax auf deiner HP durchgelesen :)

Von windowsint am 10.01.2003, 15:50:26 Uhr
Ein Interpreter geht zur Laufzeit hin und compiliert es on the run.

Eine VM hat aber schon den compilierten Bytecode und muss diesen nur noch umsetzen.

Ich schätze mal das es in diesem Fall es schneller ist eine VM zu nutzen als einen Interpreter.

Sehr gelungen finde ich!

PK

Von Fangorn am 10.01.2003, 17:29:44 Uhr
Wenn ich das richtig verstanden habe, übersetzt die VM den Bytecode während dem das Spiel läuft.
Ist das nicht viel zu langsam?

Von Swordfighter am 10.01.2003, 17:56:53 Uhr
Zitat:
Ein Interpreter ist doch völlig ausreichend.
Und wenn man verhindern will das es ein anderer "entziffert" kann mans ja crypten und packen.
Zitat:

Wenn ich das richtig verstanden habe, übersetzt die VM den Bytecode während dem das Spiel läuft.
Ist das nicht viel zu langsam?

Bei der VM findet keine Uebersetzung zur laufzeit statt - dafuer gibt es ja den kompilierten Bytecode. Ein Interpreter waere zu langsam, weil er ja zusaetzlich zur semantischen Analyse auch noch Syntaxanalyse und Lexikalische Analyse durchfuehren muss, bevor auch nur irgendetwas vom Script ausgefuehrt wird.

Zitat:
Da du's ja in eine art Assembler umwandelts, wie führst du den dann aus???

Der Compiler erstellt Bytecode in einem Assembler fuer eine Stackmaschine (Architektur des virtuellen Prozessors der VM). Der Code muss von der VM also nur direkt ausgefuehrt werden - VM Instruktionen werden direkt auf die entsprechenden Funktionen in der VM gemapped, was ziemlich schnell funktioniert (wie windowsint schon angemerkt hat).

Es funktioniert zwar nicht so schnell, wie wenn es direkt in C++ hardgecoded waere, aber dafuer muss man nicht alles von vorneherein programmieren, sondern kann kleinere Dinge am Programm aendern, ohne dafuer die Executable des Projektes neu zu compilieren und zu linken.

Von Scarface! am 11.01.2003, 19:46:22 Uhr
@Richard Schubert
Ja der Typ war auch in der PC-Action. Der hat die Demo die bei Genesis3D beiligt genommen und als Diplom-Arbeit abgeliefert. Voll die sauerei. Hat dann gesagt das Ding wär von ihm.

Steht in der PC Action 9/2001.

Der Typ hieß Thomas Werth.




Von Stefan Zerbst am 12.01.2003, 07:40:21 Uhr
@Genesis3D Diplom
Ich habe mir das Ding seinerzeit auch mal durchgelesen. Ich fand es echt zum Heulen wofür einige deutsche Uni ein Diplom vergeben. An unserer Uni hier verlangt man immer einen wissenschaftlichen Anspruch der Arbeit sowie einen gewissen Teil Eigenleistung und Interpretation anderer wissenschaftlicher Quellen.

Als Vortrag über die Mächtigkeit von Freeware 3D Engines wäre das Ding gut gewesen, aber jeder Professor hier hätte mir das Ding (zu Recht) vor der Nase zerrissen :)

Ciao,
Stefan