Sonntag, 29. März 2009

Plane-Selector fixes, unabhängiger DownloadManager

Es wurde ein Downloadmanager implementiert (Klasse), der sich um leglichen Download kümmert
und dabei MD5-Hashes generiert und überprüft. [Refactoring im Wesentlichen]
Neben einer Vielzahl an Bugfixes wurde ein Planeselector implementiert, der
es erlaubt Flugzeuge auszuwählen, jedoch werden im Endeffekt dann die Flugzeuge
vom Server genommen, damit ein einheitliches Spiel möglich ist. Um den Unterschied zu erkennen, wurde nur bei einem Flugzeug der Burner richtig im File gesetzt.
Um ein neues Flugzeug zu implementieren, ist es lediglich notwendig, die Physik-Werte im XML-File einzutragen sowie ein Physik-Mesh, ein Mesh zur Darstellung und die ColorMap zu setzen. Probleme waren vor allem beim Handling mit dem RenderTarget vorhanden (Doppeltes Rendern, ein mal das Menü + ein Flugzeug mit Hintergrund und unabhängiger Kamera in die Textur; Textur dann anzeigen!). Problematisch war, dass Irrlicht nicht das Zeichnen einzelner SceneNodes unterstützt, sondern die gesamte Szene gezeichnet werden muss. Ergebnis => erneuter Engine-Fix, ab jetzt kann man mit setRange vom ISceneManager den Bereich der IDs der Nodes setzen, die gezeichnet werden sollen oder DRAW_ALL mitgeben. Es ist daher überhaupt nicht aufwendig (Alternative: Liste von Ids mitgeben => aufwendiger und ziemlich öde!) und ziemlich einfach zu verwenden. Lediglich die richtige ID muss beim SceneNode gesetzt werden, was die Funktionalität (im Vergleich zum Array / dynamische Liste, etc.) etwas einschränkt.

Sonntag, 22. März 2009

Physik-Fixes

Das Verhalten des Flugzeuges ist mittlerweile (nach meinem Ermessen) doch ziemlich vernünftig. Natürlich besteht noch Tuningarbeit und vor allem muss noch herausgefunden werden, warum die Winkel der Irrlicht-Engine so seltsam berechnet werden (Eulersche Winkel: Y-Rotation begrenzt zwischen 0 und 180 Grad, muss evtl. noch umgerechnet werden!) Mit Hilfe der Matrizen des Buches "Flight Dynamics And Automatic Flight Controls" von Roskam J. und der Unterstützung von Professor Dellinger verhält sich das Flugzeug schon realitätsnahe.

Mittwoch, 18. März 2009

Setup-Projekt


