Skip to content
Snippets Groups Projects
Select Git revision
  • 904d4f785a97f3653f7cc41e0bf739a7606b4e4e
  • master default protected
  • style-2021
  • newstyle
  • archive/2020
  • vanion-master-patch-78871
  • deinkoks-master-patch-08946
  • 2020
8 results

index.md

Blame
  • maps.md 12.78 KiB

    HowTo rC3 world maps

    english version

    Zum Congress wird es eine Art 2D-Adventure, die rC3 world geben. Dieses Tutorial soll erklären, wie Karten und Inhalte zur rC3 world beigesteuert werden können. Falls danach noch Fragen offen sind, meldet euch gerne per Email und wir versuchen das Tutorial zu ergänzen.

    Disclaimer

    Dieses Tutorial ist ein work in progress und wird immer mal wieder erweitert, es lohnt sich daher mehrfach hier vorbeizuschauen.

    Updates

    • 2020-12-08: Animationen hinzugefügt.
    • 2020-12-11: Assembly Anmeldung hinzugefügt, Lobbykarten hinzugefügt, Layer hervorheben.

    Known Bugs

    Folgende Bugs sind aktuell bekannt, wir versuchen bereits Lösungen dafür zu finden:

    • Ausgänge können nicht auf dem rechten Rand der Karte liegen
    • exitUrl führt bei mehreren Exits von einer Karte zur anderen teils zu falschen Startpunkten
      • exitSceneUrl tut stattdesssen, obwohl angeblich deprecated

    Limitierungen

    Instanzen skalieren nicht unendlich, bitte denkt beim Karten erstellen daran. Unsere Erfahrung zeigt, dass das Limit irgendwo bei 200 Nutzern liegt. Karten für 2k Spieler:innen ergeben also keinen Sinn. Bitte versucht nicht Vortragssäle nachzubauen. Es ergibt schlichtweg keinen Sinn im Spiel zu idlen und währenddessen Talks zu schauen.

    Die Map-Größe kann davon unabhängig relativ flexibel dimensioniert werden. Karten im Bereich von 128x128 Tiles laufen ziemlich gut, Karten im Bereich von 1000x1000 gehen mit einer relevanten Ladezeit einher. Wir raten eher zu mehreren kleineren Karten anstelle einer riesigen.

    Ausgehenden Links wird ein Dereferrer vorgeschaltet.

    Tiles / Sprites

    Grundlegend bestehen die Karten aus sogenannten Tiles oder Sprites. Historisch gibt es wohl Unterschiede zwischen den Begriffen, wir werden sie hier aber synonym verwenden. Für die rC3 world werden Tiles in der Größe 32x32 empfohlen, Tiles in anderen Größen können zu Problemen führen. Tiles können Transparenz beinhalten und liegen im png Format vor.

    Tiles finden

    • Tiles gibt es massig im Internet, häufig zu Tilesets (mehrere Tiles zu einem Thema) zusammengefasst.
    • Seiten auf denen ihr schöne Tiles finden könnt sind zum Beispiel:
    • Achtet auf die Größe der Tiles!
    • Achtet auf die Lizenz der Tilesets
      • wir werden nicht aktiv prüfen unter welcher Lizenz eure Tiles stehen, allerdings nach dem Prinzip "takedown on notice" auf Verstöße reagieren.
    • Shared Tiles Repo

    Tiles gestalten / "pixeln"

    Tiles können auch selbst gestaltet bzw. vorhandene verändert werden, was häufig auch "pixeln" genannt wird. Hierzu empfiehlt sich der Editor krita, es geht aber prinzipiell auch mit anderen.

    • Achtet auch hierbei darauf, dass die Tiles 32x32 Pixel groß sind. Ihr könnt euch unter view -> show grid ein Raster einblenden und unter settings -> dockers -> grid and guides den Einstellungs-Docker einblenden, in dem ihr die Grid-Größe festlegen könnt.
    • Falls ihr Übergänge von Materialien gestalten müsst, nutzt Transparenz und baut Übergänge von einem Material zu Transparenz, das ist vielseitiger nutzbar und erspart euch zu jedem anderen Material einen Übergang gestalten zu müssen.
    • Pixel-Art Workshop von blinry: media.ccc.de/v/34C3-jugend-hackt-1016-pixel_art_workshop

    Tiles einbinden

    Tilesets müssen in Tiled in die Map eingebunden werden, ein Verweis auf externe Tilesets im TSX Format ist nicht möglich. (Das heißt nicht, dass die Bilddateien mit eingebunden sind. PNG-Dateien müssen ebenfalls auf den Server geladen werden.)

    Maps

    Karten können mittels des Editors Tiled erstellt werden. Ähnlich wie in diversen Zeichenprogrammen können Karten aus mehreren Layern bestehen, die beim Rendern übereinander gelegt werden. Layer können transparent gestaltet werden.

    Neue Karte in Tiled anlegen

    Achtet beim Erstellen einer neuen Karte auf folgende Einstellungen:

    • Karte muss orthogonal sein
    • Tilessize sollte 32x32 sein
    • Während des Erstellens kann es sinnvoll sein, eine unendliche Karte zu verwenden statt vorab eine Größe festzulegen. Dies muss beim finalen Speichern der Karte wieder auf eine feste Größe geändert werden.

    Karte gestalten

    Eine Karte kann aus beliebig vielen übereinander gelegten Tile Layern bestehen. Eure Karte braucht dabei mindestens einen Startlayer, der definiert, wo auf der Karte neue Spielerinnen spawnen. Dieses Layer muss zwingend "start" heißen. Außerdem braucht ihr ein Object Layer "floorLayer" das definiert, auf welchem Layer sich die Spielfigur bewegt.

    Aktuellen Layer hervorheben

    Für ein leichteres Gestelten hebt euch den aktuellen Layer hervor:

    Spezielle Layer

    Es gibt ein paar spezielle Layer bzw. Zusatzfunktionen für Layer. Diese werden bis auf das start Layer über die custom properties der einzelnen Layer abgebildet.

    Start Layer

    Eure Karte braucht zwingend ein Start Layer mit dem Namen "start". Alle Stellen in diesem Layer, die ein Tile (egal welches) enthalten, sind später Startpunkte für neue Spielfiguren. Gibt es mehrere Tiles, wird beim Betreten zufällig eines davon als Startpunkt ausgewählt. Schiebt dieses Layer am besten ganz nach unten in eurem Stack, die Tiles die Startpunkte markieren werden dann einfach von den darüberliegenden verdeckt.

    Außerdem könnt ihr weitere Start Layer erstellen um weitere Einstiegspunkte zu definieren, zum Beispiel um an bestimmte Stellen auf eurer Karte zu springen. Diese Layer funktionieren ähnlich wie der eigentliche Start Layer (also einfach beliebige Tiles an die Stelle, wo die Spielfigur spawnen soll), können beliebig heißen, brauchen allerdings eine custom property "startLayer" (bool true). Der Name dieses Layers ist auch die "Sprungadresse", die ihr zum Betreten über dieses Layer braucht. Wenn eure Karte also foo.json heißt und der Start Layer auf den ihr springen wollt "bar", dann wäre die Sprungmarke dafür foo.json#bar.