Improvement Plans


Introduction

Hi, everyone!

Stoff_OS is a tiny prototype I made in September 2019 after playing Increpare's Red Balaclava Weaving Loom and Gestalt_OS. Yesterday I found the Improve My Game Jam #15 while browsing the hundreds of jams here on itch.io and I decided to participate.

Here's the content of my TODO.txt from 2019:

  • redo
  • sounds
  • disable undo/redo/reset/tools on the victory screen
  • display area of effect, when hovering over the fabric with a tool
  • animation, when a tool gets used
  • find more interesting tools

Technical Details

Stoff_OS is written entirely in C using GLFW for basic IO and sokol_gfx.h as a rendering API abstraction. I'm using Emscripten to make it run on the web.

Graphics

All rendering is done with a single vertex buffer (containing two triangles forming a unit square), a single texture (a PNG, decompressed via stb_image.h) and a single shader program (using uniform variables to transform the vertex positions and uv coordinates of the square). This may not be the most flexible or efficient setup, but it's easy to implement and easy to use, which seems like a good trade-off for jam-sized games.

Colors

I'm planning to add a color modifying parameter to the shader in order to generate the different colors of fabric as well as hovered, pressed and disabled variants of button sprites on the fly instead of using a unique sprite for each possible state. This change enforces consistency, makes the sprites easier to edit, enables smooth transitions, and allows reducing the size of the sprite sheet from 512×256 to 256×256.

I'm not entirely sure how to parametrize the color modification. The simplest option would be to multiply the original RGBA values with some factors. This gives sufficient control over the alpha channel, but doesn't allow hue shifting or desaturation. I could use 3×4 matrices to apply completely arbitrary linear transforms to the RBG values, but that seems like overkill. I'll probably go with the following four parameters:

  1. A parameter, which interpolates the color towards black between 0 and -1 and interpolates towards white between 0 and 1, leaving the color unchanged at zero.
  2. A parameter, which shifts the hue (preferably at constant luma).
  3. A parameter, which shifts the saturation or chroma (e.g. 0 is unchanged, -1 is grayscale).
  4. A parameter, which interpolates the alpha towards invisible between 0 and -1 and interpolates towards perfectly opaque between 0 and 1, leaving the alpha unchanged at zero.

Animation

I'm currently not planning to add animations to the game. While animating the state transition for any single in-game action is doable, I don't have the time to implement animations for all actions before the end of the jam. Maybe next time.

Audio

Stoff_OS currently has no code for audio playback. I don't want to write a cross-platform audio library from scratch, and any library I use should at least be compatible to Windows, Linux and Emscripten. So what are my options?

I could replace GLFW with SDL2, but last time I checked SDL required a significant amount of work to enable static linking and I would prefer to ship this game as a single executable while also keeping it easy to maintain.

There is a public domain single header library called miniaudio, which seems to have plenty of features. But at 2.75 MB of source code it is not quite as "mini" as its name implies. I'll give it a try, if I don't find a more succinct alternative.

I like sokol_gfx. So for now I will trust its developer and try to use sokol_audio in Stoff_OS.

Miscellaneous

  • itch.io's fullscreen button overlaps the next-level button in the bottom right corner of the game.
  • Randomly generated levels would be easy to implement. But would they be fun?
  • Changing the tools given to the player would require replacing many of the levels. But I do think it's worth it, if the new tools feel more intuitive and interact in interesting ways. We'll see.

That's all for now. Imagine how much programming/designing I could have done in the time it took to write this. :) Cya!

Get Stoff_OS

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.