Über ein Monat ist seit meinem ersten Devlog Eintrag vergangen, doch bevor ich euch erzähle was in dieser Zeit passiert ist, muss ich vorab eines loswerden:

Einerseits ist es zwar üblich sich selbst Deadlines zu setzen und diese auch einzuhalten, doch andererseits bin ich froh, dass ich keine Deadlines für dieses Projekt habe, die mich noch mehr unter Druck setzen würden als es bereits ohnehin der Fall ist. Das kleine, einfache Projekt, dass es werden sollte, ist es wohl von Anfang an nicht gewesen und spätestens als ich den Editor Prototypen in Codea fertig hatte, war mir das klar. Ja, vielleicht habe ich mich sogar wieder einmal übernommen?! Es ist viel Arbeit ein eigenes Spiel zu entwickeln (besonders wenn man es noch nie getan hat) und es ist noch mehr Arbeit, wenn man auch noch die Tools für das Erstellen des Spiel programmieren muss. In Codea war das aber unumgänglich für mich! Trotzdem entschied ich mich an diesem Projekt zu arbeiten und werde dies auch weiterhin tun. Anfangs dachte ich mir: »Wie lang kann es schon dauern? Und selbst wenn's ein Jahr dauert - jeden Tag einen Teelöffel mehr und irgendwann wird's schon fertig.« An sich, ist das Spiel, das ich verwirklichen möchte, auch nicht sonderlich komplex oder schwierig umzusetzen - es ist die Vorarbeit die es für mich kompliziert macht. Alle Game Engines, die ich bisher ausprobiert habe (PICO-8, Codea, LÖVE2D, Corona SDK, etc.) haben eines gemeinsam, sie sind sehr einfach (anfängerfreundlich) und haben daher nicht viele API's die einem die alltäglichen Gamedev-Aufgaben abnehmen. So muss man Sachen wie Pathfinding, Trigonometrische Operationen oder gar Physics selbst implementieren, statt sich auf das reine Gameplay zu konzentrieren. Diese 'Kleinigkeiten' sind die wahren Zeitfresser, von denen man überrascht wird, weil man nicht mit ihnen rechnet. Zudem hat jede Game Engine ihre eigene Willkür, weshalb man oft in die Bredouille kommt, beim programmieren von Sachen, die man noch nie vorher gemacht hat - selbst wenn man glaubt eine Engine wirklich gut zu kennen.

Zurück zum Thema. Bevor ich meinen Map Editor Re-write in Codea beginnen konnte, musste ich einige Fragen bezüglich der Optimierung meines Frameworks klären. Mein einzigstes Problem war das dynamische Laden und Speichern einer (unendlich) riesigen Tilemap. Ich hatte einfach keine konkrete Idee, wie ich das ganze angehen sollte. Ich kenne die gängigsten Techniken des Batching und deren Umsetzung stellt für mich im Grunde kein Problem dar, aber ich konnte keine effiziente Infrastruktur dafür finden. Wie sollte ich die Sachen mit einander verzwirbeln? In welchem Format sollte ich die Daten serialisieren und speichern? Es sollte effizient, also performant und platzsparend, sein. Ich beschloss im Codea Forum einen Thread aufzugeben und nach einigen Denkanstößen Ausschau zu halten. Leider konnte mir keiner mit einer guten Idee weiterhelfen, sondern nur eine Empfehlung für eine andere Game Engine aussprechen, Defold.

Defold hatte ich bereits vor einem Jahr entdeckt und früher einmal ausprobiert. Ich war von der Idee der Prefabs und angehängten Scripte begeistert. Es ist das, was Unity3D auch macht, sieht aber in Defold um einiges bequemer aus. Das 'Messaging-System' von Defold mochte ich anfangs aber nicht sonderlich. Der größte Vorteil von Defold besteht darin, dass sich darauf crossplattform entwickeln lässt. Ein anderer Vorteil ist, dass man sich um die Optimierung weniger Gedanken machen muss, denn Tilemaps werden von Haus aus ge-batched und draw call's automatisch zusammengefasst und somit reduziert. Überhaupt ist Defold sehr aggressiv was Performance-Optimierung angeht und das finde ich super! So wie es aussieht, kann Defold bereits das, was ich in Codea vorhabe und ich beschloss daher Defold eine zweite Chance zu geben. - Überhaupt hasse ich es das Rad neu zu erfinden und tue es nur wenn's sein muss. Nur aus diesem Grund habe ich mich auf Defold eingelassen, andernfalls wäre ich in Codea geblieben, weil ich mich damit besser auskenne.

![](/content/images/2016/09/cavemen_devlog_2_2.gif)
Custom Render-Script, eigenes verbessertes Kamera-Script, 8-way [tile based] Movement und vieles mehr. Geteilt im Defold forum, unter https://forum.defold.com/t/solved-measure-mouse-wheel--up-down/2504/5.

Ich habe meine Sprites also erneut in eine neue Game Engine umgezogen und war die vergangenen Wochen damit beschäftigt mich in Defold einzuarbeiten! Die erste Woche war wirklich nervenaufreibend und ich hatte jeden Tag eine neue Frage für das Forum, weil ich darauf keine Antwort in der Dokumentation finden konnte. Nebenbei entdeckte ich eine hand voll Bugs und war drauf und dran dieser Engine den Rücken zu kehren. Dann begann ich jedoch hinter das Arbeitsprinzip von Defold zu steigen und es wurde ein wenig einfacher. Mittlerweile finde ich mich in Defold ganz gut zurecht, aber habe noch immer viele Fragezeichen über dem Kopf, wenn ich ein neues Gebiet von Defold erschließe. Noch steht nicht fest, in welcher Engine ich meine Entwicklung von 'Cavemen' fortsetzen werde, dennoch, im Vergleich zu Codea, ist Defold natürlich eine ganz andere Liga! (Nach einigen Jahren in Codea, klingt das fast wie Verrat, aber wenn es mir hilft mein Projekt zu verwirklichen, werde ich den Wechsel liebend gern vollziehen.)