Sketchy Maze is a drawing-based maze game themed around
hand-drawn maps on paper.
In Sketchy Maze, players may draw their own custom levels and play
them as in a 2D platformer-type game. You can make your levels look like anything
you want, and you decide which colors will be solid or which are fire; and then
drag some "doodads" such as buttons, keys and creatures into your level to
make it interesting. Oh, and those doodads? You can make your own, too, and
program them in JavaScript to do whatever you want!
The game also features a "Story Mode" with some built-in levels, and players may
also compose their own such
Level Packs
to share with others, too!
Runs on:
This game currently runs on GNU/Linux, Windows and macOS
(Intel) computers and on Linux handhelds like the Pinephone or Librem 5 (arm64).
It is currently available as an early, open beta
release. See the Downloads page to try it out, free!
See About, FAQ and the
Guidebook for more information about the game.
This release brings a handful of minor new features to the game.
First, there are a couple of new Pixel Attributes available in the level editor:
Semi-Solid: pixels with this attribute only behave as “solid” when walked on
from above. The player can jump through the bottom of a Semi-Solid and land
on top, and gradual slopes can be walked up and down as well, but a steep
slope or a wall can be simply passed through as though it were just decoration.
Slippery: the player’s acceleration and friction are reduced when walking on
a slippery floor. In the future, players and other mobile doodads may slide
down slippery slopes automatically as well (not yet implemented).
These attributes are available in the Level Editor by clicking the “Edit”
button on your Palette (or the “Tools -> Edit Palette” menu). The Palette
Editor now has small icon images for the various attributes to make room for
the expanded arsenal of options.
Doodad/Actor Runtime Options have been added:
In the Doodad Editor’s “Doodad Properties” window, see the new “Options” tab.
Doodad Options allow a map creator to customize certain properties about your
doodad, on a per-instance basis (instances of doodads are called “actors” when
placed in your level).
In the Level Editor when the Actor Tool is selected, mousing over a doodad on
your level will show a new gear icon in the corner. Clicking the icon will open
the Actor Properties window, where you may toggle some of the doodad options
(if a doodad has any options available).
Options can be of type boolean, string, or integer and have a custom name and a
default value at the doodad level. In the Level Editor, the map creator can
set values for the available options which the doodad script can read using the
Self.GetOption() method.
Several of the game’s built-in doodads have options you can play with, which are
documented below.
New and updated doodads:
“Look At Me” is a new Technical doodad that will draw the camera’s attention
to it when it receives a power signal from a linked button. For example, if
a button would open an Electric Door far across the level, you can also place
a “Look At Me” near the door and link the button to both doodads. When the
button is pressed, the camera will scroll to the “Look At Me” and the player
can see that the door has opened.
Anvils will now attract the camera’s attention while they are falling.
Several of the game’s built-in doodads have new Actor Runtime Options you can
configure in your custom levels:
Warp Doors: “locked (exit only)” will make it so the player can not enter the
warp door - they will get a message on-screen that it is locked, similar to
how warp doors behave when they aren’t linked to another door. If it is linked
to another door, the player may still exit from the ’locked’ door -
essentially creating a one-way warp, without needing to rely on the
orange/blue state doors. The “Invisible Warp Door” technical doodad also
supports this option.
Electric Door & Electric Trapdoor: check the “opened” option and these doors
will be opened by default when the level gameplay begins. A switch may still
toggle the doors closed, or if the doors receive and then lose a power signal
they will close as normal.
Colored Doors & Small Key Door: you may mark the doors as “unlocked” at the
start of your level, and they won’t require a key to open.
Colored Keys & Small Key: you may mark the keys as “has gravity” and they
will be subject to the force of gravity and be considered a “mobile” doodad
that may activate buttons or trapdoors that they fall onto.
Gemstones: these items already had gravity by default, and now they have a
“has gravity” option you may disable if you’d prefer gemstones not to be
subject to gravity (and make them behave the way keys used to).
Gemstome Totems: for cosmetic purposes you may toggle the “has gemstone”
option and the totem will already have its stone inserted at level start.
These gemstones will NOT emit a power signal or interact normally with
linked totems - they should be configured this way only for the cosmetic
appearance, e.g., to have one totem filled and some others empty; only the
empty totems should be linked together and to a door that would open when
they are all filled.
Fire Region: you may pick a custom “name” for this doodad (default is “fire”)
to make it better behave as normal fire pixels do: “Watch out for (name)!”
Improvements in support of custom content:
Add a JavaScript “Exception Catcher” window in-game. If your doodad scripts
encounter a scripting error, a red window will pop up showing the text of
the exception with buttons to copy the full text to your clipboard (in case
it doesn’t all fit on-screen) and to suppress any further exceptions for
the rest of your game session (in case a broken doodad is spamming you with
error messages). Cheat codes can invoke the Exception Catcher for testing:
throw <message> to show custom text, throw2 to test a “long” message
and throw3 to throw a realistic message.
Calling console.log() and similar from doodad scripts will now prefix the
log message with the doodad’s filename and level ID.
There are new JavaScript API methods available to doodad scripts:
Self.CameraFollowMe() will attract the game’s camera viewport to center
on your doodad, taking the camera’s focus away from the player character.
The camera will return to the player if they enter a directional input.
Self.Options() returns a string array of all of the options available on
the current doodad.
Self.GetOption(name) returns the configured value for a given option.
Some improvements to the doodad command-line tool:
doodad show will print the Options on a .doodad file and, when showing
a .level file with the --actors option, will list any Options configured
on a level’s actors where they differ from the doodad’s defaults.
doodad edit-doodad adds a --option parameter to define an option on a
doodad programmatically. The syntax is like --option name=type=default
for example --option unlocked=bool=true or --option unlocked=bool; the
default value is optional if you want it to be the “zero value” (false,
zero, or empty string).
Minor fixes and improvements:
Add a “Wait” modal with a progress bar. Not used yet but may be useful
for long operations like Giant Screenshot or level saving to block input
to the game while it’s busy doing something. Can be tested using the
cheat code “test wait screen”
Detect the presence of a touchscreen device and automatically disable
on-screen touch hints during gameplay if not on a touch screen.
Mobile Linux: mark the Sketchy Maze launcher as supporting the mobile
form-factor for the Phosh desktop shell especially.
Fix the Crusher doodad sometimes not falling until it hits the ground
and stopping early on slower computers.
Small tweaks to player physics - acceleration increased from 0.025 to
0.04 pixels per tick.
A new major update to the Sketchy Maze beta has been released! This update
continues to improve on performance and stability with a new file format for
Levels (& Doodads) which greatly reduces memory use when playing large and colorful
levels such as Azulian Tag - Forest – down from 1.5 GB of memory to closer
to 200 MB, making these larger levels playable on lower power devices.
Your existing levels & doodads created with earlier versions of the game still work!
The update is backwards compatible and your files will be transparently upgraded to
the new format on its next save.
This release also comes with a lot of new content:
Swimming mechanics:
The water pixels on your levels actually do something useful now!
When the player character is wet, swimming physics apply: gravity and jump
speed are slower, and the jump button can be spammed infinitely in order to
“swim” upwards a small amount. Hold the jump button to ascend slowly, spam
it to ascend more quickly.
The Azulians can swim, too! By default they’ll sink and walk along the bottom
but if they are tracking the player character they will swim up to catch you.
4 new levels:
The Jungle (First Quest) - a direct sequel to the Boat level, it’s a jungle
and Mayan themed platformer featuring many of the new doodads from this
release such as Snakes, Gemstones and Crushers.
Gems & Totems (Tutorial, Lesson 4) - a tutorial map showing how the new
Gemstones & Totems work in a safe environment.
Swimming (Tutorial, Lesson 5) - a tutorial to explore the new swimming
mechanics that come in this release!
Night Sky (Azulian Tag) - a third installment in the Azulian Tag survival
mode levelpack!
11 new doodads:
Blue Bird: a new variant like the Red Bird, this one flies in a sine wave
pattern about its target altitude and will dive at you from a greater height.
Snake: a green snake that sits coiled up and always faces the player. If you
try and jump over it, it will jump up to try and catch you. It is harmless
to other Snakes but will still jump with you.
Crusher: a block-headed enemy with an iron helmet which tries to drop on you
from above. Its helmet makes for a safe platform to ride back up like
an elevator.
Gems & Totems: four collectible gems (in different colors and shapes) that
slot into Totems of a matching shape. Totems may link together and require
you to collect multiple gemstones before they’ll emit a power signal to
other linked doodads (such as to open an Electric Door).
5 new wallpapers:
A dark version of Dotted Paper and 4x new Parchment Paper wallpapers are now
available (the latter come in white, red, blue, and green varieties). As
always, you may select a custom wallpaper
for your levels if you like!
New brush pattern: Bubbles! The “water” color of each of the game’s default
palettes will use the Bubbles pattern.
There are a handful of other changes and smaller features which you can see on
the change log.
Head over to the downloads page and try out the latest release today!
A new version of Sketchy Maze has been released and this one focuses on
improving performance and memory usage of the game. Two of the game’s levels
(“Azulian Tag - Forest” and “Shapeshifter”) were especially taxing on the
game and 32-bit builds could sometimes crash for running out of memory! The
game tries to be much nicer about freeing up memory when not in use and more
proactively loading/unloading level chunks during gameplay.
This release also fixes a long-standing bug where the player character could
“climb” walls to their right. See the full details on the
change log
and download the latest version!
A new beta release of Sketchy Maze is now available. This release brings a
lot of new features to the level editor, such as a Text Tool and Flood Fill
Tool, and adds a couple new levels for a game mode called “Azulian Tag.”
In Azulian Tag, the player who is “It” (that’s you) needs to avoid being
tagged by the enemy characters, most of which are Azulians. The Azulians
on these maps have an infinite aggro radius and will chase after the player
no matter how far away you are! To get the gold medal high score, you need
to find the secret exit hidden in each level. Otherwise, you’re awarded a
silver high score based on how long you survive until one of the Azulians
catches you!
New Level Editor Features
Some new drawing tools are added:
The Text Tool makes it easy to stamp text messages onto your level,
choosing from one of the built-in fonts (including the Azulian language
font!) and using any of your level’s colors.
The Flood Tool implements a paint bucket to replace contiguous
regions of your drawing with a new color.
The Pan Tool lets you easily scroll your level viewport with your
left mouse button or finger swipe on mobile. This is especially useful
for devices with touch screens so you can avoid accidentally editing
your level when you just wanted to scroll it!
New Game Rules can be customized on your level to change the game’s
default behaviors, including:
A Difficulty setting that can adjust the way enemy mobs behave.
On Peaceful, enemies ignore the player and do no harm. On Hard mode,
enemies become more aggressive, such as the Azulians having an
infinite aggro radius and run at the player at level start!
The Survival Mode rule changes the meaning of “high score” for
the silver medal tier: you’re awarded for how long you survive before
dying rather than how quickly you beat the level. On these levels, the
gold tier for finding the Exit Flag unscathed is still awarded for
fastest time finding the flag.
This is a new, major release of the Sketchy Maze beta. There are a bunch of
new tweaks to gameplay including controller support and an A.I. overhaul for the
enemy creatures.
Download the latest release now or see the
change log for full
details. The highlights of this release are described below.
New Features
Creatures are more aggressive
The game’s creatures have had an update to their A.I. and many of them will now
become hostile to the player character. There have also been updates to their
behavior when controlled by the player character. Some of the changed behaviors
include:
The Azulians will track and follow the player character and jump if you are
above them. Azulians are friendly if the player character is an Azulian or a
Thief. Each color of Azulian has a different aggro radius, speed and jump height
with the Blue Azulian being the weakest of them all.
The Bird will search for the player and dive-bomb at them when it sees a shot
it can take. Birds do not attack players who can fly, so they are friendly
to the player character if you play as the Bird. When under the player’s control,
the Bird can dive to kill other mobs such as the Azulian.
The Anvil, under the player’s control, is invulnerable to damage from enemy
mobs and it can crush other mobs by jumping onto them.
Game controller support
Sketchy Maze can now be played using an Xbox-compatible controller, including
some from Nintendo such as the Switch Pro Controller.
If you have a Nintendo-like controller where the “A/B” and “X/Y” buttons are each
swapped compared to an Xbox-like, you can choose the “N Style” button layout in
the game’s settings. Every PC game controller in my house is a Nintendo-style one,
so this button mapping is a first-class citizen in my game!
The Zoo: this Tutorial level shows off basically all of the doodads in the game
and features a “costume room” to try playing as different creatures.
Shapeshifter: this addition to the First Quest needs the player to swap between
different creatures to complete the level
And there’s a new doodad:
The White Azulian is the strongest Azulian and has a larger player search
radius, speed and jump height than the Red Azulian.
Scripting updates for custom doodads
The JavaScript syntax used by doodad scripts now supports many modern ES6 syntax
features, including the let and const keywords, arrow functions, Promises, and
for-of loops, which brings a massive quality of life improvement for programming
custom doodads!
For the technical details, I’ve replaced robertkrimen/otto
with dop251/goja - check their documentation for updates
on ES6 syntax support!
There are also new features in the scripting API to allow doodads to search the level
for the player or other actors. Check out the functions tagged “v0.11.0” on the
Script API Reference
for full details.
Check it out!
Download the latest release for Windows, Mac OS or Linux!