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

valentin

Treue Seele

  • »valentin« ist der Autor dieses Themas

Beiträge: 212

Wohnort: Schweiz

Beruf: Schüler

  • Private Nachricht senden

1

06.11.2011, 20:00

Level-Generierung für J'n'R

Hallo zusammen,
Nachdem ich jetzt mein neues Smartphone (Smasung Galaxy S2 -> Android) endlich bekomme habe, hab' ich mir zum Ziel gesetzt ein Spiel dafür zu entwickeln. Soweit, sogut. Das genannte Spiel soll (für's erste mal) ein simples tilebased Jump'n'Run sein. Mittlerweile funktioniert alles, jedoch frage ich mich mittlerweile, ob ich mir jetzt noch nen Mapeditor coden muss, oder -was ich bevorzugen würde- ob sich sinnvolle (und viel wichtiger: funktionierende) Maps auch automatisch generieren lassen.
Dass die Möglichkeit besteht ist klar. Nur frage ich mich im Moment ob man auch anspruchsvolle, spannende Maps erzeugen kann, und wenn ja, wie.

Bisheriger Ansatz
Mein bisheriger Ansatz wäre erstmal ein Array mit zufälligen Werten zu füllen, und diese dann aneinander "anzugleichen" (damit es keine unmöglichen "Sprünge" oder ähnliches gibt.) Die Werte die man nun in dem Array hat könnte man nun als "Höhenangabe" für die jeweilige Position auf der Map (Seitenansicht) benutzen.

Allerdings stelle ich mir solche Maps nicht sonderlich spannend/anspruchsvoll vor.

Jetzt die Frage: Wie lässt sich das am besten umsetzten? Wie würdet ihr es persönlich machen?

Danke für eure Antworten
Valentin
visit me on deviantArt!
http://v-alentin.deviantart.com/

There is no programming language, no matter how structured, that will prevent programmers from making bad programs. //Larry Flon

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

06.11.2011, 20:37

Zufällige Levels klingen für mich nicht wirklich ausgeklügelt. Bau dir lieber eine Möglichkeit Die Maps in einfache Dateien (Text-Files z.B.) zu verpacken (gib jedem Tile ein ASCII-Zeichen). Sollte ein guter Kompromiss sein.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

valentin

Treue Seele

  • »valentin« ist der Autor dieses Themas

Beiträge: 212

Wohnort: Schweiz

Beruf: Schüler

  • Private Nachricht senden

3

06.11.2011, 20:45

Naja, das ganze Spiel hat ja im Moment keine Story oder ähnliches. Ausserdem wäre das Spiel sozusagen "unendlich" lange. Wobei ich mir auch schon überlegt habe, beides zu kombinieren: "Storymodus" und die zufällig generierten Level (welche dann z.B. jeden Tag wechseln könnten).
visit me on deviantArt!
http://v-alentin.deviantart.com/

There is no programming language, no matter how structured, that will prevent programmers from making bad programs. //Larry Flon

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

4

06.11.2011, 20:49

Wenn ich es richtig verstehe, würde ich als Mapeditor einfach sowas wie Tiled nehmen.
Dann könntest du dir dein Level fein zusammen puzzeln und dann als XML Format speichern.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

valentin

Treue Seele

  • »valentin« ist der Autor dieses Themas

Beiträge: 212

Wohnort: Schweiz

Beruf: Schüler

  • Private Nachricht senden

6

06.11.2011, 21:22

Dass ich mir die levels auch so zusammenbastel kann, ist mir klar ;).
Mir ging es eigentlich ursprünglich darum, wie ich Level am besten generiere. Das muss ja möglich sein, denn z.B. Minecraft generiert ja auch riesige Welten, die mittlerweile ja auch relativ schön sind. Und das ganze für ein 2d Jump'n'Run umzusetzten sollte ja dann eigentlich um ein vielfaches leichter sein. Nur fehlt mir der Ansatz...
visit me on deviantArt!
http://v-alentin.deviantart.com/

There is no programming language, no matter how structured, that will prevent programmers from making bad programs. //Larry Flon

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

06.11.2011, 21:24

Vielleicht kannst du Maps aus vorgefertigten Elementen zufällig zusammenbauen.
In jedem Fall brauchst du eine gute Bewertungsfunktion, die die Map quasi durchsimuliert und feststellt, ob sie überhaupt schaffbar ist oder ob sie zu langweilig ist.

Moe

Frischling

Beiträge: 85

Wohnort: München

  • Private Nachricht senden

8

06.11.2011, 22:24

Wir haben bei der Devmania auch einen Levelgenerator für PirateBay geschrieben, wenn Du Code zum Ansehen haben willst, dann lad einfach den Sourcecode von unserem Spiel herunter. :)

Also wir haben dort das Level in Sektoren à 3 Bildschirme zerteilt, damit wir immer nur abhängig vom Spielfortschritt weitere Sektoren generieren mussten (und nicht gleich am Anfang eine endloslange Welt). Dann haben wir abhängig vom aktuellen Schwierigkeitsgrad eine Zufallszahl n gezogen, die die Anzahl der Inseln bzw, Plattformen generiert. Danach kannst Du wieder abhängig vom Schwierigkeitsgrad eine Breite und Höhe generieren. Um die Plattformen über den Sektor zu verteilen, kannst Du auch zufällig die Position generieren - nach jedem Setzen musst Du aber auch den Bereich sperren, in dem Du schon eine Platform gesetzt hast. Wir haben das etwas vereinfacht, indem wir die Reihenfolge der Plattformen ausgewürfelt haben, und danach zufällig die freien Stellen zwischen die Plattformen verteilt haben (also in jedem Schritt Gesamtbreite - Inselbreiten - verteiler Abstand gerechnet, und zufällig eine Zahl aus mind. Breite und Restbreite gezogen und wieder zufällig einem Abstand zugeordnet).

Bei uns konnte man fliegen, deswegen war es nicht so wichtig, dass wir eine max. Breite zwischen den Plattformen einhalten, aber in deinem Fall müsstest Du wohl auch noch beim Verteilen darauf achten, dass man noch zur Nachbarinsel springen kann.

Bei weiteren Ebenen musst Du den Algorithmus entsprechend erweitern, z.B. erst die niedrigen Plattformen verteilen, im 2. Durchgang dann die Hohen. Den verschiedenen Inseln kannst Du dann noch Objekte (Gegner, Items, etc.) zulosen und dann wieder mit dem gleichen Verfahren die Objekte auf der Insel verteilen.

9

12.11.2011, 17:29

Falls du nicht inzwischen schon was gefunden hast: Doodle Jump (http://de.wikipedia.org/wiki/Doodle_Jump) ist ein klassisches Beispiel dafür, festgelegte "Teilstücke", wie schwierige Stellen, zufällig aneinanderzureihen.

Werbeanzeige