diff --git a/docs/about.md b/docs/about.md
index 0359a4b..cc47baa 100644
--- a/docs/about.md
+++ b/docs/about.md
@@ -1,6 +1,6 @@
-# About Project: Doodle
+# About _Sketchy Maze_
-Project: Doodle is a "drawing-based maze game" themed around hand-drawn mazes
+**Sketchy Maze** is a "drawing-based maze game" themed around hand-drawn maps
on paper.
![Screenshot of the level editor](images/about.png)
@@ -10,8 +10,8 @@ and then drag and drop pre-made "[doodads](doodads.md)" into your level for
interactive things like keys, doors and buttons.
This is an **early alpha build** of the game. Longer term it will include a couple
-built-in "single player campaigns" of multiple themed levels, but for now it
-just includes a couple example levels and the editor itself.
+of built-in "single player campaigns" of multiple themed levels, but for now it
+just includes a few example levels and the editor itself.
## Inspiration
@@ -27,7 +27,7 @@ you've got!)
When you're drawing with a pen and paper, the level can be anything you want.
You can draw a castle or a cave, place little gizmos and traps throughout the
-level (doors, keys, buttons and things) to create puzzles. Do you want the red
+level (doors, keys, buttons and things) and create puzzles. Do you want the red
pixels to mean "fire" and burn the player? Or do you want to decorate the tops
of "bloody" spikes with red? Either way, the 'fire' attribute on that color will
do the job and you can draw whatever shape you want for your level hazards.
diff --git a/docs/controls.md b/docs/controls.md
new file mode 100644
index 0000000..fadf2ae
--- /dev/null
+++ b/docs/controls.md
@@ -0,0 +1,21 @@
+# Controls
+
+**Sketchy Maze** currently uses a mouse and keyboard for inputs, but eventually
+will be usable from gamepad controllers, especially if it branches out and
+targets platforms other than desktop computers in the future.
+
+## During Gameplay
+
+While playing a level, the following keys are used to control the player character:
+
+* **Left** and **Right** arrow keys move the player left or right.
+* **Up** arrow to make the player jump.
+* **Space Bar** is used to "activate" certain doodads. Currently, only the
+ [Warp Doors](doodads.md#warp-doors) require deliberate activation; Buttons and
+ Switches activate _automatically_ when the player character (or other mobile
+ doodad) touches them.
+
+## Hotkeys
+
+See the [Hotkeys](hotkeys.md) page for shortcut keys, especially around the
+Level Editor feature.
diff --git a/docs/custom-doodads/edit-in-game.md b/docs/custom-doodads/edit-in-game.md
index d25c276..78805ca 100644
--- a/docs/custom-doodads/edit-in-game.md
+++ b/docs/custom-doodads/edit-in-game.md
@@ -1,6 +1,6 @@
# Drawing a Doodad In-Game
-Project: Doodle has support for drawing your custom doodad sprites in-game,
+Sketchy Maze has support for drawing your custom doodad sprites in-game,
although for now you may find it more comfortable to use an
[external image editor](edit-external.md) instead.
diff --git a/docs/custom-doodads/index.md b/docs/custom-doodads/index.md
index 67fa6fc..ea86f9e 100644
--- a/docs/custom-doodads/index.md
+++ b/docs/custom-doodads/index.md
@@ -1,10 +1,10 @@
# Creating Custom Doodads
-Project: Doodle is designed to be modder friendly and provides tools to help
+Sketchy Maze is designed to be modder friendly and provides tools to help
you create your own custom doodads to use in your levels.
You can draw the sprites for the doodad either in-game or using an external
-image editor. Then, you can program their logic using JavaScript to make them
+image editor. Then, you can program their behavior using JavaScript to make them
"do" stuff in-game and interact with the player and other doodads.
* Drawing your Doodad's Sprites
@@ -17,7 +17,7 @@ image editor. Then, you can program their logic using JavaScript to make them
Your copy of the game should have shipped with a `doodad` command-line tool
bundled with it. On Windows it's called `doodad.exe` and should be in the same
-folder as the game executable. On Mac OS, it is inside the .app bundle.
+folder as the game executable. On Mac OS, it is located inside the .app bundle.
The `doodad` tool provides a command-line interface to create and inspect
doodad and level files from the game. You'll need to use this tool, at the very
@@ -40,4 +40,4 @@ $ doodad install-script index.js custom.doodad
$ doodad show --script custom.doodad
```
-More info on the [`doodad` tool](../doodad-tool.md) here.
+More info on the [`doodad` program](../doodad-tool.md) here.
diff --git a/docs/custom-levels/index.md b/docs/custom-levels/index.md
index 001c95b..79bb9c6 100644
--- a/docs/custom-levels/index.md
+++ b/docs/custom-levels/index.md
@@ -33,7 +33,7 @@ You can change these settings later if you change your mind.
### Wallpaper
-The wallpaper affects the "theme" of your level. Project: Doodle is themed around
+The wallpaper affects the "theme" of your level. Sketchy Maze is themed around
hand-drawn mazes on paper, so the built-in themes look like various kinds of
paper.
@@ -119,6 +119,10 @@ Levels are designed to have a limited color palette, and this is your selection
of colors for the level or doodad you're drawing. You can click on "Add Color"
to create more rows as needed.
+> **NOTICE:** Modifying the color of an existing swatch on your Palette will also
+> change any pixels _already on your level_ to the new color. Drawings in this
+> game use an indexed palette, similar to GIF and some PNG images!
+
### Color Attributes
The **Attributes** column toggles behaviors on or off for this color. In the default
@@ -143,11 +147,12 @@ or `#0099FF` for light blue . Colors can
be entered in the following formats (the # prefix is actually optional):
* 3-digit hexadecimal: `#F0F` or `#09F`
-* 6-digital hexadecimal: `#0099FF` or `#FC390E`
-* 8-digit RGBA: `#0000FF99`
+* 6-digit hexadecimal: `#0099FF` or `#FC390E`
+* 8-digit RGBA: `#0000FF99` - a color with semi-transparency!
-You can also set the color to be **semi-transparent** by providing an
-additional two hex characters for its alpha channel:
+You can set the color to be **semi-transparent** by providing the 8-digit RGBA
+color code; the extra two digits control the transparency between 00 (fully
+invisible) and FF (fully opaque).
![Enter an RGBA color value for see-thru colors](../images/palette-rgba.png)
@@ -163,17 +168,18 @@ pressing the `d` key, the Doodads window will appear in the level editor:
Doodads are objects you drag and drop into your level to add interactive elements
such as enemies and buttons. Mousing over a doodad will tell you its name, and
-the pager buttons at the bottom can show more options.
+the pager buttons at the bottom can show more options. See the
+[list of built-in doodads](../doodads.md) for details on what each one does.
Click and drag a doodad from the Doodads window onto your level to place it.
-When the **Doodad Tool** is active on the left toolbar, when you mouse over an
+While the **Doodad Tool** is active on the left toolbar, when you mouse over an
existing doodad on your level, and orange box will appear around it. You may
click and drag to move this doodad somewhere else. Right-click it to remove it
from your level.
-* Left click: move a doodad somewhere else on your level.
-* Right click: remove the doodad from your level.
+* Left click: **move a doodad** somewhere else on your level.
+* Right click: **removes the doodad** from your level.
Doodads provide various useful features to your level:
@@ -188,6 +194,14 @@ Doodads provide various useful features to your level:
To connect buttons to control doors, use the
**Link Tool.**
+### How do I remove a doodad from my level?
+
+Select the **Doodad Tool**
+to adjust the doodads already on your level.
+
+To remove a doodad: either **right-click on it** or else drag it from your level
+back into the Doodads window and release, and it will be gone from your level.
+
## Link Tool
The **Link Tool**
diff --git a/docs/doodad-tool.md b/docs/doodad-tool.md
index 02c3ef0..eb429b5 100644
--- a/docs/doodad-tool.md
+++ b/docs/doodad-tool.md
@@ -14,9 +14,14 @@ The `doodad` tool should be in the same place as the game executable.
On Windows, the program is called `doodad.exe` and comes in the zip file next
to the game executable, `doodle.exe`.
-On Linux, it will typically be at `/opt/project-doodle/doodad`.
+On Linux, it will typically be at `/opt/sketchymaze/doodad` if you installed
+the game from a .rpm or .deb package, or else for Flatpak it's included within
+the app bundle and invoked like so:
-On Mac OS, it is found inside the .app bundle.
+ $ flatpak run com.sketchymaze.Doodle doodad --help
+
+On Mac OS, it is found inside the .app bundle; right-click the 'Sketchy Maze.app'
+to find the option to browse inside the .app bundle.
## Usage
@@ -29,11 +34,11 @@ subcommand and `--help` to get help on that command, for example:
doodad convert --help
```
-# Examples
+## Examples
Here are some common scenarios and use cases for the doodad tool.
-## Show
+### Show
```bash
# Usage:
@@ -84,14 +89,14 @@ Chunks:
Use -chunks or -verbose to serialize Chunks
```
-## Convert
+### Convert
```bash
# Usage:
doodad convert [options]
```
-### Creating a Doodad from PNG images
+#### Creating a Doodad from PNG images
Suppose you have PNG images named "frame0.png" through "frame3.png" and want
to create a doodad from those images. This will convert them to the doodad
@@ -105,13 +110,13 @@ doodad convert frame0.png frame1.png frame2.png frame3.png custom.doodad
doodad convert --tag color=blue frame{0,1,2,3}.png custom.doodad
```
-### Convert a level to a PNG image
+#### Convert a level to a PNG image
```bash
doodad convert my.level output.png
```
-### Create a level from a PNG image
+#### Create a level from a PNG image
```bash
doodad convert level.png output.level
diff --git a/docs/doodads.md b/docs/doodads.md
index 384c8ac..1f08178 100644
--- a/docs/doodads.md
+++ b/docs/doodads.md
@@ -1,123 +1,287 @@
-# Doodads
+# Built-in Doodads
-Project:Doodle comes with several built-in doodads that you can use in your
+Sketchy Maze comes with several built-in doodads that you can use in your
levels. You may also [create your own](custom-doodads/index.md) custom doodads
and program them to do whatever you want!
+Doodads are available in the Level Editor by clicking on the
+ **Doodad Tool**
+and then dragging a doodad onto your level. See the [Doodad Tool](custom-levels/index.md#doodad-tool)
+for more information.
+
+* [Flags](#flags)
+ * [Start Flag](#start-flag)
+ * [Exit Flag](#exit-flag)
+* [Doors & Trapdoors](#doors-trapdoors)
+ * [Locked Doors & Keys](#locked-doors-keys)
+ * [Small Key Doors](#small-key-doors)
+ * [Warp Doors](#warp-doors)
+ * [Trapdoors](#trapdoors)
+ * [Crumbly Floor](#crumbly-floor)
+* [Gizmos](#gizmos)
+ * [Buttons](#buttons)
+ * [Sticky Button](#sticky-button)
+ * [Switches](#switches)
+ * [Electric Door](#electric-door)
+* [Boolean State Doodads](#boolean-state-doodads)
+ * [State Button](#state-button)
+ * [State Blocks](#state-blocks)
+ * [Blue & Orange Warp Doors](#blue-orange-warp-doors)
+* [Creatures](#creatures)
+ * [Red Bird](#red-bird)
+ * [Red Azulian (test mob)](#red-azulian-test-mob)
+
---
-## Flags
+# Flags
-The **Start Flag** sets the player spawn point in your level. There should be
-only one start flag.
+## Start Flag
-The **Exit Flag** sets a goal point for the level. The player must touch this
-flag to win the level.
+![Start Flag](images/doodads/start-flag.png)
----
+The **Start Flag** sets the player spawn point in your level. There should be
+only one start flag per level.
-## Trapdoors
+Multiple Start Flags in one level is considered to be an error; a warning is
+flashed on-screen and the player will spawn at one of the flags at random.
-Trapdoors come in four varieties: **Left**, **Right**, **Up**, or down (**Trapdoor**).
+A level without a Start Flag will spawn the player at the 0,0 coordinate at
+the top-left corner of the level, and flash an error about the missing Start
+Flag.
-A trapdoor is a one-way passage. If the player or other mobile doodad touches
-the door from the "correct" side, the door will swing open. After the mobile
-doodad has passed, the door will swing shut again.
+## Exit Flag
-When the door is shut, you can not open it from the "wrong" side and it behaves
-as a solid wall. If the door is open you may run in from the wrong side.
+![Exit Flag](images/doodads/exit-flag.png)
+
+The **Exit Flag** sets a goal point for the level. The player must touch this
+flag to win the level.
---
+# Doors & Trapdoors
+
## Locked Doors & Keys
+![Blue Locked Door](images/doodads/blue-door.gif) ![Blue Key](images/doodads/blue-key.png)
+
There are four pairs of **Colored Locked Doors and Keys** you can use on your level.
Colored doors are locked and behave as a solid wall until the player or another
mobile doodad "picks up" the Key of the same color. The doors may then be
permanently unlocked if the player walks into them while holding the key.
-Should the player lose the keys later, previously opened doors will remain
-unlocked but the player will need to find another key to open more doors.
+The **Colored Keys** are not consumed when used; with one key the player can
+unlock many doors of the same color unless they lose the key. Currently there is
+no method to lose keys except for the "drop all items" [cheat code](hacking.md#cheat-codes).
+
+A locked door has a golden padlock over its sprite; after being unlocked, the
+padlock is missing even while the door is closed. Should the player lose the keys
+later, previously opened doors will remain unlocked but the player will need to
+find another key to open more doors.
+
+![Red Key](images/doodads/red-key.png) ![Green Key](images/doodads/green-key.png) ![Yellow Key](images/doodads/yellow-key.png) ![Blue Key](images/doodads/blue-key.png)
-Each key/door pair also has a distinct shape:
+Each key/door pair also has a distinct shape for color-impaired players:
* **Red Key** (triangle)
* **Green Key** (cross)
* **Yellow Key** (star)
* **Blue Key** (diamond)
----
+## Small Key Doors
-## Electric Door
+![Small Key Door](images/doodads/small-key-door.gif) ![Small Key](images/doodads/small-key.png)
-The sci-fi electric door can only be opened when it receives a "power" signal
-from a linked button or switch. See [Linked Doodads](#linked-doodads) below.
+**Small Key Doors** are doors which consume the **Small Key** when unlocked. The
+player or other mobile doodad may carry several Small Keys and they can only
+unlock as many Small Key Doors as the number of keys they hold.
-When the door receives a "power: on" signal it will open and allow passage to
-the player or other mobile doodads. When it receives a "power: off" signal it
-will close.
+The Small Key Door is permanently unlocked after unlocking it once. A golden
+padlock appears on the door when it's locked, which disappears after unlocking.
+
+## Warp Doors
+
+![Warp Door](images/doodads/warp-door.gif)
+
+The **Warp Door** allows the player character to fast travel between two remote
+locations within the same level. The door is brown in color with a yellow "W"
+symbol.
+
+To connect the doors together, drag two doors into your level and then use the
+**Link Tool** to connect them. During gameplay, walk the player character to one
+of the doors and press the Space Key to open it. The door will swing open and
+shut and the player character exits from the other door.
+
+If a Warp Door is not linked to another door, a message will display indicating
+that the door is "locked" and it can not be entered by the player.
+
+**See also:** the [Blue & Orange Warp Doors](#blue-orange-warp-doors) tied to the
+[State Blocks](#state-blocks).
+
+## Trapdoors
+
+![Trapdoor](images/doodads/trapdoor-down.gif)
+
+A **Trapdoor** is a one-way passage. If the player or other mobile doodad touches
+the door from the "correct" side, the door will swing open. After the mobile
+doodad has passed, the door will swing shut again.
+
+When the door is shut, you can not open it from the "wrong" side and it behaves
+as a solid wall. If the door is open you may run in from the wrong side.
+
+Trapdoors come in four variants: downward-facing (default), rightward, leftward
+and upwards.
+
+## Crumbly Floor
+
+![Crumbly Floor](images/doodads/crumbly-floor.gif)
+
+The **Crumbly Floor** behaves as a solid ceiling when hit from below, and a
+solid floor when walked on from above, but watch out! The floor will shake
+and collapse after a moment beneath your feet.
+
+The floor will respawn after a while and forbids passage from the underside
+of the doodad.
---
+# Gizmos
+
+The gizmo doodads work best when **Linked** to other doodads in your level. For
+example, a Button linked to an Electric Door will cause the door to open whenever
+the button is pressed.
+
+**See also:** [Link Tool](custom-levels/index.md#link-tool)
+
## Buttons
-**Buttons** will emit a "power: on" signal to all doodads that they are
-[Linked](#linking-doodads) to when the button is pressed by the player or
-another mobile doodad.
+![Button Type A](images/doodads/button-a.gif) ![Button Type B](images/doodads/button-b.gif)
+
+**Buttons** will emit a `power: on` signal to all doodads that they are
+[linked to](custom-levels/index.md#link-tool) when the button is pressed by the
+player or another mobile doodad.
-When the button stops being pressed, it will emit a "power: off" signal to
+When the button stops being pressed, it will emit a `power: off` signal to
all connected doodads, which will generally close electric doors.
-Buttons come in three varieties:
+Buttons come in two varieties which are cosmetic only:
* **Button:** a button with a grey arrow that pops back up when pressed.
* **Button Type B:** a variation without the grey arrow but behaves the same.
-* **Sticky Button:** a button with a red arrow that stays pressed in once pressed.
-When a sticky button is pressed, it emits a "power: on" signal once and stays
-pressed in forever. If the Sticky Button itself _receives_ "power: on" from another
-button, it will pop back up.
+## Sticky Button
----
+![Sticky Button](images/doodads/sticky-button.gif)
+
+The **Sticky Button** is a variant of the Button but with a red arrow on its side.
+
+When the Sticky Button is pressed, it will emit a `power: on` signal and it will
+**remain pressed** forever -- unless the button itself receives a `power: on`
+signal from another linked doodad, then it will pop back up and can be pressed
+again.
## Switches
-**Switches** will emit a `power: on` signal to [linked](#linked-doodads) doodads
-when touched by the player or other mobile doodad, and then a `power: off`
+![Switch](images/doodads/switch.gif) ![Switch Right](images/doodads/switch-right.gif)
+
+**Switches** will emit a `power: on` signal to any [linked](custom-levels/index.md#link-tool)
+doodads when touched by the player or other mobile doodad, and then a `power: off`
signal when touched again.
-They come in various aesthetic flavors:
+Switches come in a few different styles (all cosmetic in nature and behave the
+same way):
-* Wall switch (left, right)
-* Floor switch
-* On/Off "background" wall switch facing the screen
+* On/Off "background" wall switch that faces the screen.
+* Side-profile switches to attach to the side of a wall (left and right).
+* Side-profile floor switch.
----
+## Electric Door
-## Crumbly Floor
+![Electric Door](images/doodads/electric-door.gif)
-The **Crumbly Floor** behaves as a solid ceiling when hit from below, and a
-solid floor when walked on from above, but watch out! The floor will shake
-and collapse after a moment beneath your feet.
+The sci-fi **Electric Door** can only be opened when it receives a "power" signal
+from a linked button or switch. See [Linked Doodads](custom-levels/index.md#link-tool).
-The floor will respawn after a while and forbids passage from the underside
-of the doodad.
+When the door receives a "power: on" signal it will open and allow passage to
+the player or other mobile doodads. When it receives a "power: off" signal it
+will close.
---
+# Boolean State Doodads
+
+The **Boolean State Doodads** are a series of doodads which have a mutually
+exclusive state from one another, with their state toggled by the "ON/OFF"
+State Button.
+
+## State Button
+
+![Blue "On"](images/doodads/blue-button.png) ![Orange "Off"](images/doodads/orange-button.png)
+
+The **State Button** globally toggles the boolean state for all doodads in the
+level which are sensitive to the state.
+
+The player character must jump into the ON/OFF block from below and hit it with
+their head. From above, the ON/OFF block acts like a solid floor that the player
+or other mobile doodads can stand on top of.
+
+In the future it will be possible to bonk the ON/OFF block from the sides or
+top with enough force, but currently only hitting it from the bottom will flip
+its state.
+
+* When the button is **OFF**, all **blue** state doodads are active. This is the default state.
+* When the button is **ON**, all **orange** state doodads are active.
+
## State Blocks
+![Blue "On"](images/doodads/blue-on.png) ![Blue "Off"](images/doodads/blue-off.png)
+
+![Orange "Off"](images/doodads/orange-off.png) ![Orange "On"](images/doodads/orange-on.png)
+
**State Blocks** are blue and orange squares that keep opposite state from one
another. In one state the block is solid, in another it is passable.
The ON/OFF block will toggle all state blocks on the level to their opposite
setting whenever it's touched by the player or other mobile doodad.
+## Blue & Orange Warp Doors
+
+![Blue Warp Door](images/doodads/warp-door-blue.gif) ![Blue "Off" Door](images/doodads/warp-blue-off.png)
+
+![Orange "Off" Door](images/doodads/warp-orange-off.png) ![Orange Warp Door](images/doodads/warp-door-orange.gif)
+
+The **Blue & Orange Warp Doors** are variants of the [Warp Door](#warp-doors) that
+are sensitive to the ON/OFF State Blocks. These doors can only be opened while the
+door is in the "ON" (active) state -- when "OFF" (drawn as a hollow dotted outline)
+the door can not be opened by the player. However, a player may still **exit** from
+a de-activated door.
+
+The **Blue Warp Door** is active at the same time as the **Blue State Blocks**,
+and vice versa for the **Orange Warp Door.**
+
---
+# Creatures
+
+## Red Bird
+
+![Bird](images/doodads/bird.gif)
+
+The **Bird** is a simple creature which flies left and right across your level,
+changing direction when it encounters an obstacle.
+
+In the future, the bird will dive-bomb the player character in a diagonal
+trajectory when it sees a shot it can take. This will harm the player if the
+bird hits. If the bird hits the player, or misses and touches the ground, it
+will fly back up to its original altitude and continue its A.I. program of
+flying back and forth and searching for the player.
+
+Currently, however, the bird is harmless and does not dive bomb the player.
+
## Red Azulian (Test Mob)
+![Red Azulian](images/doodads/red-azulian.gif)
+
The red Azulian is a test mobile character. Not really an enemy, as he doesn't
care about the player.
diff --git a/docs/hacking.md b/docs/hacking.md
index 89d3e5d..3d07d51 100644
--- a/docs/hacking.md
+++ b/docs/hacking.md
@@ -1,8 +1,9 @@
# Hacking
-This page discusses some advanced features of the game.
+This page discusses some advanced features of the game and targets a more
+technical audience.
-I've always loved it when developers kept debugging features in their released
+I've always loved it when developers keep debugging features in their released
games, and playing around with those and figuring out what makes the game tick.
I purposely left some debug features in the game that you can play around with.
@@ -216,7 +217,7 @@ undefined
>$ d.EditDrawing("filename.level")
```
-It helps if you run Project: Doodle itself from a command line terminal,
+It helps if you run Sketchy Maze itself from a command line terminal,
so you can see its developer console output also on your terminal
window. Using `Object.keys(d)` will show all the exported functions and
variables from the internal game state.
diff --git a/docs/hotkeys.md b/docs/hotkeys.md
index 89a967e..b3851d0 100644
--- a/docs/hotkeys.md
+++ b/docs/hotkeys.md
@@ -1,6 +1,6 @@
# Shortcut Keys
-Here are all the hotkeys/shortcuts used within Project: Doodle.
+Here are all the hotkeys/shortcuts used within Sketchy Maze.
* [Global Shortcuts](#global-shortcuts)
* [Level Editor](#editor-only)
diff --git a/docs/images/doodads/bird.gif b/docs/images/doodads/bird.gif
new file mode 100644
index 0000000..6c633c7
Binary files /dev/null and b/docs/images/doodads/bird.gif differ
diff --git a/docs/images/doodads/blue-button.png b/docs/images/doodads/blue-button.png
new file mode 100644
index 0000000..9df37be
Binary files /dev/null and b/docs/images/doodads/blue-button.png differ
diff --git a/docs/images/doodads/blue-door.gif b/docs/images/doodads/blue-door.gif
new file mode 100644
index 0000000..8bf19e3
Binary files /dev/null and b/docs/images/doodads/blue-door.gif differ
diff --git a/docs/images/doodads/blue-key.png b/docs/images/doodads/blue-key.png
new file mode 100644
index 0000000..11e4355
Binary files /dev/null and b/docs/images/doodads/blue-key.png differ
diff --git a/docs/images/doodads/blue-off.png b/docs/images/doodads/blue-off.png
new file mode 100644
index 0000000..1375fe6
Binary files /dev/null and b/docs/images/doodads/blue-off.png differ
diff --git a/docs/images/doodads/blue-on.png b/docs/images/doodads/blue-on.png
new file mode 100644
index 0000000..20cc9ba
Binary files /dev/null and b/docs/images/doodads/blue-on.png differ
diff --git a/docs/images/doodads/button-a.gif b/docs/images/doodads/button-a.gif
new file mode 100644
index 0000000..a802cd9
Binary files /dev/null and b/docs/images/doodads/button-a.gif differ
diff --git a/docs/images/doodads/button-b.gif b/docs/images/doodads/button-b.gif
new file mode 100644
index 0000000..7c9c0d1
Binary files /dev/null and b/docs/images/doodads/button-b.gif differ
diff --git a/docs/images/doodads/crumbly-floor.gif b/docs/images/doodads/crumbly-floor.gif
new file mode 100644
index 0000000..5df8ce5
Binary files /dev/null and b/docs/images/doodads/crumbly-floor.gif differ
diff --git a/docs/images/doodads/electric-door.gif b/docs/images/doodads/electric-door.gif
new file mode 100644
index 0000000..932747d
Binary files /dev/null and b/docs/images/doodads/electric-door.gif differ
diff --git a/docs/images/doodads/exit-flag.png b/docs/images/doodads/exit-flag.png
new file mode 100644
index 0000000..585152d
Binary files /dev/null and b/docs/images/doodads/exit-flag.png differ
diff --git a/docs/images/doodads/green-key.png b/docs/images/doodads/green-key.png
new file mode 100644
index 0000000..fe876aa
Binary files /dev/null and b/docs/images/doodads/green-key.png differ
diff --git a/docs/images/doodads/orange-button.png b/docs/images/doodads/orange-button.png
new file mode 100644
index 0000000..fbf2cde
Binary files /dev/null and b/docs/images/doodads/orange-button.png differ
diff --git a/docs/images/doodads/orange-off.png b/docs/images/doodads/orange-off.png
new file mode 100644
index 0000000..e2fa95e
Binary files /dev/null and b/docs/images/doodads/orange-off.png differ
diff --git a/docs/images/doodads/orange-on.png b/docs/images/doodads/orange-on.png
new file mode 100644
index 0000000..0aaae44
Binary files /dev/null and b/docs/images/doodads/orange-on.png differ
diff --git a/docs/images/doodads/red-azulian.gif b/docs/images/doodads/red-azulian.gif
new file mode 100644
index 0000000..9d93f3a
Binary files /dev/null and b/docs/images/doodads/red-azulian.gif differ
diff --git a/docs/images/doodads/red-key.png b/docs/images/doodads/red-key.png
new file mode 100644
index 0000000..38db173
Binary files /dev/null and b/docs/images/doodads/red-key.png differ
diff --git a/docs/images/doodads/small-key-door.gif b/docs/images/doodads/small-key-door.gif
new file mode 100644
index 0000000..f252164
Binary files /dev/null and b/docs/images/doodads/small-key-door.gif differ
diff --git a/docs/images/doodads/small-key.png b/docs/images/doodads/small-key.png
new file mode 100644
index 0000000..11e4eca
Binary files /dev/null and b/docs/images/doodads/small-key.png differ
diff --git a/docs/images/doodads/start-flag.png b/docs/images/doodads/start-flag.png
new file mode 100644
index 0000000..125550e
Binary files /dev/null and b/docs/images/doodads/start-flag.png differ
diff --git a/docs/images/doodads/sticky-button.gif b/docs/images/doodads/sticky-button.gif
new file mode 100644
index 0000000..09b8132
Binary files /dev/null and b/docs/images/doodads/sticky-button.gif differ
diff --git a/docs/images/doodads/switch-right.gif b/docs/images/doodads/switch-right.gif
new file mode 100644
index 0000000..02b9013
Binary files /dev/null and b/docs/images/doodads/switch-right.gif differ
diff --git a/docs/images/doodads/switch.gif b/docs/images/doodads/switch.gif
new file mode 100644
index 0000000..d97b4a6
Binary files /dev/null and b/docs/images/doodads/switch.gif differ
diff --git a/docs/images/doodads/trapdoor-down.gif b/docs/images/doodads/trapdoor-down.gif
new file mode 100644
index 0000000..21a371c
Binary files /dev/null and b/docs/images/doodads/trapdoor-down.gif differ
diff --git a/docs/images/doodads/warp-blue-off.png b/docs/images/doodads/warp-blue-off.png
new file mode 100644
index 0000000..a42b51c
Binary files /dev/null and b/docs/images/doodads/warp-blue-off.png differ
diff --git a/docs/images/doodads/warp-blue-on.png b/docs/images/doodads/warp-blue-on.png
new file mode 100644
index 0000000..4921faf
Binary files /dev/null and b/docs/images/doodads/warp-blue-on.png differ
diff --git a/docs/images/doodads/warp-door-blue.gif b/docs/images/doodads/warp-door-blue.gif
new file mode 100644
index 0000000..4af0f2c
Binary files /dev/null and b/docs/images/doodads/warp-door-blue.gif differ
diff --git a/docs/images/doodads/warp-door-orange.gif b/docs/images/doodads/warp-door-orange.gif
new file mode 100644
index 0000000..ccfa42c
Binary files /dev/null and b/docs/images/doodads/warp-door-orange.gif differ
diff --git a/docs/images/doodads/warp-door.gif b/docs/images/doodads/warp-door.gif
new file mode 100644
index 0000000..5c6bb0c
Binary files /dev/null and b/docs/images/doodads/warp-door.gif differ
diff --git a/docs/images/doodads/warp-orange-off.png b/docs/images/doodads/warp-orange-off.png
new file mode 100644
index 0000000..476703a
Binary files /dev/null and b/docs/images/doodads/warp-orange-off.png differ
diff --git a/docs/images/doodads/warp-orange-on.png b/docs/images/doodads/warp-orange-on.png
new file mode 100644
index 0000000..01a6a61
Binary files /dev/null and b/docs/images/doodads/warp-orange-on.png differ
diff --git a/docs/images/doodads/yellow-key.png b/docs/images/doodads/yellow-key.png
new file mode 100644
index 0000000..c83c738
Binary files /dev/null and b/docs/images/doodads/yellow-key.png differ
diff --git a/docs/index.md b/docs/index.md
index af59981..56ec5dc 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,14 +1,16 @@
-# Welcome to Project: Doodle
+# Welcome to _Sketchy Maze_
![](images/main-menu.png)
-[Project: Doodle](about.md) is a drawing-based maze game themed around hand-drawn
+[Sketchy Maze](about.md) is a drawing-based maze game themed around hand-drawn
maps on paper. You can draw a level for a 2D platformer game, drag-and-drop
-"doodads" such as buttons and doors into your level, and play it.
+"doodads" such as buttons and doors into your level, play it and share your
+levels with others.
## Table of Contents
-* [About Project: Doodle](about.md)
+* [About Sketchy Maze](about.md)
+* [Gameplay Controls](controls.md)
* [Creating Custom Levels](custom-levels/index.md)
* [The Built-in Doodads](doodads.md)
* [Creating Custom Doodads](custom-doodads/index.md)
@@ -18,3 +20,4 @@ maps on paper. You can draw a level for a 2D platformer game, drag-and-drop
* [Shortcut Keys](hotkeys.md)
* [The `doodad` command-line tool](doodad-tool.md)
* [Hacking and debugging](hacking.md)
+* [Open Source Licenses](licenses.md)
diff --git a/docs/licenses.md b/docs/licenses.md
new file mode 100644
index 0000000..b0aa98a
--- /dev/null
+++ b/docs/licenses.md
@@ -0,0 +1,183 @@
+# Open Source Licenses
+
+## DejaVu Fonts
+
+_(from https://dejavu-fonts.github.io/License.html)_
+
+Fonts are © Bitstream (see below). DejaVu changes are in public domain. Explanation of copyright is on [Gnome page on Bitstream Vera fonts](http://gnome.org/fonts/). Glyphs imported from [Arev](https://dejavu-fonts.github.io/Bitstream_Vera_Derivatives.html) fonts are © Tavmjung Bah (see below)
+
+### Bitstream Vera Fonts Copyright
+
+Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions:
+
+The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces.
+
+The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera".
+
+This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names.
+
+The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself.
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
+
+Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org.
+
+### Arev Fonts Copyright
+
+[Original text](http://tavmjong.free.fr/FONTS/ArevCopyright.txt)
+
+Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions:
+
+The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces.
+
+The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Tavmjong Bah" or the word "Arev".
+
+This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names.
+
+The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself.
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
+
+Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.
+
+
+## Go Modules
+
+### github.com/robertkrimen/otto
+
+```
+Copyright (c) 2012 Robert Krimen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+```
+
+### github.com/satori/go.uuid
+
+```
+Copyright (C) 2013-2018 by Maxim Bublis
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+```
+
+### github.com/urfave/cli
+
+```
+MIT License
+
+Copyright (c) 2016 Jeremy Saenz & Contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+```
+
+### github.com/veandco/go-sdl2
+
+```
+Copyright (c) 2013, Go-SDL2 Authors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+ * Neither the name of Go-SDL2 nor the names of its contributors may be
+used to endorse or promote products derived from this software without specific
+prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+```
+
+### github.com/vmihailenco/msgpack
+
+```
+Copyright (c) 2013 The github.com/vmihailenco/msgpack Authors.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+```
diff --git a/docs/profile-directory.md b/docs/profile-directory.md
index a3cc9e8..ee331d5 100644
--- a/docs/profile-directory.md
+++ b/docs/profile-directory.md
@@ -1,6 +1,6 @@
# Profile Directory
-Project: Doodle stores your user-created levels and custom doodads in your
+Sketchy Maze stores your user-created levels and custom doodads in your
operating system's profile directory for your account.
This will typically be found at the following locations based on your platform:
diff --git a/mkdocs.yml b/mkdocs.yml
index a0c6dc0..f08d51b 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -1,16 +1,18 @@
-site_name: "Project: Doodle Guidebook"
+site_name: "Sketchy Maze: Guidebook"
use_directory_urls: false
nav:
- Home: index.md
- About: about.md
+ - Controls: controls.md
- "Creating Levels": custom-levels/index.md
- "Built-in Doodads": doodads.md
- "Creating Doodads": custom-doodads/index.md
- "Drawing Doodads": custom-doodads/edit-in-game.md
- "Doodad Scripts": custom-doodads/scripts.md
- "Shortcut Keys": hotkeys.md
- - "`doodad` Tool": doodad-tool.md
+ - "`doodad` Program": doodad-tool.md
- "Hacking": hacking.md
+ - "Open Source Licenses": licenses.md
theme: readthedocs
markdown_extensions:
- toc: