Kaum habe ich meinen YouTube-Kanal wieder ausgegraben, habe ich auch direkt ein neues Video hochgeladen. Ja, es geschehen noch Zeichen und Wunder!
https://www.youtube.com/watch?v=CAescH9K72U
Das ist mein aktuellen Spiel-Projekt. Sehr wahrscheinlich wird es niemals fertig und ich arbeite daran auch nur gelegentlich. Aber ich möchte trotzdem gern mal meine Fortschritte dokumentieren. Die Grundidee ist eine Mischung aus Vampire Survivors und Geometry Wars. Thema und Spielprinzip ist an VS angelehnt und soll sich am Ende wie GW spielen, sodass man selbst zielen und schießen muss. Nur auf einer viel weitläufigeren Karte.
Dafür verwende ich C++ (allerdings nutze ich es mehr wie C mit ein paar komfortablen Zusatzfunktionen) und Raylib. Raylib ist eine schöne Bibliothek, die alles enthält, was man braucht, um ein Spiel zu programmieren.
Bisher habe ich schon ein paar Sachen implementiert: Tilemap, Kollisionen, Animationen, abschießbare Gegner und Power-ups, die mit variabler Wahrscheinlichkeit erscheinen (aber noch keinerlei Wirkung haben). Die Tilemap wird aus vielen verschiedenen kleinen Tiles zusammengesetzt und dann als große Textur dargestellt. Der Rest ist noch sehr rudimentär. Dank Raylib war das aber alles recht einfach umzusetzen.
Als Nächstes möchte ich die Map aus mehreren Teilen zusammensetzen, sodass ich sie zum einen besser individualisieren kann (zum Beispiel durch zufällig platzierte, aber vorgefertigte Gebäude) und zum anderen nicht die komplette Map die ganze Zeit im Speicher sein muss.
Dann sollen Gegner nicht mehr ineinander laufen, sondern sich voneinander abstoßen. Das ist an sich auch ganz einfach zu implementieren. Ab einer gewissen Menge an Gegnern geht das aber stark auf die Performance, weil jeder Gegner die Position jedes anderen Gegners abfragen muss. Da das Spiel später viele Gegner haben soll, muss ich mir dafür also etwas überlegen. Am sinnvollsten erscheint mir bisher so etwas wie ein QuadTree. Damit könnte ich die Kollisionsabfragen jedes Gegners auf einen bestimmten Bereich begrenzen. Da muss ich noch ein bisschen experimentieren.
Dann brauche ich natürlich noch schönere Grafiken, verschiedene Gegner mit unterschiedlichen Bewegungs- und Angriffsmustern, Sound, Pathfinding und, und, und ... Also noch viel zu tun und zu lernen.
Und nun belasse ich es erst einmal hierbei. Bis zum nächsten Update (das hoffentlich nicht wieder Monate auf sich warten lässt)!