Game Engine in C: Unterschied zwischen den Versionen

How it should have been
(Init)
 
(How it should have been)
 
(3 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
==Idee==
Um Wissensdurstigen einen Einblick in die fortgeschrittene C Programmierung zu geben wird die [http://de.wikipedia.org/wiki/Quake_III_Arena Tech 3] Gameengine von idsoftware weiterentwickelt. An Hand des Open Source Projekts [http://ioquake3.org/ ioquake3] werden die Teilnehmer in die praktische C-Programmierung abseits der Schulbuecher eingefuehrt. Der im Workshop erarbeitetegezeigte Code wird produktiv eingesetzt. [http://www.q3df.org/]
 
 
 
==Zielgruppe==
* Neulinge in der C-Programmierung
 
 
 
==Todo-Liste==
* Existierenden Code Aufräumenaufrä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 immerwieder aktuellen Engines vorgezogen wird.
 
==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 immerwiederimmer wieder aktuellen Engines vorgezogen wird.[http://en.wikipedia.org/wiki/Id_tech_3#Uses_of_the_engine]
===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 Gesammtegesamte 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.
* Abfangen und Manipulieren von Syscalls zwischen VM und Server (transparenter Proxy)
* Die Furcht vor Bit-Operationen ablegen.
* Erzeugen von Modulen die zur Laufzeit ge- und enladen werden können
* Schreiben einer einfachen Modifikation fuer ioquake3.
* Erzeugung und Benutzung von Threads
* Erstellen einer Datenbankschnittstelle (MySQL)
 
==Weblinks==
* Einsatzbereich für eine solche Proxymod: [http://www.q3df.org/]
 
 
==Weblinks==
* Einsatzbereich für eine solchein C geschriebene Proxymod: [http://www.q3df.org/]
* Die im Vortrag demonstrierte Mod [http://gungame.kexe.org/]
 
 
[[Category:WorkshopWorkshops]]
852

Bearbeitungen