![]() |
Allgemeine Fragen zu einem Jump and Run Spiel
Halloa!
Ich habe als Ziel ein Jump and Run Spiel zu programmieren. Das Hauptproblem bei so einem Spiel ist es ja die Grafiken zu erstellen. Um diese Motivationsbremse zu umgehen, benutze ich zuerst Grafiken von einem bereits existierenden Jump and Run Spiel (SuperTux). Nun zur Programmierung. Für die Ausgabe benutze ich Andorra 2D. Meine Frage: Wie geht man bei einem Jump and Run Spiel am Besten vor? Mein bisheriger Plan sah so aus: 1: den Leveleditor programmieren 2: das Spiel an sich (also das Programm, wenn man spätzer richtig spielt) Ist diese Vorgehensweise ratsam, oder nicht? mfg Looper |
Re: Allgemeine Fragen zu einem Jump and Run Spiel
Kommt drauf an, wie komplex deine Level werden sollen. Als Anfang reichts z.B. auch, wenn du nur eine Textdatei hast, die irgendwie den Level abbildet und von deinem Programm interpretiert wird, damit du wenigstens schonmal was zum Anfangen hast.
Leveleditor würde ich erst zum Schluss machen, weil vorher ist dir ja - du wirst sicher nicht mit großartiger Vorplanung rangehen - noch garnicht klar, was deine Spiel-Engine dann an Leveln umsetzen kann / soll. |
Re: Allgemeine Fragen zu einem Jump and Run Spiel
Also ich hatte mir gedacht das Level als typisierte Datei abzuspeichern. Und am Anfang wird das Level dann geladen.
|
Re: Allgemeine Fragen zu einem Jump and Run Spiel
Ich habe gemerkt ein Level Editor gleich am Anfang zu machen ist Sinnvoller als erst zum Schluss
Da die Tests mit den Game Objekten doch einfacher ist. Ich habe mich jetzt für ein Ganz einfaches Datei Format entschieden: Zitat:
Gut, bei mir ist es ein Raster Spiel, aber evlt. lässt sich das Datei Format auch ändern, für deinen Fall. Wenn das Spiel Level Basiert sein soll ist das Level Format das A und O, bei sowas. Und ein Level Editor ist schnell geschrieben. Ich habe bei mir einfach eine ListBox genommen, dort werden alle Objekte mit Namen und Icon Angezeigt. Die kann ich jetzt auf meiner PaintBox Platzieren. Das sollte eigentlich auch mit Andorra klappen.(ich kenne diese Engine jetzt nicht so genau). |
Re: Allgemeine Fragen zu einem Jump and Run Spiel
Okay, dann werde ich mir auf jeden Fall auch mal diese Methode ansehen. Ich glaube auch, dass es einfacher ist, den Leveleditor am Anfang zu schreiben.
mfg Looper |
Re: Allgemeine Fragen zu einem Jump and Run Spiel
naja leichter wohl nicht, weil dann schon ein Datei Format fest steht, und du musst wissen, welche Objekte hast du und wie werden sie verwaltet.
In mein Fall ist das ganze sehr einfach. Aber wie es bei dir aussieht weiß ich nicht. Wenn du ein Level Editor schreibst kannst du ja auch ein Bin Datei Format nehmen. Oder ein INI Basiertes |
Re: Allgemeine Fragen zu einem Jump and Run Spiel
Bevor du anfängst, den Leveleditor zu schreiben, solltest du dir aber wirklich erst ein paar Tage lang Gedanken darüber machen, wie du die Daten speichern willst. Sonst ärgerst du dich hinterher schwarz, wenn du alles neu schreiben musst, weil du einen Gegner hinzufügen willst oder so...
Achja, wenn du irgendwelche Leute hast, die du mit deinen Plänen zulabern kannst, (die müssen nix verstehen^^) würde ich das tun. Mir sind dann manchmal noch einige Ungereimtheiten aufgefallen, die ich sonst wohl übersehen hätte. Aufschreiben geht natürlich auch. |
Re: Allgemeine Fragen zu einem Jump and Run Spiel
meint ihr den, dass typisierte Dateien nicht auch ziemlich praktisch dafür sind.
Man specihert einfach jedes einzelne "Bild" des Spiels ab, gibt ihm einen Typ, X-, Y- und Z- Koordinate. Und sie sind jederzeit erweiterbar. PS: Was genau sind BIN Dateien. Ich habe gefunden, dass es sich um CD-Images handelt mfg Looper |
Re: Allgemeine Fragen zu einem Jump and Run Spiel
Das BIN bedeutet nix anderes als BINÄR. Die Endung wird (dummerweise :roll: ) von vielen Prigrammen benutzt. es wird auch rehct oft für Datenträgerabbilder verwendet.
In diesem Fall ist aber wohl eine binäre Datei gemeint, also keine die zum beispiel als String (X|Y|Objekttyp) oder Ini gespeichert wird. |
Re: Allgemeine Fragen zu einem Jump and Run Spiel
Zitat:
Bei mir habe ich das so gelöst: Es gibt eine Goable Image Liste in der alle Bilder drin sind. Jedes Bild ist also ein Objekt. Jedes Objekt hat z.b. eine eindeutige ID, einen namen, Left und Top und soweiter. Beim Datei Format kannst du jetzt einfach nur die ID und die Left und Top Position speichern. Hier ist meine Speicher Procedure:
Delphi-Quellcode:
Das soll nur als Beispiel dinen
procedure TPluto2DBaseGameA.SaveRooms(const aFileName: String);
var sf:TStringList; x,y,x2,y2,i:Integer; str:String; begin sf:=TStringList.Create; str:=IntToStr(CurrPt.X) + ',' + IntToStr(CurrPt.Y); sf.Add('CurrRoom:' + str); sf.Add(player.Typ + '|' + Player.Id + '|' + IntToStr(Player.Left div 20) + '|' + IntToStr(Player.Top div 20)); for y:=0 to 10 do begin for x:=0 to 10 do begin if Assigned(Rooms[x,y]) then begin str:='Room:' + IntTostr(x) + ',' + IntTostr(y); sf.Add(str); for y2:=0 to MapH do begin for x2:=0 to MapW do begin if (Assigned(Rooms[x,y].Map[x2,y2])) and (not Rooms[x,y].Map[x2,y2].isDel) then begin str:=Rooms[x,y].Map[x2,y2].Typ + '|' + Rooms[x,y].Map[x2,y2].Id + '|' + IntTostr(Rooms[x,y].Map[x2,y2].Left div MapS) + '|' + IntTostr(Rooms[x,y].Map[x2,y2].Top div MapS); sf.Add(str); end; end; // for x2 end; // for y2 for i:=0 to Rooms[x,y].ListTeleporter.Count-1 do begin str:=Rooms[x,y].ItemTeleporter[i].Typ + '|' + Rooms[x,y].ItemTeleporter[i].Id + '|' + IntTostr(Rooms[x,y].ItemTeleporter[i].Left div MapS) + '|' + IntTostr(Rooms[x,y].ItemTeleporter[i].Top div MapS); sf.Add(str); end; for i:=0 to Rooms[x,y].ListPunkte.Count-1 do begin str:=Rooms[x,y].ItemPunkt[i].Typ + '|' + Rooms[x,y].ItemPunkt[i].Id + '|' + IntTostr(Rooms[x,y].ItemPunkt[i].Left div MapS) + '|' + IntTostr(Rooms[x,y].ItemPunkt[i].Top div MapS); sf.Add(str); end; for i:=0 to Rooms[x,y].ListGegner.Count-1 do begin str:=Rooms[x,y].ItemGegner[i].Typ + '|' + Rooms[x,y].ItemGegner[i].Id + '|' + IntTostr(Rooms[x,y].ItemGegner[i].Left div MapS) + '|' + IntTostr(Rooms[x,y].ItemGegner[i].Top div MapS); sf.Add(str); end; end; end; // for x end; // y sf.SaveToFile(aFileName); end; // TPluto2DBaseGameA.SaveRooms Ich meinte mit bin nicht die Datei Endung sondern das Datei Format an sich. Also BINÄR ab speichern z.b. mit TFileStream oder so. Aber ich denke das einfachste ist für dich per TStringList abzuspeichern. Je nach dem wie komplex dein Spiel werden soll könnte ich die auch anbieten meine 2D Engine zu nutzen. Sie basiert auf Canvas und ist im Moment leider nur für Lazarus nutzbar und unter Windows gibt es einige Probleme z.b. das irgendeine Datei nicht gefunden wird, muss ich mal genau nach schauen warum das so ist. Ich weiß jetzt nicht genau wie einfach Andorra ist. Evlt. gibt es dort ja auch eine ImageListe oder sowas. Weil damit währe für dich einige Problem gelöst. Falls du hier angemeldet bist; ![]() kannst du mein 2D Engine schon runter laden. Wenn nicht kann ich sie auch nochmal hier hochladen. Kein Problem. Ich habe meine 2D Engine eigentlich mit dem Ziel geschrieben das alles einfach ist und wiederkerne aufgaben in der Engine bereist gelöst sind. Z.B. für die Kollision Erkennung. Oder das laden und verwalten von Bild Objekten. und soweiter. Evlt. währe das ja was für dich. (Damit möchte ich aber keine Werbung für meine 2D Engine machen, sondern sie nur erwähnen als altnative ich selbst habe damit viele Projekte am laufen. Und auch noch Erweiterungen die aber noch nicht Fertig sind und wie gesagt die Engine läuft nur unter Lazarus mit der lib OpBitMap(Mit Paar änderungen könnte man auch auf OpBitmap versichten nur dann kann man nur BMP Dateien laden) zusammen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz