
Nun da wir endlich ein Blog für das TankYou-Projekt haben, denke ich wir sollte mit einem kleinen Rückblick auf die Geschichte des Projektes beginnen. Auch wenn es unglaublich scheint und ziemlich peinlich ist, reichen die Wurzeln von Tank You zurück in das Jahr 1995. Das Projekt (bzw. sein Vorgänger) startete unter dem Namen "Martes Zibellinae" (Latein für Zobel). Geplant war einen simplen Worms-Clone mit kleinen Zobeln anstatt Würmern zu bauen. Wir liebten Worms sehr, doch fanden dass es mit der Qualität der Serie mit jeder Fortsetzung weiter Berg ab ging. Weil wir damals noch zur Schule gingen, hatten wir eine Menge Freizeit, aber wir begannen mit wenig Erfahrung in Spieleentwicklung und nur mit mittelmässiger Programmiererfahrung.
Der erste Versuch wurde in C++ entwickelt und nutzte reines Direct X. We kamen überraschend weit und hatten eine Art Demo mit Explosionen, zerstörbarem Land, Minen und so genannenten "Quietscheentchen", aber ohne spielbare Zobels. "Quietscheentchen" sollten eine spezielle Minenart werden, die explodiert sobald ein Zobel sie wieder verlässt, nachdem er auf sie drauf getretten war. Wegen unsere fehlenden Erfahrung war die Codequalität grauenvoll und das ganze Projekt war kaum wart- oder erweiterbar. Da war ein Bug in der Zündungslogik der "Quietscheentchen" und egal wie sehr wir es versuchten, wir konnten ihn nicht beheben. Letztendlich haben wir dann den ersten Versuch für tot erklärt und uns entschieden nochmal komplett von vorne zu beginnen. Ich würde euch gerne diese alte Demo mit ihrer Pixelgrafik zeigen, aber unglücklicherweise ist sie während eine Plattencrashs verloren gegangen (wir hatten auch wenig Erfahrung in Datensicherung und Versionskontrolle ;) )
Im zweiten Versuch wollten wir ein Fundament schaffen, auf dem wir das Spiel aufbauen konnten, also versuchten wir eine kleine Spriteengine als Abstraktion von Direct X zu schaffen. Das Ding hiess HASE ein backronym für (HackAddict Sprite Engine). Es konnte Animationen und hatte einen coolen Algorithmus für die automatische Aufteilung der Spritegrafiken auf die einzelnen Offscreensurfaces. Ich weiss nicht mehr genau warum der zweite Versuch schief lief, aber er tat es. Ich denke es war, als wir die Schule verliessen und der Wehrpflicht sei dank zur Bundeswehr mussten. Wir hatten kaum noch Freizeit und die die wir hatten verbrachten wir damit den Sold zu versaufen.
Im dritten Versuch wechselten wir von Direct X zu SDL zunächst nur um das Spiel plattformunabhängig zu entwickeln, aber in Endeffekt hat es sich als Verbesserung in fast allen Bereichen herrausgestellt. SDL ist eine super Engine, aber dass hielt die Entwicklung nicht davon ab wieder einzuschlafen.
In der Zwischenzeit hatten wir begonnen auch hauptberuflich als Softwareentwickler zu arbeiten und auf der Arbeit entwickelten wir Applikationen in Java. Auch wenn Java nicht den besten Ruf für Spieleentwicklung hat, entschlossen wir uns es einfach mal auszuprobieren. Wir schauten uns damals auch Slick an, entschieden uns dann aber auf 3D umzuschwenken und die jMonkeyEngine einzusetzen. Es klappte ziemlich gut, aber wir hatten viel Ärger mit der Landgenerierung und wieder einmal zu wenig Erfahrung, diesmal in der 3D-Entwicklung.
Nach dem Ausflug in die Java-Welt gingen wir zurück auf C++ und SDL. Wir bauten eine Engine auf die ich immer noch recht stolz bin. Sie konnte mit erweiterbaren und in XML-beschriebenen Ressourcen umgehen und war sehr flexibel und performant. Dieser Versuch starb, als wir merkten, dass wir hardware-beschleunigte Rotation brauchen könnten. SDL unterstüzt nur sehr langsame Software-Ration und die OpenGL-Einbindung erforderte sehr viel OpenGL-Erfahrung, welche wir nicht hatten.
Nach diesem Fehlschlag entschieden wir uns dann das Spielkonzept radikal zu verändern und Panzer statt Zobel zu verwenden, hin zum jetzigen Design. Aller guten Dinge sind Sechs. We ihr sehen könnt sind wir wieder auf Java unterwegs, mit Slick und echtzeit Physics in (j)box2d. Wir sind alt und erfahren genung und wissen was wir tun, dass einige Problem ist immernoch unser Mangel an Freizeit, die wir in das Projekt investieren können.
Jetzt sind wir sehr heiss darauf endlich ein Projekt abzuschliessen.