Game Jam, Day 1: Pseudocode and Rough Assets

The new season of Star Trek: Strange New Worlds gives us a proper introduction to the show's version of Scotty and a particular personality quirk of his: he becomes hypercompetent under intense pressure. I won't claim to have the same gift, but I do learn best when I'm uneasy and in new territory. So, that's why I signed up the the Novice Summer Jam Series 2025: Long Jam 1 at itch.io.

Which started today.
Right after a week-long vacation where I studied very little.
In a life where I know almost nothing about coding,

So, let's make a game!

To Boldly Go...Dot

I chose Godot for my game engine because, well, their logo is kind of cool and some YouTube People told me it was a good idea. I spent the week before vacation, and a few days after, creating a state machine to make a little Mario clone move around a map. I learned a few important things:

  • GDScript, the language Godot uses, is fairly intuitive; and
  • Good grief, will a typo cause your code to crash and burn.

I'd say a good 50% of my coding practice invovled hunting down and fixing errors. I'm sure that isn't a portent of things to come. But every fixed bug got me closer, and I made progress.

The Jam Begins: An Idea

Long Jam 1 began today: the theme is "Lurking in the Shadows". I downed a coffee, set a timer for 15 minutes, and took a chair nap. As my mind slowed down and lost focus, this idea came to me:

An alien world. You're a caterpillar on a leaf. Mushrooms spring from the leaf. The ones that are in colors complimentary to the leaf allow you to grow, with the goal being to get large enough to metamorphose into a butterfly. Mushrooms in contrasting colors will make you sick enough to regurgitate them, and you will get slightly smaller. The leaf is in shadow because, if you venture into the light too much, there is a flying predator. The regurgitation is a deterrent to the predator.

It's a weird idea. I like it.

A Leap of Logic: The Pseudocode

Did you know that developers use pseudocode to flesh out the logic of their real code? It made sense to do that first: if the logic didn't work at this stage, I'd just waste time fixing it when I sat down to code. So, I sat down, wrote this, then came back after dinner to edit it:

START

DISPLAY Title Screen
GET Sprites
INIT Buttons

INPUT Level Select

INIT State Machines
INIT Caterpillar State Machine
INIT Predator State Machine
INIT Mushroom State Machine

INIT Level
GET Tileset From Array
SET Shaded Areas
SET Lit Areas
GET Caterpillar
GET Caterpillar Sprite
LOAD Caterpillar State Machine
GET Predator
GET Predator Sprite
LOAD Caterpillar State Machine
GET Mushrooms
GET Mushroom Sprites
INIT Mushroom Types
SET Mushroom Spawning Frequencies

INIT Gameplay Loop
READ Feeding State
IF Caterpillar Collides With good_mushroom
INCREMENT Size by 1
IF Caterpillar Collides With bad_mushroom
DECREMENT Size By 0.5
INIT Regurgitation

READ Caterpillar Movement
IF Caterpillar Is in_shadows
Nothing
ELSE
Call Predator

READ Predator
IF Reguritation
Predator Keeps Distance
ESLE Predator Attacks

IF Caterpillar Returns To Shade
Cooldown Period
Flee

IF Predator Collides With Caterpillar
DECREMENT Caterpillar Size by 2
IF Caterpillar Size == 0
Caterpillar Dies
GOTO Title Screen
ELSE
Caterpillar Has Temporary Invincibility
Predator Momentarily Backs Off

INIT Caterpillar Size Monitor
IF Caterpillar size = 15
INIT Metamorphosis
SAVE Progress
INIT Next Level
IF Last Level
THEN Play Ending
ELSE Null

I think that covers how the game works. Of course, I'm sure I left things out. And that'll have to be okay. Now that I had that, it was time to make some pictures!

Assets, or at Least Reasonable Facsimiles

I used my iPad to make some sprites for the characters, regurgitation, mushrooms, leaf, and backgrounds. I didn't focus on polish at this point: I can go back and improve upon them once the game actually works. Regardless, they don't look too bad!

Left-to-right, top-to-bottom: The caterpillar pieces, the predator, a pile of reguritation, and two mushrooms.
I'm inordinately proud of that leaf.

Day 1: Final Thoughts

Today was the only day that will be easy. I begin writing code tomorrow. I'm still new at it and, despite a wealth of resources and tutorials, I'm still learning a new language. It'll be slow work and I'll have to be persistent. I really have only one goal for the week:

Make a game.

It doesn't have to be extensive. It doesn't have to be pretty. It doesn't have to be bug-free. It just has to be. As long as I have something people can play, I'll consider it a success.

Tomorrow: likely more cursing!