Update the website

This commit is contained in:
Noah 2021-04-02 21:22:33 -07:00
parent 31b6258225
commit 12fcd01080
3 changed files with 242 additions and 7 deletions

View File

@ -22,7 +22,23 @@ make a custom doodad, and there (will be) some example doodads you can build
This game is still in **alpha release mode** and it has a few major features This game is still in **alpha release mode** and it has a few major features
still to add. still to add.
## Inspiration # _Sketchy Maze_ is a "Forever Project"
I have a list of features I _really_ want for the "1.0" launch of the game, but
I'll plan on continuing development for as long as I find it interesting and will
release free updates to everybody who buys the game just once.
I've always wanted to make a videogame, and always liked to learn about game
design and everything, but never actually made anything worthwhile until
_Sketchy Maze._ Over time, I realized that I don't actually want to build
"a video game," what I wanted was a game _project_. Something I could just work
on and add features to, more of a game "platform," something long-term like
Minecraft.
This page describes the initial set of features planned for the 1.0 and some
ideas I have kicking around further down the road if all goes well.
# Inspiration
I'm a 90's kid, and when I was growing up in the era of Sega Genesys and Super I'm a 90's kid, and when I was growing up in the era of Sega Genesys and Super
Nintendo games, I used to like to draw my own maps on paper of a 2D platformer Nintendo games, I used to like to draw my own maps on paper of a 2D platformer
@ -41,13 +57,13 @@ do the job and you can draw whatever shape you want for your level hazards.
![Palette editor](/images/palette.png) ![Palette editor](/images/palette.png)
## Mod Friendly # Mod Friendly
While the game ships with a [handful of built-in doodads](doodads.md) to While the game ships with a [handful of built-in doodads](/guidebook/doodads.html) to
spice up your level, you can also create your own and program them to do spice up your level, you can also create your own and program them to do
whatever you want, with JavaScript! whatever you want, with JavaScript!
## See Also # See Also
For more information about _Sketchy Maze_, please see the following links: For more information about _Sketchy Maze_, please see the following links:

View File

