game development mit lua integration und kommunikation von lua mit c++ referat von paul van hemmen...
TRANSCRIPT
![Page 1: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/1.jpg)
Game Development mit LUAIntegration und Kommunikation von LUA mit C++
Referat von Paul van Hemmen
Seminar: Reusable Content in 3D und SimulationssystemenSoSe 2011Dozent: Prof.Dr. M.ThallerInstitut für Historisch-kulturwissenschaftliche Informationsverarbeitungan der Universität zu Köln
![Page 2: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/2.jpg)
I. Interaktion zwischen LUA und C++
![Page 3: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/3.jpg)
Interaktion zwischen C++ und LUA
![Page 4: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/4.jpg)
Bidirektionale Kommunikation
LUA › C++: Per LUA können in C++ geschriebene Funktionen aufgerufen werden. Diese nennt man LuaGlue Funktionen
C++ › LUA: Über die LUA API kann der Programmkern auch in LUA definierte Funktionen ansteuern
![Page 5: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/5.jpg)
I.1 LUA › C++ (LuaGlue)
Definition der Funktion als externe C Funktion im C++ Code
![Page 6: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/6.jpg)
I.1 LUA › C++ (LuaGlue)
Anlegen eines Arrays, welche alle LuaGlue Funktionen + Bezeichner beinhaltet:
![Page 7: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/7.jpg)
I.1 LUA › C++ (LuaGlue)
Struktur lua_State repräsentiert das LUA Environment:
Einfügen aller LuaGlue Funktionen in die Struktur per for-Schleife:
![Page 8: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/8.jpg)
I.1 LUA › C++ (LuaGlue)
Alle so definierten und eingebundenen LuaGlue Funktionen können nun in LUA aufgerufen werden:
![Page 9: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/9.jpg)
I.2 C++ › LUA
Flexibles, eventbasiertes System zur Kommunikation des Programmkerns mit LUA. Verarbeitet werden: Tastatur- und Mauseingaben Spielevents (Trigger) GUI Events (Buttons) Timer Events
![Page 10: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/10.jpg)
I.2 C++ › LUA
Folgende in LUA definierte Funktion soll später vom C++ Programmkern aufgerufen werden:
![Page 11: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/11.jpg)
I.2 C++ › LUA
Der C++ Code nimmt den Namen der Funktion entgegen und stellt diese dann dem Programm zur Verfügung:
![Page 12: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/12.jpg)
I.2 C++ › LUA
Die Funktion kann um beliebige Parameter erweitert werden:
![Page 13: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/13.jpg)
I.2 C++ › LUA
Der entsprechende C++ Code nach Erweiterung:
![Page 14: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/14.jpg)
II. Integration von LUA in das C++ Environment
![Page 15: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/15.jpg)
Starten und Beenden von LUA
Kernstück der Integration ist die bereits angesprochene Struktur lua_State
Ein Zeiger auf sie wird allen Initialisierungsfunktionen als Parameter übergeben:
![Page 16: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/16.jpg)
Starten und Beenden von LUA
Entsprechend wird die Engine wieder heruntergefahren
![Page 17: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/17.jpg)
Starten und Beenden von LUA
Entsprechend wird die Engine wieder heruntergefahren
![Page 18: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/18.jpg)
Klasse cLua
Einführung der Klasse cLua, um das LUA Environment vom Rest der Anwendung zu trennen
cLua kapselt die LUA Engine ab und bietet eine zentrale Schnittstelle auf die gesamte API von LUA
![Page 19: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/19.jpg)
Klasse cLua
![Page 20: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/20.jpg)
III. Ein C++ Basisprojekt mit LUA
![Page 21: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/21.jpg)
Eigenschaften des Basisprojekts
Einbindung in die Windows Nachrichtenschleife
Erstellen des Grundgerüsts für das Hauptprogramm
Erstellen der LUA Console
Kommunikation mit der Windows Registry
Einbindung von DirectX, LUA Environment und GUIManager
![Page 22: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/22.jpg)
Struktur des Basisprojekts
![Page 23: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/23.jpg)
Die Klasse CBase
Bereitstellung aller grundlegenden Funktionen in
Die Methode erledigt: Erstellung eines neuen DirectX Kontext Festsetzen der DirectX Grafik Parameter Erstellung eines neuen Settings Interface Registrierung sämtlicher LuaGlue Funktionen Erstellen der LUA Console Starten des LuaGUI Systems
![Page 24: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/24.jpg)
Das LUA GUI System
Ist das Herz des Game Systems von LUA
Start des Systems durch Erstellen eines CGuiManager Objekts
Beim Aufruf wird auch das Startskript StartGUI.lua aufgerufen
![Page 25: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/25.jpg)
Das Startskript StartGUI.lua
Wird beim Start des GUI Managers ausgeführt
Sollte Initialisierungen und benötigte Basisfunktionen beinhalten
Ruft die LuaGlue Funktion RunGUI() auf und betritt damit die LUA Eventschleife
![Page 26: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/26.jpg)
Bsp.: Das Startskript StartGUI.lua
![Page 27: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/27.jpg)
Bsp.: Aufruf von Chapter8.lua
![Page 28: Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen](https://reader035.vdocuments.site/reader035/viewer/2022062623/55204d7549795902118c97b7/html5/thumbnails/28.jpg)
Fragen & Diskussion
Vielen Dank für Ihre Aufmerksamkeit!