Hey,
Heute möchte ich euch einmal zeigen was ich derzeit so Nebenbei mit Javascript werkle.
Ziel ist es, ein eigenes Spiel zu erstellen das sich dann vom Grafikstyle an Spiele wie Pokemon,
Harvest Moon - Friends of Mineral Town, Zelda & co. orientiert.
Ich nutze für das ganze eine Art "Engine" die ich selbst entwickle - diese "Engine" habe ich "Cygine" genannt
Diese Engine ist sogesehen eine Struktur die verschiedene Kernelemente enthält, die dann dafür
sorgen das man darauf aufbauend ein Spiel bauen kann.
Ein paar Kernelemente der "Cygine"
- core.js (Haupt-Element)
Die core.js ist sogesehen das, was alles zusammen hält.. quasi das, was ich "Cygine" getauft habe.
Über diese File lassen sich alle Komponenten von Cygine ansprechen (Beispiel: Cygine.TBox(), Cygine.Debug(), Cygine.state, Cygine.Map, etc).
- init.js (Initialisiert & Läd alles)
Läd die benötigten Files und Initialisiert die einzelnen Funktionen damit man auf sie Zugriff hat.
Pro: Weitere Elemente leicht einbindbar (per Js File & Init Function) -> Modding & co. ist dadurch leicht möglich
- map_proc.js ("Map Engine")
Sorgt dafür das man Maps (eigenes Dateiformat, extra für Cygine erdacht) in die Engine laden kann.
Zusätzlich rendert die Map Engine auch gleichzeitig die Map (bzw stellt Funktionen dafür bereit).Die Maps sind in Tiles aufgebaut, die aus dem jeweiligen Tileset (im Map Ordner) der Map zusammengesetzt werden.
- key_proc.js (Keyboard Processing)
Verarbeitet alles was mit der Steuerung des Games zu tun hat.. Tastaturanschläge werden hier
registriert & in die richtigen Aktionen umgesetzt.
- textboxes.js (RPG Maker ähnliche Textboxen)
Stellt Funktionen bereit um Textboxen und Dialoge im Spiel anzeigen zu können.
Pausiert während dessen den Render-Prozess der restlichen Elemente (Map, Animationen).
- object_proc.js (Object Processing)
Auf der Map können Events & Objekte plaziert werden, die dann durch die Spielfigur getriggert werden können.
Diese einzelnen Events und Objekte werden von diesem Kernelement verarbeitet.
Die Art der Events und Objekte sind folgende (nur ein paar aufgezählt):
- Teleporter (Betreten von neuen Maps um in Häuser oder Höhlen rein und rausgehen zu können)
- Textboxen (Schilder, Beschreibungen von Interaktiven Objekten)
- Dialoge mit NPC's (Questtexte, Händler & co.)
- Spielbereiche die beim betreten Schaden zufügen (Lavabecken, Zauber von Gegnern wo man nicht drinstehen soll etc.)
- Spielbereiche die beim betreten Heilung zufügen (eigene Zauber, Wasser aus Quellen und weiteres)
Das ist zumindestens das was ich bisher habe.
Das ist das erstemal das ich so etwas komplexes wie ein Spiel bzw eine "Spiele Engine" bastel, daher dauert das ganze entsprechend lange.
Ich versuche dabei alles so zu konstruieren, das es nicht nur spezifisch auf das Spiel angepasst ist sondern individuell auch in anderen Projekten
benutzt werden kann.
Was für ein Spiel genau ich damit schlussendlich entwickle, weiß ich noch nicht zu 100% - bevor ich mit der entwicklung des ganzen noch nicht weit genug vorangeschritten bin,
möchte ich dies auch nicht so exakt festlegen da sich einzelne Entscheidungen immer noch ändern können & werden.
Dinge die bisher feststehen:
- Es wird ein 2D Game das auf Tilesets basiert (Maps die aus einzelnen Tiles bestehen;Top Down Ansicht)
- Ich möchte nicht das mein Spiel zu einem "Ich schnätzel mich durch die Gegner" Game wird.
Das Game wird wenn, dann nur wenige Gegner enthalten.
Diese Gegner werden sofern ich dies umsetzen kann dann auch eigene kleine Mechaniken / spezielle Fähigkeiten haben bei denen man aufpassen muss, sonst verreckt man
Ich mag es nicht das in den meisten Games die Gegner immer so zum Kanonenfutter mutieren wo man sich Brainafk durchboxt bis man einen bestimmten Drop oder Level hat.
Inwiefern ich das ganze dann umsetzen kann, weiß ich aber nicht - wie gesagt, ist das erste Game was ich entwickle.. muss mir also alles Wissen bezüglich Game Entwicklung
erst aneignen.
- Es wird eine Singleplayer Sandbox sein. Offene Spielwelt -> man kann überall hin sofern es die eigenen Skills & Gegner ermöglichen.
Ähnlich wie Zelda, Pokemon und Harvest Moon - Friends of Mineral Town.
Ein Multiplayer wäre jedoch zu Overkill. Vorallem da ich erstmal damit klar kommen muss ein einigermaßen Spielbares Singleplayer hinzubekommen.
Müsste mich sonst auch noch mit Dingen wie dem einzelnen Sync. von einzelnen Clienten, Entwicklung des Servers usw beschäftigen.
- Genre -> RPG / Abenteuer, Fantasy Orientiert
Screen eines Tests (Schauen wieviele Tile Wechsel man im Browser ohne Lag machen kann):
Hier wird zunächst eine normale Map geladen, und dann wird Tile für Tile Zufallsbasiert gewechselt (test für spätere animationen).
Nutze für die Entwicklung derzeit noch Pokemon Tilesets, diese werden aber später durch eigene ersetzt.
Achja, auch zu sehen ist meine "Stylische" Dialogbox wo grade ein Dialog zwischen dem Spieler und einem nicht existierenden NPC stattfindet.
Dialog ist an den Pokemon Startdialog angelehnt, also nicht für das "Prof Cy" bashen ja?
Um es anders zu sagen - Ich habe mir da ein ziemlich großes und komplexes Freizeit Projekt rausgesucht
Ich muss noch Dinge wie Collision Detection, Animationen, eine Spielbare Figur, NPC's & co. implementieren.. was erstmal ne harte Nuss wird.
Ich weiß nicht ob ich das Projekt stemmen werden kann, aber das Ziel und die Motivation ist zumindestens da.. und es macht mir auch spaß immer wieder
daran weiter zu arbeiten. Das ganze ist als Langzeitprojekt angelegt da ich schon immer mal ein eigenes Spiel entwickeln wollte..
Anders gesagt hatte ich oft den Gedanke "Die ganzen Games sind doch kacke, ich wills selbst besser machen.." - Let's Try it..
Würde diesen Thread hier gerne nutzen dürfen um meinen jeweiligen Fortschritt
dokumentieren zu dürfen sofern das okay geht