The Making of Infiniraft


In this devlog I am going to talk about who I am and how I made Infiniraft.

Tools

I mostly worked inside of PICO-8, but I did use Aseprite to test sprites in a scene and to test animations.

Who

I believe it is useful for you to know a little about me so you can decide if my experiences will be relevant to you.

I have been programming as a hobby for about twelve years. I mainly use Python, but I have various levels of experience with other languages.

I originally started programming to make games. So, I have tried several different game engines and frameworks, but until Infiniraft I had not gotten very far.

To give you an I idea of what I usually program: in early 2021 I wrote a very basic CPU emulator to help teach a friend about CPUs (Doing this made me more interested in PICO-8 and virtual machines in general), but for the most part I write programs to automate simple tasks.

Going into this I had never used the PICO-8 before, I had a small amount of familiarity with Lua from looking at it in the past, and I had been making pixel art for about two months.

Ludum Dare 49 is my first game jam, and Infiniraft is my first released game (Or anything for that matter), and I am very happy it gets to be open source.

How

I did not plan to participate in Ludum Dare 49, and in fact I only found out about it the day it started. Originally I was not going to submit a game, but rather just make one privately. So, it comes as a bit of a surprise that Infiniraft is finished and released.

Day Zero

Since I only found out about Ludum Dare 49 on October 1st I did not start working until October 2nd, but I did know the theme which inspired the moving grid idea.

I came up with the idea of using a table of drawing and callback functions when I was going to sleep; which, gave me a good starting point for the next day.

Day One

On October 2nd I started making Infiniraft with a working title of Unstable Rafting, very creative I know.

Most of my time was spent getting to grips with the PICO-8.

As you can see above: the game originally was in color, and it did not use any sprites.

My reason for not using any sprites was that I wanted to focus on the gameplay before starting on the art. This worked well for the most part, but I should have switched to sprites sooner.

Turning drawings into function calls is not fun.

By the end of the first day the gameplay was finished, but the game lacked sound and needed better art.

If you want to take a look at Unstable Rafting you can get it from the download section on the main page, just keep in mind that it is an unfinished prototype.

Day Two

I decided to change the game to black-and-white with only the coins and med-kits using other colors. At first the player character was going to be black-and-white as well, but I could not get it to stand out enough.

I had two reasons for the switch:

  • One was the idea that due to the constraints imposed by the PICO-8 the game was going to be abstract; because of that why not go to the extreme.
  • The other was that I had just finished the first prompt for Inktober which left me digging the black-and-white aesthetic.

Day two was really a rush to the finish line. I added sprites, animation, sound effects, music, a winning screen, and a stopwatch.

I was able to do all of this in time mainly because of the solid foundation laid out the previous day.

Setting up the project page on itch.io and Ludum Dare was pretty easy. What took more time was creating the cover art and packaging the files. I had finished packaging the files and making the cover when I noticed one of the colors was wrong, so I redid everything but still missed the cart’s label (it is an Easter egg :]).

Final Thoughts

Wishes

I wanted to have a better ending where once you collected enough coins you would make it to land and see a scene of the player character spending their coins, but I ran out of time.

More refined controls would have been nice. Moving diagonally is a side effect of how input is handled rather than something I did on purpose. But, it makes the gameplay better, so I would have liked to refine it.

Being able to tune the game variables more. Things like spawn chance, health per med-kit, or coins per bag.

Likes

I really like how the waves move in sync with the planks, kind of in a breathing motion. This happen by accident which might be why I like it.

The coin bags and med-kits with their colors standing out against the black-and-white planks turned out nicely, in my opinion.

Lua

Because of the time constraints I did not have the chance to learn and use Lua’s more advance features.

For the most part Lua feels like other languages I have used (Python, Javascript, etc) but its tables are pretty interesting.

My two complaints would be scoping and error messages.

The need to declare variables local instead of the other way around is a little odd, but I did not run into any issues because of it.

I do not know if Lua outside of the PICO-8 has this problem, but the error messages could be more helpful. For example if a variable is used before being defined the error message should say that explicitly.

PICO-8

The PICO-8 is a pleasure to use. The constraints kept me focused, and every time I wanted to do something the PICO-8 let me do it in an intuitive way.

The PICO-8 very nicely fits my conceptual model of how sprites, input, sound, and code should work.

Files

unstable_rafting_prototype.p8 14 kB
Oct 05, 2021

Get Infiniraft

Leave a comment

Log in with itch.io to leave a comment.