Game Engine in C: Unterschied zwischen den Versionen

Aus bytewerk-Wiki
Zur Navigation springen Zur Suche springen
(Wir modden nicht "server" sondern "game" und "cgame")
(How it should have been)
 
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt)
Zeile 10: Zeile 10:


==Todo-Liste==
==Todo-Liste==
* Existierenden Code Aufräumen
* Existierenden Code aufräumen
* Konzept für verschiedene Ebenen des Anspruchs erstellen
* Konzept für verschiedene Ebenen des Anspruchs erstellen


Zeile 22: Zeile 22:
==Der Engine==
==Der Engine==


ID Tech 3 ist ein Dauerbrenner unter den Gameengines. In vielen Spielen schlägt ihr Herz, dass, wenn auf gute Spielerbewegung und Interaktion Wert gelegt wird, selbst nach 10 Jahren immerwieder aktuellen Engines vorgezogen wird.
ID Tech 3 ist ein Dauerbrenner unter den Gameengines. In vielen Spielen schlägt ihr Herz, dass, wenn auf gute Spielerbewegung und Interaktion Wert gelegt wird, selbst nach 10 Jahren immer wieder aktuellen Engines vorgezogen wird.[http://en.wikipedia.org/wiki/Id_tech_3#Uses_of_the_engine]

===Kommunikation===
===Kommunikation===
Der ID Tech 3 Engine behandelt jedes geladene Spiel als ein Modul. Dieses Modul liegt üblicherweise als Bytecode vor und ist daher kompatibel zu sämtlichen Plattformen. Die Kommunikation zwischen dem ClientServer, welcher die eingehenden Daten für die Virtuelle Maschine (VM) aufbereitet überträgt diese mit sog. "Syscalls" zur VM. Die Kommunikation zwischen VM und Server läuft ausschließlich über Syscalls. Zwischen dem ClientServer und dem Server auf dem das eigentliche Spiel läuft wird wahlweise eine IPX oder eine UDP verbindung aufgebaut.
Der ID Tech 3 Engine behandelt jedes geladene Spiel als ein Modul. Dieses Modul liegt üblicherweise als Bytecode vor und ist daher kompatibel zu sämtlichen Plattformen. Die Kommunikation zwischen dem ClientServer, welcher die eingehenden Daten für die Virtuelle Maschine (VM) aufbereitet überträgt diese mit sog. "Syscalls" zur VM. Die Kommunikation zwischen VM und Server läuft ausschließlich über Syscalls. Zwischen dem ClientServer und dem Server auf dem das eigentliche Spiel läuft wird wahlweise eine IPX oder eine UDP verbindung aufgebaut.
Zeile 33: Zeile 32:


===Eigenheiten===
===Eigenheiten===
* Der Gesammte Engine ist vollständig SingleThreaded. Das bedeutet, dass innerhalb des Spiels niemals zwei Dinge gleichzeitig berechnet werden, was gewaltige Vorteile bei der Speicherverwaltung mit sich bringt.
* Der gesamte Engine ist vollständig SingleThreaded. Das bedeutet, dass innerhalb des Spiels niemals zwei Dinge gleichzeitig berechnet werden, was gewaltige Vorteile bei der Speicherverwaltung mit sich bringt.
* Die mathematischen Optimierungen für häufige Berechnungen sind sehr tiefgreifend und führen in den untiefen der math.c zu nur für C-Liebhaber gut lesbaren Quellcode.
* Die mathematischen Optimierungen für häufige Berechnungen sind sehr tiefgreifend und führen in den untiefen der math.c zu nur für C-Liebhaber gut lesbaren Quellcode.


Zeile 41: Zeile 40:
* Die Furcht vor Strukturen und Zeigern ablegen.
* Die Furcht vor Strukturen und Zeigern ablegen.
* Die Furcht vor Bit-Operationen ablegen.
* Die Furcht vor Bit-Operationen ablegen.
* Schreiben einer einfachen modifikation fuer ioquake3.
* Schreiben einer einfachen Modifikation fuer ioquake3.




Zeile 47: Zeile 46:
==Weblinks==
==Weblinks==
* Einsatzbereich für eine in C geschriebene Proxymod: [http://www.q3df.org/]
* Einsatzbereich für eine in C geschriebene Proxymod: [http://www.q3df.org/]
* Die im Vortrag demonstrierte Mod [http://gungame.kexe.org/]






Aktuelle Version vom 26. September 2010, 17:18 Uhr

Idee

Um Wissensdurstigen einen Einblick in die fortgeschrittene C Programmierung zu geben wird die Tech 3 Gameengine von idsoftware weiterentwickelt. An Hand des Open Source Projekts ioquake3 werden die Teilnehmer in die praktische C-Programmierung abseits der Schulbuecher eingefuehrt. Der im Workshop gezeigte Code wird produktiv eingesetzt. [1]


Zielgruppe

  • Neulinge in der C-Programmierung


Todo-Liste

  • Existierenden Code aufräumen
  • Konzept für verschiedene Ebenen des Anspruchs erstellen


Verantwortlich

  • Daniel "hk" Steuer


Der Engine

ID Tech 3 ist ein Dauerbrenner unter den Gameengines. In vielen Spielen schlägt ihr Herz, dass, wenn auf gute Spielerbewegung und Interaktion Wert gelegt wird, selbst nach 10 Jahren immer wieder aktuellen Engines vorgezogen wird.[2]

Kommunikation

Der ID Tech 3 Engine behandelt jedes geladene Spiel als ein Modul. Dieses Modul liegt üblicherweise als Bytecode vor und ist daher kompatibel zu sämtlichen Plattformen. Die Kommunikation zwischen dem ClientServer, welcher die eingehenden Daten für die Virtuelle Maschine (VM) aufbereitet überträgt diese mit sog. "Syscalls" zur VM. Die Kommunikation zwischen VM und Server läuft ausschließlich über Syscalls. Zwischen dem ClientServer und dem Server auf dem das eigentliche Spiel läuft wird wahlweise eine IPX oder eine UDP verbindung aufgebaut.


ClientVM <-syscall-> ClientServer <--IP--> Server <-syscall-> ServerVM


Eigenheiten

  • Der gesamte Engine ist vollständig SingleThreaded. Das bedeutet, dass innerhalb des Spiels niemals zwei Dinge gleichzeitig berechnet werden, was gewaltige Vorteile bei der Speicherverwaltung mit sich bringt.
  • Die mathematischen Optimierungen für häufige Berechnungen sind sehr tiefgreifend und führen in den untiefen der math.c zu nur für C-Liebhaber gut lesbaren Quellcode.


Lehrinhalt

  • Die Furcht vor Strukturen und Zeigern ablegen.
  • Die Furcht vor Bit-Operationen ablegen.
  • Schreiben einer einfachen Modifikation fuer ioquake3.


Weblinks

  • Einsatzbereich für eine in C geschriebene Proxymod: [3]
  • Die im Vortrag demonstrierte Mod [4]