From 12fcd01080715d042793d230030c2bc6104600fc Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Fri, 2 Apr 2021 21:22:33 -0700 Subject: [PATCH] Update the website --- content/about.md | 24 ++++++++-- content/faq.md | 112 ++++++++++++++++++++++++++++++++++++++++++- content/features.md | 113 +++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 242 insertions(+), 7 deletions(-) diff --git a/content/about.md b/content/about.md index 9253f10..4e80411 100644 --- a/content/about.md +++ b/content/about.md @@ -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 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 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) -## 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 whatever you want, with JavaScript! -## See Also +# See Also For more information about _Sketchy Maze_, please see the following links: diff --git a/content/faq.md b/content/faq.md index 09c50fb..a7accb7 100644 --- a/content/faq.md +++ b/content/faq.md @@ -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. 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. -# 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? @@ -56,3 +78,89 @@ Paid versions of the game will include _additional_ features such as: 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](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! diff --git a/content/features.md b/content/features.md index 8eae10d..5effade 100644 --- a/content/features.md +++ b/content/features.md @@ -9,4 +9,115 @@ before the game leaves "alpha" status. ![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).