Prince of Persia 1: level Dastellung aber wie ?
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Ich habe es eben noch mal versucht, aber ich komme nicht drauf.
Könntet ihr mir evlt. noch einige Beispiel für Level Elemente machen/geben ?
Ich komme einfach auf keine Idee wie ich das in einem Spiel vereinen könnte... Auch die Größe ist mir nicht klar. das Spiel soll eine Auflösung von 640X480 haben. Und soll im Fenster Modus Laufen.
Meine Grafiken sind entweder zu klein oder zu groß die ich mache.... und gefallen tuen sie mir auch nicht. Ich hänge mal mein letzten versuch hier dran.
Könntet ihr mir evlt. noch einige Beispiel für Level Elemente machen/geben ?
Ich komme einfach auf keine Idee wie ich das in einem Spiel vereinen könnte... Auch die Größe ist mir nicht klar. das Spiel soll eine Auflösung von 640X480 haben. Und soll im Fenster Modus Laufen.
Meine Grafiken sind entweder zu klein oder zu groß die ich mache.... und gefallen tuen sie mir auch nicht. Ich hänge mal mein letzten versuch hier dran.
- Dateianhänge
-
- test.png (932 Bytes) 2237 mal betrachtet
MFG
Michael Springwald
Michael Springwald
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Tröste dich: Damit hat jeder zu kämpfen. Und das braucht ein bisschen Ausdauer, ein solches Spiel zu entwerfen. Ausdauer und Zeit. Ist nunmal ein ständiger Anpassungsprozess der Figuren. Man bastelt so lange rum, bis sie einen gefallen. Viel Erfolg dabei!pluto hat geschrieben:Meine Grafiken sind entweder zu klein oder zu groß die ich mache.... und gefallen tuen sie mir auch nicht. Ich hänge mal mein letzten versuch hier dran.
-
- Beiträge: 370
- Registriert: Di 6. Feb 2007, 09:29
- OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
- CPU-Target: 32bit i386, ARM
- Wohnort: Oberösterreich
Wieso machst du nicht ein ganz einfaches Tileset?
Du bastelst dir vorher einen Leveleditor. Die Tiles sollten die gleiche Größe haben, die Figuren und Gegenstände auch. 64x64 Pixel sind z.B. eine gute Größe.
Ein einfacher Leveleditor braucht ja auch für den Anfang nicht mehrere Layer. Einer sollte reichen - wenn du das hinbekommst, ist das schon eine ganz tolle Leistung!
Dann, Level gemalt und gespeichert. Theoretisch könnte man das sogar mit einfachen Textfiles.
Du solltest für den Anfang vielleicht nicht zu viele unterschiedliche Tiles hernehmen, da es dann natürlich etwas schwieriger wird. Die Grafiken müssen für den Anfang ja nicht mal schön aussehen, nur die Größe und Platzierung auf der Map sollten passen.
Und dann natürlich Sprites, für die Bewegungen. Alles, was sich bewegt, sollte dann ein Sprite sein, besonders natürlich dein kleiner Prinz.
Dann steht dem nichts mehr im Wege. (Obwohl ich dir hier nochmal raten möchte, doch SDL zu nehmen, da es alles, was du brauchst, schon mitbringt, bis auf die Bilder. Aber das blitten, drehen, Kollission, Sound, Joystick,..)
edit: mir ist noch was eingefallen, jetzt wo ich den Thread nochmal von ganz vorne gelesen habe:
http://www.19.5degs.com/category/619.php" onclick="window.open(this.href);return false;
http://www.jooldesigns.net/photoshop_tutorials.php?id=6" onclick="window.open(this.href);return false;
http://www.gotoandplay.it/_forums/viewt ... eed569ebef" onclick="window.open(this.href);return false;
http://www.zoggles.co.uk/asp/tutorials.asp?tut=1" onclick="window.open(this.href);return false;
IPA - IsometricPixelArt könnte dir helfen.
Du bastelst dir vorher einen Leveleditor. Die Tiles sollten die gleiche Größe haben, die Figuren und Gegenstände auch. 64x64 Pixel sind z.B. eine gute Größe.
Ein einfacher Leveleditor braucht ja auch für den Anfang nicht mehrere Layer. Einer sollte reichen - wenn du das hinbekommst, ist das schon eine ganz tolle Leistung!
Dann, Level gemalt und gespeichert. Theoretisch könnte man das sogar mit einfachen Textfiles.
Du solltest für den Anfang vielleicht nicht zu viele unterschiedliche Tiles hernehmen, da es dann natürlich etwas schwieriger wird. Die Grafiken müssen für den Anfang ja nicht mal schön aussehen, nur die Größe und Platzierung auf der Map sollten passen.
Und dann natürlich Sprites, für die Bewegungen. Alles, was sich bewegt, sollte dann ein Sprite sein, besonders natürlich dein kleiner Prinz.
Dann steht dem nichts mehr im Wege. (Obwohl ich dir hier nochmal raten möchte, doch SDL zu nehmen, da es alles, was du brauchst, schon mitbringt, bis auf die Bilder. Aber das blitten, drehen, Kollission, Sound, Joystick,..)
edit: mir ist noch was eingefallen, jetzt wo ich den Thread nochmal von ganz vorne gelesen habe:
http://www.19.5degs.com/category/619.php" onclick="window.open(this.href);return false;
http://www.jooldesigns.net/photoshop_tutorials.php?id=6" onclick="window.open(this.href);return false;
http://www.gotoandplay.it/_forums/viewt ... eed569ebef" onclick="window.open(this.href);return false;
http://www.zoggles.co.uk/asp/tutorials.asp?tut=1" onclick="window.open(this.href);return false;
IPA - IsometricPixelArt könnte dir helfen.
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Dafür nehmen ich meine eigene 2D Engine die auf Canvas basiert, die macht das Prima.Und dann natürlich Sprites, für die Bewegungen. Alles, was sich bewegt, sollte dann ein Sprite sein
Das ist mir schon klar. Ich denke ich werde heute einfach mal versuchen erstmal ohne diesen Drei D Effekt aus zukommen. das sollte erstmal reichen. Den kann ich später hinzufügen.Wieso machst du nicht ein ganz einfaches Tileset?
Kann ich nehmen. Ich wollte Räume haben wie es in Prince der Fall ist. Ich dachte an einem 2D Array weil so weiß ich auto. welchen Nachbarräume ich habe.64x64 Pixel sind z.B. eine gute Größe.
Jeder Raum speichert eine Liste. Eine Object Liste. Die Grafiken sind zwar alle gleich groß aber die Sprite nicht. Ich wollte jetzt aus den Grafiken. Ich habe mir einfache Grafiken von der Größe 40X40 Gemacht gestern. Aus den wollte ich die einzelnen Elemente zusammen bauen.
Nicht nur Theoretisch. Die Levels speichere ich in einen Ganz einfachen Format so brauche ich am anfang noch kein Level Editor. Vorausgesetzt das jeder Sprite gleich groß ist.Dann, Level gemalt und gespeichert. Theoretisch könnte man das sogar mit einfachen Textfiles.
Da bin ich andere Meinug. gut drehen währe ein Augment. Aber Kollisionen leider nicht.(Obwohl ich dir hier nochmal raten möchte, doch SDL zu nehmen, da es alles, was du brauchst, schon mitbringt, bis auf die Bilder. Aber das blitten, drehen, Kollission, Sound, Joystick,..)
Ich bin mit SDL nicht zufrieden. Die umsetzung und dann gibt es sehr wenig weiterführende Tutorials. Egal ob in Deutsch oder Englisch. Ich habe keine gefunden. Ob Sie in C++ oder Object Pascal sind währe mir auch egal. Und dann waren doch noch einige kleinigkeiten.
Meine 2D Engine die ich jetzt soweit habe, macht das schon ganz gut... finde ich. und niemt mir schon ein Großen Teil ab. Wenn meine Tests abgeschlossen sind werde ich sie hochladen. Eine Beschreibung habe ich auch schon Fertig.
Jeder Sprite kann bei mir auch noch weitere Sprites aufnehmen wo alle Positions Angaben Relativ zum Hauptsprite sind. So wie bei GLScene in etwa....
Dazu habe ich eine eigene Image Liste geschrieben die alle verwenden Grafiken einen ID einen Namen einen Typ und noch einige sachen mehr geben kann.
@Euklid Danke. Einfache 2D Spiele sind ja auch kein Problem: Pacman z.b. oder so... aber Prince Of Persia ist doch schon etwas anders als Snake oder Pacman oder so...
@bembulak
Vielen Dank für deine Links. Werde ich mir gleich mal anschauen.
@schnullerbacke
Ganz einfach: Weil es leichter ist mit Sprite zu arbeiten. Also ohne. Die nehmen mir bei so einen Spiel sehr viel arbeit ab. Und ich brauche nicht ständig das Bild komplet neu zu zeichnen sondern nur teile die ich verändert haben. Bei den meisten 2D Spielen verändern sich nicht gerade viel. Und ich kann ein Hintergrund mit einbinden.
An alle nochmals: Vielen Dank für eure Antworten.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Ganz einfach:
Bevor ein Bild gezeichnet wird, wird der Untergrund gesichert.
Um ihn später wieder herstellen zu können.
Jetzt wird das eigentliche Bild gezeichnet. Wurde schon Ein bild gezeichnet steht eine Variable z.b. auf True dann wird bevor das neue bild gezeichnet wird, das alte bild zurückgeholt.
Um Grafik Fehler zu vermeiden, ist bei mir ein Bild ein Object eine Klasse um genau zu sein.
Diese Klasse gehört einem Sprite Manger an, der wiederum einer 2D Engine angehört.
Beim Zeichnen eines Sprite wird jetzt ein event ausgelöst, das von der 2D Engine aufgefangen wird. Und jetzt werden alle Sprite neugezeichnet die auf die Alten Positionen passen.
Das ist mein Prinzip bei der Engine.... Es geht darum das ein Sprite den Untergrund nicht zerstört und auch wieder herstellen kann. Ich werde evlt. mal ein kleines Beispiel hochladen.... wenn ihr interresse habt. Ich denke ein Beispiel sagt mehr als 1000 Wörter oder ? Mein pacman Clone z.b. den ich hierhochgeladen habe basiert auf Sprite und auf meiner Eigenen Engine.
Bevor ein Bild gezeichnet wird, wird der Untergrund gesichert.
Um ihn später wieder herstellen zu können.
Jetzt wird das eigentliche Bild gezeichnet. Wurde schon Ein bild gezeichnet steht eine Variable z.b. auf True dann wird bevor das neue bild gezeichnet wird, das alte bild zurückgeholt.
Um Grafik Fehler zu vermeiden, ist bei mir ein Bild ein Object eine Klasse um genau zu sein.
Diese Klasse gehört einem Sprite Manger an, der wiederum einer 2D Engine angehört.
Beim Zeichnen eines Sprite wird jetzt ein event ausgelöst, das von der 2D Engine aufgefangen wird. Und jetzt werden alle Sprite neugezeichnet die auf die Alten Positionen passen.
Das ist mein Prinzip bei der Engine.... Es geht darum das ein Sprite den Untergrund nicht zerstört und auch wieder herstellen kann. Ich werde evlt. mal ein kleines Beispiel hochladen.... wenn ihr interresse habt. Ich denke ein Beispiel sagt mehr als 1000 Wörter oder ? Mein pacman Clone z.b. den ich hierhochgeladen habe basiert auf Sprite und auf meiner Eigenen Engine.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 370
- Registriert: Di 6. Feb 2007, 09:29
- OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
- CPU-Target: 32bit i386, ARM
- Wohnort: Oberösterreich
Hier mal ein Sprite:

Es ist ein Bild, auf dem die diversen Möglichkeiten (Bewegungen), die das Objekt (in dem Fall der Mech) haben kann. Das Bild wird einmal geladen und mittels Clipping-Methoden wird immer nur eines der Einzelbilder dargestellt.
SDL (und Sub-Libraries für diverse Sprachen wie Pascal, Python, Perl, PureBasic,...) bietet z.B. die Möglichkeit, ein SpriteObjekt zu erzeugen. Soweit ich mich erinnere, ist es ein "SpriteArray". Nach dem Laden zerlegt man das Bild mittels des Clippings gleichmal in die Einzelbilder und über den Index ruft man dann das jeweilige Bild auf.
Im "Normalzustand" wird vom Bild oben ja "nur" Bildnr. 5 angezeigt. Drückt der Spieler nun z.B. die Cursortaste-Links, so werden die Bilder angezeigt. Das sieht dann aus, wie Bewegung. Im 2D-Bereich ist das eigentlich Gang und Gebe.
Beispiel #2:

wird im Spiel zu:

(wenn die Ansicht hier nicht funktioniert, bitte einfach auf der Website anschauen)
Wie es gezeichnet wird, ist dann im Prinzip egal. Ob man alles selber, wie pluto, malt und sich um die Animation kümmert, oder SDL die Arbeit übernehmen lässt. Das Prinzip ist immer gleich. Wie bei einem Zeichentrickfilm. Die Einzelbilder werden in ausreichend schneller Abfolge gezeichnet, dass es für uns wie Bewegung aussieht.
EDIT: der Hintergrund der Bilder wird entweder mit einer auffälligen Farbe (z.B. RGB(255,0,255)) oder mit transparent gemacht. SDL unterstützt AFAIK auch Transparenz.

