AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Allgemeine Fragen zu einem Jump and Run Spiel
Thema durchsuchen
Ansicht
Themen-Optionen

Allgemeine Fragen zu einem Jump and Run Spiel

Ein Thema von Looper · begonnen am 12. Mär 2008 · letzter Beitrag vom 21. Mär 2008
Antwort Antwort
Seite 1 von 3  1 23      
Looper

Registriert seit: 28. Sep 2007
Ort: Hamburg
131 Beiträge
 
Delphi XE2 Professional
 
#1

Allgemeine Fragen zu einem Jump and Run Spiel

  Alt 12. Mär 2008, 11:38
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
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#2

Re: Allgemeine Fragen zu einem Jump and Run Spiel

  Alt 12. Mär 2008, 11:51
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.
  Mit Zitat antworten Zitat
Looper

Registriert seit: 28. Sep 2007
Ort: Hamburg
131 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Allgemeine Fragen zu einem Jump and Run Spiel

  Alt 12. Mär 2008, 11:55
Also ich hatte mir gedacht das Level als typisierte Datei abzuspeichern. Und am Anfang wird das Level dann geladen.
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Allgemeine Fragen zu einem Jump and Run Spiel

  Alt 12. Mär 2008, 15:43
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:
Player|id004|12|6
Room:0,0
Wand|id002|0|0
Wand|id002|1|0
Wand|id002|2|0
Wand|id002|3|0
Das sind die ersten Paar Zeilen.
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).
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Looper

Registriert seit: 28. Sep 2007
Ort: Hamburg
131 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Allgemeine Fragen zu einem Jump and Run Spiel

  Alt 12. Mär 2008, 15:54
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
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Allgemeine Fragen zu einem Jump and Run Spiel

  Alt 12. Mär 2008, 16:00
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
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Allgemeine Fragen zu einem Jump and Run Spiel

  Alt 12. Mär 2008, 16:04
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.
  Mit Zitat antworten Zitat
Looper

Registriert seit: 28. Sep 2007
Ort: Hamburg
131 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Allgemeine Fragen zu einem Jump and Run Spiel

  Alt 12. Mär 2008, 16:40
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
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Allgemeine Fragen zu einem Jump and Run Spiel

  Alt 12. Mär 2008, 16:53
Das BIN bedeutet nix anderes als BINÄR. Die Endung wird (dummerweise ) 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.
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Allgemeine Fragen zu einem Jump and Run Spiel

  Alt 12. Mär 2008, 17:14
Zitat:
Man specihert einfach jedes einzelne "Bild"
Das währe unpraktisch und ist auch nicht nötig.

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:
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
Das soll nur als Beispiel dinen
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;
http://www.delphigl.com/forum/viewtopic.php?t=7319
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
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz