Prince of Persia 1: level Dastellung aber wie ?

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
pluto
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)

Beitrag von pluto »

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.
Dateianhänge
test.png
test.png (932 Bytes) 2237 mal betrachtet
MFG
Michael Springwald

Euklid
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:

Beitrag von Euklid »

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.
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!

bembulak
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

Beitrag von bembulak »

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.

schnullerbacke
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

Beitrag von schnullerbacke »

Wieso braucht man Sprites um seinen "kleinen Prinzen" zu bewegen? :P
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

bembulak
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

Beitrag von bembulak »

ROFL

Na, weil es so schön prickelt. ;)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Tut Waldmeisterbrause auch.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
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)

Beitrag von pluto »

Und dann natürlich Sprites, für die Bewegungen. Alles, was sich bewegt, sollte dann ein Sprite sein
Dafür nehmen ich meine eigene 2D Engine die auf Canvas basiert, die macht das Prima.
Wieso machst du nicht ein ganz einfaches Tileset?
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.
64x64 Pixel sind z.B. eine gute Größe.
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.

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.
Dann, Level gemalt und gespeichert. Theoretisch könnte man das sogar mit einfachen Textfiles.
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.
(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,..)
Da bin ich andere Meinug. gut drehen währe ein Augment. Aber Kollisionen leider nicht.
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

schnullerbacke
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

Beitrag von schnullerbacke »

Den hat @pluto nicht verstanden, kommt aber vielleicht noch... :wink:
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

pluto
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)

Beitrag von pluto »

Abwarten und Tee Trinken !

Ich habe auf jeden Fall eine Menge neuer Sprite gefunden im Internet.... aber noch keine die sich für mein Vorhaben eignen... naja dann nehme ich erstmal meine eigenen
MFG
Michael Springwald

hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

Beitrag von hanibal »

äh, ich hab da mal ne frage, wie funktioniert das mit den sprites, nur so aus interresse?

pluto
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)

Beitrag von pluto »

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.
MFG
Michael Springwald

bembulak
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

Beitrag von bembulak »

Hier mal ein Sprite:

Bild

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:
Bild
wird im Spiel zu:
Bild
(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.

hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

Beitrag von hanibal »

achso

schnullerbacke
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

Beitrag von schnullerbacke »

Macht aber ganz schön Arbeit, die Einzelbilder zu "pfriemeln" was? :shock:
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

pluto
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)

Beitrag von pluto »

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.
Dateianhänge
Bildschirmfoto-2D Engine von Michael Springwald Version 1.0-2.png
MFG
Michael Springwald

Antworten