Es ist ein Bild, auf dem die diversen Möglichkeiten (Bewegungen), die das Objekt (in dem Fall der Mech) haben kann. Das Bild wird einmal geladen und mittels Clipping-Methoden wird immer nur eines der Einzelbilder dargestellt.
SDL (und Sub-Libraries für diverse Sprachen wie Pascal, Python, Perl, PureBasic,...) bietet z.B. die Möglichkeit, ein SpriteObjekt zu erzeugen. Soweit ich mich erinnere, ist es ein "SpriteArray". Nach dem Laden zerlegt man das Bild mittels des Clippings gleichmal in die Einzelbilder und über den Index ruft man dann das jeweilige Bild auf.
Im "Normalzustand" wird vom Bild oben ja "nur" Bildnr. 5 angezeigt. Drückt der Spieler nun z.B. die Cursortaste-Links, so werden die Bilder angezeigt. Das sieht dann aus, wie Bewegung. Im 2D-Bereich ist das eigentlich Gang und Gebe.
Beispiel #2:

wird im Spiel zu:

(wenn die Ansicht hier nicht funktioniert, bitte einfach auf der Website anschauen)
Wie es gezeichnet wird, ist dann im Prinzip egal. Ob man alles selber, wie pluto, malt und sich um die Animation kümmert, oder SDL die Arbeit übernehmen lässt. Das Prinzip ist immer gleich. Wie bei einem Zeichentrickfilm. Die Einzelbilder werden in ausreichend schneller Abfolge gezeichnet, dass es für uns wie Bewegung aussieht.
EDIT: der Hintergrund der Bilder wird entweder mit einer auffälligen Farbe (z.B. RGB(255,0,255)) oder mit transparent gemacht. SDL unterstützt AFAIK auch Transparenz.
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Bei diesem Spiel geht das noch, weil ich die Orignal Grafiken nehmen kann von Prince of Persia 1.....
Aber sonst gebe ich dir recht. z.b. mein Pacman Clone besteht aus ca 30 Einzel Grafiken die alle in einer Grafik drin sind. Ohne Animation sonst währen es noch mehr....
Ein anders Spiel besteht aus ca 100 Grafiken.... die alle eine ID und einen namen haben und einer Gruppe angehören.
Ich finde es spand Spiele zu schreiben gerade im 2D Bereich bei 3D sind das ja noch mehr Grafiken als bei 2D... 2D Reicht mir aber. Ich möchte die Klassiker versuchen nach zu schreiben. Einige sind ja recht einfach. Aber bei Coment z.b. habe ich schon Probleme:
Weil das Raumschiff gedreht werden muss und weil der Schuss in die Richtung Fliegen muss in der das Raumschiff Schaut. Dann muss es auch noch eine Kollision Erkennung geben.
Dort habe ich jedes mal meine Probleme. Eine Einfach habe ich schon, nur ich hätte gerne eine Pixel Kollision Erkennung, auch wenn sie langsam sind, reicht sowas für einfache 2D Spiele...
Und ich muss mich nicht mit den LCL Komponenten rum Ärgern *G*
EDIT: Mein Aktuelle stand bei diesem Projekt....
Der Player ist eine Orginal Grafik *G* wie ihr sieht. Die Bewegung klappt schonmal ganz gut, bis auf einen kleinen Fehler den ich noch finden muss.
Aber sonst gebe ich dir recht. z.b. mein Pacman Clone besteht aus ca 30 Einzel Grafiken die alle in einer Grafik drin sind. Ohne Animation sonst währen es noch mehr....
Ein anders Spiel besteht aus ca 100 Grafiken.... die alle eine ID und einen namen haben und einer Gruppe angehören.
Ich finde es spand Spiele zu schreiben gerade im 2D Bereich bei 3D sind das ja noch mehr Grafiken als bei 2D... 2D Reicht mir aber. Ich möchte die Klassiker versuchen nach zu schreiben. Einige sind ja recht einfach. Aber bei Coment z.b. habe ich schon Probleme:
Weil das Raumschiff gedreht werden muss und weil der Schuss in die Richtung Fliegen muss in der das Raumschiff Schaut. Dann muss es auch noch eine Kollision Erkennung geben.
Dort habe ich jedes mal meine Probleme. Eine Einfach habe ich schon, nur ich hätte gerne eine Pixel Kollision Erkennung, auch wenn sie langsam sind, reicht sowas für einfache 2D Spiele...
Und ich muss mich nicht mit den LCL Komponenten rum Ärgern *G*
EDIT: Mein Aktuelle stand bei diesem Projekt....
Der Player ist eine Orginal Grafik *G* wie ihr sieht. Die Bewegung klappt schonmal ganz gut, bis auf einen kleinen Fehler den ich noch finden muss.
MFG
Michael Springwald
Michael Springwald