1 / 28

Game Development mit LUA

Game Development mit LUA. Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen

benson
Download Presentation

Game Development mit LUA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Game Development mit LUA Integration 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

  2. I. Interaktion zwischen LUA und C++

  3. Interaktion zwischen C++ und LUA

  4. 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

  5. I.1 LUA › C++ (LuaGlue) • Definition der Funktion als externe C Funktion im C++ Code

  6. I.1 LUA › C++ (LuaGlue) • Anlegen eines Arrays, welche alle LuaGlue Funktionen + Bezeichner beinhaltet:

  7. I.1 LUA › C++ (LuaGlue) • Struktur lua_State repräsentiert das LUA Environment: • Einfügen aller LuaGlue Funktionen in die Struktur per for-Schleife:

  8. I.1 LUA › C++ (LuaGlue) • Alle so definierten und eingebundenen LuaGlue Funktionen können nun in LUA aufgerufen werden:

  9. 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

  10. I.2 C++ › LUA • Folgende in LUA definierte Funktion soll später vom C++ Programmkern aufgerufen werden:

  11. I.2 C++ › LUA • Der C++ Code nimmt den Namen der Funktion entgegen und stellt diese dann dem Programm zur Verfügung:

  12. I.2 C++ › LUA • Die Funktion kann um beliebige Parameter erweitert werden:

  13. I.2 C++ › LUA • Der entsprechende C++ Code nach Erweiterung:

  14. II. Integration von LUA in das C++ Environment

  15. 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:

  16. Starten und Beenden von LUA • Entsprechend wird die Engine wieder heruntergefahren

  17. Starten und Beenden von LUA • Entsprechend wird die Engine wieder heruntergefahren

  18. 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

  19. Klasse cLua

  20. III. Ein C++ Basisprojekt mit LUA

  21. 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

  22. Struktur des Basisprojekts

  23. 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

  24. 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

  25. 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

  26. Bsp.: Das Startskript StartGUI.lua

  27. Bsp.: Aufruf von Chapter8.lua

  28. Fragen & Diskussion Vielen Dank für Ihre Aufmerksamkeit!

More Related