[Projekt] Tile based 2D RPG Baukasten
Verfasst: 26.10.2017, 15:19
Hallo Leute,
ich wollte hier mein aktuelles Projekt vorstellen und hören, was ihr davon haltet.
Es könnte ein Spiel werden, im Moment liegt sein Sinn eher im Erkunden. Deshalb sind auch automatisch generierte Maps für die Zukunft geplant.
Basieren tut die Idee und einiges vom Grundgerüst her auf dem ersten Pokemon Gameboy-Spiel, dessen Assemblercode ich mir intensiv angesehen habe.
Was ich eigentlich will ist, ein Grundgerüst zu schaffen, um dann Tilesets und Spritesheets von Spielen und Künstlern von Pinterest zu nehmen und sie lebendig werden zu lassen. Das heißt schnell und einfach Levels bauen und damit die existierende Spielwelt zu vergrößern. Außerdem soll die Prozessorauslastung gering bleiben (RPG Maker ist da ziemlich verschwenderisch).
Ich habe ein Video erstellt, dass die meisten bisherigen Features zeigt: https://www.youtube.com/watch?v=e7YwvbsU8ns
Zu finden ist alles hier: https://github.com/danielroehrborn/TileBasedGameWithSDL
Angefangen habe ich damit eine Tilemap mit SDL2 darzustellen, zu bewegen und zu zoomen. Dann kamen Sprites dazu und Sets von Animationen, die aus Frames und Bewegungsdistanz bestehen. Bei einer Map sollte es nicht bleiben, also habe ich Übergänge an den Maprändern eingebaut und um diese zu verschönern noch die von den Pokemon-Spielen bekannten Connection Strips (es wird ein schmaler Streifen der angrenzenden Map geladen und am Maprand angezeigt), damit die Illusion eines fließenden Übergangs entsteht. Anschließend sollte es auslösbare Ereignisse geben, also Events, die durch Schalter auf dem Boden ausgelöst werden können oder auch durch sich bewegende Schalter (schwebendes Portal). Somit kam ein EventManagement dazu, das Kollisionsn mit Schaltern erkennt, Events in eine von mehreren Queues einreiht in denen Eventlisten gleichzeitig ablaufen. Eventtypen sind zur Zeit: Figur teleportieren (innerhalb Map oder auf andere Map), Figur animieren (beliebige nacheinander ablaufende Bewegungen), Map verändern (Tiles ersetzen, z.B. versperrten Weg freimachen), Tageszeit ändern (Lichtstimmung: Mittags, Abends, Nachts), Zustandsautomatenflags setzen (kommt gleich). Es können auch mehrere Events an den selben Sprite gebunden werden. So kann ein einziger animierter Schalter beim darüberlaufen: Auflöseanimation abspielen und Tag/Nachtwechsel abspielen und beliebig viel mehr.
Außerdem sollten sich Maps verändern können, also einen Zustand haben (Zustand=welche Figuren auf der Map stehen, welche Schalter wo sind und was diese bewirken). Also gibt es für jede Map einen Zustandsautomaten, der Flags in einer zur Map gehörende Bitmap im EventManagement auswertet. Da die Maps zukünftig zufallsgeneriert sein sollen, verschwinden alle Maps bei Verlassen aus dem Speicher, es bleibt lediglich ein Integer als Bitmap. Auch alle Figuren werden beim Verlassen der Map gelöscht, es sei denn eine Figur wird zur permanenten Figur ernannt. Dann bleibt ein kleiner Datensatz für sie erhalten, um sie beim erneuten Betreten der Map an die gleiche Stelle laden zu können.
Es gibt noch sehr viel mehr zu sagen, z.B. über die Kamerasteuerung, die Figuren langsam verfolgen, automtisch zoomen und auch frei bewegt werden kann, aber ich weiß gar nicht, wie ich das alles hier verständlich aufbereiten soll.
Über viele Kommentare zu dem Video würde ich mich sehr freuen.
ich wollte hier mein aktuelles Projekt vorstellen und hören, was ihr davon haltet.
Es könnte ein Spiel werden, im Moment liegt sein Sinn eher im Erkunden. Deshalb sind auch automatisch generierte Maps für die Zukunft geplant.
Basieren tut die Idee und einiges vom Grundgerüst her auf dem ersten Pokemon Gameboy-Spiel, dessen Assemblercode ich mir intensiv angesehen habe.
Was ich eigentlich will ist, ein Grundgerüst zu schaffen, um dann Tilesets und Spritesheets von Spielen und Künstlern von Pinterest zu nehmen und sie lebendig werden zu lassen. Das heißt schnell und einfach Levels bauen und damit die existierende Spielwelt zu vergrößern. Außerdem soll die Prozessorauslastung gering bleiben (RPG Maker ist da ziemlich verschwenderisch).
Ich habe ein Video erstellt, dass die meisten bisherigen Features zeigt: https://www.youtube.com/watch?v=e7YwvbsU8ns
Zu finden ist alles hier: https://github.com/danielroehrborn/TileBasedGameWithSDL
Angefangen habe ich damit eine Tilemap mit SDL2 darzustellen, zu bewegen und zu zoomen. Dann kamen Sprites dazu und Sets von Animationen, die aus Frames und Bewegungsdistanz bestehen. Bei einer Map sollte es nicht bleiben, also habe ich Übergänge an den Maprändern eingebaut und um diese zu verschönern noch die von den Pokemon-Spielen bekannten Connection Strips (es wird ein schmaler Streifen der angrenzenden Map geladen und am Maprand angezeigt), damit die Illusion eines fließenden Übergangs entsteht. Anschließend sollte es auslösbare Ereignisse geben, also Events, die durch Schalter auf dem Boden ausgelöst werden können oder auch durch sich bewegende Schalter (schwebendes Portal). Somit kam ein EventManagement dazu, das Kollisionsn mit Schaltern erkennt, Events in eine von mehreren Queues einreiht in denen Eventlisten gleichzeitig ablaufen. Eventtypen sind zur Zeit: Figur teleportieren (innerhalb Map oder auf andere Map), Figur animieren (beliebige nacheinander ablaufende Bewegungen), Map verändern (Tiles ersetzen, z.B. versperrten Weg freimachen), Tageszeit ändern (Lichtstimmung: Mittags, Abends, Nachts), Zustandsautomatenflags setzen (kommt gleich). Es können auch mehrere Events an den selben Sprite gebunden werden. So kann ein einziger animierter Schalter beim darüberlaufen: Auflöseanimation abspielen und Tag/Nachtwechsel abspielen und beliebig viel mehr.
Außerdem sollten sich Maps verändern können, also einen Zustand haben (Zustand=welche Figuren auf der Map stehen, welche Schalter wo sind und was diese bewirken). Also gibt es für jede Map einen Zustandsautomaten, der Flags in einer zur Map gehörende Bitmap im EventManagement auswertet. Da die Maps zukünftig zufallsgeneriert sein sollen, verschwinden alle Maps bei Verlassen aus dem Speicher, es bleibt lediglich ein Integer als Bitmap. Auch alle Figuren werden beim Verlassen der Map gelöscht, es sei denn eine Figur wird zur permanenten Figur ernannt. Dann bleibt ein kleiner Datensatz für sie erhalten, um sie beim erneuten Betreten der Map an die gleiche Stelle laden zu können.
Es gibt noch sehr viel mehr zu sagen, z.B. über die Kamerasteuerung, die Figuren langsam verfolgen, automtisch zoomen und auch frei bewegt werden kann, aber ich weiß gar nicht, wie ich das alles hier verständlich aufbereiten soll.
Über viele Kommentare zu dem Video würde ich mich sehr freuen.