Thwimbly!

2D side-scrolling video game

Early video of Thwimbly gameplay in World 1: Autumn

Thwimbly is a 2D platformer I am currently developing in TIC-80, a fantasy computer. This program shares elements with common game engines such as Unity, but in practice is extremely different. Tic-80 handles basic draw functions, including sprites and primitives, but no support out of the bo for animations. Similarly, it also supports basic 4-channel music and sound effects, but they have to be programmed in Tic's own tracker interface, much like the amiga and other 90s software. All of the game code must be written by hand though, Tic does not do anything to help you there. While it supports many languages (including some really esoteric ones), I'm using Lua. It's simple, readable, and I have a bunch of experience with it.

I started working on this game in summer 2021, mostly just trying to see if I could figure out tile-based collisions. I would shelve Thwimbly at the end of the summer to work on Fungicide (doesn't have a page yet). I would return to working on this during spring 2022, and have continued to work on it off and on, typically during summer and winter break when I don't have classes.

The ultimate goal of the project is to develop a 7-world, 28 level game that is very mechanic focused, much like Super Mario World or Celeste. The mechanical philosophy states that all mechanics are designed in such a way that they can be manipulated to allow for extremely difficult custom levels, similar to Kaizo Mario. While the base game is not designed to be brutal, everything is there to make it so in the future.

When I get done, the game will be open source, and I will upload some resources on how to make custom levels, in the event someone wants to try that out.

Worlds

  • Autumn Hills
  • Eerie Valley
  • Underwater Temple
  • Western Land
  • City
  • Factory
  • Cyberspace

there are somewhere around 30 mechanics in the game. I won't list them all out here, in the event that I end up cutting some as I get more testing in, but there are a lot of nifty ones, and a lot of common mechanics that I implemented differently than their typical interperetation.

Graphics

City screenshot

Thwimbly has evolved graphically over time towards a minimalist artstyle with lots of animation. This was mostly out of necessity. Tic only allows 16 colors for tiles (with an additional 16 colors available on a draw layer for entities). Additionally, there are a limited number of sprites and tiles (256 can be used for tiles, with an additional 256 that cannot be drawn to the map). For this reason, tiles are designed to be multi-use. For example, the supports for the hanging lanterns are the same 8x8 sprite as the table!

first git commit screenshot

Early versions of Thwimbly were rough, graphically. Above is an image from spring 2022. The tiles are extremely rough, the clouds are amateurish, and there is very little graphical charm. Early versions used the Bubblegum-16 palette, which is an extremely vibrant palette. I tend to draw pixel art with large (3-4 color) gradients, and a 16-color palette usually only allows 2.

aap64

I would later switch to the AAP-64 palette, which contains 64 colors. I would be selecting a subset of these 64 colors for each world, which would allow me to trade a wide variety of colors for more granular color ramps. At this point, I also started experimenting with dynamic visuals such as the clouds. These dynamic visuals aren't stored in sprite memory, and are generated at runtime to provide a dynamic visual environment. The above image comes from summer or fall 2022.

early res64

I ended up settling on the Resurrect-64 (Res64) palette, which is so good. This palette feels very warm to me, its very comforting in a way the older neon-ey vibrant ones weren't. Practically, this palette lets you get away with a lot of stuff in terms of color matching. You can mix the grays into red or blue color ramps for example.

western screenshot

Throughout this multi-year development process, I have gotten much better at pixel art, both in terms of raw skill and in consistency. I'm still not amazing at it (I won't be quitting school to do pixel art full-time), but I can tell I have progressed. I'm super happy with the rocks and the fence in the above screenshot.