Hallo Besucher, der Thread wurde 9,1k mal aufgerufen und enthält 65 Antworten

letzter Beitrag von bernhard am

Automatisches Leveldesign?!

  • Hört sich intuitiv nach Breitensuche an, die man sich ja gut als Wasser, das sich gleichmäßig ausbreitet vorstellen kann.

  • der grund warum ich die frage aufgeworfen habe, ist, dass ich ein spiel genannt cydonia gemacht habe, das ein jump and run ist wie etwa giana sisters, nur das man in 4 richtungen scrollt, aber dafür keine levels habe.
    ein level besteht aus 256 x 32 = 8192 blöcken. es ist ziemlich aufwendig, diese alle hinzusetzen, auch wenn man die leerblöcke weglassen kann.
    wenn es ein programm gäbe das einen ungefähren vorschlag macht, den man eventuell nachbearbeiten muss, wär das schon eine rießen erleichterung.


    ich denke nur an einfache 2d-spiele. vertrackte logische kombinationen, wie renne nach A, hole schlüssel, renne weit weg nach B, mache tür auf etc. ... das muss ja nicht sein.



    Auf einem PC kein Problem, aber der C64er war dafür zu schwach, leider.


    Und wenn dann auch noch Roboter im Spiel sein sollen, die Sinn ergeben, chancenlos.


    Selbst mit Großrechner.


    ich meine nur am PC..

  • der grund warum ich die frage aufgeworfen habe, ist, dass ich ein spiel genannt cydonia gemacht habe, das ein jump and run ist wie etwa giana sisters, nur das man in 4 richtungen scrollt, aber dafür keine levels habe.ein level besteht aus 256 x 32 = 8192 blöcken. es ist ziemlich aufwendig, diese alle hinzusetzen, auch wenn man die leerblöcke weglassen kann.

    Was spricht dann gegen Excel?

  • ein level besteht aus 256 x 32 = 8192 blöcken. es ist ziemlich aufwendig, diese alle hinzusetzen, auch wenn man die leerblöcke weglassen kann.

    Dann scheint es mir aber sinnvoller, einen Editor zu programmieren, der einem ein paar Hilfsmittel an die Hand gibt (Wände mit der Maus zeichnen, Bereiche füllen etc.)

  • ist dass nicht eine tabellenkalkulation?

    Ja, das ist richtig. Aber du schreibst ja selber das Dein Spiel aus 256x32 Blöcken besteht. Das auf Karopapier zu machen wird zwar gehen, dürfte aber schwierig werden es dann in Daten umzuwandeln.
    Da ist Excel eine gute Hilfe (siehe Wert in Excel suchen). In Excel kannst Du Dir die Daten auch passend in DATA Zeilen in ASM umwandeln lassen.


    Was spricht denn für Excel? (also abgesehen von Deinem Golden-Hammer-Syndrom, natürlich)

    Mac, Deine fachliche Qualifikation in Ehren, aber mit Deiner Ablehnung von Excel hast Du Dich doch sehr verrannt.
    Ich habe schon mehrfach mit Excel als prima leichtes Hilfsmittel einige Probleme lösen können.
    Wenn Dir das nicht reicht als Argument, ja dann ist Dir nicht mehr zu helfen.


    ---
    Kann ein MOD gerne abtrennen. Könnte interessant werden, wie Mac meine bestehenden Exceltabellen die mir gute Dienstegeleistet haben, mit Worten widerlegen will. :D

  • Dann scheint es mir aber sinnvoller, einen Editor zu programmieren, der einem ein paar Hilfsmittel an die Hand gibt (Wände mit der Maus zeichnen, Bereiche füllen etc.)

    nein, es darf keine zeit kosten..


    Ja, das ist richtig. Aber du schreibst ja selber das Dein Spiel aus 256x32 Blöcken besteht. Das auf Karopapier zu machen wird zwar gehen, dürfte aber schwierig werden es dann in Daten umzuwandeln.Da ist Excel eine gute Hilfe (siehe Wert in Excel suchen). In Excel kannst Du Dir die Daten auch passend in DATA Zeilen in ASM umwandeln lassen.


    noch bevor ich eine zeile spielecode geschrieben habe, habe ich einen leveleditor geschrieben. er geht bestens..


  • noch bevor ich eine zeile spielecode geschrieben habe, habe ich einen leveleditor geschrieben. er geht bestens..

    Dann hast Du mir etwas voraus. Bei mir wäre es genau anders herum, daher favorisiere ich Excel für viele Dinge als Hilfsmittel.

  • den leveleditor habe ich 1989 geschrieben..

    Ok, zu diesem Zeitpunkt wußte ich nichtmal was ne Tabellenkalkulation ist. :D


    1986 habe ich meine Level auf Papier erstellt und dann ins BASIC übertragen. Noch mühsam mit FOR/NEXT einzeln alles hingemalt.
    2015 habe ich Excel verwendet und die Daten als ARRAY abgelegt, für die ASM Version vom gleichen Spiel.

  • Was spricht dann gegen Excel?

    Nichts, sofern man ausreichend Erfahrung in der Benutzung hat, um schnell brauchbare Ergebnisse zu erzielen. Am Ende zählt nur das fertige Spiel, nicht das Tool. Und es gibt wahrlich schlimmeres als Excel.

    ein level besteht aus 256 x 32 = 8192 blöcken

    Was genau verstehst Du unter "Block"? Ein 8x8 Graphikzeichen im Zeichensatz oder bereits eine Abstraktion (manchmal auch Kachel oder Tile genannt), die sich aus mehreren Zeichen zusammensetzt? Sollte bei Dir ein Block direkt einem Graphikzeichen entsprechen, wäre dies der erste Schritt: Zusammenfassung mehrerer Chars zu einer Kachel.
    Danach gäbe es weiterhin die Möglichkeit mehrere Kacheln zu einer größeren Einheit zu formen, also z. B. 8x8. Der gesamte Level bestände dann aus 32x4 Untereinheiten, was wesentlich überschaubarer ist. Diese Untereinheiten können dann zufällig zusammengesetzt werden. Eine Einheit beispielsweise wäre eine Ansammlung von Diamanten, die der Spieler einsammen muß. Um den Zufall zu erhöhen, könnte der Levelgenerator an den Plätzen, wo Diamanten vorgesehen sind, zusätzlich zufällig entscheiden, ob ein Diamant dort erscheint oder nicht. Außerdem lassen sich Kacheln für Wände, Gestein, Büsche o. ä. auch zufällig mit irgendwelchen Alternativen füllen. Wenn Du uns sagen könntest, aus welchen Elementen die Levels konkret aufgebaut sind, wäre dies sicherlich hilfreich.

    vertrackte logische kombinationen, wie renne nach A, hole schlüssel, renne weit weg nach B, mache tür auf etc. ... das muss ja nicht sein.

    Das wäre gar nicht so undenkbar. Auch hier gilt, daß man den gesamten Level unterteilen müßte in einzelne Subräume. Die dann so zu arrangieren, daß sie einen Weg von A nach B bilden, ist dann relativ leicht. Beispiele für diese Art von Subraum-Unterteilung sind Spiele wie "Aztec", "Castle Wolfenstein", "Marauder" (AppleII), auch wenn die Subräume hier jeweils einen bzw. einen halben Bildschirm groß sind. Das Prinzip ist ähnlich.

  • Was genau verstehst Du unter "Block"? Ein 8x8 Graphikzeichen im Zeichensatz oder bereits eine Abstraktion (manchmal auch Kachel oder Tile genannt), die sich aus mehreren Zeichen zusammensetzt? Sollte bei Dir ein Block direkt einem Graphikzeichen entsprechen, wäre dies der erste Schritt: Zusammenfassung mehrerer Chars zu einer Kachel.Danach gäbe es weiterhin die Möglichkeit mehrere Kacheln zu einer größeren Einheit zu formen, also z. B. 8x8. Der gesamte Level bestände dann aus 32x4 Untereinheiten, was wesentlich überschaubarer ist. Diese Untereinheiten können dann zufällig zusammengesetzt werden. Eine Einheit beispielsweise wäre eine Ansammlung von Diamanten, die der Spieler einsammen muß. Um den Zufall zu erhöhen, könnte der Levelgenerator an den Plätzen, wo Diamanten vorgesehen sind, zusätzlich zufällig entscheiden, ob ein Diamant dort erscheint oder nicht. Außerdem lassen sich Kacheln für Wände, Gestein, Büsche o. ä. auch zufällig mit irgendwelchen Alternativen füllen. Wenn Du uns sagen könntest, aus welchen Elementen die Levels konkret aufgebaut sind, wäre dies sicherlich hilfreich.

    ja es sind tilings mit 3 x 2 = 6 chars.
    sicher wäre das mit der hirachischen blockebene noch eine vereinfachung. obs dann aber nicht zu groß-blockig wird..


    ich werde mal konkret. siehe dateianhang. stimmen jetzt die sounds nicht ganz, aber so gehts:


    load"boot",8
    run


    RESTORE drücken


    load -> 02world


    load -> 00block


    gehe zu worldeditor


    links mit cursor raus und gehe zu map-editor

  • "Restore" in VICE per "PageUp" nach dem Bildschirm Gewurschtel bei RUN tut bei mir nix.


    <Edit>Ah, mit anderer VICE Version tut es. Das Intro kam mit der anderen Version gar nicht.

  • ich werde mal konkret. siehe dateianhang. stimmen jetzt die sounds nicht ganz, aber so gehts:

    Sehe morgen schon den "Crack" in der CSDB erscheinen :D

  • Okay, nachdem ich mir mal den Probelevel im Editor angesehen habe, würde ich zunächst weiter dazu raten, Subräume zu gestalten. Wenn ich es richtig gesehen habe, verfügt das Spiel über verschiedene Arten von Wänden (z. B. Stein oder braune Blöcke). Hier könnte ein Levelgenerator per Zufall pro Subraum einen Wandtyp auswählen, so daß zwar die Raumstruktur sich ähnelt, aber optisch anders wirkt. Daneben gibt es auch andere Verzierungen wie verschiedene Arten von Gebüsch (niedrig, hoch, Baum, Pilz etc), die man ebenfalls zufällig setzen kann. Auch bei den Mauern selbst kann der Verlauf dadurch variiert werden, indem man z. B. für den Blocktyp "schräge Wand" einmal eine Wand mit echter Schräge nimmt, ein anderes Mal mit zerstückelten Steinen oder auch schlicht gar nicht (bleibt leer).
    Als Größe für einen Subraum könnte man 4x4 nehmen, wobei 4 (= 8 Zeichen) in Y ungefähr einem halben Bildschirm (im Editor) entsprechen. Persönlich würde ich aber eine Größe von 8x8 bevorzugen, da man in solchen Subräumen gezielter Sachen einbauen kann wie das genau abgemessene Springen von Stein zu Stein o. ä.
    Bei der Verteilung der Subräume könnte man so vorgehen, daß man zunächst den Eingangsbereich setzt. Darauf wird zufällig ein weiterer Raum links, rechts, oben oder unten angefügt und zwar rekursiv. Dieser Vorgang geht solange weiter, bis an einen Subraum kein weiterer angelegt werden kann. Darauf macht man (dank Rekursion) bei dem vorhergehenden Subraum weiter. Auf diese Weise erhält man schon passend durchlaufbare Höhlensysteme. Am besten wird es, wenn Du das Ziehen der Räume ohne Zurücklegen machst, d. h. jeder Raum kommt nur einmal vor. Natürlich kann man nicht erwarten, mit einem solchen Generator ein ausgeklügeltes Leveldesign zu erhalten wie bei einer manuellen Anfertigung. Geh eher davon aus, daß Du Dein Spiel dann um die Möglichkeiten des Levelgenerators herumbauen mußt als den Levelgenerator um das Spiel. Aber ich bin sicher, daß man mit diesem Ansatz schon anspruchsvolle, spielbare Level erhalten kann, und je nach dem, wie geschickt Du die Subräume konstruierst und aneinanderhängen läßt, dürfte es einem Spieler nicht einmal auffallen, daß der Levelaufbau ursprünglich zufällig war.

  • Zitat von M. J.

    Aber ich bin sicher, daß man mit diesem Ansatz schon anspruchsvolle, spielbare Level erhalten kann, und je nach dem, wie geschickt Du die Subräume konstruierst und aneinanderhängen läßt, dürfte es einem Spieler nicht einmal auffallen, daß der Levelaufbau ursprünglich zufällig war.


    Danke für Deinen Beitrag zu TrapThem64. Dein Name wurde zu den Credits hinzugefügt.


    Die Idee ist garnicht schlecht. Besonders gefällt mir Deine Idee mit den Subräumen, die durch eine Treppenstruktur zusammengesetzt werden können. Sobald ich weite an TrapThem64 arbeiten kann, werde ich einen Generator programmieren und gucken, welche Ergebnisse dieser liefert.

  • load -> 02world


    load -> 00block

    Ich finde nur '00world'. Und es geht nur in umgekehrter Reihenfolge. Andersrum crashed es :nixwiss: .