User Tools

Site Tools


z:code:gamemanager

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
z:code:gamemanager [2008/05/25 14:31]
cabalistic
z:code:gamemanager [2008/05/25 14:55]
cabalistic
Line 16: Line 16:
 Weiter geht's dann mit der Erzeugung des Spielfensters und der Anlegung unseres InputManagers (offensichtlich für Spielereingaben, via OIS). initScene erzeugt die Basics von Ogre, die wir fürs Rendern brauchen, also SceneManager, Camera, Viewport, und initGUI() schließlich lädt die GUI-Ressourcen und initialisiert CEGUI. Dann folgt das Anlegen des Localisation-Objekts, dies ist die Klasse, die String-Referenzen wie "MainMenuSkirmish" in die jeweils verwendete Sprache auflöst (in diesem Fall aber wohl fast immer in "Skirmish") und damit eine Übersetzung des Spiels möglich macht. Der KeyMapper abstrahiert Tastatureingaben, so dass der Spieler verschiedene Aktionen beliebig mit Tasten belegen kann. Anschließend werden dann die Spielressourcen geladen. Der Aufruf zu initShadows() ist sehr temporär, die ganze Schattenlösung ist momentan noch mehr ein Platzhalter, bis das irgendwann wirklich finalisiert ist, am besten im Moment keine Beachtung schenken ;) Weiter geht's dann mit der Erzeugung des Spielfensters und der Anlegung unseres InputManagers (offensichtlich für Spielereingaben, via OIS). initScene erzeugt die Basics von Ogre, die wir fürs Rendern brauchen, also SceneManager, Camera, Viewport, und initGUI() schließlich lädt die GUI-Ressourcen und initialisiert CEGUI. Dann folgt das Anlegen des Localisation-Objekts, dies ist die Klasse, die String-Referenzen wie "MainMenuSkirmish" in die jeweils verwendete Sprache auflöst (in diesem Fall aber wohl fast immer in "Skirmish") und damit eine Übersetzung des Spiels möglich macht. Der KeyMapper abstrahiert Tastatureingaben, so dass der Spieler verschiedene Aktionen beliebig mit Tasten belegen kann. Anschließend werden dann die Spielressourcen geladen. Der Aufruf zu initShadows() ist sehr temporär, die ganze Schattenlösung ist momentan noch mehr ein Platzhalter, bis das irgendwann wirklich finalisiert ist, am besten im Moment keine Beachtung schenken ;)
 Zum Schluss werden noch SoundManager und CellPartitioner (der eigentlich nicht hierhin gehört) angelegt und ein paar abschließende Initialisierungen getätigt. Zum Schluss werden noch SoundManager und CellPartitioner (der eigentlich nicht hierhin gehört) angelegt und ein paar abschließende Initialisierungen getätigt.
 +
 +===== Main Loop, Game States und GUI-Verwaltung =====
 +Nun kommen wir auch schon gleich zu einem ersten mehr oder minder großen Problem der aktuellen Codestruktur und damit also einem der ersten Zwischenschritte fürs Refactoring. Nachdem unser Spiel sich jetzt initialisiert hat und für den Spieler der Ladebildschirm gerade fertiggeworden ist, geht's in die Main Loop des Spiels (die Funktion run). Die hält zunächst die verstrichene Zeit in Sekunden im Auge und führt ein paar grundsätzlich nötige Updates pro Schleifendurchgang durch, im Moment ist das das Update von Input- und SoundManager, die regelmäßig ihren Zustand aktualisieren müssen. Zum Ende der Schleife wird ein neues Bild gerendert und auf Nachrichten vom Betriebssystem bzw. Window Manager geprüft. Das ist so weit, so gut, das Problem liegt in der Phase dazwischen.
z/code/gamemanager.txt · Last modified: 2015/08/23 13:59 (external edit)