Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

1

23.05.2011, 21:02

Sidescroller mit SFML2

huhu,

ich brauche ein paar Ideen bei der Umsetzung eines Sidescrollers in SFML2 . Und zwar speziell wie man das Level aufbaut und dieses dann scrollt.

Meine erste Idee sah vor ein Bild zu Erstellen das 3 mal so groß ist wie der sichtbare Bereich und jeweils Stücke des ganzen Levels in die Teile laden
(Siehe Bild: http://dl.dropbox.com/u/2525239/side.png).
Das graue ist der sichtbare Bereich. Jetzt habe ich in der Doku von SFML jedoch nichts passendes gefunden um ein Bild aus anderen zusammen zu baun. Hat jemand von euch bessere Ideen?

Liebe Grüße Toa
"Das ist ein Minkovski Raum, manche Menschen nennen ihn auch Weltraum" Prof. Dr. Jürgen Wambach, Theoretische Physik, TU Darmstadt | Meine Homepage

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

23.05.2011, 21:05

Du könntest die Bilder einfach einzeln zeichnen. Bei sehr vielen, kleinen, statischen Teilen lohnt es sich erst in ein RenderImage zu Zeichnen.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

3

23.05.2011, 21:12

Das mit dem RenderImage habe ich gesehen. Du meinst wenn der sichtbare Bereich 500x500 ist, ein Teil in den sichbaren Bereich zu zeichen d.h 0|0 und eins bei 500|0 und das dritte dann? Vielleicht ist es schlauer das ganze Tilebased zu machen?
"Das ist ein Minkovski Raum, manche Menschen nennen ihn auch Weltraum" Prof. Dr. Jürgen Wambach, Theoretische Physik, TU Darmstadt | Meine Homepage

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Toa« (23.05.2011, 22:37)


NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

4

23.05.2011, 23:16

Sobald du die ganze Map nicht mehr in einem einzigen Bild hast, ist es Tilebased. ;)
Deine frage verstehe ich leider nicht wirklich.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

5

25.05.2011, 22:41

Okay ich hatte mir das nicht gut genug durchdacht. Wie sieht es mit folgendem aus:


(Link)

Das rechte Quadrat ist sichtbar und nimmt den ganzen Bildschrim ein. Beispielsweise als Image an 0|0 gerendert.
Das nächste Teil render ich an 500|0.Sobald man nun scrollt schiebe ich beide Bilder nach links. Und sobald das
rechte komplett im sichbaren Bereich ist rendere ich das neue an 0|500. Hast du das gemeint?
Grüße Toa
"Das ist ein Minkovski Raum, manche Menschen nennen ihn auch Weltraum" Prof. Dr. Jürgen Wambach, Theoretische Physik, TU Darmstadt | Meine Homepage

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

6

25.05.2011, 22:43

Schau mal hier und hier :D
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

7

25.05.2011, 23:22

Das hab ich auch schon entdeckt. Aber welchen Unterschied macht es, wenn ich diesen View verwende? Man kann darüber dann einen kleinen Auschnitt jeweils zeigen, den man auch schieben kann. Wenn dieser am Rand des Bildschirms angekommen ist muss man doch auch irgendwie das nächste Bild nachladen? Kannst du das näher ausführen?

Grüße Toa
"Das ist ein Minkovski Raum, manche Menschen nennen ihn auch Weltraum" Prof. Dr. Jürgen Wambach, Theoretische Physik, TU Darmstadt | Meine Homepage

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

8

26.05.2011, 10:19

na du verschiebst ja nur deine kamera mit dem view. und wenn du das level startest, lädst du dein sichtbares bild und das nächste rechte bild. wenn du dann in das nächste rechte bild "reinstößt", dann lädst du das dritte nach - mit sfml im extra thread kein problem usw.^^

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

9

26.05.2011, 11:34

Oft macht es Sinn das ganze Level von anfang an im Speicher liegen zu haben. Du zeichnest das ganze Level einfach ganz normal ohne etwas zu verschieben und setzt den Mittelpunkt der View auf die Spielerposition. Dann brauchst du dir keine Gedanken mehr darüber machen. Wenn du performanceprobleme bekommst kannst du dir eine Möglichkeit überlegen mit der du nur den sichtbaren Teil des Levels zeichnen kannst. Das ist aber oft garnicht nötig und kann, wenn du es falsch machst, sogar langsamer sein als einfach alles zu zeichnen.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

10

26.05.2011, 21:01

Oft macht es Sinn das ganze Level von anfang an im Speicher liegen zu haben. Du zeichnest das ganze Level einfach ganz normal ohne etwas zu verschieben und setzt den Mittelpunkt der View auf die Spielerposition. Dann brauchst du dir keine Gedanken mehr darüber machen. Wenn du performanceprobleme bekommst kannst du dir eine Möglichkeit überlegen mit der du nur den sichtbaren Teil des Levels zeichnen kannst. Das ist aber oft garnicht nötig und kann, wenn du es falsch machst, sogar langsamer sein als einfach alles zu zeichnen.
So wie ich das verstanden habe, wird das außerhalb des Views gar nicht gezeichnet. Daher dürfte das kein Problem sein. Was meint ihr dazu?
Wenn das nicht so ist dürfte TrommelBommels Idee besser sein. Was meinst du mit einfach das Level zeichnen? Meinst du wenn beispielsweise ein Tile 400px breite hat, diese immer mit 400px Offset nebeneinander zeichnen?
"Das ist ein Minkovski Raum, manche Menschen nennen ihn auch Weltraum" Prof. Dr. Jürgen Wambach, Theoretische Physik, TU Darmstadt | Meine Homepage

Werbeanzeige