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

1

12.08.2012, 10:05

Zufallsgenerierte Maps

Hallo Community,

ich versuche mich momentan an zufallsgenerierten Maps, und ja... es ist genauso schwer wie ich es mir vorgestellt habe.
Meine momentane Herangehensweise sieht in etwa so aus:
1. ich fülle die gesamte Fläche mit einem Boden-Tile und setze mit sehr geringer Wahrscheinlichkeit einen "Wand"-Tile.
2. dann gehe ich in jeder Reihe jede Spalte durch und prüfe, ob in einem gewissen Abstand zwei Wände in der gleichen Reihe stehen
3. die Tiles zwischen den zwei Wänden werden dann mit Wänden gefüllt.
4. das Gleiche Prozedere dann noch einmal für die Reihen.

Ich erhalte dann am Ende zwar sogar manchmal Räume oder etwas was so ähnlich aussieht, aber ich glaube auf diese Weise werde ich zu keinem, ansatzweise gutaussehenden, Ergebnis kommen.
Jetzt ist halt meine Frage, wie man das am besten macht, damit ich, ähnlich wie in diversen Rougelikes , richtige Räume erhalte.
Benutzt man da vorgefertigte Räume die man dann zufällig im Raum platziert und dann mit Gängen verbindet, oder werden die komplett generiert? Und was für Herangehensweisen gibt es noch?
Achja, dabei handelt es sich um 2D mit Top-Down-Perspektive.

Vielleicht hat ja schon jemand Erfahrung in dem Bereich, würde mich freuen :).

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

12.08.2012, 10:13

Du könntest größere Teile vorher selber bauen und die zufällig zusammenwürfeln.
Im Prinzip speicherst du für jedes Teil, welche anderen potenziell daran angebunden werden können, und suchst zufällig eins aus. Vielleicht dann noch Drehungen/Spiegelungen oder Tiles durch andere ersetzen, um etwas Variation reinzukriegen.

daG

Treue Seele

Beiträge: 130

Wohnort: Hamburg

  • Private Nachricht senden

3

12.08.2012, 13:36

Ist wahrscheinlich nicht ganz das was du suchst aber evtl kannst du dir da ja was ab gucken:

http://www.emanueleferonato.com/2011/05/…ave-generation/
http://devmag.org.za/2009/04/25/perlin-noise/

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

4

12.08.2012, 14:23

Vielleicht kannst du als Grunddaten zb. Mauern aus einen zellulären Automaten nehmen.
Zum Beispiel die B3/S1234-Regel in GoL.

Das ergibt dann ein Bild wie im Anhang.
»Spiele Programmierer« hat folgendes Bild angehängt:
  • Beispiel.gif

5

12.08.2012, 14:52

Du könntest versuchen, rekursive Regeln aufzustellen. Du fängst mit dem größten Objekt an (Level) dessen Struktur hierarchisch aufgebaut ist und in jeder Ebene Zufälle enthält. Beispiel:

- Ein Level ist ein Startraum mit Eingangspunkt. An einer Stelle ist eine Tür zu einem Gang.
- Gang 1: Flur - links und rechts Zimmer gleichen Typs, am Ende eine Wand.
- Gang 2: Säulengang - links und rechts Säulen, am Ende eine Tür
- Raum 1: Schlafgemächer - verschiedene Kisten und Betten
- Raum 2: Gefängnis - Käfige und Folterwerkzeug
- Raum 3: Lagerhalle - viele Kisten und Fässer

Dabei wird dann jeder Struktur eine Größe und Position vorgegeben, die sie belegen darf. Du kannst dann auf beliebig viele Ebenen Zufälle einbauen, z.B: können die Säulen unterschiedliche Sprites haben, so dass manche kaputt sind, oder neben nobleren Betten stehen Kisten mit mehr Inhalt und so. Besonders die Anordnung der Räume könnte trickreich sein, aber dafür kannst du dir ja weitere Regeln überlegen. Wenn du dich mit den Regeln am realen Leben orientierst entstehen so Strukturen, die auch einigermaßen sinnvoll und nicht komplett zufällig erscheinen.

Für die Raumaufteilung könnte evtl. auch ein Voronoi-Diagramm mit passender Metrik lustig sein: http://en.wikipedia.org/wiki/Voronoi_diagram
Lieber dumm fragen, als dumm bleiben!

6

12.08.2012, 17:23

Danke für die Antworten. :)

Ich werde mich nun mit den genannten Themen auseinandersetzen, doch ich denke, dass der Vorschlag von David in meinem Fall am günstigsten wäre, da ich halt am Ende richtige Räume und keine Dungeons in dem Sinne möchte.

7

12.08.2012, 17:37

Du kannst mal hier oder hier oder hier noch nen PDF vorbei schaun.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

Karsten Schulz

unregistriert

8

08.12.2012, 03:00

zensiert

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Karsten Schulz« (09.12.2012, 14:40)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

08.12.2012, 09:12

Meinst Du nicht, dass das Topic seit dem 12. August eventuell etwas... weniger aktuell sein könnte?
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]

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

10

08.12.2012, 11:33

Und eine Randbemerkung: den ganzen "register"-Kram kannst Du Dir sparen, das machen aktuelle Compiler eh nach Gutdünken. Und sie wissen es meistens besser.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

Werbeanzeige