Hallo alle zusammen!
Heute moechte ich euch ein Projekt vorstellen, an dessen Entwicklung ich im letzten Jahr mitgewirkt habe - Entropy, ein Indie Puzzle-Plattformer in 3D, fuer die XBox 360 (XBLIG) und in naher Zukunft auch fuer den PC.
Releasedatum: 17. September 2012 (XBox Live Indie Games)
Preis: 80 MSP (~1 Euro)
Veroeffentlicht wird das Spiel im Rahmen des Indie Uprising III, einer Gruppe von 9 Indie-Entwicklern, die zwischen dem 10. und 20. September ihre Spiele nacheinander fuer den XBLIG-Marketplace releasen und vorher gemeinsam ein bisschen die Werbetrommel ruehren. Geruchten zufolge koennte es sogar sein, dass Microsoft uns im XBox Dashboard promoten wird, dafuer wuerde ich aber meine Hand noch nicht ins Feuer legen :-)
Trailer
(auf HD stellen!)
[youtube]CgD3y-KqzJo[/youtube]
Endnutzer-Beschreibung
Entropy ist ein angeblich leicht an Portal angelegtes, etwas unkonventionelles Knobelspiel. Der Spieler erkundet eine geheimnisumwobene 3D-Welt und loest dabei einige Raetsel, die sich allesamt um die klassischen "Naturprodukte" Feuer, Wasser, Stein, Elektrizitaet und … aeh … Saeure drehen. Um die einzelnen Raetsel zu loesen muessen jeweils einige dieser Elemente geschickt miteinander kombiniert werden – und zwar idealerweise ohne das ganze Level dabei abzubrennen (was zuweilen moeglich ist) oder selber zu sterben (was eigentlich immer moeglich ist).
Als nuetzliches Hilfsmittel gibt es die Moeglichkeit, Gravitationsfelder zu erschaffen, die alles bewegliche in Reichweite zu einem bestimmten Punkt hin ziehen. Zuweilen laesst sich auch der gesamte Raum kippen, was, wie im Trailer zu sehen, allerdings auch nicht unbedingt ungefaehrlich ist.
„Gefaehrlich ist aber kein Problem, denn die Zeit laesst sich jederzeit zurueckdrehen – ein Druck auf die entsprechende Taste und die Szene spult sich in Echtzeit zurueck!
Parallel zum Loesen der Levels gibt es auch sowas wie eine Story … worum es dabei genau geht, muesst ihr selber herausfinden. Die farbigen Wesen, die auf den Screenshots unten zu sehen sind, spielen jedenfalls eine grosse Rolle und insbesondere das rosane duerftet ihr noch das eine oder andere Mal zu Gesicht bekommen :-)
Das Spiel besteht aus insgesamt 26 Levels, die Spielzeit betraegt etwa 3 bis 5 Stunden, abhaengig davon wie ausgiebig der Spieler seine Umgebung erforscht (es gibt insgesamt 12 versteckte Geheimkammern, einige davon sind recht trickreich versteckt und nur durch das geschickte Loesen von Neben-Raetseln zugaenglich).
Screenshots
Team
Entropy ist seit ca. einem Jahr in Entwicklung, wobei ein Grossteil der Entwicklungsarbeit zwischen Januar und Juni 2012 geleistet wurde.
Unser kleines Team besteht im Kern aus drei Leuten – Leo Basov als Leveldesigner, Jonas Grunert (sein ZFX-Account ist earlgrey, aber er benutzt ihn soweit ich weiss nicht) als Physik & Tools–Programmierer und meine Wenigkeit fuer die 3D-Grafik.
Zusaetzlich hatten wir etwas Unterstuetzung von ein paar im Umgang mit 3D-Modellierungsprogrammen, Keyboards und Zeichenstiften recht begabten Leuten.
Insgesamt stecken im Spiel sicher 1-2 Personenjahre.
Technisches
Technisch gesehen setzen wir – nicht loslachen – auf C# mit XNA. Fuer die XBOx 360 haben wir ohne XBLA–Vertrag ja auch quasi keine andere Wahl. Insgesamt muss ich jedoch sagen, dass mich insbesondere XNA recht positiv ueberascht hat – man schafft es doch, dieser Schnittstelle eine Menge Optik zu entlocken und es ist enorm angenehm, sich nicht mehr mit manchen Nervigkeiten der D3D/OGL-APIs herumschlagen zu muessen. Der Preis den wir performancemaessig (durch einige Limitierungen in XNAs Rendertarget-Verwaltung bedingt) zahlen, wuerde ich auf ca 10-15% Mehrkosten im Vergleich zu einem Renderer auf Basis des nativen XBox APIs beziffern. Fuer .net Jammerei siehe unten.
Wir nutzen einen Deferred Renderer mit Full-HDR und einem grossen Haufen Trickserei um komplexe Brechungs- und Raumverzerrungseffekte darstellen zu koennen. Nachdem wir auf der XBox leider nicht ganz auf 720p rendern koennen, machen wir es wie Crysis 2 (und die UnrealEngine auch) und rendern HUD + Menue auf 720p und die Szene auf geringerer Aufloesung. Diese skalieren wir dann hoch, wobei wir auch noch einen leichten Kantenglaetter drueberlaufen lassen.
Was sonstiges Postprocessing angeht, ist so ziemlich die ganze Palette drauf. Nur auf SSAO mit temporaler Reprojektion mussten wir auf der XBox aus Performancegruenden in letzter Sekunde noch verzichten – eventuell kriege ich es fuer ein Update noch entsprechend hoch optimiert, ansonsten wird es eben nur fuer PC–Spieler verfuegbar sein.
Als Physikengine nutzen wir Jitter und haben damit, abgesehen von einigen heimtueckischen GC-Leaks, siehe unten, wirklich gute Erfahrungen gemacht.
Zum Importieren von 3D-Modellen in XNAs Content-Pipeline verwenden wir AssimpXNA. Das wiederum kann ich nicht empfehlen, nur Obj ohne Texturen laedt damit richtig (was fuer uns aber langte), an Assimp liegt es nicht …
C# auf der XBox macht hingegen KEINEN Spass. Microsoft setzt auf das .net Compact Framework, das, man erinnere sich, primaer fuer rechenschwache Handys ausgelegt ist. Fuer eine mehrkernige Konsole mit etlichen GFlop CPU Leistung ist das voellig ungeeignet:
- der JIT-Codegenerator des Compact-Frameworks ist schlechter als die PC-Version. Leider nutzt die XBox PowerPC, d.h. in-order. Schlechter JIT-Code wird also ziemlich lahm. Soweit ich das erkennen konnte findet quasi kein Inlining statt.
- zu allem Ueberfluss generiert er keinen ordentlichen AltiVec-Code und die normale FPU der XBox ist nicht wirklich schnell. Die XNA-Mathefunktionen sind intern jedoch anscheinend optimiert. Nachdem aber z.b. deren Frustum-Culling fuer uns nicht ausreichend war (kein Plane-Masking und sonstige Spaesse), mussten wir muehsam per Profiler herausfinden, WELCHE der Low-Level XNA-Funktionen eigentlich den optimierten Code enthalten und wie wir sie mit unserem Code kombinieren konnten. Eigener Mathecode lief um den Faktor 2 langsamer.
- Besagte Mathefunktionen nutzen dann auch noch durchweg floats, die Calling-Convention auf der XBox CLI kennt aber nur [cb]double[/cn]-Uebergaben, also wird staendig expandiert und gerundet.
- der GC des Compact Frameworks macht sobald eine bestimmte Allokationsgrenze erreicht wird, ganz klassisches Mark&Sweep OHNE dabei langlebige Objekte in Seniorengenerationen zu verschieben, d.h. er scanned bei jedem Durchlauf ALLES durch. Wir haben ernsthaft unsere Datenstrukturen darauf optimiert, dass der GC-Lauf moeglich wenig Zeit braucht, sprich, wir haben zuweilen Referenzen durch indirekte und fuer den GC nicht auffindbare Verknuepfungen ersetzt (eine absolut erniedrigende Optimierung). Davon abgesehen haben wir in mehrwoechiger Arbeit ALLE Allokationen ausserhalb der Ladezeiten eliminiert um alle GC-Laeufe selber kontrollieren zu koennen. Dabei stellte sich heraus, dass selbst so harmlose Konstruktionen wie ein foreach auf einer ausversehen zu einem IEnumerable gecasteten struct GC-Leaks verursachen (Boxing in dem Fall – scheinbar setzt foreach aus genau diesem Grund auf Duck-Typing und castet sein Argument NICHT, wie man es in einer strikt typisierten OO-Sprache erwarten wuerde, implizit nach IEnumerable). Es gibt kostenlose Tools um solche Probleme aufzuspueren, aber letzten Ende war es doch sehr viel Handarbeit und auch viel Raten.
Ich moechte hier natuerlich kein reines Werbeposting produzieren :-) Wenn wir alles hinter uns haben, plane ich, ein Post-Mortem zu schreiben um noch ein paar weitere Erfahrungen zu konservieren.
Social Media
Liked uns auf Facebook und verfolgt uns auf Twitter. Eine Website haben wir auch.
Weiteres
Nachdem XBLIG-Spiele notorische Publicity-Probleme haben, sind wir fuer jede Werbung dankbar! :-) Diejenigen unter euch, die eine XBox ihr eigen nennen, koennen am 17. September das Spiel im XBLIG Market zum oben genannten Preis erwerben.
Aktuell laufen die Planungen fuer die PC-Version, doch weder der Distributor steht fest, noch ein moeglicher Termin. Anfang 2013 koennte realistisch sein.
Um das etwas voranzutreiben, wuerden wir uns freuen wenn ihr uns auf dem kuerzlich gestarteten Steam Greenlight unterstuetzen wuerdet!
Ihr braucht dazu nur einen Steam-Login sowie einen oder zwei Klicks :-)
Wir freuen uns auf euer Feedback.
(18.4.2013) Entropy ist mittlerweile auf Desura zum PC-Download verfuegbar.