Manchmal starte ich ein Projekt, programmiere ein paar Tage für 45 Minuten dran rum, und vergesse es dann wieder.
So lief es auch hier.
Nach insgesamt 3 Anläufen in 2D-Platformern mit verschiedenen Philosophien hab ich nun etwas zusammengeschustert, was hoffentlich nach Bereinigung und Lizenzänderung (mehr dazu später) als eine sehr simple Basis für zukünftige Projekte dienen kann.
Doch nun eine kleine Aufzählung zu den vorrausgehenden Projekten:
Projekt 1
Arbeitstitel: Lineart.
Philosophie: Bugs = Features.
Das wohl Feature-kompletteste der ganzen Projekte, wenngleich auch das mit dem höchsten Spaghetticodeanteil.
Strukturen waren mir noch nicht bekannt, oder sie wurden willig ignoriert. ("Pff, brauch ich doch nicht, ich kann mir das merken!!!")

Durch solchen Spaghetticode gab es mehrere Probleme:
-Das Ganze war langsam.
-Partikel und Objekte wurden in statischen Arrays behandelt.
-Das Ganze war sehr fehlerbehaftet, einige dieser Fehler wurden jedoch Aufgrund der Philosophie als Features eingearbeitet.
-Das Ganze war effektiv unwartbar.
Man fiel mitunter durch eine Plattform, wenn die Y-Geschwindigkeit größer war als die Platformdicke.
Also änderte ich die Solidität dieser Plattformen so, dass sie nur bei einem Actor, der sich NICHT in der Luft befindet überhaupt als solide erkannt werden können.
Auch Y-Bugs existierten, so steckte man auch gerne mal in einer Platform, oder wurde in einen Abgrund teleportiert.
Aufgrund der Unwartbarkeit habe ich dieses Projekt dann verworfen, aber der "Code" schwirrt immer noch irgendwo auf meiner Festplatte rum. Herausgekommen ist ein erstes angewandtes Verständnis für PureBasic, sowie eine Routine für ControllerToKeyboard()-Funktionen.
Projekt 2
Arbeitstitel: Dinomassacre.
Philosphie: Floats = Doof, nutze nur Integer.
Der Start eines Art-Themas, welches ich auch heute noch weiter verfolge. Den kleinen grünen Kerl werdet ihr noch öfter sehen.

Mittlerweile hatte ich mich mit Strukturen angefreundet, war jedoch ein erklärter Gegner von Floats.
Diese Ära dauerte eine relativ lange Zeit an, und ich habe folgende Errungenschaften... errungen:
-Pixel-basierte Kollisionen.
-Ein Kamerasystem.
-Ein dynamisches Actor-System.
-"Bots".
-Eine erste Bekanntschaft mit Servern, leider nur Crashes.
Im Allgemeinen war dieses Projekt relativ effizient und auch zu einem gewissen Grad angenehm zu warten. Dennoch wuchs der Code mit der Zeit so an, dass neue Features (Scriptsystem, richtige Animationen) zu schwierig zu implementieren gewesen wären.
Ein paar wichtige ältere Features waren auch rausgeflogen, ohne Hoffnung auf Wiedereinführung. (Controller-Support, dynamische Maps, Partikel)
Weiterhin hatte ich den Fehler gemacht und keine konsistenten Archive von der Versionshistorie angelegt, Das Projekt ist also nur noch halb erhalten.
Schlussendlich sah das Ganze dann aber trotzdem süß aus:

Projekt 3
Arbeitstitel: Unbetitelt.
Philosphie: Alles dynamisch!!!
Nur ein 2-Wöchiger Test von Sprites, Kameras, Kollisionsroutinen, und Stresstests.
Es wurde nicht wirklich viel Neues gelernt, dennoch diente es zur Erprobung von für mich neuen Routinen.
Leider keine Bilder vorhanden. :<
Projekt 4
Arbeitstitel: Awoo! (Bitte schlagt mich nicht.)
Philosphie: Floats = Megakrass.
Zwischendurch lernte ich noch Menus kennen, und wollte ein möglichst subsystemunabhängiges Programm schreiben, und so fing ich erstmal mit PB-Version 5.00 an, da dort Dx7, Dx9, und OpenGL unterstützt wurden.
Nach Problemen mit Transparenz (das Ganze soll ja schließlich nicht vollständig aus dem letzten Jahrhundert kommen) sowie der fehlenden Bool()-Funktion bin ich dann auf 5.24LTS gewechselt, und relativ zufrieden damit.
Sich mit den einzelnen Bugs der OpenGL und DirectX11-Subsysteme auseinanderzusetzen war nervenaufreibend, da beide (und ganz besonders DirectX11) Bugs, Memory Leaks, etc.. aufweisen, die bei DirectX9 schlichtweg nicht vorhanden sind.
Das Ganze ist größtenteils wieder eine Regression von den vorherigen Projekten, jedoch wurde mehr auf eine wartbare Struktur geachtet. (Ja, die anderen Projekte waren noch schlimmer.)

Ihr dürft euch davon gern mal ein eigenes Bild machen, Source natürlich mit dabei. :3
Ich habe mich entschieden, das Ganze erstmal unter einer unglaublich restriktiven Lizenz zu zeigen, jedoch wird dies nach der Fertigstellung geändert werden.
Steuerung:
AD - Bewegung links rechts.
JL - Nach links und rechts gucken.
S - Boost.
Tab - Dauerhafter Boost wenn gedrückt gehalten.
Space - Springen. In der Luft nochmal drücken für 'nen Doppelsprung. :3
Shift - Gedrückt halten für Sprintmodus.
Esc oder 1234 auf der Nummernleiste eingeben - Menü anzeigen.
F1 bis F12 bieten auch Zugriff auf die Menü-Funktionen.
Pfeiltasten - Direkte Positionsverschiebung des Spielers.
https://drive.google.com/file/d/1xfA_Io ... sp=sharing
Alles ist noch ein ewiger WIP, Verbesserungsvorschläge und eventuelle Dev-Wünsche sind gern gesehen.
