Skip to content
Snippets Groups Projects
Commit d189ff1a authored by psy's avatar psy
Browse files

initial

parents
No related branches found
No related tags found
No related merge requests found
Pipeline #798 failed
public
.swp
image: registry.git.cccv.de/infra/static-pages/docker-images/buster-mkdocs
pages:
stage: deploy
script:
- mkdocs build
artifacts:
paths:
- public
only:
- master
[submodule "themes"]
path = themes
url = https://git.cccv.de/infra/static-pages/mkdocs-themes.git
docs/img/cp_collides.png

2.98 KiB

docs/img/cp_exitsceneurl.png

5.15 KiB

docs/img/cp_exiturl.png

3.62 KiB

docs/img/cp_jitsiroom.png

3.56 KiB

docs/img/cp_openwebsite.png

6.08 KiB

docs/img/cp_silent.png

2.97 KiB

docs/img/cp_startlayer.png

3.61 KiB

docs/img/edit_tileset.png

44.3 KiB

docs/img/layer.png

4.02 KiB

docs/img/map_properties.png

25.9 KiB

HowTo rC3 world maps
===
Zum Congress wird es eine Art 2D-Adventure, die rC3 world geben. Das ganze basiert auf dem ggf. schon bekannten [Workadventure](https://workadventu.re), mit ein paar kleineren Anpassungen. Dieses Tutorial soll erklären, wie Karten und Inhalte zur rC3 world beisteuert werden können. Falls danach noch Fragen offen sind, meldet euch gerne in unserem RocketChat-Channel und wir versuchen das Tutorial zu ergänzen.
## 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 Tilessets (mehrere Tiles zu einem Thema) zusammengefasst.
* Seiten auf denen ihr schöne Tiles finden könnt sind zum Beispiel:
* https://itch.io/
* https://opengameart.org/
* https://www.deviantart.com/
* Achtet auf die Größe der Tiles!
* Achtet auf die Lizenz der Tilessets
* wir werden nicht aktiv prüfen unter welcher Lizenz eure Tiles stehen, allerdings nach dem Prinzip "takedown on notice" auf Verstöße reagieren.
* Ort, um Tilessets zu sharen, wird kommen
* noch nicht ganz klar wie/wo
### 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](https://krita.org/), 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 erpart euch zu jedem anderen Material einen Übergang gestalten zu müssen.
* Pixel-Art Workshop von blinry: https://media.ccc.de/v/34C3-jugend-hackt-1016-pixel_art_workshop
## Tiles einbinden
Tilesets müssen in Tiled die Map eingebunden werden, ein Verweis auf externe Tilessets 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](https://mapeditor.org) 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.
![](img/layer.png)
#### 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.
![](img/cp_startlayer.png)
##### Exit Layer
Ähnlich wie beim Start Layer könnt ihr Exits definieren. Ihr erzeugt ein Layer, packt an die Stellen an denen ihr Ausgänge haben wollt ein Tile, und gebt dem Layer die custom property "exitUrl". Dieser gebt ihr als Wert die Karte bzw. den Startpunkt auf dieser Karte zu der ihr springen wollt, zum Beispiel also "foo.json#bar" um auf die Karte foo.json und dort auf einen Startpunkt auf dem Layer bar zu springen.
![](img/cp_exiturl.png)
[TODO: PLatzhalter erklären]
##### Webseite einbinden
Ihr könnt Webseiten einbinden, die sich beim Betreten von bestimmten Tiles öffnen. Analog zu Start und Exit Layern legt ihr ein Layer dafür an, setzt Tiles an die entsprechenden Stellen und gebt dem Layer die custom property "openWebsite". Verwendet https!
![](img/cp_openwebsite.png)
##### Jitsi einbinden
Auf die selbe Art könnt ihr auch Jitsi Räume in eure Karte einbinden. Es können allerdings keine externen Jitsi Server angegeben werden, sondern nur von uns bereitgestellte genutzt werden.
![](img/cp_jitsiroom.png)
[TODO: Platzhalter erklären]
##### Stille Bereiche
Solltet ihr in gewissen Bereichen keine Audio/Video Kommunikation zwischen den Teilnehmern wollen, so könnt ihr hierfür einen eigenen Layer anlegen und diesem die custom property "silent" (bool true) geben.
![](img/cp_silent.png)
#### Wände / Kollisionen
Um Tiles als undurchgängig zu markieren, müsst ihr diese im Tileeditor öffnen und die custom property "collides" (bool true) für das jeweilige Tile (nicht mit Layern verwechseln!) setzen. Vergesst nicht euer Tilesset anschließend zu speichern! Tiled bietet zwar auch die Möglichkeit collision shapes für einzelne Tiles festzulegen, diese werden vom Workadventure allerdings ignoriert.
![](img/edit_tileset.png)
![](img/cp_collides.png)
### Karte speichern / exportieren
Karten müssen als json gespeichert werden, Tilesets sollten vorher eingebunden werden. Die relevanten Dateien sind anschließend eure Karten im json Format und die verwendeten Tilesets als png.
Unendliche Karten müsst ihr vor dem Speichern in endliche umwandeln, hierzu einfach in den properties der Karte den Haken bei "infinite" entfernen und speichern.
![](img/map_properties.png)
## Wie kommts in die world?
Eure Karten legt ihr dann bitte in einem git Repo eurer Wahl ab und teilt dem Assemblix die URL mit, unter der das Repo geklont werden kann. Unsere world-Infrastruktur wird anschließend eine Instanz für euch spawnen, das Karten-Repo pullen und diese dort einbinden.
Wie genau Karten aktualisiert werden können ist noch nicht ganz klar, vermutlich wird jede Instanz ihre Karten alle n Minuten aktualisieren.
### Verzeichnisstruktur
Achtet beim Ablegen eurer Karten bitte auf die Verzeichnisstruktur, folgende Dinge solltet ihr konkret beachten:
* Eure Startkarte muss main.json heißen und im Hauptverzeichnis liegen.
* Andere Karten können in eigenen Ordnern oder auch im Hauptverzeichnis liegen
* Achtet bei Verlinkungen der Karten in eurer Karte auf die korrekte relative URL
* Achtet auf die Pfade eurer Tilessets (zur Not direkt im json anpassen)
Hier ein Beispiel wie ein Verzeichnis mit Karten exemplarisch aussehen könnte:
```
.
├── bla
│ └── keks.json
├── blubb.json
├── foo
│ ├── bar.json
│ └── tileset2.png
├── main.json
└── tileset.png
```
### Testen
Zum Testen könnt ihr eure Dateien einfach auf einen beliebigen per https erreichbaren Server legen und über die URL auf unserer Testinstanz einbinden. Nehmen wir an eure Karte läge unter https://example.com/mymaps/foo.json so wäre die URL zum Testen https://play.wa-test.rc3.cccv.de/_/global/example.com/mymaps/foo.json. Die Möglichkeit externe Karten einzubinden existiert nur zum Testen und wird zum rC3 deaktiviert werden.
Ggf kann es sein, dass ihr passende CORPS Header auf dem ausliefernden Webserver setzen müsst.
## rocket channel
Es gibt einen Rocketchat Channel für Fragen und zum Austausch mit anderen Bastelnden: #rc3-world. Fragt dort gerne auch jederzeit zu diesem Howto oder generell zur rC3 world; wir werden versuchen, alle Fragen zu beantworten und das Howto bei Bedarf zu ergänzen.
## Instanzen
Wir werden sämtliche Instanzen für die rc3 world betreiben, versucht bitte nicht eigene Instanzen dafür aufzusetzen, Sprünge zu Instanzen außerhalb des rc3 Kosmos werden nicht möglich sein.
site_name: rC3 world Howto maps
site_description: Howto zum Erstellen von Karten für die rC3 world
plugins: []
site_dir: public
use_directory_urls: false
strict: true
theme:
name: null
custom_dir: 'themes/c3mkdocs/'
navigation_depth: 3
static_templates:
- 404.html
include_search_page: false
search_index_only: false
navigation_depth: 2
nav_style: primary
shortcuts:
help: 191 # ?
next: 78 # n
previous: 80 # p
search: 83 # s
#nav:
# - index.md
Subproject commit e5742ab522b9d41658d4ba5368f86449d0e330db
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment