Trireme
Rocky starts
Been participating off and on in Ludum Dare for four years now. (wow, time flies!) To be honest, I was in kind of a rut the past few compos. Now that software development is my day job, the idea of spending a weekend coding wasn’t too appealing. This event started out like that as well. I saw the theme, thought of an interesting idea, but as I was coding it Friday night, I just couldn’t find the fun in it.
My first idea was about being a telephone switchboard operator. The player would receive a queue of calls and then have to connect the caller to their destination. It felt like a neat idea, fit well with the Ancient Technology theme, and had an easy-to-see goal – connect the most callers within a time limit.
My main problem was the engine I wanted to use. I had been tinkering with PICO-8 for a month or so now and found it to be amazing for the types of games I like to make. Combine that with built-in sprite, map, sound effects, and music editors, you have everything you need in a single tool. The problem is the telephone switchboard operator idea is super tedious if you can’t use a mouse, which PICO-8 doesn’t really support. (I found out on Twitter last night that you can poke at the memory to find it, but it’s not supported on all platforms that PICO-8 supports.) I tried making a cursor that you would navigate around the board with your arrow keys, but in order to make the switchboard realistic, you needed a large number of in and out jacks, which made movement tedious and boring.
Frustrated with this predicament, and feeling the fatigue of the workday, I tweeted out that I was bailing and gave out the idea. (If anyone reads this that saw that tweet and used that idea, I’d love to play your game!)
Rested Breakthroughs
Next morning, I woke up a bit early than usual and started my morning routine, but there was this nagging in the back of my head. I had skipped the last Ludum Dare as well, and skipped another game jam – Giant ROM 3 – two weeks ago due to vacationing, and had geared myself up for this one. In the shower I started thinking about some ideas I’ve had that could be adapted to the theme, and would control well with a limited control scheme.
That’s where Trireme came together.
There’s a fantastic fast-paced cooking sim out there called Cook, Serve, Delicious that turns the player into a restaurant owner and chef. I always wanted to give that style of gameplay a shot, and figured I could do some key reuse in order to maximize the different actions a player could do in PICO-8.
But how to work in the theme? I initially thought about working with a gristmill; the player would feed in different grains in order to make meal, then bake it into bread. I was confident that the idea could work, but worried that my programmer art wouldn’t hold up. Also, PICO-8’s limited color palette meant that I could only squeeze out so many shades of brown to represent different grains.
So, I needed something that could be modular, but colorful and easy to draw. That’s where shipbuilding came in: it can have any length and any number of colorful, and anyone can recognize a ship at a distance – even a poorly drawn one.
Challenges
- Since the game is about looking at an “order” and doing a series of inputs to complete that order, I needed to think of a good representation of those inputs. I scoured the PICO-8 manual and saw that when called without arguments, btnp() returns a bitstring representing whichever buttons are currently pressed. So it just came down to converting those bits to decimal and popping them from a stack as they were correctly input by the player.
- PICO-8’s limitations breed creativity, but they still are limitations. Chiefly, its limited color palette means moving objects can clash and bleed into other objects. That’s why I added drop shadow to basically everything, to help each object stand out. For the simple geometry it was fairly easy to just repeat the draw but in black, but for complex collections of sprites, it gets harder. Luckily, PICO-8 also has this function called pal(), which converts one color to another in subsequent draw calls. So, I just set all 16 colors to black, run the draw call, then reset them all back to get a nice blackened sprite.
- I had never previously used the sound/music editor in PICO-8, but this nice YouTube playlist provides a great explanation on how to use them.