World O' Wonders Editor - Documentation

Welcome to the official documentation for the World O' Wonders (WoW) Editor. This page breaks down the architecture, file systems, and toolset provided in the editor to help you create custom levels.

Introduction

The WoW Editor is built natively in Godot Engine (4.x) and is designed to allow players to construct intricate platforming stages, place interactive items (like Carrots, Coins, and Enemies), and export them in a highly compressed binary format that the main game can parse.

File System & Formats

The editor creates localized directories on your computer to manage configurations and your raw project data.

Directories

File Types

Raw Project Files (Editor Only):

  • .dat: The main level project file holding logic, spawn data, node arrays, and configurations.
  • .tlst: The custom tileset saving format. A project utilizes two of these (tileset_main.tlst and tileset_bg.tlst).

Exported Levels (Game Ready):

  • .wowlv: The official World O' Wonders custom level format. This is what you generate via the Export function and load into the main game. It is HIGHLY compressed and therefore, HIGHLY UNREADABLE.

Editor Tools

The editor operates via a state-machine tool selector. Depending on the active tool, interactions with the SubViewport canvas will change.


Environments

The editor supports injecting custom WorldEnvironments directly into the level. This alters lighting, backgrounds, and ambiance. This data is saved as an integer in which World of Wonders & this editor can refer to the correct environment using. The available options built into the resource loader are:


Code Architecture

For contributors or advanced users, here is a brief overview of how the Editor's backend manages data, based on the internal GDScript files.

Global Systems (Autoloads)

Tilemap Compression Protocol

To keep the `.wowlv` export files small, Godot object arrays are mapped into a PackedInt32Array. Every single tile takes up exactly 6 integers:

  1. local_x: X coordinate in the grid.
  2. local_y: Y coordinate in the grid.
  3. source_id: The ID of the texture atlas.
  4. atlas_x: X coordinate on the sprite sheet.
  5. atlas_y: Y coordinate on the sprite sheet.
  6. alternative_tile: Flipping/Rotation data.
Loading Sequence: The transition from the boot menu to the main editor is buffered by Editor - Loading Scene.gd. It purposely freezes the thread to securely load the .dat and .tlst files into the Global memory before allowing the viewport to initialize. Be careful when editing the sequence.