Waymark Level Guide
Introduction and available pieces
Please note, that this guide is still under construction.
There might be a level editor available at some time in the future, but currently levels must be designed with paper and pencil and stored as xml files by hand. Waymark levels are stored in simple xml files with file extension .wmk. Because they are normal text files, you can write and edit them with any text editor. Save levels using UTF-8 as character encoding. Levels are validated by the game using an xml schema that can be found in the source distribution of the game.
| The piece | Example of an XML tag | Description |
|---|---|---|
![]() |
<player x="5" y="6" /> | Level must have one player. The player entity that player controls with keyboard or gamepad. |
![]() |
<exit x="11" y="6"/> | Level must have one exit. The level is passed if player collides with exit after having collected all homers. If one or more homers are missing, level will be restarted from the beginning. |
![]() |
<bomb x="9" y="7" delay="58" /> | Delay can be from 1 to 58 seconds. Bomb will stop the player and start countdown after the first collision. When countdown zero, bomb will explode and disappear. Another collision with the player will explode the bomb immediately. Explosion will not cause harm to the player or other pieces. |
![]() |
<block x="8" y="1" /> | Block will stop the player. |
![]() |
<counter x="0" y="6" count="2" /> | Count can be from 1 to 10. Counter will let player pass only some predefined number of times (count times). |
![]() |
<inverseCounter x="11" y="3" count="1" /> | Count can be from 1 to 10. Inverse counters will block player some predefined number of times (count times) and after that they will let the player entity pass them. |
![]() |
<leftTurnstile x="5" y="4" /> | Will let the player entity pass only from right to left. Will stop the player from any other direction. |
![]() |
<rightTurnstile x="6" y="5" /> | Will let the player entity pass only from left to right. Will stop the player from any other direction. |
![]() |
<upTurnstile x="5v y="7" /> | Will let the player entity pass only from below to up. Will stop the player from any other direction. |
![]() |
<downTurnstile x="6" y="7" /> | Will let the player entity pass only from above to down. Will stop the player from any other direction. |
![]() |
<slopeI x="0" y="0" /> | Slopes will make player slide and turn 90 degrees or stop him. The number I comes from the first (I) quadrant of a Cartesian coordinate system. |
![]() |
<slopeII x="0" y="0" /> | Slopes will make player slide and turn 90 degrees or stop him. The number II comes from the second (II) quadrant of a Cartesian coordinate system. |
![]() |
<slopeIII x="0" y="0" /> | Slopes will make player slide and turn 90 degrees or stop him. The number III comes from the third (III) quadrant of a Cartesian coordinate system. |
![]() |
<slopeIV x="0" y="0" /> | Slopes will make player slide and turn 90 degrees or stop him. The number IV comes from the fourth (IV) quadrant of a Cartesian coordinate system. |
![]() |
<homer x="1" y="2" /> | Homing beacon or homer for short. Level can have one or multiple homers. Player must collect all homers before going to exit. |
Simple example of level design
Phase 1: design
The level is first designed on paper using pencil. Note how the
coordinates are defined. X increases from right to left.
Y increases from down to up.

Phase 2: conversion
Next the level is converted into xml. Note that the actual width and height of the level are one greater than the largest coordinates, because counting starts from 0.
<?xml version="1.0" encoding="utf-8"?>
<level name="Example" password="KITTEN" author="Someone" width="17" height="10">
<player x="13" y="8" />
<homer x="0" y="1" />
<block x="13" y="0" />
<block x="0" y="0" />
<block x="3" y="4" />
<block x="14" y="5" />
<block x="2" y="6" />
<block x="4" y="8" />
<block x="13" y="9" />
<block x="3" y="9" />
<counter x="13" y="2" count="2" />
<counter x="3" y="8" count="5" />
<inverseCounter x="7" y="0" count="1" />
<bomb x="4" y="0" delay="42" />
<leftTurnstile x="8" y="5" />
<rightTurnstile x="9" y="8" />
<downTurnstile x="0" y="3" />
<slopeI x="16" y="0" />
<slopeIII x="0" y="7" />
<slopeIV x="16" y="2" />
<exit x="16" y="7" />
</level>
Phase 3: testing
XML-file is saved as example.wmk into waymarkLevels-directory
and loaded into the game using the
"load external level" menuitem.

Additional information
Default zoom
If the level is too large to fit the screen, you may use cameraZ-attribute to zoom the level so that it fits the screen. Find best value by testing. Example:
Passwords
Use only uppercase letters. Maximum length of the password is six characters.

















