Montag, 5. September 2011

[TechBlog] Einfach und schnell zum eigenen Dateiformat (Teil 1)


Einführung
Es gibt kaum ein Programm, das keine Daten speichern muss. Manche nutzen dafür Datenbanken oder auch Webservices, aber am häufigsten werden Dateien benutzt. Wenn es für die Daten bereits ein Format gibt, dann kann man natürlich dieses verwenden. Wenn man aber – wie wir – die Map eines Tower Defence-Spiels speichern möchte, dann muss man sich ein eigenes Format ausdenken.

Aufstellen der Anforderungen
Bevor man sein Format definiert, muss man sich zuerst klar machen, was es überhaupt leisten soll. Unser Mapformat, welches wir OTDM getauft haben, muss von unseren Programmen einfach zu verarbeiten sein, da wir nicht zu viel Zeit mit dem Lese- und Schreibcode verbringen wollen. Außerdem sollte das Format auch für Menschen lesbar sein, sodass man per Hand Änderungen vornehmen kann. Genauso sollte OTDM aber auch für andere Programmierer einfach zu implementieren sein. Zu guter Letzt muss es auch größere Maps in wenigen Kilobyte unterbringen können, da die Maps vom Server an die Clients verschickt werden sollen, falls sie dort nicht vorhanden sind.

Definieren des Formats
Wenn die Anforderungen klar sind, kann man sich daran wagen, das eigene Format festzulegen. Zuerst hat man die Wahl, etwas komplett eigenes zu erschaffen oder sein Format aus bereits vorhandenen Formaten zusammen zu setzen. Ein komplett eigenes Format ist unserer Meinung nach nur in wenigen Fällen sinnvoll, vor allem, weil es einen enormen Aufwand benötigt, bis das Programm es lesen und schreiben kann. Wir haben uns deshalb für die zweite Variante entschieden.
Dabei fiel unser Blick auf XML, da es sowohl von Menschen als auch von Computern verarbeitet werden kann. Gleichzeitig ist XML standardisiert und es gibt für fast alle Programmiersprachen fertige Bibliotheken. XML nimmt aber auch eine gewisse Sonderstellung ein, da es zwar einen XML-Standard gibt, der schreibt aber nur einige wenige Rahmenbedingungen vor, während der Rest vollkommen frei ist. Das ermöglicht eine große Flexibilität durch die man viele Daten (vor allem tabellarische oder baumstrukturähnliche) in XML darstellen kann.
Der Nachteil an XML ist, dass es als textbasiertes Format und durch seine Struktur viel Overhead speichert und so die Dateien sehr groß werden können. Für ein Format, das per Internet übertragen werden soll, ist das natürlich denkbar schlecht. Um nun trotzdem die Vorteile von XML nutzen zu können, haben wir uns dafür entschieden die XML-Daten zu komprimieren. Durch seinen Aufbau bedingt lässt sich XML sehr gut komprimieren, zum Teil auf nur 10% der Originalgröße. Dabei hatten wir die Wahl zwischen Zip, GZip und BZip2. BZip2 schied direkt am Anfang aus, da es nur minimal bessere Komprimierung bei erheblich größerem Rechenaufwand bietet. Zip und GZip dagegen sind ungefähr gleich (in unseren Tests). Der Unterschied für uns ist folgender: Zip kann mehrere Dateien speichern, die sich ohne temporäres Entpacken einzeln auslesen lassen. GZip dagegen speichert nur einen Stream, welcher komplett entpackt werden muss, selbst wenn man nur eine Datei lesen möchte. Wir haben uns deshalb für Zip entschieden.

In Teil 2
In Teil 2 zeigen wir, wie man solch ein Dateiformat mithilfe der #ziplib in C# lesen und speichern kann.

Eigene Erfahrungen, Anregungen und Verbesserungsvorschläge sind natürlich erwünscht!

Samstag, 3. September 2011

Mitgliedersuche & Neue Kategorien

Wir sind immer noch auf der Suche nach Mitgliedern. Genauere Informationen dazu und wie ihr euch bewerben könnt findet ihr hier.

Außerdem gibt es ab sofort eine Einteilung der Posts in Kategorien, damit ihr schneller an die Posts kommt, die ihr sucht. Dabei gibt es dann auch gleich eine Neuerung namens "TechBlog". Hier werden wir Posts veröffentlichen, die Probleme und unsere Lösung oder einfach Erkenntnisse während der Entwicklung von OTD thematisieren.

Freitag, 2. September 2011

Status 02.09.2011

Engine²

Wir machen kleine Fortschritte beim ausbauen unserer gesamten Engine. Wir hoffen die Tage fertig zu werden, damit wir wieder daran arbeiten können das Spiel weiter zu entwickeln.

Sonntag, 28. August 2011

Status 28.08.2011

Engine

Das umgestalten der Engine gestaltet sich recht schwer. Es wird noch etwas Zeit in Anspruch nehmen. Wir sagen Bescheid sobald wir fertig sind.

Dienstag, 23. August 2011

Status 23.08.2011

Umstrukturierung

Um uns das Leben später einfacher zu machen und später noch schneller neue Features zu adden und um später schneller Bugs zu fixen, sind wir aktuell dabei unsere Engine umzustricken. Unser SourceCode soll strukturierter werden und vor allem modularer. Das dauert momentan ein wenig, da wir viele Variablen raus nehmen um alles zu vereinfachen. Das Spiel startet schon mal wieder mit der neuen Struktur und wird morgen wieder spielfähig zu machen.

Samstag, 20. August 2011

Status 20.08.2011

Team

Aktuell sind wir, nachdem wir uns ausgeruht haben dabei, neue Teammitglieder zu rekrutieren. Momentan haben wir die Wahl zwischen zwei sehr guten Programmieren, die unser Team ggf. verstärken werden. Wir sind und noch nicht ganz sicher aber informieren Euch in Kürze über den Zuwachs. Desweiteren suchen wir immer noch 2D Grafiker für uns Spiel. Bitte bewerbt Euch im Forum für diesen Posten. Das Forum ist übrigens auch noch arg leer. Wir wünschen einen Besuch Eurer seits. Wir können Euch da vorweg schon alle Fragen und Wünsche abnehmen!

Donnerstag, 18. August 2011

Status 18.08.2011

Gamescom

Gott uns tun die Füße weh. =) Wir haben alles geschafft! Zuerst waren wir überwältigt von der Masse die diesmal da war. Ich persönlich war auch die letzten 2 Jahre da und zu dem Zeitpunkt war viel weniger los. Aber das scheint ja nur die enorme Größe des Events wiederzuspiegeln. Nachdem wir alle 5 Hallen durchgegangen waren, sind wir nochmal alle 5 rückwärts gewandert. Auf dem Rückweg haben wir noch einiges mehr gesehen.

Das erste was wir angepeilt haben war COD MW3. Leider war dies nicht spielbar, aber dafür hatten wir einen überlauten, fast Tinnitus erzeugenden Videobeitrag. Ähnlich wie bei den letzten Teilen baut COD auf Action und Knallerei. Das Video überzeugte mit purer Action im Wasser und im Auto. Alles explodierte und ganze Gebäude vielen in sich zusammen. Grafisch würde ich COD MW2 auf eine Stufe mit COD BlackOps setzen. Auch wenn das die XBOX Version war und wir eine riesige Leinwand hatten, denke ich das ich am PC nicht viel tun wird. Danach gings zu Farcry3. FarCry3 sieht besser aus als ich gedacht hatte. Die Programmierer bauen auf eine eigene Engine, die Landschaft und Jungle wunderschön darstellen kann. Auch wenn die Engine nicht mit der Crytek Engine mithalten kann, hat mich die Grafik überzeugt. Spielerisch ist es wie in FC2 nur mit ein paar mehr Interaktionsmöglichkeiten bzw. Tötungsmöglichkeiten. Viel gesehen hat man nicht nur ein kleines Dorf und ein paar hübsche Szenen.

