diff --git a/content/faq.md b/content/faq.md index 02548dc..01347d1 100644 --- a/content/faq.md +++ b/content/faq.md @@ -12,31 +12,34 @@ About Sketchy Maze. It is a "drawing-based maze game" themed around hand-drawn maps on paper. It's one part 'yet another 2D platformer game', one part 'Mario Maker but you can make whatever you want', and part educational game in that it might help teach -someone to code so they can program their own custom doodads. +someone to code so they can program their own custom doodads to use with their +levels. -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 +With _Sketchy Maze_, you may draw your own levels and then play them as a +side-scrolling platformer game. You may 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. You will -also be able to play custom maps created by others, possibly with custom -doodads included in them depending on your version of the game. +also be able to play custom maps created by others, which may come with their +own custom doodads attached ([details](/register)). ## 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. +It should run on any GNU/Linux, Microsoft Windows or Apple macOS computer. It also +happens to run on Linux smartphones and is mostly playable at screen resolutions as +narrow as 375x750. I currently package releases of the game for: * **Windows** (64-bit and 32-bit) * **Mac OS** (Intel 64-bit only for now!) * **GNU/Linux** - * x86_64, i386, and aarch64 release on Fedora-likes (.rpm) and Debian-likes (.deb) and .tar.gz - * x86_64 and aarch64 Flatpak packages. + * Flatpak (x86_64 and aarch64) should work across all modern Linux distributions. + * Native packages (x86_64, i386, and aarch64) for Fedora-likes (.rpm) and Debian-likes (.deb) and .tar.gz * Works on Linux smartphones like the Pinephone and Librem 5! Some places I could see it going in the future: @@ -45,19 +48,26 @@ Some places I could see it going in the future: how to run a Go SDL2 program like mine on Android but its documentation seems outdated and I haven't figured it out yet. I'm using my Pinephone to plan a mobile/touch friendly UI but Android is a likely target at some point. -* The **[Steam Deck](https://store.steampowered.com/steamdeck/):** for _Sketchy Maze_ I just need joypad - controls so you can navigate the UI and play the game without a mouse or keyboard, and this - Nintendo Switch-like device would be an amazing host to my game! +* The **[Steam Deck](https://store.steampowered.com/steamdeck/):** _Sketchy Maze_ has some joystick + control support and with a little more love this Nintendo Switch-like device could be an amazing + host to my game! I don't own a Deck but try and see if my game can run on it, + [let me know](https://www.kirsle.net/contact) how it goes! ## What are "doodads?" +![Bird](https://www.sketchymaze.com/guidebook/images/doodads/bird.gif) +![Snake](https://www.sketchymaze.com/guidebook/images/doodads/snake.gif) +![Button](https://www.sketchymaze.com/guidebook/images/doodads/button-a.gif) +  ![Electric Door](https://www.sketchymaze.com/guidebook/images/doodads/electric-door.gif) + Doodads are the dynamic objects you drag and drop into your level to make it "do" things. They are the Buttons, Switches, Trapdoors, and other traps and hazards to create puzzles and perilous platforming sections of your level. The game ships with a handful of [built-in doodads](/guidebook/doodads.html) -and players may also create their own, and program their behavior using +and players may also [create their own](/guidebook/custom-doodads/index.html), +and [program their behavior](/guidebook/custom-doodads/scripts.html) using JavaScript. ## Do I need to learn how to program? @@ -72,11 +82,23 @@ You can also create some useful custom doodads in-game by selecting from a doodad and choose the "Generic Fire" script and it will act as a hazard to the player in-game: "Watch out for spikes!" -You can use these generic scripts as a base and program your own logic and -behavior in JavaScript. There are some -[full example doodads](https://code.sketchymaze.com/declassified/doodads) -that you can learn from as well for creating your own custom Warp Doors -or playable characters. +## How do I program a custom doodad? + +There are some [full example doodads](https://code.sketchymaze.com/declassified/doodads) +that you can learn from for creating your own custom Warp Doors or +playable characters similar to the ones the game ships with. + +You may also peek at [the game's built-in doodad sources](https://code.sketchymaze.com/game/assets) +to see how they're programmed if you want to make something similar. + +You may also pick from a built-in generic script for your doodad, and then +download the script out of your doodad to use as a starting place to +customize it. + +See the [Doodad Scripts](/guidebook/custom-doodads/scripts.html) documentation +that came in the game's Guidebook and the +[full JavaScript reference](/guidebook/custom-doodads/api-reference.html) +for more information. ## The user interface is ugly! @@ -94,6 +116,17 @@ graphical application. One day, the UI toolkit will support fancy theming of widgets, and _Sketchy Maze_ will very easily look better (or have user-configurable themes available to choose from). +## Why does my launcher icon have an orange logo? + + + +Since version 0.13.0, Flatpak builds for Linux are now using an orange +version of the launcher icon. This is mostly because I install both the +Flatpak and the native (rpm/deb) package simultaneously and it was hard to +tell which version is which! + --- # Known Issues @@ -236,9 +269,13 @@ and maintain backwards compatibility for maps made today. ## 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. +[Go](https://golang.org) programming language and using [SDL2](https://www.libsdl.org/) +for graphics, sound, gamepad and other basic features via the +[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. +While the game itself is not open source (yet), 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? @@ -249,16 +286,16 @@ _Sketchy Maze_ was built from the ground up using little more than 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. +code to be written too much like C to work with its raw API. 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, +abstracts around SDL2 for desktops (and HTML 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. The render engine can be extended to target -other APIs, such as OpenGL or Vulkan, in the future as needs arise. +other APIs in the future, such as OpenGL or Vulkan, as needs arise. -Here are a list of open source projects created **as a part of** development of +Here are a list of open source projects released as a part of development of _Sketchy Maze_ which should be generally useful to any Go developers for making some simple graphical applications. @@ -271,8 +308,8 @@ some simple graphical applications. GitHub mirrors of the above: -* [go/render](https://github.com/kirsle/render) -* [go/ui](https://github.com/kirsle/ui) +* [SketchyMaze/render](https://github.com/SketchyMaze/render) +* [SketchyMaze/ui](https://github.com/SketchyMaze/ui) Also this website, the user guidebook, and other things with the game are readable as open source code, at https://code.sketchymaze.com/ @@ -290,15 +327,12 @@ 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 app is the most likely one of these, but it may be a while out (after the +"1.0" release). The game is primarily meant for desktop-sized displays, but it +also runs as-is on GNU/Linux smartphones like the Pinephone, so I am testing +the game on that to make sure it _mostly_ works on that size of screen, if only a +bit awkwardly. -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! +I have some resources on how I might compile my game as an Android app, but I +haven't found any info on how one compiles a Go SDL2 app for iOS; and I don't +own any of the hardware needed to develop for iOS anyway. diff --git a/static/images/orange-128.png b/static/images/orange-128.png new file mode 100644 index 0000000..e033b1e Binary files /dev/null and b/static/images/orange-128.png differ diff --git a/static/images/orange-64.png b/static/images/orange-64.png new file mode 100644 index 0000000..0adeca5 Binary files /dev/null and b/static/images/orange-64.png differ diff --git a/static/images/pinephone-apps-crop.png b/static/images/pinephone-apps-crop.png new file mode 100644 index 0000000..e21064b Binary files /dev/null and b/static/images/pinephone-apps-crop.png differ diff --git a/static/images/pinephone-apps.png b/static/images/pinephone-apps.png new file mode 100644 index 0000000..5375b45 Binary files /dev/null and b/static/images/pinephone-apps.png differ