@ -26,11 +26,33 @@ _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. 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 If you're feeling dangerous, you can also run it on GNU/Linux smartphone devices
like the Purism Librem 5 or Pine64 Pinephone. 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](/download) page. See the [Download](/download) page.
# Pricing ## 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](#is-this-game-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? ## Is this game free?
@ -56,3 +78,89 @@ Paid versions of the game will include _additional_ features such as:
sharing with other players. sharing with other players.
* Possibly some access to online account features (in-game UI to share and * Possibly some access to online account features (in-game UI to share and
download levels and doodads made by others, etc.) 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](https://golang.org) programming language using [SDL2](https://www.libsdl.org/) for graphics via [veandco/go-sdl2](https://github.com/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](https://www.libsdl.org/) 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](https://git.kirsle.net/go/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](https://git.kirsle.net/go/ui)
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](https://git.kirsle.net/go/render): Render engine supporting SDL2
(native apps) and HTML Canvas (WebAssembly) targets.
* [go/ui](https://git.kirsle.net/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](https://git.kirsle.net/go/audio): Simple audio abstraction which can load and play music or sound effects, currently only SDL2 supported.
GitHub mirrors of the above:
* [go/render](https://github.com/kirsle/render)
* [go/ui](https://github.com/kirsle/ui)
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!

View File

@ -9,4 +9,115 @@ before the game leaves "alpha" status.
![Screenshot of the level editor](/images/floor-is-lava.png) ![Screenshot of the level editor](/images/floor-is-lava.png)
TBD. # _Sketchy Maze_ is a "Forever Project"
I have a list of features I _really_ want for the "1.0" launch of the game, but
I'll plan on continuing development for as long as I find it interesting and will
release free updates to everybody who buys the game just once.
I've always wanted to make a videogame, and always liked to learn about game
design and everything, but never actually made anything worthwhile until
_Sketchy Maze._ Over time, I realized that I don't actually want to build
"a video game," what I wanted was a game _project_. Something I could just work
on and add features to, more of a game "platform," something long-term like
Minecraft.
This page describes the initial set of features planned for the 1.0 and some
ideas I have kicking around further down the road if all goes well.
# 1.0 Features
The expected feature list for the "1.0" version of the game, and how
far along I am.
## Level & Doodad Editor
The level editor should include basic drawing tools:
* **Features:**
* [x] Easily switch between Play Mode and Edit Mode to test your level.
* [x] Draw your own pixels anywhere you want.
* _Should_ be pixel-perfect collision detection, though Boy has a hitbox
that could use some trimming.
* [x] Editable Palette to add and modify colors.
* **Drawing tools:**
* [x] Freehand
* [x] Line
* [x] Rectangle
* [x] Ellipse
* [x] Eraser
* [x] Undo/Redo
* [ ] Zoom In/Out ([--experimental](/guidebook/experimental.html))
* **Level Sizes:**
* [x] Bounded levels (0,0 to 2550,3300)
* [ ] Custom width/height for Bounded (just needs UI work)
* [x] No Negative Space: infinitely big levels which still have a
top-left corner bounded at (0,0)
* [x] Unbounded: infinitely large levels with no corners.
* [ ] Bordered: a bounded level where the top and left decorations
wrap around on the bottom and right sides too.
* **Wallpaper Themes:**
* [x] Notebook: standard blue ruled notebook paper.
* [x] Blueprint: dark blueprint paper.
* [x] Legal pad: yellow legal pad with blue and red lines.
* [ ] Blank sheet: a texture of a blank white sheet of paper.
* [ ] Grid paper: a white page with grid pattern.
* [x] Pure white: just a solid white background with no texture.
* [ ] Placemat: a wavy pattern meant to decorate all four sides of a
Bordered map.
* [ ] Custom Wallpaper: users will be able to bundle a custom
wallpaper texture inside their level file.
* **Doodad Editor:**
## Doodads Editor
## Single Player Campaign
The game is expected to come with a series of proper levels built-in which
are played in sequence and has some kind of interconnected story or
something. Currently you get some tutorial levels.
* **Single Player Campaign:**
* [ ]
* **Polish:**
* The platforming physics will be better. Currently the character gets
stick walking up sloped surfaces, _especially_ moving Left (but not as
much moving Right).
* [ ] Checkbox?
# Current Doodads
The current list of doodads built-in with the game can be found in the
[guidebook](/guidebook/doodads.html). For the exhaustive list so far, we have:
* **Bird:** a red bird that flies back and forth and can be ridden on.
* **Button:** sends a power on/off signal to a linked doodad.
* **Colored Doors & Keys:** four pairs of locks and matching keys.
* **Crumbly Floor:** a break-away floor.
* **Electric Door:** a closed door that only opens when it's powered.
* **Red Azulian:** test mob.
* **Small Key Doors:** locked doors and keys that are consumed each time
a door is unlocked.
* **Start & End Flags:** set the player spawn point and level goal.
* **State Blocks:** blue and orange blocks that toggle from solid to
passable.
* **State Button:** on/off switch that globally toggles state blocks.
* **Switches:** toggle electric doors open or closed or provide power
on/off to other doodads.
* **Trapdoors:** one-way passages (all four directions).
* **Warp Doors:** for fast travel around the map between any two linked
Warp Doors.
* **Warp Doors (Blue & Orange):** boolean state versions of Warp Doors,
which may only be entered while the door is active.
Some hidden doodads that you can activate with cheat codes, but which
don't **do** very much because they were for the player character:
* **Boy:** the player character in a blue hoodie.
* **Blue Azulian:** the original placeholder character, a blue version of
the Red Azulian.
(For that cheat code, try entering "boolProp showAllDoodads true" into
the developer console **before** opening the Level Editor, and they will
be available in the Doodads palette with the others).