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,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 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 + +## Start Flag + +![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. +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 flag to win the level. --- -## 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. - ---- +# 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). -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) * **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 -## Buttons +![Warp Door](images/doodads/warp-door.gif) -**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. +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. -When the button stops being pressed, it will emit a "power: off" signal to -all connected doodads, which will generally close electric doors. +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. -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. -* **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. +**See also:** the [Blue & Orange Warp Doors](#blue-orange-warp-doors) tied to the +[State Blocks](#state-blocks). -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. +## Trapdoors ---- +![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 touched by the player or other mobile doodad, and then a `power: off` -signal when touched 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. -They come in various aesthetic flavors: - -* Wall switch (left, right) -* Floor switch -* On/Off "background" wall switch facing the screen - ---- +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. @@ -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 +![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: