1270 lines
61 KiB
Markdown
1270 lines
61 KiB
Markdown
# Changes
|
|
|
|
## v0.14.1 (TBD)
|
|
|
|
The file format for Levels and Doodads has been optimized to store drawing data
|
|
with Run Length Encoding (RLE) compression which nets a filesize savings upwards
|
|
of 90%, especially for levels featuring large areas of solid colors.
|
|
|
|
* For example, the Shapeshifter level from the First Quest has shrank from
|
|
22 MB to only 263 KB.
|
|
* The complete size of the First Quest levelpack from the previous release of
|
|
the game shrinks from 50 MB to only 1.8 MB!
|
|
* The game is still able to load levels and doodads created by previous releases
|
|
and will automatically convert them into the optimized RLE format when you
|
|
save them back to disk.
|
|
* The `doodad resave` command can also optimize your levels and doodads outside
|
|
of the game's editor.
|
|
|
|
Other miscellaneous changes:
|
|
|
|
* Command line option `sketchymaze --new` to open the game quickly to a new
|
|
level in the editor.
|
|
|
|
Cleanup of old features and unused code:
|
|
|
|
* The game can no longer save any Chunk files in their legacy JSON format: it
|
|
can still read JSON but all writes will be in the binary chunk format (usually
|
|
with the new RLE compression). Regular releases of the game have not been
|
|
writing in the JSON format for a while as it is controlled by hard-coded
|
|
feature flag constants.
|
|
|
|
## v0.14.0 (May 4 2024)
|
|
|
|
Level screenshots and thumbnails:
|
|
|
|
* Level files will begin to take thumbnail screenshots of themselves and
|
|
store them as PNG images embedded with the level data, and are displayed
|
|
on the Story Mode level select screen.
|
|
* A thumbnail is saved the first time your level is saved, and can be
|
|
viewed and re-computed in the Level->Level Properties window of the
|
|
editor.
|
|
* Tip: for bounded levels when you want to screenshot the bottom edge,
|
|
try setting the page type to Unbounded to get a good screenshot and
|
|
then set it back to Bounded before saving the level.
|
|
* In the editor, a new Level->Take Screenshot menu item is available which
|
|
will save just your editor viewport as a PNG image to your screenshots
|
|
folder.
|
|
* In the editor, the Level->Giant Screenshot feature has been improved.
|
|
* It now will show a confirmation modal, warning that it may take a
|
|
while to screenshot a very large level.
|
|
* While the giant screenshot is processing, a progress bar modal will
|
|
block interaction with the game so that you don't accidentally modify
|
|
the level while the screenshot is generating.
|
|
|
|
Updates to the JavaScript API for doodad scripts:
|
|
|
|
* `setTimeout()` and `setInterval()` will now be more deterministic and
|
|
reliable to time your doodad scripts with, as they are now based on the
|
|
game's tick speed. At the target average of 60 FPS, 1000 millisecond
|
|
timers will fire in 60 game ticks every time.
|
|
* The `Self` API now exposes more functions on the underlying Actor object
|
|
that points to the current doodad. See the guidebook for full details.
|
|
* Self.Doodad() *Doodad
|
|
* Self.GetBoundingRect() Rect
|
|
* Self.HasGravity() bool
|
|
* Self.IsFrozen() bool
|
|
* Self.IsMobile() bool
|
|
* Self.LayerCount() int
|
|
* Self.ListItems() []string
|
|
* Self.SetGrounded(bool)
|
|
* Self.SetWet(bool)
|
|
* Self.Velocity() Point
|
|
* Self.GetVelocity() is now deprecated and will be an alias to Self.Velocity.
|
|
|
|
Some minor changes:
|
|
|
|
* Tweaked the player movement physics and adjusted doodads accordingly.
|
|
* The player is given a lower gravity while they are jumping into the air
|
|
than the standard (faster) gravity when they are falling. This results
|
|
in a smoother jump animation instead of the player launching quickly from
|
|
the ground in order to overcome the constant (fast) gravity.
|
|
* Coyote time where the player can still jump a few frames late when they
|
|
walk off a cliff and jump late.
|
|
* Improved character speed when walking up slopes, they will now travel
|
|
horizontally at their regular speed instead of being slowed down by level
|
|
collision every step of the way.
|
|
* Sound effects are now preferred to be in OGG format over MP3 as it is more
|
|
reliable to compile the game cross-platform without the dependency on mpg123.
|
|
* Fix a bug where level chunks on the far right and bottom edge of the screen
|
|
would flicker out of existence while the level scrolls.
|
|
* When JavaScript exceptions are caught in doodad scripts, the error message
|
|
will now include the Go and JavaScript stack traces to help with debugging.
|
|
* The game window maximizes on startup to fill the screen.
|
|
* Fixed a few places where the old "Load Level" menu was being called instead
|
|
of the fancy new one with the listbox.
|
|
* Fixed a touch screen detection bug that was causing the mouse cursor to hide
|
|
on Macbooks when using their touchpad.
|
|
* Fixed how touch screen mode is activated. The game's mouse cursor will
|
|
disappear on touch and reappear when your last finger leaves the screen, and
|
|
then a mouse movement is detected.
|
|
* Add a `--touch` command line flag to the game binary, which forces touch screen
|
|
mode to always be on (which hides the mouse cursor), in case of touch screen
|
|
detection errors or annoyances.
|
|
|
|
Some code cleanup and architecture changes:
|
|
|
|
* Create a clean build process for FOSS versions of the game, which won't
|
|
include any license registration code or proprietary features reserved for
|
|
first-party releases of the game.
|
|
* Dust off the WebAssembly build of the game: thanks to browser innovations
|
|
performance is very good! But many UI elements fail to draw properly and it
|
|
is not very usable yet.
|
|
|
|
## v0.13.2 (Dec 2 2023)
|
|
|
|
This release brings some new features and optimization for the game's file
|
|
formats to improve performance and memory usage.
|
|
|
|
Some new features:
|
|
|
|
* **Doodads can be non-square!** You can now set a rectangular canvas size
|
|
for your doodads. Many of the game's built-in doodads that used to be
|
|
off-center before (doors, creatures) because their sprites were not squares
|
|
now have correct rectangular shapes.
|
|
* A **Cheats Menu** has been added which enables you to enter many of the
|
|
game's cheat codes by clicking on buttons instead. Enable it through the
|
|
"Experimental" tab of the Settings, and the cheats menu can be opened from
|
|
the Help menu bar during gameplay.
|
|
* The game now supports **Signed Levels** and levelpacks which will enable the
|
|
free version of the game to play levels that have embedded doodads in them.
|
|
The idea is that the base game in the future may come with levelpacks that
|
|
use custom doodads (to tell a specific story) and these doodads may be so
|
|
specific and niche that they will ride with the levelpack instead of be
|
|
built-in to the game. To allow the free version of the game to play these
|
|
levels, the levelpacks will be signed. It also makes it possible for
|
|
promotional levelpacks or "free DLC" to be shipped separately and allow
|
|
free versions of the game to play them with their attached custom doodads.
|
|
|
|
Other miscellaneous changes:
|
|
|
|
* The default Author name on your new drawings will prefer to use your
|
|
license registration name (if the game is registered) before falling back
|
|
on your operating system's $USER name like before.
|
|
* In the level editor, you can now use the Pan Tool to access the actor
|
|
properties of doodads you've dropped into your level. Similar to the
|
|
Actor Tool, when you mouse-over an actor on your level it will highlight
|
|
in a grey box and a gear icon in the corner can be clicked to access
|
|
its properties. Making the properties available for the Pan Tool can
|
|
help with touchscreen devices, where it is difficult to touch the
|
|
properties button without accidentally dragging the actor elsewhere
|
|
on your level as might happen with the Actor Tool!
|
|
* Fix a bug wherein the gold "perfect run" icon next to the level timer
|
|
would sometimes not appear, especially after you had been cheating
|
|
before - if you restart the level with no cheats active the gold icon
|
|
should now always appear.
|
|
* New cheat code: `tesla` will send a power signal to ALL actors on the
|
|
current level in play mode - opening all electric doors and trapdoors.
|
|
May cause fun chaos during gameplay. Probably not very useful.
|
|
* Start distributing AppImage releases for GNU/Linux (64-bit and 32-bit)
|
|
|
|
Some technical changes related to file format optimization:
|
|
|
|
* Palettes are now limited to 256 colors so that a palette index can fit
|
|
into a uint8 on disk.
|
|
* Chunks in your level and doodad files are now encoded in a binary format
|
|
instead of JSON for a reduction in file size. The current (and only)
|
|
chunk implementation (the MapAccessor) encodes to a binary format involving
|
|
trios of varints (X, Y position + a Uvarint for palette index).
|
|
* Chunk sizes in levels/doodads is now a uint8 type, meaning the maximum
|
|
chunk size is 255x255 pixels. The game's default has always been 128x128
|
|
but now there is a limit. This takes a step towards optimizing the game's
|
|
file formats: large world coordinates (64-bit) are mapped to a chunk
|
|
coordinate, and if each chunk only needs to worry about the 255 pixels
|
|
in its territory, space can be saved in memory without chunks needing to
|
|
theoretically support 64-bit sizes of pixels!
|
|
|
|
## v0.13.1 (Oct 10 2022)
|
|
|
|
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.
|
|
|
|
## v0.13.0 (May 7 2022)
|
|
|
|
This is a major update that brings deep architectural changes and a lot
|
|
of new content to the game.
|
|
|
|
Swimming physics have been added:
|
|
|
|
* The **water** pixels finally do something besides turn the character
|
|
blue: swimming physics have finally been hooked up!
|
|
* While the player is touching water pixels (and is colored blue),
|
|
your gravity and jump speed are reduced, but you can "jump"
|
|
infinite times in order to swim higher in the water. Hold the jump
|
|
button to climb slowly, spam it to climb quickly.
|
|
* The **Azulians** understand how to swim, too, though left to their
|
|
own devices they will sink to the bottom of a body of water. They'll
|
|
swim (jump) up if you're detected and above them. The Blue Azulian
|
|
has the shortest vertical aggro radius, so it's not a very good swimmer
|
|
but the White Azulian can traverse water with ease and track you
|
|
from a greater distance.
|
|
|
|
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
|
|
such as snakes, gemstones, and crushers.
|
|
* **Gems & Totems** (Tutorial, Lesson 4) - a tutorial level about the
|
|
new Gem and Totem doodads.
|
|
* **Swimming** (Tutorial, Lesson 5) - a tutorial level to learn how
|
|
"water pixels" work with some moderately safe platforming puzzles
|
|
included.
|
|
* **Night Sky** (Azulian Tag) - a moderately difficult Azulian Tag level
|
|
with relatively few enemies but plenty of tricky platforming.
|
|
* Some of the existing levels have had minor updates to take advantage
|
|
of newer game features, such as the water being re-done for the Castle
|
|
level.
|
|
|
|
New doodads:
|
|
|
|
* **Blue Bird:** a blue version of the Bird which flies in a sine wave
|
|
pattern about its original altitude, and has a larger search range to
|
|
dive at the player character.
|
|
* **Snake:** a green snake that sits coiled up and always faces the
|
|
player. If you get nearby and try and jump over, the Snake will jump
|
|
up and hope to catch you.
|
|
* **Crusher:** a block-headed enemy with an iron helmet which tries to
|
|
drop on you from above. Its helmet makes a safe platform to ride
|
|
back up like an elevator.
|
|
* **Gems and Totems:** four collectible gems (in different colors and
|
|
shapes) that slot into Totems of a matching shape. Totems can link
|
|
together to require multiple gemstones before they'll emit a power
|
|
signal to other linked doodads.
|
|
|
|
New **File Formats**:
|
|
|
|
* Levels and Doodads have a new file format based on ZIP files,
|
|
like levelpacks.
|
|
* It massively improves loading screen times and helps the
|
|
game keep a substantially lighter memory footprint (up to 85%
|
|
less memory used, like 1.5 GB -> 200 MB on _Azulian Tag - Forest_).
|
|
* **Your old levels and doodads still work**! The next time you save
|
|
them, they will be converted to the new file format automatically.
|
|
* The `doodad` tool can also upgrade your levels by running:
|
|
`doodad edit-level --touch <filename>.level`
|
|
|
|
Other new content to use in your levels:
|
|
|
|
* New wallpapers: Dotted paper (dark), Parchment paper (red, blue,
|
|
green, and yellow).
|
|
* New palette: Neon Bright, all bright colors to pair with a dark level
|
|
wallpaper.
|
|
* New brush pattern: Bubbles. The default "water" color of all the game's
|
|
palettes will now use the Bubbles pattern by default.
|
|
|
|
New cheat codes:
|
|
|
|
* `super azulian`: play as the Red Azulian.
|
|
* `hyper azulian`: play as the White Azulian.
|
|
* `bluebird`: play as the Blue Bird.
|
|
* `warp whistle`: automatically win the current level, with a snarky
|
|
cheater message in the victory dialog. It will mark the level as
|
|
Completed but not reward a high score.
|
|
* `$ d.SetPlayerCharacter("anything.doodad")` - set your character to any
|
|
doodad you want, besides the ones that have dedicated cheat codes. The
|
|
".doodad" suffix is optional. Some to try out are "key-blue", "anvil",
|
|
or "box". If you are playing as a key, a mob might be able to collect
|
|
you! This will softlock the level, but another call to
|
|
`d.SetPlayerCharacter()` will fix it! Use the `pinocchio` cheat or
|
|
restart the game to return to the default character (boy.doodad)
|
|
|
|
Updates to the JavaScript API for doodads:
|
|
|
|
* `Self.IsWet() bool` can test if your actor is currently in water.
|
|
|
|
Other changes this release:
|
|
|
|
* Editor: fancy **mouse cursors** gives some visual feedback about what
|
|
tool is active in the editor, with a Pencil and a Flood Fill
|
|
cursor when those tools are selected.
|
|
* Editor: your **Palette** buttons will now show their pattern with their
|
|
color as the button face, rather than just the color.
|
|
* Editor: Auto-save is run on a background thread so that, for large
|
|
levels, it doesn't momentarily freeze the editor on save when it runs.
|
|
* Editor: Fix the Link Tool forgetting connections when you pick up and
|
|
drop one of the linked doodads.
|
|
* Link Tool: if you click a doodad and don't want to link it to another,
|
|
click the first doodad again to de-select it (or change tools).
|
|
* Editor: your last scroll position on a level is saved with it, so the
|
|
editor will be where you left it when you reopen your drawing.
|
|
* Doodad tool: `doodad edit-level --resize <int>` can re-encode a level
|
|
file using a different chunk size (the default has been 128).
|
|
Experimental! Very large or small chunk sizes can lead to different
|
|
performance characteristics in game!
|
|
* Fixed the bug where characters' white eyes were showing as transparent.
|
|
|
|
## v0.12.1 (April 16 2022)
|
|
|
|
This update focuses on memory and performance improvements for the game.
|
|
Some larger levels such as "Azulian Tag - Forest" could run out of
|
|
memory on 32-bit systems. To improve on memory usage, the game more
|
|
aggressively frees SDL2 textures when no longer needed and it doesn't
|
|
try to keep the _whole_ level's chunks ready in memory (as rendered
|
|
images) -- only the chunks near the window viewport are loaded, and
|
|
chunks that leave the viewport are freed to reclaim memory. Improvements
|
|
are still a work in progress.
|
|
|
|
New fields are added to the F3 debug overlay to peek at its performance:
|
|
|
|
* "Textures:" shows the count of SDL2 textures currently loaded
|
|
in memory. Some textures, such as toolbar buttons and the
|
|
loadscreen wallpaper, lazy load and persist in memory. Most level
|
|
and doodad textures should free when the level exits.
|
|
* "Sys/Heap:" shows current memory utilization in terms of MiB taken
|
|
from the OS and MiB of active heap memory, respectively.
|
|
* "Threads:" counts the number of goroutines currently active. In
|
|
gameplay, each actor monitors its PubSub queue on a goroutine and
|
|
these should clean up when the level exits.
|
|
* "Chunks:" shows the count of level chunks inside and outside the
|
|
loading viewport.
|
|
|
|
Some other changes and bug fixes in this release include:
|
|
|
|
* Fixed the bug where the player was able to "climb" vertical walls to
|
|
their right.
|
|
* When entering a cheat code that changes the default player character
|
|
during gameplay, you immediately become that character.
|
|
|
|
## v0.12.0 (March 27 2022)
|
|
|
|
This update adds several new features to gameplay and the Level Editor.
|
|
|
|
A **Game Rules** feature has been added to the Level Editor which allows
|
|
customizing certain gameplay features while that level is being played.
|
|
These settings are available in the Level Properties window of the editor:
|
|
|
|
* The **Difficulty** rule can modify the behavior of enemy doodads
|
|
when the level is played. Choose between Peaceful, Normal, or Hard.
|
|
* On Peaceful, Azulians and Birds don't attack the player, acting
|
|
like pre-0.11.0 versions that ignored the player character.
|
|
* On Hard difficulty, Azulians have an infinite aggro radius
|
|
(they'll immediately hunt the player from any distance on
|
|
level start) and they are hostile to _all_ player creatures.
|
|
* **Survival Mode** changes the definition of "high score" for levels
|
|
where the player is very likely to die at least once.
|
|
* The silver high score (respawned at checkpoint) will be for the
|
|
_longest_ time survived on the level rather than the fastest time
|
|
to complete it.
|
|
* The gold high score (got to an Exit Flag without dying once) is
|
|
still rewarded to the fastest time completing the level.
|
|
|
|
An update to the Level Editor's toolbar:
|
|
|
|
* New **Text Tool** to easily paste messages onto your level, selecting
|
|
from the game's built-in fonts.
|
|
* New **Pan Tool** to be able to scroll the level safely by dragging with
|
|
your mouse or finger.
|
|
* New **Flood Tool** (or paint bucket tool) can be used to replace
|
|
contiguous areas of your level from one color to another.
|
|
* The toolbar buttons are smaller and rearranged. On medium-size screens
|
|
or larger, the toolbar buttons are drawn side-by-side in two columns.
|
|
On narrower screens with less real estate, it will use a single column
|
|
when it fits better.
|
|
|
|
New levels:
|
|
|
|
* An **Azulian Tag** levelpack has been added featuring two levels so
|
|
far of the Azulian Tag game mode.
|
|
|
|
New doodads:
|
|
|
|
* A technical doodad for **Reset Level Timer** resets the timer to zero,
|
|
one time, when touched by the player. If the doodad receives a power
|
|
signal from a linked doodad, it can reset the level timer again if the
|
|
player touches it once more.
|
|
|
|
Updates to the JavaScript API for custom doodads:
|
|
|
|
* New global integer `Level.Difficulty` is available to doodad scripts to
|
|
query the difficulty setting of the current level:
|
|
* Peaceful (-1): `Level.Difficulty < 0`
|
|
* Normal (0): `Level.Difficulty == 0`
|
|
* Hard (1): `Level.Difficulty > 1`
|
|
* New function `Level.ResetTimer()` resets the in-game timer to zero.
|
|
|
|
New cheat codes:
|
|
|
|
* `test load screen` tests the loading screen UI for a few seconds.
|
|
* `master key` allows playing locked Story Mode levels without unlocking
|
|
them first by completing the earlier levels.
|
|
|
|
Other changes:
|
|
|
|
* Several screens were re-worked to be responsive to mobile screen sizes,
|
|
including the Settings window, loading screen, and the level editor.
|
|
* Fixed a bug where making the app window bigger during a loading screen
|
|
caused the Editor to not adapt to the larger window.
|
|
* Don't show the _autosave.doodad in the Doodad Dropper.
|
|
* The Azulians have had their jump heights buffed slightly.
|
|
* Birds no longer register as solid when colliding with other birds (or
|
|
more generally, characters unaffected by gravity).
|
|
|
|
Bugs fixed:
|
|
|
|
* When modifying your Palette to rename a color or add an additional
|
|
color, it wasn't possible to draw with that new color without fully
|
|
exiting and reloading the editor - this is now resolved.
|
|
* The palette editor will try and prevent the user from giving the same
|
|
name to different colors.
|
|
|
|
## v0.11.0 (Feb 21 2022)
|
|
|
|
New features:
|
|
|
|
* **Game Controller** support has been added! The game can now be played
|
|
with an Xbox style controller, including Nintendo Pro Controllers. The
|
|
game supports an "X Style" and "N Style" button layout, the latter of
|
|
which swaps the A/B and the X/Y buttons so gameplay controls match the
|
|
button labels in your controller.
|
|
* The **JavaScript Engine** for doodad scripts has been switched from
|
|
github.com/robertkrimen/otto to github.com/dop251/goja which helps
|
|
"modernize" the experience of writing doodads. Goja supports many
|
|
common ES6 features already, such as:
|
|
* Arrow functions
|
|
* `let` and `const` keywords
|
|
* Promises
|
|
* for-of loops
|
|
* The **JavaScript API** has been expanded with new functions and
|
|
many of the built-in Creatures have gotten an A.I. update.
|
|
* For full versions of the game, the **Publish Level** function is now
|
|
more streamlined to just a checkbox for automatically bundling your
|
|
doodads next time you save the level.
|
|
|
|
New levels:
|
|
|
|
* **The Zoo:** part of the Tutorial levelpack, it shows off all of the
|
|
game's built-in doodads and features a character selection room to
|
|
play as different creatures.
|
|
* **Shapeshifter:** a new level on the First Quest where you switch
|
|
controls between the Boy, Azulian and the Bird in order to clear the
|
|
level.
|
|
|
|
Some of the built-in doodads have updates to their A.I. and creatures
|
|
are becoming more dangerous:
|
|
|
|
* The **Bird** now searches for the player diagonally in front of
|
|
it for about 240px or so. If spotted it will dive toward you and
|
|
it is dangerous when diving! When _playing_ as the bird, the dive sprite
|
|
is used when flying diagonally downwards. The player-controlled bird
|
|
can kill mobile doodads by diving into them.
|
|
* The **Azulians** will start to follow the player when you get
|
|
close and they are dangerous when they touch you -- but not if
|
|
you're the **Thief.** The red Azulian has a wider search radius,
|
|
higher jump and faster speed than the blue Azulian.
|
|
* A new **White Azulian** has been added to the game. It is even faster
|
|
than the Red Azulian! And it can jump higher, too!
|
|
* The **Checkpoint Flag** can now re-assign the player character when
|
|
activated! Just link a doodad to the Checkpoint Flag like you do the
|
|
Start Flag. When the player reaches the checkpoint, their character
|
|
sprite is replaced with the linked doodad!
|
|
* The **Anvil** is invulnerable -- if the player character is the Anvil
|
|
it can not die by fire or hostile enemies, and Anvils can not destroy
|
|
other Anvils.
|
|
* The **Box** is also made invulnerable so it can't be destroyed by a
|
|
player-controlled Anvil or Bird.
|
|
|
|
New functions are available on the JavaScript API for doodads:
|
|
|
|
* `Actors.At(Point) []*Actor`: returns actors intersecting a point
|
|
* `Actors.FindPlayer() *Actor`: returns the nearest player character
|
|
* `Actors.New(filename string)`: create a new actor (NOT TESTED YET!)
|
|
* `Self.Grounded() bool`: query the grounded status of current actor
|
|
* `Actors.SetPlayerCharacter(filename string)`: replace the nearest
|
|
player character with the named doodad, e.g. "boy.doodad"
|
|
* `Self.Invulnerable() bool` and `Self.SetInvulnerable(bool)`: set a
|
|
doodad is invulnerable, especially for the player character, e.g.
|
|
if playing as the Anvil you can't be defeated by mobs or fire.
|
|
|
|
New cheat codes:
|
|
|
|
* `god mode`: toggle invincibility. When on, fire pixels and hostile
|
|
mobs can't make you fail the level.
|
|
* `megaton weight`: play as the Anvil by default on levels that don't
|
|
specify a player character otherwise.
|
|
|
|
Other changes:
|
|
|
|
* When respawning from a checkpoint, the player is granted 3 seconds of
|
|
invulnerability; so if hostile mobs are spawn camping the player, you
|
|
don't get soft-locked!
|
|
* The draw order of actors on a level is now deterministic: the most
|
|
recently added actor will always draw on top when overlapping another,
|
|
and the player actor is always on top.
|
|
* JavaScript exceptions raised in doodad scripts will be logged to the
|
|
console instead of crashing the game. In the future these will be
|
|
caught and presented nicely in an in-game popup window.
|
|
* When playing as the Bird, the flying animation now loops while the
|
|
player is staying still rather than pausing.
|
|
* The "Level" menu in Play Mode has options to restart the level or
|
|
retry from last checkpoint, in case a player got softlocked.
|
|
* When the game checks if there's an update available via
|
|
<https://download.sketchymaze.com/version.json> it will send a user
|
|
agent header like: "Sketchy Maze v0.10.2 on linux/amd64" sending only
|
|
static data about the version and OS.
|
|
|
|
## v0.10.1 (Jan 9 2022)
|
|
|
|
New features:
|
|
|
|
* **High scores and level progression:** when playing levels out of
|
|
a Level Pack, the game will save your progress and high scores on
|
|
each level you play. See details on how scoring works so far, below.
|
|
* **Auto-save** for the Editor. Automatically saves your drawing every
|
|
5 minutes. Look for e.g. the _autosave.level to recover your drawing
|
|
if the game crashed or exited wrongly!
|
|
* **Color picker UI:** when asked to choose a color (e.g. for your level
|
|
palette) a UI window makes picking a color easy! You can still manually
|
|
enter a hexadecimal color value but this is no longer required!
|
|
|
|
Scoring system:
|
|
|
|
* The high score on a level is based on how quickly you complete it.
|
|
A timer is shown in-game and there are two possible high scores
|
|
for each level in a pack:
|
|
* Perfect Time (gold): if you complete the level without dying and
|
|
restarting at a checkpoint.
|
|
* Best Time (silver): if you had used a checkpoint.
|
|
* The gold/silver icon is displayed next to the timer in-game; it
|
|
starts gold and drops to silver if you die and restart from checkpoint.
|
|
It gives you a preview of which high score you'll be competing with.
|
|
* If cheat codes are used, the user is not eligible for a high score
|
|
but may still mark the level "completed."
|
|
* Level Packs may have some of their later levels locked by default,
|
|
with only one or a few available immediately. Completing a level will
|
|
unlock the next level until they have all been unlocked.
|
|
|
|
New and changed doodads:
|
|
|
|
* **Invisible Warp Door:** a technical doodad to create an invisible
|
|
Warp Door (press Space/'Use' key to activate).
|
|
* All **Warp Doors** now require the player to be grounded before they
|
|
can be opened, or else under the effects of antigravity. You shouldn't
|
|
be able to open Warp Doors while falling or jumping off the ground
|
|
at them.
|
|
|
|
Revised levels:
|
|
|
|
* Desert-2of2.level uses a new work-around for the unfortunate glitch
|
|
of sometimes getting stuck on two boxes, instead of a cheat code
|
|
being necessary to resolve.
|
|
* Revised difficulty on Tutorial 2 and Tutorial 3.
|
|
|
|
Miscellaneous changes:
|
|
|
|
* Title Screen: picks a random level from a few options, in the future
|
|
it will pick random user levels too.
|
|
* Play Mode gets a menu bar like the Editor for easier navigation to
|
|
other game features.
|
|
* New dev shell command: `titlescreen <level name>` to load the Title
|
|
Screen with the named level as its background, can be used to load
|
|
user levels _now_.
|
|
* For the doodads JavaScript API: `time.Since()` is now available (from
|
|
the Go standard library)
|
|
* Fix a cosmetic bug where doodads scrolling off the top or left edges
|
|
of the level were being drawn incorrectly.
|
|
* Fix the Editor's status bar where it shows your cursor position
|
|
relative to the level and absolute to the app window to show the
|
|
correct values of each (they were reversed before).
|
|
* The developer shell now has a chatbot in it powered by RiveScript.
|
|
|
|
## v0.10.0 (Dec 30 2021)
|
|
|
|
New features and changes:
|
|
|
|
* **Level Packs:** you can group a set of levels into a sequential
|
|
adventure. The game's built-in levels have been migrated into Level
|
|
Packs and users can create their own, too!
|
|
* **Crosshair Option:** in the level editor you can have a crosshair
|
|
drawn at your cursor position, which may help align things while
|
|
making a level. Find the option in the game's Settings window.
|
|
* **Smaller Palette Colors:** the color buttons in the Level Editor are
|
|
smaller and fit two to a row. This allows for more colors but may be
|
|
difficult for touch controls.
|
|
* Doodad AI updates: the **Bird** records its original altitude and will
|
|
attempt to fly back there when it can, so in case it slid up or down a
|
|
ramp it will correct its height when it comes back the other way.
|
|
* The "New Level" and "New Doodad" functions on the main menu are
|
|
consolidated into a window together that can create either, bringing
|
|
a proper UI to creating a doodad.
|
|
* Added a setting to **hide touch control hints** from Play Mode.
|
|
* The title screen is more adaptive to mobile. If the window height isn't
|
|
tall enough to show the menu, it switches to a 'landscape mode' layout.
|
|
* Adds a custom icon to the application window.
|
|
|
|
A few notes about level packs:
|
|
|
|
* A levelpack is basically a zip file containing levels and custom
|
|
doodads. **Note:** the game does not yet handle the doodads folder
|
|
of a levelpack at all.
|
|
* The `doodad` command-line tool can create .levelpack files. See
|
|
`doodad levelpack create --help`. This is the easiest way to
|
|
generate the `index.json` file.
|
|
* In the future, a .levelpack will be able to hold custom doodads on
|
|
behalf of the levels it contains, de-duplicating files and saving
|
|
on space. Currently, the levels inside your levelpack should embed
|
|
their own custom doodads each.
|
|
* Free (shareware) editions of the game can create and play custom
|
|
level packs that use only the game's built-in doodads. Free versions
|
|
of the game can't play levels with embedded custom doodads. You can
|
|
always copy custom .doodad files into your profile directory though!
|
|
|
|
Bugs fixed:
|
|
|
|
* Undo/Redo now works again for the Doodad Editor.
|
|
* Fix crash when opening the Doodad Editor (v0.9.0 regression).
|
|
* The Play Level/Edit Drawing window is more responsive to small screens
|
|
and will draw fewer columns of filenames.
|
|
* Alert and Confirm popup modals always re-center themselves, especially
|
|
to adapt to the user switching from Portrait to Landscape orientation
|
|
on mobile.
|
|
|
|
## v0.9.0 (Oct 9, 2021)
|
|
|
|
New features:
|
|
|
|
* **Touch controls:** the game is now fully playable on small
|
|
touchscreen devices! For gameplay, touch the middle of the screen
|
|
to "use" objects and touch anywhere _around_ that to move the
|
|
player character in that direction. In the level editor, swipe
|
|
with two fingers to pan and scroll the viewport.
|
|
* **Proper platforming physics:** the player character "jumps" by
|
|
setting a velocity and letting gravity take care of the rest,
|
|
rather than the old timer-based flat jump speed approach. Most
|
|
levels play about the same but the jump reach _is_ slightly
|
|
different than before!
|
|
* **Giant Screenshot:** in the Level Editor you can take a "Giant
|
|
Screenshot" of your _entire_ level as it appears in the editor
|
|
as a large PNG image in your game's screenshots folder. This is
|
|
found in the "Level" menu in the editor.
|
|
* **Picture-in-Picture Viewport:** in the Level Editor you can open
|
|
another viewport window into your level. This window can be resized,
|
|
moved around, and can look at a different part of your level from
|
|
your main editor window. Mouse over the viewport and your arrow keys
|
|
scroll it instead of the main window.
|
|
* **"Playtest from here":** if you click and drag from the "Play (P)"
|
|
button of the level editor, you can drop your player character
|
|
anywhere you want on your level, and play from there instead of
|
|
the Start Flag.
|
|
* **Middle-click to pan the level:** holding the middle click button
|
|
and dragging your mouse cursor will scroll the level in the editor
|
|
and on the title screen. This can be faster than the arrow keys to
|
|
scroll quickly!
|
|
* **Zoom in/out** support has come out of "experimental" status. It's
|
|
still a _little_ finicky but workable!
|
|
* **Bounded level limits** are now configurable in the Level Properties
|
|
window, to set the scroll constraints for Bounded level types.
|
|
|
|
Some new "technical" doodads are added to the game. These doodads are
|
|
generally invisible during gameplay and have various effects which can
|
|
be useful to set up your level the right way:
|
|
|
|
* **Goal Region:** a 128x128 region that acts as an Exit Flag and will
|
|
win the level if touched by the player.
|
|
* **Checkpoint Region:** a 128x128 invisible checkpoint flag that sets
|
|
the player's spawn point.
|
|
* **Fire Region:** a 128x128 region that triggers the level fail
|
|
condition, behaving like fire pixels.
|
|
* **Power Source:** a 64x64 invisible source of power. Link it to doodads
|
|
like the Electric Door and it will emit a power(true) signal on level
|
|
start, causing the door to "begin" in an opened state.
|
|
* **Stall Player (250ms):** when the player touches this doodad, control
|
|
freezes for 250ms, one time. If this doodad receives power from a linked
|
|
button or switch, it will reset the trap, and stall the player once more
|
|
should they contact it again.
|
|
|
|
The Doodad Dropper window has a dedicated category for these
|
|
technical doodads.
|
|
|
|
New methods available to the Doodad JavaScript API:
|
|
|
|
* `Self.Hide()` and `Self.Show()` to turn invisible and back.
|
|
* `Self.GetVelocity()` that returns a Vector of the actor's current speed.
|
|
* New broadcast message type: `broadcast:ready` (no arguments). Subscribe
|
|
to this to know the gameplay is ready and you can safely publish messages
|
|
to your linked doodads or whatever, which could've ended up in deadlocks
|
|
if done too early!
|
|
* New constants are exposed for Go time.Duration values: `time.Hour`,
|
|
`time.Minute`, `time.Second`, `time.Millisecond` and `time.Microsecond`
|
|
can be multiplied with a number to get a duration.
|
|
|
|
Some slight UI polish:
|
|
|
|
* The **Doodad Dropper** window of the level editor now shows a slotted
|
|
background where there are any empty doodad slots on the current page.
|
|
* Your **scroll position** is remembered when you playtest the level; so
|
|
coming back to the editor, your viewport into the level as where you
|
|
left it!
|
|
* New **keybinds** are added to the Level & Doodad Editor:
|
|
* `Backspace` to close the current popup UI modal
|
|
* `Shift+Backspace` to close _all_ popup UI modals
|
|
* `v` to open a new Viewport window
|
|
* Some **flashed messages** are orange instead of blue to denote an 'error'
|
|
status. The colors of the fonts are softened a bit.
|
|
* New **cheat code**: `show all actors` to make all invisible actors shown
|
|
during Play Mode. You would be able to see all the technical doodads
|
|
this way!
|
|
* New command for the doodad CLI tool: `doodad edit-level --remove-actor`
|
|
to remove actors by name or UUID from a level file.
|
|
|
|
## v0.8.1 (September 12, 2021)
|
|
|
|
New features:
|
|
|
|
* **Enable Experimental Features UI:** in the game's Settings window
|
|
there is a tab to enable experimental features. It is equivalent to
|
|
running the game with the `--experimental` option but the setting
|
|
in-game is persistent across runs of the game.
|
|
* **Zoom In/Out:** the Zoom feature _mostly_ works but has a couple
|
|
small bugs. The `+` and `-` keys on your number bar (-=) will zoom in
|
|
or out in the Editor. Press `1` to reset zoom to 100% and press `0`
|
|
to scroll the level back to origin. These controls are also
|
|
available in the "View" menu of the editor.
|
|
* **Replace Palette:** with experimental features on it is possible to
|
|
select a different palette for your already-created level. This will
|
|
replace colors on your palette until the template palette has been
|
|
filled in, and pixels already drawn on your level will update too.
|
|
|
|
Other changes:
|
|
|
|
* The title screen buttons are more colorful.
|
|
* This release begins to target 32-bit Windows and Linux among its builds.
|
|
|
|
## v0.8.0 (September 4, 2021)
|
|
|
|
This release brings some new features, new doodads, and new levels.
|
|
|
|
New features:
|
|
|
|
* **Checkpoints** for gameplay will ease the pain of dying to fire
|
|
pixels or Anvils by teleporting you back to the checkpoint instead
|
|
of resetting the whole level.
|
|
* The **Doodad Properties** window while editing a doodad grants access
|
|
to many features which were previously only available via the
|
|
`doodad` tool, such as:
|
|
* Edit metadata like the Title and Author of your doodad
|
|
* Set the default hitbox of your doodad.
|
|
* Attach, open, and delete the JavaScript for your doodad
|
|
* Manage tags (key/value store) on your doodads: how you can
|
|
communicate settings to the JavaScript which can receive the
|
|
tags via `Self.GetTag("name")`
|
|
* Some **Generic Doodad Scripts** are built in. Using only the in-game
|
|
tools, it is possible to create custom doodads which have some basic
|
|
in-game logic and you don't need to write any code. The generic
|
|
scripts include:
|
|
* Generic Solid: the hitbox is solid
|
|
* Generic Fire: its hitbox harms the player
|
|
* Generic Anvil: harmless, deadly when falling
|
|
* Generic Collectible Item: it goes in your inventory
|
|
* **All Characters are Playable!** Use the Link Tool to connect your
|
|
Start Flag with another doodad on your level, and you will play
|
|
**as** that doodad when the level starts. The Creature doodads are
|
|
all intended to be fully functional; playing as buttons and doors
|
|
leads to strange results.
|
|
|
|
New doodads have been added:
|
|
|
|
* The **Anvil** is a heavy metal object which is affected by gravity.
|
|
It is harmless to collision, but if the anvil is in freefall, it
|
|
will destroy every mobile doodad that it touches, and is deadly
|
|
to the player character.
|
|
* The **Electric Trapdoor** is a trapdoor that opens and closes when
|
|
powered by a button or switch. It is a horizontal version of the
|
|
Electric Door.
|
|
* The **Thief** is a new character which will steal items from the
|
|
player or other mobile doodads. The Thief is able to pick up items
|
|
and unlock doors and he walks back and forth like the Azulians.
|
|
* The **Blue Azulian** is now selectable from the Doodads menu. It
|
|
behaves like the Red Azulian but moves at half the speed. The
|
|
Azulians can pick up items and open doors.
|
|
* The **Checkpoint Flag** will remember the player's spot in the level.
|
|
Dying to fire pixels or Anvils no longer forces a restart of the
|
|
level - you can resume from your last checkpoint, or the Start Flag
|
|
by default.
|
|
|
|
New levels have been added:
|
|
|
|
* **Castle.level:** introduces the new Thief character. Castle-themed
|
|
level showing off various new doodads.
|
|
* **Thief 1.level:** a level where you play as the Thief! You need to
|
|
steal Small Keys from dozens of Azulians and even steal items back
|
|
from another Thief who has already stolen some of the keys.
|
|
|
|
Some doodads have changed behavior:
|
|
|
|
* The **Bird** can no longer pick up items, unless controlled by
|
|
the player character.
|
|
* The **Anvil** and **Box** will reset to their original locations
|
|
if they receive a power signal from a linked button or switch.
|
|
|
|
The user interface has been improved:
|
|
|
|
* **Tabbed windows!** The Doodad Dropper window of the level editor
|
|
and the Settings window use new, tabbed interfaces.
|
|
* **Doodad Categories:** the Doodad Dropper's tabs are divided into
|
|
a few major categories.
|
|
1. Objects: Anvil, Box, Crumbly Floor, and Flags
|
|
2. Doors: Doors, Trapdoors, and Keys
|
|
3. Gizmos: Buttons, Switches, Electric Doors, etc.
|
|
4. Creatures: Bird, Azulians, Thief
|
|
5. All: a classic view paging over all doodads (and doodads
|
|
not fitting any of the above categories).
|
|
|
|
New functions are available in the JavaScript API for custom doodads:
|
|
|
|
* FailLevel(message string): global function that kills the player
|
|
with a custom death message.
|
|
* SetCheckpoint(Point): set the player respawn location
|
|
* Self.MoveTo(Point(x, y int))
|
|
* Self.IsPlayer() bool
|
|
* Self.SetInventory(bool): turn on or off inventory. Keys and other
|
|
items will now only give themselves to mobile doodads which have
|
|
inventory.
|
|
* Self.HasInventory() bool
|
|
* Self.AddItem(filename string, quantity int) - zero quantity for
|
|
permanent items like the colored keys.
|
|
* Self.RemoveItem(filename string, quantity int)
|
|
* Self.HasItem(filename string)
|
|
* Self.Inventory() map[string]int
|
|
* Self.Hitbox() - also see Self.Hitbox.IsEmpty()
|
|
|
|
The Events.OnLeave() callback now receives a CollideEvent argument,
|
|
like OnCollide, instead of the useless actor ID string. Notable
|
|
properties on the CollideEvent will be the .Actor which is leaving
|
|
and Settled=true.
|
|
|
|
Other miscellaneous changes:
|
|
|
|
* The **Link Tool** can now un-link two doodads by clicking on
|
|
them again.
|
|
* Actor UUIDs in your levels will now be Type 1 UUIDs (time-based)
|
|
instead of random. This will ensure each newly added doodad gets
|
|
a larger ID than the previous one, so in cases of draw order
|
|
conflicts or that sort of thing, the winner can be picked
|
|
deterministically (most recently added renders on top).
|
|
* A **death barrier** will prevent Boy from falling forever on unbounded
|
|
maps should he somehow fall off the level. The death barrier is a
|
|
Y value 1,000 pixels below the lowest pixel on your map.
|
|
* Mobile doodads no longer "moonwalk" when they change directions.
|
|
* A new color is added to all default palettes: "hint" (pink) for
|
|
writing hint notes.
|
|
* A maximum scroll speed on the "follow the player character" logic
|
|
makes for cooler animations when the character teleports around.
|
|
* Levels and Doodads are now sorted on the Open menu.
|
|
|
|
## v0.7.2 (July 19 2021)
|
|
|
|
This release brings some new features and some new content.
|
|
|
|
New features:
|
|
|
|
* **Loading screens** have been added. In previous versions, 'chunks'
|
|
of a level were rendered on-demand as they first scrolled onto the
|
|
screen, but busy new chunks would cause gameplay to stutter. The
|
|
loading screen is able to _pre-render_ the entire level up front
|
|
to ensure gameplay is smooth(er).
|
|
* **Compression for Levels and Doodads:** levels and doodads are now compressed
|
|
with Gzip for an average 88% smaller file size on disk. The example level,
|
|
"Tutorial 2.level" shrank from 2.2 MB to 414 KB with compression. The game
|
|
can still read old (uncompressed) files, but will compress them on save.
|
|
|
|
Some new content:
|
|
|
|
* **New Levels:** two desert-themed levels were added. One has you
|
|
platforming and climbing the outside of a pyramid; the next is
|
|
inside the pyramid and has puzzles involving movable boxes.
|
|
* **New Doodad:** Box is a pushable crate that is affected by
|
|
gravity. It is taller than Boy and can be used to gain some extra
|
|
height and reach higher platforms.
|
|
* **New Palette:** To the "Colored Pencil" palette was added a new
|
|
default color: Sandstone (solid).
|
|
* **New Pattern:** Perlin Noise was added as one of the available
|
|
brush patterns. Sandstone uses this pattern by default.
|
|
|
|
Some miscellaneous changes:
|
|
|
|
* **Slowly scroll in editor:** holding down the Shift key while scrolling the
|
|
level editor will scroll your drawing _very_ slowly.
|
|
* **'Doodads' Hotkey:** in the Level Editor, the `Q` key will open
|
|
the Doodads window instead of the `D` key, as the `D` key is now
|
|
part of WASD for scrolling the drawing.
|
|
|
|
## v0.7.1 (July 11 2021)
|
|
|
|
Fixes a bug on the Windows version:
|
|
|
|
* Built-in wallpapers other than the default Notebook were failing to
|
|
load in the Windows release of v0.7.0
|
|
|
|
## v0.7.0 (June 20 2021)
|
|
|
|
This is the first release of the game where the "free version" drifts meaningfully
|
|
away from the "full version". Free versions of the game will show the label
|
|
"(shareware)" next to the game version numbers and will not support embedding
|
|
doodads inside of level files -- for creating them or playing them.
|
|
Check the website for how you can register the full version of the game.
|
|
|
|
This release brings several improvements to the game:
|
|
|
|
* **Brush Patterns** for your level palette. Instead of your colors drawing on as
|
|
plain, solid pixels, a color swatch can _sample_ with a Pattern to create a
|
|
textured appearance when plotted on your level. Several patterns are built in
|
|
including Noise, Marker, Ink, and others. The idea is that your brush strokes can
|
|
look as though they were drawn in pencil graphite or similar.
|
|
* **Title Screen:** the demo level shown on the title screen will leisurely scroll
|
|
around the page. The arrow keys may still manually scroll the level any direction.
|
|
* **Attach Doodads to Level Files:** this is the first release that supports _truly_
|
|
portable custom levels! By attaching your custom doodads _with_ your custom level
|
|
file, it will "just play" on someone else's computer, and they don't need to copy
|
|
all your custom doodads for it to work! But, free versions of the game will not
|
|
get to enjoy this feature.
|
|
* **Settings UI**: a "Settings" button on the home screen (or the Edit->Settings
|
|
menu in the editor) will open a settings window. Check it out!
|
|
* **Horizontal Toolbars option:** if enabled in the Settings window, the toolbar
|
|
and palette in the Editor will be horizontal instead of vertical, along the top
|
|
and bottom of the screen. This may be better optimized for smartphone-sized
|
|
screens like the Pinephone. If the program is started with `-w mobile` the first
|
|
time, it will use horizontal toolbars by default.
|
|
|
|
Some small bits of polish in the game's user interface:
|
|
|
|
* Some buttons are more colorful! The "Ok" button in alert boxes is blue and pressing
|
|
Enter will select the blue button.
|
|
* When opening a drawing to play or edit, a blue **Browse...** button is
|
|
added so you can more easily find downloaded custom levels and play them.
|
|
* In the Level Editor, the "Level -> **Attached Files**" menu will let you see
|
|
and manage files attached to your level, such as its custom wallpaper image or
|
|
any custom doodads that were published with the level.
|
|
* The keyboard shortcut to open the developer console is now the tilde/grave key
|
|
(`) instead of Enter.
|
|
|
|
Bugs fixed:
|
|
|
|
* The WASD keys to move the player character (as an alternative to the arrow keys)
|
|
now works more reliably. Previously, they were affected by key-repeat so Boy would
|
|
do a quick hop followed by a longer one when pressing W to jump. Also, his
|
|
animation would not update correctly when moving via the WASD keys. Both bugs
|
|
are fixed in this release.
|
|
* Shortcut keys advertised in the menu, such as Ctrl-N and Ctrl-S, now actually work.
|
|
|
|
## v0.6.0-alpha (June 6 2021)
|
|
|
|
This release brings less jank and some new features.
|
|
|
|
The new features:
|
|
|
|
* **Choice of Default Palette for New Levels:** when creating a new level, a
|
|
"Palette:" option appears which allows you to set the default colors to start
|
|
your level with. The options include:
|
|
* Default: the classic default 4 colors (black, grey, red, blue).
|
|
* Colored Pencil: a set with more earthy tones for outdoorsy levels
|
|
(grass, dirt, stone, fire, water)
|
|
* Blueprint: the classic Blueprint wallpaper theme, a bright version of Default
|
|
for dark level backgrounds.
|
|
* **Custom Wallpapers:** unhappy with the default, paper-themed level background
|
|
images? You can now use your own! They attach to your level data for easy
|
|
transport when sharing your level with others.
|
|
* **More Wallpapers:** a couple of new default wallpapers are added: Graph paper
|
|
and Dotted paper. They are both on light white paper and offer a light
|
|
alternative to Blueprint.
|
|
|
|
Some bugs fixed:
|
|
|
|
* **Collision fixes:** you should be able to walk up gentle slopes to the left
|
|
without jumping, as easily as you could to the right.
|
|
* **Debugging:** the F4 key to show collision hitboxes around all doodads in
|
|
Play Mode now functions again, and draws boxes around _all_ doodads, not just the
|
|
player character.
|
|
* **Hitboxes are tighter:** a doodad's declared hitbox size (from their JavaScript)
|
|
is used when a doodad collides against level geometry or other doodads. Meaning:
|
|
Boy, who has a narrow body but a square sprite size, now collides closer with
|
|
objects on his right side.
|
|
* **Physics are tweaked:** Boy now moves and accelerates slightly faster.
|
|
|
|
## v0.5.0-alpha (Mar 31 2021)
|
|
|
|
Project: Doodle is renamed to Sketchy Maze in this release.
|
|
|
|
New Features:
|
|
|
|
* **New Tutorial Levels:** the bundled levels demonstrate the built-in doodads
|
|
and how they interact and shows off several game features.
|
|
* **Level Editor:** you can now set the Title and Author of the level you're
|
|
editing by using the Level->Page Settings window.
|
|
* The **Inventory HUD** in Play Mode now shows a small number indicator for items
|
|
which have quantity, such as the Small Key. Colored Keys do not have quantity
|
|
and don't show a number: those are permanent collectibles.
|
|
* **Fire Pixels:** when the player character dies by touching a "Fire" pixel
|
|
during gameplay, the death message uses the **name** of the color instead
|
|
of calling it "fire." For example, if you name a color "spikes" and give
|
|
it the Fire attribute, it will say "Watch out for spikes!" if the player
|
|
dies by touching it.
|
|
* New cheat code: `give all keys` gives all four colored keys and 99x Small Keys
|
|
to the player character. The `drop all items` cheat clears your inventory.
|
|
|
|
New Doodads:
|
|
|
|
* **Warp Doors** allow the player character to fast travel to another location
|
|
on the map. Drag two Warp Doors into your level and use the Link Tool to
|
|
connect them together. Doors without an exit link will be "locked" and don't
|
|
open.
|
|
* **Small Key Doors** are locked doors which consume the Small Keys when unlocked,
|
|
unlike the colored doors where the key is multi-use. The player character can
|
|
hold many small keys at once and only unlock as many doors as he has keys.
|
|
|
|
Updated Doodads:
|
|
|
|
* **Several doodads** were increased in size to better match the player character:
|
|
Colored Locked Doors, Trapdoors, the Crumbly Floor and Electric Door, and the
|
|
blue and orange Boolean State Blocks.
|
|
* **Colored Doors** now have a visual locked vs. unlocked state: while locked, a
|
|
golden padlock hangs from the door, which goes away after it's been unlocked.
|
|
* **Switches** now interact differently with Electric Doors: the door will _always_
|
|
toggle its current state regardless of the 'power' setting of the Switch.
|
|
* **Buttons** which are linked to a **Sticky Button** will press and stay down
|
|
if the linked Sticky Button is pressed. Or in other words, the Sticky Button
|
|
makes all linked Buttons act sticky too and stay pressed while the Sticky
|
|
Button is pressed. If the Sticky Button is released later (e.g. by receiving
|
|
power from a Switch) it releases its linked Buttons as well.
|
|
|
|
## v0.4.0-alpha (Nov 21 2020)
|
|
|
|
This update brings improvements to the editor; you can now fully draw all the
|
|
graphics for a custom doodad using the in-app tools!
|
|
|
|
A key difference between a Level and a Doodad is that doodads have **Layers**
|
|
where they keep multiple frames of animation or state. The editor tool now
|
|
supports working with these extra layers.
|
|
|
|
Other new features:
|
|
|
|
* The **Guidebook** has been updated with tons of good info and screenshots of
|
|
the game's features. Press `F1` in-game to open the guidebook, or check it
|
|
online at https://www.sketchymaze.com/guidebook/
|
|
* **Layer Selection Window for Doodads:** when you're editing a Doodad drawing,
|
|
a "Lyr." button is added to the toolbar to access the Layers window.
|
|
* **Global UI popup modals:** when you're about to close a level with unsaved
|
|
changes, you get an Ok/Cancel prompt confirming if you want to do that.
|
|
Hitting the Escape key will ask you before just exiting the program. Alert
|
|
boxes are supported too, and an `alert` command added to the developer console.
|
|
|
|
## v0.3.0-alpha (Sept 19 2020)
|
|
|
|
This update introduces the player character to the game. He doesn't have a name;
|
|
the game just refers to him as Boy.
|
|
|
|
His sprite size is bigger (33x54) than the 32x32 size of the placeholder player
|
|
character from before. So, the three example levels shipped with previous versions
|
|
of Project: Doodle no longer work. This release comes with two replacement levels
|
|
which are better decorated, anyway.
|
|
|
|
Other new features:
|
|
|
|
* **Palette Editor:** you can add and modify the colors on your level
|
|
palette! Pick any colors you want, give a name to each swatch, and mark
|
|
whether they behave as Solid, Water or Fire. Without any of these
|
|
properties, colors are decorational-only by default.
|
|
* **Doodad Window:** when selecting the Actor or Link Tools in the editor,
|
|
the Doodads window pops up. Doodads can be dragged from this window onto your
|
|
level, instead of the Palette toolbar turning into a Doodad palette.
|
|
* The Palette toolbar on the Editor is now thinner and only shows colors.
|
|
Mouse-over tooltips show the name and properties of each swatch.
|
|
* Added a --window option to the Doodle program to set the default window size.
|
|
Options can be a resolution (e.g. 1024x768) or a special keyword
|
|
"desktop", "mobile", "landscape" or "maximized"
|
|
- Default size is desktop: 1024x768
|
|
- Mobile and landscape mimic a smartphone at 375x812 resolution.
|
|
|
|
## v0.2.0-alpha (June 7 2020)
|
|
|
|
This release brings Sound Effects and Menus to the game.
|
|
|
|
New features:
|
|
|
|
* Added some User Documentation to ship with the game which teaches you how to
|
|
create your own custom Doodads and program them with JavaScript. More
|
|
documentation to come with time.
|
|
* Sound effects! Several doodads have a first pass at sound effects using some
|
|
free sounds I found online. More doodads still need sounds and the existing
|
|
sounds are by no means final. Buttons, switches, doors and keys have sound
|
|
effects so far.
|
|
* The game now has a Menu Bar with pull-down menus in the Editor Mode instead
|
|
of just a top panel with New/Save/Open buttons.
|
|
|
|
## v0.1.0-alpha (Apr 13 2020)
|
|
|
|
New doodads:
|
|
|
|
* Start Flag: drag this into your level to set where the player character will
|
|
spawn. There should only be one per level.
|
|
* Crumbly Floor: a rocky floor that breaks and falls away after a couple
|
|
seconds when the player (or other mobile doodad) walks onto it.
|
|
* State Blocks: blue and orange blocks that toggle between solid and passable
|
|
when the corresponding ON/OFF button is touched.
|
|
|
|
New features:
|
|
|
|
* An inventory overlay now appears in Play Mode when the player character picks
|
|
up one of the colored keys.
|
|
* While editing a level, you can click the new "Options" button in the top menu
|
|
to open the level settings window (like the one you see when creating a new
|
|
level): to change the wallpaper image or the page type.
|
|
|
|
Other changes:
|
|
|
|
* Added better platforming physics to the player character: acceleration and
|
|
friction when walking.
|
|
* The colored Locked Door doodads have been re-designed to be shown in a
|
|
side-view perspective and have an open and closed state in either direction.
|
|
* Tooltips added to various buttons in the Editor to show names of doodads and
|
|
functions of various buttons.
|
|
|
|
## v0.0.10-alpha (July 18 2019)
|
|
|
|
New features:
|
|
|
|
* Added the **Eraser Tool** and support for **brush sizes**. Now you can clean
|
|
up your mistakes and draw shapes with thicker lines!
|
|
* Added the **Ellipse Tool** for drawing elliptical shapes.
|
|
* Added a third example to the game's built-in levels.
|
|
|
|
Bug fixes:
|
|
|
|
* The Undo command now restores the original color of a pixel instead of just
|
|
deleting it. Only works for thin lines so far.
|
|
* Improved collision detection algorithm to prevent players from clipping
|
|
through a solid doodad, regardless of speed. This change is invisible this
|
|
build, but opens the door to improvements in the 2D platforming physics and
|
|
making the player character move and fall faster.
|
|
* Fix mobile non-player doodads from sometimes being able to clip through a
|
|
solid doodad. For example, a Red Azulian could sometimes walk through a locked
|
|
door without interacting with it.
|
|
* Sometimes hitting Undo would leave a broken "chunk" in your level, if the
|
|
Undo operation deleted all pixels in that chunk. The broken chunk would show
|
|
as a solid black square (non-solid) in the level. This has been fixed: empty
|
|
chunks are now culled when the last pixel is deleted and existing level files
|
|
will be repaired on next save.
|
|
|
|
## v0.0.9-alpha (July 9 2019)
|
|
|
|
First alpha release.
|