Guten Abend,
nun hier mal ein kurzes Statusupdate wie es aktuell bei mir und mit dem Projekt aussieht. Ich möchte das in einem eigenen Thread machen da der Alpha-Thread schon ziemlich voll ist und so^^
(Vorsicht, hier folgt erstmal eine etwas technisch angehauchte Erklärung. Für den ;TL;DR des Status bei nicht-interesse an dem Thema einfach nach unten scrollen )
Ähm, ich weiß nicht ob ich es hier mal explizit erwähnt hatte, aber es gab noch genau ein größeres Thema was mich an meiner Engine aktuell gestört hat, bzw was einfach noch ziemlich murksik war. Dabei ging es um das Backend hinter meinem Visuellen Scripting-System; mit dem ich im Endeffekt die Gesamte Game-Logik von Terranigma 2 entwerfe. Backend bedeutet in dem Fall, wie diese Scripte ausgeführt werden (Frontend wäre wie ich Scripte schreibe bzw baue). Nunja, sagen wir nochmal so: mein aktuelles Backend war ziemlicher Murks. Das merkbarste Problem dabei war Performance. Zugegeben, in Builds vom Game selber war das kaum zu merken, Terranigma 2 läuft je nach PC zwischen 1000-3000 FPS. Ein Problem besteht eher für mich wenn ich im Editor in einem Debug-Build laufe, wo ich schnell an die Grenzen komme. Vor allem da selber ja oft mit Turbomodus teste, welcher für jede verdoppelung der Geschwindigkeit auch 2x soviel Performance frisst. Damit komme ich im Editor in den meisten Szenen gerade einmal auf ein maxium von 8x beschleunigung (optimal wäre 16-32x). Auch in Benchmarks die ich hin und wieder mal laufen lasse (da die Engine ja ein Projekt für sich genommen ist welches auch Arbeit abseits des spezifischen Projekts "Terranigma 2" leisten können soll). Und da schauts echt nicht rosig aus. Also, es ist schon viel viel besser geworden. Bevor ich begonnen hatte das aktuelle Backend zu optimieren, konnte ich im Release-Modus vllt gerade einmal 20 voll gescriptete Arks in der Szene haben, und jetzt bin ich immerhin bei in etwa 400. Wobei das auch für sich viel Zeit gefressen hat, und es einfach immer mehr ein Problem wird in das ich mehr und mehr Zeit investieren muss, weil das Backend immer komplexer wird. Und die Sache ist halt, der Rest der Engine ist auch super optimiert. Ich hatte ja anfangs viele Benchmarks mit >10k Sprites gezeigt. Und da ist halt der Unterschied zwischen einfachen Sprites und Objekten mit Scripten immer deutlicher. Tatsächlich dürfte mein Script-Backend sogar langsamer als das vom Rpg-Maker sein, nur dass ich halt in etwas 90% der Arbeit in die Core-Engine verlagern konnte, was das ganze einfach besser versteckt.
Nunja, das schiebe ich jedenfalls schon seit etwa 3 Jahren vor mir her. Denn die Lösung dafür ist es, ein neue Backend zu schaffen, auf Basis einer sogenanten Bytecode-Sprache. Diese wird ähnlich wie ein normales Programm kompiliert, nur eben viel beschränkter und von mir selber. Das ist in etwa das, was Java oder C# macht; ich denke mal zumindestens Java hat sicher jeder der einen PC benutzt schonmal gehört. Das Problem dabei ist, dass das eine Verhältnismäßig große Aufgabe ist; die ich nicht in kleine Brocken verteilen kann. Ich muss sämtliche Features die meine Scriptsprache beherrscht Stück für Stück nachbauen. Erst wenn ich damit komplett fertig bin, kann ich das überhaupt erst im Game Testen (bis dahin muss ich mir kleine Testscripte in einem eigenen Projekt schreiben). Und das verzögert nun einmal kurzfristig die Entwicklung von Terranigma 2 um einige Zeit.
Aber was soll ich sagen: Ich habe mich vor kurzem dazu entschieden diesen Schritt trotz allem zu gehen. Auch wenn es jetzt an der Stelle erstmal eine Pause in die Entwicklung einlegt; ist es etwas was früher oder später einfach passieren muss. Und je früher ich es tue, desto weniger Zeit muss ich in das alte Backend stecken. Zusätzlich bekomme ich, wenn ich einmal damit fertig bin neue Möglichkeiten für Features die ich im Frontend einbauen kann, was bedeutet dass ich danach Scripte auch wieder effizienter bauen kann.
Nun, so sieht es jedenfalls aus. Ich habe vor etwa 2 Wochen damit begonnen (für das Thema muss ich auch selber erstmal viel lernen, da ich dafür erstmal verstehen musste wie man so Bytecode überhaupt baut). Ich habe aber schonmal super gute Fortschritte gemacht, und bin sehr zuversichtlich dass ich dieses Projekt in halbwegs absehbarer Zeit abschließen kann - so lange wollte ich auch warten bis ich ein Update mache; da es möglich gewesen wäre dass ich dieses Bytecode-Projekt schnell wieder einstampfen oder auf Eis legen müsste. Ich kann leider echt keinen Zeitrahmen dafür geben; geschätzt würde ich sagen dass ich nach den 2 Wochen in etwas zu 15% fertig bin (wobei das halt stark fluktuiert da anfangs viel Zeit in konzeption geflossen ist; ich allgemein eher viel Nebenbei um die Ohren habe; und gefühlt die Entwicklung nach der Zeit immer schneller voran geht).
Ich werde schauen, dass ich hier immer mal wieder kurze Statusupdates gebe; aber da das ganze ein rein technisches Thema ist kann ich euch in der Zwischenzeit leider immer nur Schätzungen geben zu wieviel % ich denke dass ich fertig bin (alles andere wäre zu technisch und würde vmtl keinen Interessieren bzw die wenigsten verstehen
Beste Grüße!