Sketchy Maze

"a drawing-based maze game."

Frequently Asked Questions

About Sketchy Maze.

General

What is Sketchy Maze?

It is a “drawing-based maze game” themed around hand-drawn maps on paper.

With Sketchy Maze, you can draw your own levels and then play them as a side-scrolling platformer game. You can draw maps freehand or with some basic drawing tools (like rectangles and ellipses), specify which color lines are “solid” and which behave like “fire” or “water,” and then drag and drop various “doodads” such as buttons and doors onto your map to add some interactive elements.

If you’re not much of a level designer, fear not! The game will also feature some built-in levels that you can play and get some inspiration from.

What devices can I play it on?

Sketchy Maze is first and foremost a videogame for desktop operating systems. It should run on any GNU/Linux, Microsoft Windows or Apple macOS computer.

If you’re feeling dangerous, you can also run it on GNU/Linux smartphone devices like the Purism Librem 5 or Pine64 Pinephone. Mobile ports are relatively down on the priority list, but it already sorta functions.

See the Download page.

Do I need to learn how to program?

Nope! You can just draw some levels and use pre-made doodads in them. The “1.0” version of the game is expected to include a proper set of single player levels that can simply be played so you don’t even need to draw your own level if you’re not feeling creative.

The user interface is ugly!

I find the “Windows 95” look charming.

The good thing about the user interface is that it’s released as a free and open source module. Eventually I plan to build theming support into the UI toolkit, and Sketchy Maze will automatically look awesome.

I developed my UI toolkit from scratch, and the “Windows 95” look is very easy to program. A button is just a handful of rectangles drawn on top of each other with offsets to provide the “3D look” and I found it preferable to make the UI toolkit look how it acts until I was confident I did it right.

Pricing and Distribution

Is this game free?

Yes!

While the game is in beta, all releases are 100% free and fully functional.

After the game reaches “1.0” it will use a hybrid freemium model. Free versions of the game will include:

  • One chapter of built-in single player levels.
  • The level editor where you can create and share your own custom maps, using the built-in doodads that the game shipped with. You can also play levels created by other players as long as they use the built-in doodads.

Paid versions of the game will include additional features such as:

  • Additional chapters of built-in single player levels.
  • Support for custom doodads in your custom levels, including the ability to play levels made by other users which make use of custom doodads.
  • Ability to bundle your custom doodads with your level file for easy sharing with other players.
  • Possibly some access to online account features (in-game UI to share and download levels and doodads made by others, etc.)

It is expected that the full set of built-in doodads will be equally available in free versions of the game. And these doodads should be varied and featureful enough to create all sorts of custom and creative levels, which can be shared with other players.

Will the game feature any form of Digital Rights Management (DRM)?

I hate DRM, so I don’t expect so.

Will this game be available on Steam?

I haven’t decided yet. I think I could try and distribute the game myself first. It’s gonna be in beta for some time and I can see if it attracts a cult following along the way.

Technicals

What is this game built with?

Sketchy Maze runs on a custom game engine, built from the ground up, in the Go programming language using SDL2 for graphics via veandco/go-sdl2 bindings for Go.

While the game itself is not open source, some of its critical components are released as free and open source projects that other developers can use in their projects.

Is this game open source?

Parts of it are!

Sketchy Maze was built from the ground up using little more than SDL2 which lets you plot pixels on a screen. While I was designing the game, I thought it’d be a good idea to write an abstraction layer between low-level SDL2 functions and give me a clean, Go-like API to work with that keeps my code from either depending too much on SDL or for my Go code to be written too C-like to work with it.

So I built my own render library that abstracts around SDL2 for desktops and HTML5 Canvas elements for WebAssembly, and my game needed UI buttons so I wrote a UI toolkit which provides Labels, Buttons, Menus, Windows, and all sorts of useful widgets to draw my user interface with.

Here are a list of open source projects created as a part of development of Sketchy Maze which should be generally useful to any Go developers for making some simple graphical applications.

  • go/render: Render engine supporting SDL2 (native apps) and HTML Canvas (WebAssembly) targets.
  • go/ui: Go UI toolkit for adding labels, buttons, windows, menus, and more widgets and arranging them sanely in frames with an API like Tcl/Tk. It uses go/render so can also target WebAssembly.
  • go/audio: Simple audio abstraction which can load and play music or sound effects, currently only SDL2 supported.

GitHub mirrors of the above:

Also this website, the user guidebook, and other things with the game are readable as open source code, at https://code.sketchymaze.com/

Wait, does Sketchy Maze have a WebAssembly port?

Sure does! But performance isn’t great yet, and I’m not sure whether WebAssembly support in web browsers needs to get better or if I need to tighten up my code. There is a lot of room for optimization in my UI toolkit, to minimize the number of draw calls per tick.

One day I might have a “demo this game right in your web browser” feature with a (probably stripped-down) version of the game built for WebAssembly. So far, though, it just freezes web browsers frequently and I’m not letting you see it yet.

Is it coming to Android or iOS?

These are relatively low on the priority list; maybe after the 1.0 release is feature-complete I’ll work on making the game work on mobile phones.

Already the game sort of functions on GNU/Linux smartphones such as the Pinephone. This phone has a 720x1280 pixel display and most of the UI buttons are usable in the level editor, doodads can be dragged onto levels, etc.; its current biggest issue is with the on-screen keyboard app not being able to press two keys simultaneously (like to move and jump at the same time).

An Android port would likely be the first one after testing on the Pinephone to get a touch-friendly user interface going. This game mainly just uses SDL2 which is good for portability!

Copyright © 2021 Noah Petherbridge.