Da früher oder später sowieso ein Setup-Projekt erforderlich ist, wurde dieses jetzt erstellt.
Mit Hilfe eines Klicks wird automatisch ein Setup-File erstellt, wobei auch alle
notwendigen Abhängigkeiten der diversen Projekte berücksichtigt werden. In diesem Zusammenhang wurde auch gleich die Projektorganisation neu eingeteilt und ist jetzt wie in der Abbildung gestaltet. CopyFonts (benutzerdefinierte SETUP-Aktion) dient zum Kopieren der SkyTactiX-Fonts (TTF) in den Windows-Ordner, wobei interessanterweise das Löschen nicht so einfach möglich ist. Eigentlich braucht auch das Font-File nicht wirklich mehr heraus gelöscht werden, ich kenne viele Programme die das nicht tun. Das SkyTactiX-Setup kennt folgende Abhängigkeiten:

  • SkyTactiX (exe)
  • Irrlicht (dll)
  • Irrklang (extra über "Content" angegeben)
  • Newton (-"-)
  • SkyFontTool (dynamisches Generieren der bmp-Fonts zur Laufzeit)
  • SktxHashLib++ (basiert auf HashLib++, kleine Änderungen; Überprüfen, ob Levels unterlaubterweise manipuliert wurden)
  • SktxServer (standalone-Server)
Die Squirrel-Language und die IrrAI-API wird statisch gelinkt, da dies anscheinend von den Entwicklern so vorgesehen ist und ein Umschreiben wahrscheinlich ziemlich aufwendig wäre (einzelne Funktionen über Interfaces bereitstellen, da sonst Probleme mit Speicher => dll-Speicher nicht direkt eigener Speicher!).

LEIDER muss der data-Ordner vor dem Build manuell in den Explorer "hineingezogen" werden, man müsste eventuell die Config-Files editieren (wenn nicht proprietär! Python-Skript?), um einen vollautomatischen Build hinzubekommen. Es gäbe eine Möglichkeit Dateien als "Content" zu markieren, jedoch müsste man da jede einzelne Datei markieren => Aufwand? Visual Studio ist manchmal echt ziemlich dumm, was die Frage aufwirft wieso dieses komische Programm so viel kostet.

Zur Vorbearbeitung des data-Ordners (Löschen von "CVS"-Ordner (inklusive Inhalt), ".cvsignore", "*.wings", "*.xcf", etc.) wurde ein Python-Skript implementiert, das diese Aktionen mit einer Rekursionsstufe von bis zu 10 und mit Hilfe von Listen von regulären Ausdrücken durchführt.

Folgendes muss also durchgeführt werden, um einen Build hinzubekommen:
  • Ausführen von cvsremove.bat (Löschen der unnötigen Dateien + Ordner)
  • Hineinziehen des data-Ordners
  • Build ausführen
  • NICHT speichern, da der Data-Ordner nicht mehr wegzubekommen ist: VStudio meldet: Ordner nicht leer => Jede Datei einzeln löschen (Bilder, Models, Sounds, etc.)





Montag, 16. März 2009

map, lots of improvements

Neben wieder einer Liste von Fixes wurde schon seit längerer Zeit eine ziemlich geniale Actionplayermap implementiert. Das ganze basiert auf einen GPU-Shader a la Rechberger. Die Karte wird dynamisch von der aktuellen Map erstellt und die korrekte Rotation der Karte ermöglicht eine einfache Navigation.
Zusätzlich werden spezielle Ziele (Meldungen, Befehle, Infos, die der Stratege den Actionspieler erteilen kann) auf der Karte markiert und der Pfeil richtet sich danach aus. Weitere Verbesserungen betreffen zum Beispiel die Konsole, das Pausemenü (Actionspieler wie auch Strategiespieler werden einfach "angehalten", war leider notwendig, da sonst das Gameplay vor allem für den Actionplayer ziemlich ungewöhnlich und das Pausemenü eigentlich sinnlos wäre), oder die Delegationsliste, die dem Strategiespieler ab jetzt zur Verfügung steht.

Montag, 9. März 2009

Pausemenü


Zur besseren Handhabung wurde ein Pausemenü eingeführt,
das ab jetzt dynamisches Namenwechseln erlaubt.
Alle weiteren Einstellungen können wie gewohnt geändert werden,
jedoch ist ein Neustart während eines Spieles nicht möglich
und es muss entweder manuell neu gestartet oder die
Änderungen müssen im Menü vorgenommen werden.

Sonntag, 8. März 2009

tons of bugfixes and extensions









In letzter Zeit wurden viele Probleme behoben und Lösungen optimiert.
Zusätzlich gibt es auch einige Erweiterungen und Neuheiten. Das Servermenü zum Beispiel wurde erweitert und erlaubt mehr Konfigurationsmöglichkeiten, was auch natürlich die Anzeige beim Serversuch-Menü verändert hat. Eine vorläufige Version der Titelmusik wurde komponiert und ist bereits auf dem CVS. Die Menügestaltung wurde vielmals verbessert (z.B.: Soundeinstellungen). Wenn die Netzwerkverbindung abbricht, lässt sich dies rechts oben in der Ecke anhand eines Icons erkennen! Bugs wurden zum Beispiel folgende behoben:
  • ToolTip-Bug (von Irrlicht): ging nicht weg, mit Events weggecheatet!
  • Tasten-Bug (Events wurden "gefressen"); jetzt werden Events, wenn Textbox den Fokus hat, nicht mehr einbehoben und für zum Beispiel die Kamera verwendet.
  • Sound-Bugs
  • Credits schneller und an Rechner angepasst
  • diverse Leveleditor-Fixes
  • Console-Fixes (garantiert jetzt immer im Hintergrund, wenn unsichtbar!)

Montag, 2. März 2009

Neuer Zwischenstand

Das Konzept des Bauens von Gebäuden wurde für den Strategie - und Actionspieler fertiggestellt und funktioniert. Der Stratege hat nun die Möglichkeit einzelne Gebäude auf dem Spielfeld zu platzieren und diese zu entwickeln. Der Actionspieler kann diesen "Rohbau" daraufhin mit einem Energieball fertigstellen, indem er diesen Energieball auf das unfertige Gebäude fallen lässt. Dabei wurden neue Materialien für die Physik - Engine erstellt, um die Kollisionerkennung zu ermöglichen.

Weiters wurde die Funktionalität der Upgrades für den Actionspieler implementiert. Es ist nun möglich die einzelnen Eigenschaften des Flugzeuges wie Geschwindigkeit, Beschleunigung und Spritverbrauch zu beeinflussen, indem man sich die Upgrades über das Tankstellenmenü installieren lässt.

Im grafischen Bereich gibt es einige Bugfixes. Das Schutzschild wird nun korrekt für alle Modelle dargestellt. Weiters wird beim Bauen im Leveleditor und beim Strategiespieler durch verschiedene Farben und Alpha-Werte angezeigt, ob ein Platzieren des Gebäudes an dieser Stelle möglich ist. Erste Versionen von verschiedenen Explosionen mittels Partikelsystem wurden erfolgreich erstellt. Im Bereich des Benutzerinterfaces wurde ein Fehler behoben, welcher die FPS - Zahl bei Anzeige des Informationstextes deutlich verringerte. Interessant bei diesem Fehler war, dass lediglich die Berechnung des Zeilenumbruchs für einen gewissen Anzeigebereich für den Performance - Einbruch verantwortlich war. Dabei wurden Strings und Substrings mittels der String - Klasse der Irrlicht - Engine verwendet.

Texturen wurden für die Tankstellen- und Ballausgabegebäude fertiggestellt. Weitere Texturen für die Respawn-Gebäude wurden ebenfalls fertiggestellt.

Die Rotation der abgrasenden Kameras wurde durch sogenannte Quaternions neu implementiert bzw. verbessert. Die Übertragung der Rotation über Netzwerk ist nun problemlos und soweit ruckelfrei möglich. Fehler die vereinzelt durch die Berechnung falscher Rotationsgrade bei der Übertragung über Netzwerk aufgetreten sind, wurden dadurch ebenfalls beseitigt.

Generell steht die Implementierung bereits ziemlich am Fertigwerden. Einzelne Bugfixes und funktionale Umsetzungen im Bereich des Netzwerks sind noch fertigzustellen. Ansonsten ist das Spiel in seinen geplanten Funktionen spielbar. Größere Veränderungen oder Zusätze sind nicht mehr geplant.