Kurz danach sind wir unverzüglich zu Diablo 3, meinen persönlichen Favoriten der GC, der letzten 3 Jahre. Ich habe es auf jeder GC spielen dürfen, so auch auf dieser und ich bin einfach davon überzeugt. Grafisch hat sich natürlich viel getan, man kann oft mit der Umgebung interagieren und Monster gibts ohne Ende. Schon nach 5min hatte ich mein Inventar mit Gegenständen voll und ich metzelte mich durch die Gegner. Items soll es angeblich mehrere 1000 geben. Also weckt das meine Sammelleidenschaft und der Wille Stundenlang zu spielen. Zu guter Letzt natürlich noch Battlefield 3, was wir erst bestaunen durften in einem Live Gameplay. Todesmutig stürzte sich der Entwickler auf Veteran-Modus ist Getümmel. Die Grafik ist dank DX11 absoluter Wahnsinn auch wenn ich auch hier behaupten mag nicht so gut wie die Crytek Engine. Dennoch ein absoluter Augenschmaus. Auch GamePlaytechnisch hat BF3 ein bisschen mehr zu bieten als der letzte Teil. Neu hinzu kommt wohl ein neue Rangsystem, eigene Events und Co. alles natürlich ausschließlich online. Als wir dann spielen durften, das Spiel 1x einfror bei mir kann ich behaupten: "Das kauf ich mir!". Spielerisch genau so wie die guten alten Teile, haben wir CTF gespielt mit 64 Spielern, auf einer viel zu großen Karte. Ich erwarte dieses Jahr 4 gute Spiele, die ich mir auf jeden Fall zulegen werde.

Neben den dicken Krachern der GC, waren aber auch viele unscheinbare gute Spiele dabei. Anno 2070 hat mich z.B. auch fasziniert, den die 3 Fraktionen, die wählbar sind spielen sich alle unterschiedlich. Für mich ein großer anreiz auch da zuzuschlagen. Auch Elder Scrolls 5 kann spielerisch und Sammlersüchtige mit Sicherheit begeistern. Assassins Creed durften wir im Multiplayer auch kurz antesten. Jedoch spielt sich das für mich wie der Teil davor. Grafisch sieht es praktisch genau so aus wie der Vorgänger. Der neue Batman und seine Begleiterin konnten mich dank kurzer Demo auch überzeugen. Den ersten Teil habe ich auch durchgespielt, was ich mit diesem sicher auch tun werden. Kampfsystem und Story finde ich einfach gut. Wer noch Zeit hat und 10€ übrig sollte sich schleunigst dort hin begeben. Am besten Oropacks mitnehmen, den die Lautstärke ist diesmal unerträglich. Zu guter Letzt noch ein paar Bilder der GC und unserer Ausbeute:













Status 18.08.2011

GamesCom

Heute gibts mal nichts zu tun, den morgen gehts auf die GamesCom. Danach werde ich euch meine Eindrücke mitteilen und dort ein wenig Werbung für OTD machen.

*EDIT - 07:54* AUF GEHTS... =)

Dienstag, 16. August 2011

Status 16.08.2011

InGame-Menü und Buttons

Heute haben wir wieder viel diskutiert. Dadurch haben wir nun eine Plan zur Umsetzung des InGame-Menüs, die es uns erlaubt, sehr einfach Buttons für neue Funktionen hinzuzufügen. Außerdem haben wir eine grobe Idee, wie das Grundgerüst der Spiellogik gestaltet werden soll.
Buttons können nun neben einem Hintergrundbild auch einen Text darstellen, wodurch eine Unterstützung für mehrere Sprachen möglich wird. In dem Zuge haben wir das Textrendering auch gleich verbessert.

Montag, 15. August 2011

Status 15.08.2011

InGameMenü

Heute hatte ich endlich mal Zeit und Muße mich um das InGameMenü zu kümmern. Eine erste Idee ist alle vorhandenen Tower in kleinen Kästchen zu rendern und einige Infos dazu hinzuzuzeichnen. Bei der kleinsten Auflösung würden 15 Tower ins Fenster passen und somit die Grenze auf 15 erhöht werden. In den Fenster wird dann später mit kleinen Symbolen gezeigt, was der Tower für Fähigkeiten hat. Hierzu zählen z.B. vereisen, verbrennen, vergiften oder Flächenschaden. Das jetzt ist ein erster Versuch wir man es machen könnte. Mir gefällt es und so werd ich es jetzt erstmal weiter machen. Nachdem man nun also auf einen freien Platz klickt wird sich dieses Menü öffnen. Selbiges gilt natürlich nachher auf für die Fallen! Desweiteren wurde den Texten jetzt ein kleiner Schatten hinzugefügt!