2021-04-01 02:35:32 +00:00
|
|
|
# Sketchy Maze
|
2017-10-27 02:32:07 +00:00
|
|
|
|
2021-04-01 02:35:32 +00:00
|
|
|
> **Homepage:** https://www.sketchymaze.com
|
2019-07-09 02:12:25 +00:00
|
|
|
|
2021-04-01 02:35:32 +00:00
|
|
|
Sketchy Maze is a drawing-based maze game.
|
2019-07-09 02:12:25 +00:00
|
|
|
|
2021-04-01 02:35:32 +00:00
|
|
|
The game is themed around hand-drawn, side-scrolling platformer
|
2019-07-09 02:12:25 +00:00
|
|
|
type mazes. You can draw your own levels using freehand and basic drawing tools,
|
|
|
|
color in some fire or water, and drag in pre-made "Doodads" like buttons, keys
|
|
|
|
and doors to add some interaction to your level.
|
|
|
|
|
|
|
|
This is a _very_ early pre-release version of the game. Expect bugs and slowness
|
|
|
|
but get a general gist of what the game is about.
|
|
|
|
|
2021-04-01 02:35:32 +00:00
|
|
|
This alpha release of the game comes with some example levels built-in for
|
2019-07-09 02:12:25 +00:00
|
|
|
playing or editing and a handful of built-in Doodads.
|
2018-06-17 21:15:59 +00:00
|
|
|
|
2021-04-01 02:35:32 +00:00
|
|
|
See the **Guidebook** included with this game for good user-facing
|
|
|
|
documentation or online at https://www.sketchymaze.com/guidebook
|
|
|
|
|
2018-06-17 21:15:59 +00:00
|
|
|
# Features
|
|
|
|
|
|
|
|
(Eventually), the high-level, user-facing features for the game are:
|
|
|
|
|
|
|
|
* **Draw your own levels** freehand and then play them like a 2D platformer
|
|
|
|
game.
|
|
|
|
* In **Adventure Mode** you can play through a series of official example
|
|
|
|
levels that ship with the game.
|
|
|
|
* In **Edit Mode** you can draw a map freehand-style and lay down physical
|
|
|
|
geometry, and mark which lines are solid or which ones behave like fire.
|
|
|
|
* Drag and drop **Doodads** like buttons, doors and keys into your level and
|
|
|
|
link them together so that buttons open doors and levers activate devices.
|
|
|
|
* In **Play Mode** you can play your level as a 2D platformer game where you
|
|
|
|
collect keys, watch out for enemies, and solve puzzles to get to the exit.
|
|
|
|
* Easily **Share** your custom maps with friends.
|
|
|
|
|
|
|
|
## Mod-friendly
|
|
|
|
|
2019-06-26 01:58:48 +00:00
|
|
|
(Eventually) all these features will support custom content in the
|
|
|
|
game:
|
|
|
|
|
2018-06-17 21:15:59 +00:00
|
|
|
* Users can create **Custom Doodads** to extend the game with a scripting
|
|
|
|
language like JavaScript. The sprites and animations are edited in-game
|
|
|
|
in Edit Mode, but the scripting is done in your text editor.
|
|
|
|
* In **Edit Mode** you can drag custom doodads into your maps.
|
|
|
|
* To **Share** your maps, you can choose to **bundle** the custom
|
|
|
|
doodads inside your map file itself, so that other players can play
|
|
|
|
the map without needing to install the doodads separately.
|
|
|
|
* If you receive a map with custom doodads, you can **install** the doodads
|
|
|
|
into your copy of the game and use them in your own maps.
|
|
|
|
|
2024-04-27 05:34:13 +00:00
|
|
|
# Developer Documentation
|
|
|
|
|
|
|
|
In case you are reading this from the game's open source repository, take a
|
|
|
|
look in the `docs/` folder or the `*.md` files in the root of the repository.
|
|
|
|
|
|
|
|
Some to start with:
|
|
|
|
|
|
|
|
* [Building](Building.md) the game (tl;dr. run bootstrap.py)
|
|
|
|
* [Tour of the Code](docs/Tour%20of%20the%20Code.md)
|
2024-05-24 23:05:37 +00:00
|
|
|
* [Evolution of File Formats](docs/Evolution%20of%20File%20Formats.md)
|
2024-04-27 05:34:13 +00:00
|
|
|
|
2018-07-22 03:57:41 +00:00
|
|
|
# Keybindings
|
|
|
|
|
|
|
|
Global Keybindings:
|
|
|
|
|
|
|
|
```
|
|
|
|
Escape
|
|
|
|
Close the developer console if open, without running any commands.
|
|
|
|
Exit the program otherwise.
|
|
|
|
|
|
|
|
Enter
|
2019-04-19 23:21:04 +00:00
|
|
|
Open and close the developer console, and run commands while the
|
|
|
|
console is open.
|
|
|
|
|
|
|
|
F3
|
|
|
|
Toggle the Debug Overlay.
|
|
|
|
|
|
|
|
F4
|
|
|
|
Toggle debug collision hitboxes.
|
2018-07-22 03:57:41 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
In Play Mode:
|
|
|
|
|
|
|
|
```
|
|
|
|
Cursor Keys
|
|
|
|
Move the player around.
|
2019-06-26 01:58:48 +00:00
|
|
|
"E" Key
|
|
|
|
Edit the map you're currently playing if you came from Edit Mode.
|
|
|
|
```
|
|
|
|
|
|
|
|
In Edit Mode:
|
|
|
|
|
2018-07-22 03:57:41 +00:00
|
|
|
```
|
2019-06-26 01:58:48 +00:00
|
|
|
Cursor Keys
|
|
|
|
Scroll the view of the map around.
|
|
|
|
"P" Key
|
|
|
|
Playtest the current map you're working on.
|
2019-07-04 00:19:25 +00:00
|
|
|
"F" Key
|
|
|
|
Switch to the Pencil (Freehand) Tool
|
|
|
|
"L" Key
|
|
|
|
Switch to the Line Tool
|
|
|
|
"R" Key
|
|
|
|
Switch to the Rectangle Tool
|
|
|
|
Ctrl-Z
|
|
|
|
Undo
|
|
|
|
Ctrl-Y
|
|
|
|
Redo
|
2019-06-26 01:58:48 +00:00
|
|
|
```
|
|
|
|
|
2022-02-20 02:25:36 +00:00
|
|
|
# Gamepad Controls
|
|
|
|
|
|
|
|
The game supports Xbox and Nintendo style game controllers. The button
|
|
|
|
bindings are not yet customizable, except to choose between the
|
|
|
|
"X Style" or "N Style" for A/B and X/Y button mappings.
|
|
|
|
|
|
|
|
Gamepad controls very depending on two modes the game can be in:
|
|
|
|
|
|
|
|
## Mouse Mode
|
|
|
|
|
|
|
|
The Gamepad emulates a mouse cursor in this mode.
|
|
|
|
|
|
|
|
* The left analog stick moves a cursor around the screen.
|
|
|
|
* The right analog stick scrolls the level (title screen and editor)
|
|
|
|
* A or X button simulates a Left-click
|
|
|
|
* B or Y button simulates a Right-click
|
|
|
|
* L1 (left shoulder) emulates a Middle-click
|
|
|
|
* L2 (left trigger) closes the top-most window in the editor mode
|
|
|
|
(like the Backspace key).
|
|
|
|
|
|
|
|
## Gameplay Mode
|
|
|
|
|
|
|
|
When playing a level, the controls are as follows:
|
|
|
|
|
|
|
|
* The left analog stick and the D-Pad will move the player character.
|
|
|
|
* A or X button to "Use" objects such as Warp Doors.
|
|
|
|
* B or Y button to "Jump"
|
|
|
|
* R1 (right shoulder) toggles between Mouse Mode and Gameplay Mode.
|
|
|
|
|
|
|
|
You can use the R1 button to access Mouse Mode to interact with the
|
|
|
|
menus or click on the "Edit Level" button.
|
|
|
|
|
|
|
|
Note: characters with antigravity (such as the Bird) can move in all
|
|
|
|
four directions but characters with gravity only move left and right
|
|
|
|
and have the dedicated "Jump" button. This differs from regular
|
|
|
|
keyboard controls where the Up arrow is to Jump.
|
|
|
|
|
2020-04-13 00:23:04 +00:00
|
|
|
# Developer Console
|
2018-07-22 03:57:41 +00:00
|
|
|
|
2020-11-20 04:08:38 +00:00
|
|
|
Press `Enter` at any time to open the developer console. The console
|
|
|
|
provides commands and advanced functionality, and is also where cheat
|
|
|
|
codes can be entered.
|
2018-07-22 03:57:41 +00:00
|
|
|
|
|
|
|
Commands supported:
|
|
|
|
|
|
|
|
```
|
2019-07-09 02:12:25 +00:00
|
|
|
close
|
|
|
|
Exit to the game's title screen.
|
|
|
|
|
2018-07-22 03:57:41 +00:00
|
|
|
new
|
2019-06-26 01:58:48 +00:00
|
|
|
Show the "New Level" screen to start editing a new map.
|
2018-07-22 03:57:41 +00:00
|
|
|
|
2019-04-19 23:21:04 +00:00
|
|
|
save [filename]
|
2020-11-20 04:08:38 +00:00
|
|
|
Save the current map in Edit Mode. The filename is required
|
|
|
|
if the map has not been saved yet.
|
2018-07-22 03:57:41 +00:00
|
|
|
|
2019-04-19 23:21:04 +00:00
|
|
|
edit [filename]
|
|
|
|
Open a map or doodad in Edit Mode.
|
2018-07-22 03:57:41 +00:00
|
|
|
|
2019-04-19 23:21:04 +00:00
|
|
|
play [filename]
|
2018-07-22 03:57:41 +00:00
|
|
|
Open a map in Play Mode.
|
|
|
|
|
2018-07-25 16:03:49 +00:00
|
|
|
echo <text>
|
|
|
|
Flash a message to the console.
|
|
|
|
|
2020-11-20 04:08:38 +00:00
|
|
|
alert <text>
|
|
|
|
Test an alert box modal with a custom message.
|
|
|
|
|
2018-07-25 16:03:49 +00:00
|
|
|
clear
|
|
|
|
Clear the console output history.
|
|
|
|
|
2018-07-22 03:57:41 +00:00
|
|
|
exit
|
|
|
|
quit
|
|
|
|
Close the developer console.
|
2020-11-20 04:08:38 +00:00
|
|
|
|
|
|
|
boolProp <property> <true/false>
|
|
|
|
Toggle certain boolean settings in the game. Most of these
|
|
|
|
are debugging related. `boolProp list` shows the available
|
|
|
|
props.
|
|
|
|
|
|
|
|
eval <expression>
|
|
|
|
$ <expression>
|
|
|
|
Execute a line of JavaScript code in the console. Several
|
|
|
|
of the game's core data types are available here; `d` is
|
|
|
|
the master game struct; d.Scene is the pointer to the
|
|
|
|
current scene. d.Scene.UI.Canvas may point to the level edit
|
|
|
|
canvas in Editor Mode. Object.keys() can enumerate public
|
|
|
|
functions and variables.
|
|
|
|
|
|
|
|
repl
|
|
|
|
Enters an interactive JavaScript shell, where the console
|
|
|
|
stays open and pre-fills a $ prompt for subsequent commands.
|
2018-07-22 03:57:41 +00:00
|
|
|
```
|
|
|
|
|
2020-11-20 04:08:38 +00:00
|
|
|
The JavaScript console is a feature for advanced users and was
|
|
|
|
used while developing the game. Cool things you can do with it
|
|
|
|
may be documented elsewhere.
|
|
|
|
|
2020-04-13 00:23:04 +00:00
|
|
|
## Cheat Codes
|
|
|
|
|
|
|
|
The following cheats can be entered into the developer console.
|
|
|
|
|
|
|
|
Play Mode:
|
|
|
|
|
|
|
|
* `import antigravity`
|
|
|
|
- This disables the effects of gravity for the player
|
|
|
|
character. Arrow keys can freely move the player in any direction.
|
|
|
|
* `ghost mode`
|
|
|
|
- This disables collision detection for the player character
|
|
|
|
so that you can pass through walls and solid doodads. Combine with
|
|
|
|
antigravity or else you'll fall to the bottom of the map!
|
|
|
|
* `give all keys`
|
|
|
|
- Adds all four colored keys to the player's inventory.
|
|
|
|
* `drop all items`
|
|
|
|
- Clears the player's inventory of all items.
|
|
|
|
|
|
|
|
Experimental:
|
|
|
|
|
|
|
|
* `unleash the beast`
|
|
|
|
- Removes the 60 FPS frame rate lock, allowing the game to run as quickly
|
|
|
|
as your hardware permits.
|
|
|
|
* `don't edit and drive`
|
|
|
|
- Allows editing the level _while_ you're playing it: you can click and drag
|
|
|
|
new pixels with the freehand pencil tool.
|
|
|
|
* `scroll scroll scroll your boat`
|
|
|
|
- Enables Editor Mode scrolling (with the arrow keys) while playing a level.
|
|
|
|
The player character must always remain on screen though so you can't
|
|
|
|
scroll too far away.
|
Menu Toolbar for Editor + Shell Prompts + Theme
* Added a "menu toolbar" to the top of the Edit Mode with useful buttons
that work: New Level, New Doodad (same thing), Save, Save as, Open.
* Added ability for the dev console to prompt the user for a question,
which opens the console automatically. "Save", "Save as" and "Load"
ask for their filenames this way.
* Started groundwork for theming the app. The palette window is a light
brown with an orange title bar, the Menu Toolbar has a black
background, etc.
* Added support for multiple fonts instead of just monospace. DejaVu
Sans (normal and bold) are used now for most labels and window titles,
respectively. The dev console uses DejaVu Sans Mono as before.
* Update ui.Label to accept PadX and PadY separately instead of only
having the Padding option which did both.
* Improvements to Frame packing algorithm.
* Set the SDL draw mode to BLEND so we can use alpha colors properly,
so now the dev console is semi-translucent.
2018-08-12 00:30:00 +00:00
|
|
|
|
2020-11-20 04:08:38 +00:00
|
|
|
Unsupported shell commands (here be dragons):
|
|
|
|
|
|
|
|
* `reload`: reloads the current 'scene' within the game engine, using the
|
|
|
|
existing scene's data. If playing a level this will start the level over.
|
|
|
|
If editing a level this will reload the editor, but your recent unsaved
|
|
|
|
changes _should_ be left intact.
|
|
|
|
* `guitest`: loads the GUI Test scene within the game. This was where I
|
|
|
|
was testing UI widgets early on; not well maintained; the `close`
|
|
|
|
command can get you out of it.
|
|
|
|
|
|
|
|
## Environment Variables
|
|
|
|
|
|
|
|
To enable certain debug features or customize some aspects of the game,
|
|
|
|
run it with environment variables like the following:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
# Draw a semi-transparent yellow background over all level chunks
|
|
|
|
$ DEBUG_CHUNK_COLOR=FFFF0066 ./doodle
|
|
|
|
|
|
|
|
# Set a window size for the application
|
|
|
|
# (equivalent to: doodle --window 1024x768)
|
|
|
|
$ DOODLE_W=1024 DOODLE_H=768 ./doodle
|
|
|
|
|
|
|
|
# Turn on lots of fun debug features.
|
|
|
|
$ DEBUG_CANVAS_LABEL=1 DEBUG_CHUNK_COLOR=FFFF00AA \
|
|
|
|
DEBUG_CANVAS_BORDER=FF0 ./doodle
|
|
|
|
```
|
|
|
|
|
|
|
|
Supported variables include:
|
|
|
|
|
|
|
|
* `DOODLE_W` and `DOODLE_H` set the width and height of the application
|
|
|
|
window. Equivalent to the `--window` command-line option.
|
|
|
|
* `D_SCROLL_SPEED` (int): tune the canvas scrolling speed. Default might
|
|
|
|
be around 8 or so.
|
|
|
|
* `D_DOODAD_SIZE` (int): default size for newly created doodads
|
|
|
|
* `D_SHELL_BG` (color): set the background color of the developer console
|
|
|
|
* `D_SHELL_FG` (color): text color for the developer console
|
|
|
|
* `D_SHELL_PC` (color): color for the shell prompt text
|
|
|
|
* `D_SHELL_LN` (int): set the number of lines of output history the
|
|
|
|
console will show. This dictates how 'tall' it rises from the bottom
|
|
|
|
of the screen. Large values will cover the entire screen with console
|
|
|
|
whenever the shell is open.
|
|
|
|
* `D_SHELL_FS` (int): set the font size for the developer shell. Default
|
|
|
|
is about 16. This also affects the size of "flashed" text that appears
|
|
|
|
at the bottom of the screen.
|
|
|
|
* `DEBUG_CHUNK_COLOR` (color): set a background color over each chunk
|
|
|
|
of drawing (level or doodad). A solid color will completely block out
|
|
|
|
the wallpaper; semitransparent is best.
|
|
|
|
* `DEBUG_CANVAS_BORDER` (color): the game will draw an insert colored
|
|
|
|
border around every "Canvas" widget (drawing) on the screen. The level
|
|
|
|
itself is a Canvas and every individual Doodad or actor in the level is
|
|
|
|
its own Canvas.
|
|
|
|
* `DEBUG_CANVAS_LABEL` (bool): draws a text label over every Canvas
|
|
|
|
widget on the screen, showing its name or Actor ID and some properties,
|
|
|
|
such as Level Position (LP) and World Position (WP) of actors within
|
|
|
|
a level. LP is their placement in the level file and WP is their
|
|
|
|
actual position now (in case it moves).
|
|
|
|
|
2019-06-26 01:58:48 +00:00
|
|
|
# Author
|
Menu Toolbar for Editor + Shell Prompts + Theme
* Added a "menu toolbar" to the top of the Edit Mode with useful buttons
that work: New Level, New Doodad (same thing), Save, Save as, Open.
* Added ability for the dev console to prompt the user for a question,
which opens the console automatically. "Save", "Save as" and "Load"
ask for their filenames this way.
* Started groundwork for theming the app. The palette window is a light
brown with an orange title bar, the Menu Toolbar has a black
background, etc.
* Added support for multiple fonts instead of just monospace. DejaVu
Sans (normal and bold) are used now for most labels and window titles,
respectively. The dev console uses DejaVu Sans Mono as before.
* Update ui.Label to accept PadX and PadY separately instead of only
having the Padding option which did both.
* Improvements to Frame packing algorithm.
* Set the SDL draw mode to BLEND so we can use alpha colors properly,
so now the dev console is semi-translucent.
2018-08-12 00:30:00 +00:00
|
|
|
|
2022-09-24 23:17:30 +00:00
|
|
|
The doodle engine for _Sketchy Maze_ is released as open source software under
|
|
|
|
the terms of the GNU General Public License. The assets to the game, including
|
|
|
|
its default doodads and levels, are licensed separately from the doodle engine.
|
|
|
|
Any third party fork of the doodle engine MUST NOT include any official artwork
|
|
|
|
from Sketchy Maze.
|
|
|
|
|
|
|
|
Doodle Engine for Sketchy Maze
|
|
|
|
Copyright (C) 2022 Noah Petherbridge
|
|
|
|
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|