2023-11-18
What I've gotten myself into this time
Back in 2019, I made a two-player competitive clicker game during a game jam. I did this because I thought the idea was ridiculous, and I can't have a ridiculous idea and not follow through, who do you think I am? (Also, I had this giant 3-button controller sitting around larping as a lamp. Did I build the game around the controller? Absolutely.)
I submitted this game to the MAGFest Indie Arcade fully not believing they'd accept it. But my philosophy is "apply to everything and let them tell me no" and, well, they called my bluff. So now I gotta take this jam game and get it ready to exhibit at a public festival on the other side of the country.
And in an amazingly fortunate coincidence, it happens that PIGSquad hosts an annual "Finish Your Game" Jam in November. I was going to be doing all this anyway, but now I have an excuse to write long and self-indulgent devlogs about it.
My goals are many. I don't know how many I'll finish during the jam, but let's go!
GOALS
- Build a demo machine
- Make it run offline
- Build a reset button
- Build a backup controller
- Improve the UI and gameplay
Goal 1: Build a demo machine
Status: ✅ COMPLETE
The game is built in PhaserJS and runs on a web browser. For local showcasing, I'd just run it on my laptop; obviously, this is a terrible idea to do at a public festival. I need a demo machine: something hard to mess with, easy to travel with, and devoid of personal information.
I had a Raspberry Pi 3b in the back of a drawer which seemed like a promising candidate. Of course none of the power supplies in the drawer worked for it (note to self: LABEL YOUR POWER SUPPLIES), and at some point I'd also managed to lose the fingernail-sized card that is its brain (running off disk, really takes ya back huh), but these things are easily ordered online. Unfortunately, it also meant it would take me three extra days to see if this would work.
It didn't work.
But oh, did it almost work! It was just a little choppy.
Ok ok, it was a lot choppy. Like running at like 0.5 frames per second choppy. Not nearly good enough for MAGFest. But it was so close, maybe I could fix it! Maybe if I used Firefox instead of Chromium? No dice. Maybe if I changed browser config settings according to random Stack Overflow posts? (Pro tip: don't do this. Don't flip settings in your browser that come with warning messages if you don't understand the warning messages). No effect. Ok, what if I upgrade the version of PhaserJS I'm using? It's from 2019 after all, and it's not a major version upgrade, it shouldn't have breaking changes...
It had breaking changes.
The documentation for PhaserJS is not what I'd call good, but I did eventually find examples of "old syntax -> new syntax" and got the game running just enough to see if this would fix the choppiness.
It didn't fix the choppiness.
So I put the Pi 3 back in the drawer and ordered a Pi 5. Surely that will be powerful enough, right? Right?
A week or so later, it finally arrived, and I lit a candle and pulled the code,
and thank the demo gods, it ran smoothly. Goal one complete.
Of course this adds a new goal,
fix all the breaking changes
but first I wanna deal with this other non-negotiable. So let's call that one 2b.
Goal 2: Make the game run offline
Status: ✅ COMPLETE
If I can give you one tip for going to any kind of festival, convention, or public gathering in general, it's this:
assume the internet will not work.
Sure, there's an outside chance that it will, but if you want to set yourself up for success, prepare to party like it's 1995. Now if you've been paying attention you'll remember I built this as a web game. How do you play a web game with no web? I asked the PIGSquad discord, and they had several great ideas, and naturally I went with the easiest one: run the game on a local webserver, just like you do in development.
In hindsight, duh.
All I had to do was install node on the pi, start the local webserver with literally the same command as I use when developing, and boom. We're offline, baby!
Next up is dealing with the fallout from upgrading Phaser. But I don't want to, so that'll be the next devlog.