Doodad sprites and lots more documentation

This commit is contained in:
Noah 2021-03-28 17:20:15 -07:00
parent 4f7a533831
commit 95e7bfcf42
45 changed files with 483 additions and 90 deletions

View File

@ -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. on paper.
![Screenshot of the level editor](images/about.png) ![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. interactive things like keys, doors and buttons.
This is an **early alpha build** of the game. Longer term it will include a couple 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 of built-in "single player campaigns" of multiple themed levels, but for now it
just includes a couple example levels and the editor itself. just includes a few example levels and the editor itself.
## Inspiration ## Inspiration
@ -27,7 +27,7 @@ you've got!)
When you're drawing with a pen and paper, the level can be anything you want. 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 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 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 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. do the job and you can draw whatever shape you want for your level hazards.

21
docs/controls.md Normal file
View File

@ -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.

View File

@ -1,6 +1,6 @@
# Drawing a Doodad In-Game # 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 although for now you may find it more comfortable to use an
[external image editor](edit-external.md) instead. [external image editor](edit-external.md) instead.

View File

@ -1,10 +1,10 @@
# Creating Custom Doodads # 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 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 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. "do" stuff in-game and interact with the player and other doodads.
* Drawing your Doodad's Sprites * 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 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 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 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 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 $ 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.

View File

@ -33,7 +33,7 @@ You can change these settings later if you change your mind.
### Wallpaper ### 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 hand-drawn mazes on paper, so the built-in themes look like various kinds of
paper. 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" of colors for the level or doodad you're drawing. You can click on "Add Color"
to create more rows as needed. 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 ### Color Attributes
The **Attributes** column toggles behaviors on or off for this color. In the default The **Attributes** column toggles behaviors on or off for this color. In the default
@ -143,11 +147,12 @@ or `#0099FF` for <span style="color: #0099FF">light blue</span>. Colors can
be entered in the following formats (the # prefix is actually optional): be entered in the following formats (the # prefix is actually optional):
* 3-digit hexadecimal: `#F0F` or `#09F` * 3-digit hexadecimal: `#F0F` or `#09F`
* 6-digital hexadecimal: `#0099FF` or `#FC390E` * 6-digit hexadecimal: `#0099FF` or `#FC390E`
* 8-digit RGBA: `#0000FF99` * 8-digit RGBA: `#0000FF99` - a color with semi-transparency!
You can also set the color to be **semi-transparent** by providing an You can set the color to be **semi-transparent** by providing the 8-digit RGBA
additional two hex characters for its alpha channel: 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) ![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 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 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. 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 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 click and drag to move this doodad somewhere else. Right-click it to remove it
from your level. from your level.
* Left click: move a doodad somewhere else on your level. * Left click: **move a doodad** somewhere else on your level.
* Right click: remove the doodad from your level. * Right click: **removes the doodad** from your level.
Doodads provide various useful features to 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 To connect buttons to control doors, use the
<img src="../images/sprites/link-tool.png" width="16" height="16"> **Link Tool.** <img src="../images/sprites/link-tool.png" width="16" height="16"> **Link Tool.**
### How do I remove a doodad from my level?
Select the <img src="../images/sprites/actor-tool.png" width="16" height="16"> **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 ## Link Tool
The <img src="../images/sprites/link-tool.png" width="16" height="16"> **Link Tool** The <img src="../images/sprites/link-tool.png" width="16" height="16"> **Link Tool**

View File

@ -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 On Windows, the program is called `doodad.exe` and comes in the zip file next
to the game executable, `doodle.exe`. 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 ## Usage
@ -29,11 +34,11 @@ subcommand and `--help` to get help on that command, for example:
doodad convert --help doodad convert --help
``` ```
# Examples ## Examples
Here are some common scenarios and use cases for the doodad tool. Here are some common scenarios and use cases for the doodad tool.
## Show ### Show
```bash ```bash
# Usage: # Usage:
@ -84,14 +89,14 @@ Chunks:
Use -chunks or -verbose to serialize Chunks Use -chunks or -verbose to serialize Chunks
``` ```
## Convert ### Convert
```bash ```bash
# Usage: # Usage:
doodad convert [options] <input files.png> <output file.doodad> doodad convert [options] <input files.png> <output file.doodad>
``` ```
### 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 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 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 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 ```bash
doodad convert my.level output.png doodad convert my.level output.png
``` ```
### Create a level from a PNG image #### Create a level from a PNG image
```bash ```bash
doodad convert level.png output.level doodad convert level.png output.level

View File

@ -1,102 +1,141 @@
# 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 levels. You may also [create your own](custom-doodads/index.md) custom doodads
and program them to do whatever you want! and program them to do whatever you want!
Doodads are available in the Level Editor by clicking on the
<img src="images/sprites/actor-tool.png" width="16" height="16"> **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
## Start Flag
![Start Flag](images/doodads/start-flag.png)
The **Start Flag** sets the player spawn point in your level. There should be The **Start Flag** sets the player spawn point in your level. There should be
only one start flag. only one start flag per level.
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.
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.
## Exit Flag
![Exit Flag](images/doodads/exit-flag.png)
The **Exit Flag** sets a goal point for the level. The player must touch this The **Exit Flag** sets a goal point for the level. The player must touch this
flag to win the level. flag to win the level.
--- ---
## Trapdoors # Doors & Trapdoors
Trapdoors come in four varieties: **Left**, **Right**, **Up**, or down (**Trapdoor**).
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.
---
## Locked Doors & Keys ## 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. 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 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 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. permanently unlocked if the player walks into them while holding the key.
Should the player lose the keys later, previously opened doors will remain The **Colored Keys** are not consumed when used; with one key the player can
unlocked but the player will need to find another key to open more doors. 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).
Each key/door pair also has a distinct shape: 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 for color-impaired players:
* **Red Key** (triangle) * **Red Key** (triangle)
* **Green Key** (cross) * **Green Key** (cross)
* **Yellow Key** (star) * **Yellow Key** (star)
* **Blue Key** (diamond) * **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 **Small Key Doors** are doors which consume the **Small Key** when unlocked. The
from a linked button or switch. See [Linked Doodads](#linked-doodads) below. 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 Small Key Door is permanently unlocked after unlocking it once. A golden
the player or other mobile doodads. When it receives a "power: off" signal it padlock appears on the door when it's locked, which disappears after unlocking.
will close.
--- ## Warp Doors
## Buttons ![Warp Door](images/doodads/warp-door.gif)
**Buttons** will emit a "power: on" signal to all doodads that they are The **Warp Door** allows the player character to fast travel between two remote
[Linked](#linking-doodads) to when the button is pressed by the player or locations within the same level. The door is brown in color with a yellow "W"
another mobile doodad. symbol.
When the button stops being pressed, it will emit a "power: off" signal to To connect the doors together, drag two doors into your level and then use the
all connected doodads, which will generally close electric doors. **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.
Buttons come in three varieties: 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.
* **Button:** a button with a grey arrow that pops back up when pressed. **See also:** the [Blue & Orange Warp Doors](#blue-orange-warp-doors) tied to the
* **Button Type B:** a variation without the grey arrow but behaves the same. [State Blocks](#state-blocks).
* **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 ## Trapdoors
pressed in forever. If the Sticky Button itself _receives_ "power: on" from another
button, it will pop back up.
--- ![Trapdoor](images/doodads/trapdoor-down.gif)
## Switches 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.
**Switches** will emit a `power: on` signal to [linked](#linked-doodads) doodads When the door is shut, you can not open it from the "wrong" side and it behaves
when touched by the player or other mobile doodad, and then a `power: off` as a solid wall. If the door is open you may run in from the wrong side.
signal when touched again.
They come in various aesthetic flavors: Trapdoors come in four variants: downward-facing (default), rightward, leftward
and upwards.
* Wall switch (left, right)
* Floor switch
* On/Off "background" wall switch facing the screen
---
## Crumbly Floor ## Crumbly Floor
![Crumbly Floor](images/doodads/crumbly-floor.gif)
The **Crumbly Floor** behaves as a solid ceiling when hit from below, and a 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 solid floor when walked on from above, but watch out! The floor will shake
and collapse after a moment beneath your feet. and collapse after a moment beneath your feet.
@ -106,18 +145,143 @@ 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
![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
all connected doodads, which will generally close electric doors.
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
![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
![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.
Switches come in a few different styles (all cosmetic in nature and behave the
same way):
* 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
![Electric Door](images/doodads/electric-door.gif)
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).
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 ## 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 **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. 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 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. 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 (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 The red Azulian is a test mobile character. Not really an enemy, as he doesn't
care about the player. care about the player.

View File

@ -1,8 +1,9 @@
# Hacking # 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. 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. I purposely left some debug features in the game that you can play around with.
@ -216,7 +217,7 @@ undefined
>$ d.EditDrawing("filename.level") >$ 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 so you can see its developer console output also on your terminal
window. Using `Object.keys(d)` will show all the exported functions and window. Using `Object.keys(d)` will show all the exported functions and
variables from the internal game state. variables from the internal game state.

View File

@ -1,6 +1,6 @@
# Shortcut Keys # 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) * [Global Shortcuts](#global-shortcuts)
* [Level Editor](#editor-only) * [Level Editor](#editor-only)

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 785 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 732 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 713 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 932 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 805 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 669 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 717 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 699 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 682 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 685 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 850 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 687 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 832 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 728 B

View File

@ -1,14 +1,16 @@
# Welcome to Project: Doodle # Welcome to _Sketchy Maze_
![](images/main-menu.png) ![](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 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 ## Table of Contents
* [About Project: Doodle](about.md) * [About Sketchy Maze](about.md)
* [Gameplay Controls](controls.md)
* [Creating Custom Levels](custom-levels/index.md) * [Creating Custom Levels](custom-levels/index.md)
* [The Built-in Doodads](doodads.md) * [The Built-in Doodads](doodads.md)
* [Creating Custom Doodads](custom-doodads/index.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) * [Shortcut Keys](hotkeys.md)
* [The `doodad` command-line tool](doodad-tool.md) * [The `doodad` command-line tool](doodad-tool.md)
* [Hacking and debugging](hacking.md) * [Hacking and debugging](hacking.md)
* [Open Source Licenses](licenses.md)

183
docs/licenses.md Normal file
View File

@ -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 <b@codemonkey.ru>
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.
```

View File

@ -1,6 +1,6 @@
# Profile Directory # 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. operating system's profile directory for your account.
This will typically be found at the following locations based on your platform: This will typically be found at the following locations based on your platform:

View File

@ -1,16 +1,18 @@
site_name: "Project: Doodle Guidebook" site_name: "Sketchy Maze: Guidebook"
use_directory_urls: false use_directory_urls: false
nav: nav:
- Home: index.md - Home: index.md
- About: about.md - About: about.md
- Controls: controls.md
- "Creating Levels": custom-levels/index.md - "Creating Levels": custom-levels/index.md
- "Built-in Doodads": doodads.md - "Built-in Doodads": doodads.md
- "Creating Doodads": custom-doodads/index.md - "Creating Doodads": custom-doodads/index.md
- "Drawing Doodads": custom-doodads/edit-in-game.md - "Drawing Doodads": custom-doodads/edit-in-game.md
- "Doodad Scripts": custom-doodads/scripts.md - "Doodad Scripts": custom-doodads/scripts.md
- "Shortcut Keys": hotkeys.md - "Shortcut Keys": hotkeys.md
- "`doodad` Tool": doodad-tool.md - "`doodad` Program": doodad-tool.md
- "Hacking": hacking.md - "Hacking": hacking.md
- "Open Source Licenses": licenses.md
theme: readthedocs theme: readthedocs
markdown_extensions: markdown_extensions:
- toc: - toc: