- Genre: Launcher, almost idle. Inspired by “Learn to Fly” and some other games popular in the Flash era.
- Links: play it on itch or check out the code on github
- Engine: Godot 3.5
- Time Spent: April 11-13, April 18-26 (12 days with some traveling in between)
- Other: Sisyphus Needs a Nap got more plays on itch in a single day than platris did over its lifetime! It also made it to the top of itch’s “new and popular web games” page. Neat!
alright I cheated and started part of the way through the game but it's more fun that way.
High Level Thoughts
Here are a couple of things that went well this time around:
- I did substantially more up-front planning and avoiding getting blocked on the game’s direction.
- I studied old launcher games, came up with a balance philosophy, and implemented it well.
Here are some things that went poorly and that I’d like to improve on:
- I let myself get bogged down in minutiae (bad) way too early in the design process (worse).
- I wasted time balancing individual systems early before the entire game was in place, instead of thinking about balance holistically from the start.
- I checked my itch stats too often.
Right now my primary focus is on getting faster - you can really see that in all of the places I’d like to improve. Here’s some more detail on each of my bullet points.
Good: Up-front Planning
My biggest takeaway from platris was that I needed to do a little more up-front planning - with platris I regularly found myself unsure of what else the game needed and I found the context switches back to mechanic designing pretty jarring.
Sisyphus was a little easier to think about because I was picking a game from a genre with a pretty established flow. However I still sat down and sketched out all of the different screens I expected a user to see in the game before I did any coding. I found this, along with some bullet-journal style “what to do next” notes for smaller tasks, to be a pretty effective way of keeping myself on track.
The planning I did, along with my daily tasks for the last few days of development
I wasn’t always strict about following these plans - for example, after making the “final” plan that you see above I sat down to work on the game, decided that it needed a griffin that could carry your boulder up the hill a bit, and then spent like 4 hours trying to draw a griffin. It ate up a bunch of time unexpectedly but I think it made the game feel a lot better! You live, you learn, you add last-minute Griffins to your games.
Good: Balance Philosophy + Testing Other Games
Before I started on Sisyphus I tracked down a bunch of the launcher games I played as a kid (I loved launcher games), played them, and thought about what I liked and disliked. I had strong reactions to two games - learn to fly and burrito bison revenge - so I’ll focus on them1.
More than anything else, Learn to Fly felt good and Burrito Bison felt bad. In Learn to Fly you have enough currency after ~every flight to buy some upgrade, and each upgrade, while small, feels like it has an impact - you notice that you’re flying higher or losing less speed. You can challenge yourself to play optimally and beat the game in as few days as possible, but playing the game at a relaxing pace just feels good.
With Burrito Bison I found myself launching multiple times between upgrades - and often when I purchased an upgrade I didn’t really feel like I got much out of it. At a few points I purchased an upgrade like “a helpful unit will sometimes appear” and then not see that unit for multiple launches! What’s the point!
i simply can't get excited about increasing the power of my chubby gummies
Every time I sat down to play Learn to Fly I’d beat it. Finishing Burrito Bison would have been a chore - I put it down.
This pushed me to make two decisions with balancing costs in Sisyphus:
- For upgrades with many levels, like strength or height, I did a bunch of number tweaking to try to ensure that an average run would yield enough currency that you’d be able to buy the next incremental upgrade.
- For what I called “gadgets” (the slingshot, parachute, and griffin) I added achievements that gave enough currency that you could purchase the upgrade outright - and I tried to ensure that you’d naturally hit those achievements smoothly over the game, resulting in a smooth upgrade arc.
I’m happy with how this came out, and someone left a comment saying basically just that :)
It’s easy to get bogged down in minutiae when you’re starting a new thing - and it’s almost always wrong to ignore that minutiae2 in favor of immediate action and small marginal adjustments. There is a lot of minutiae to avoid in programming and so much of it in game dev. I am trying my absolute best to not get bogged down in, whatever, what engine to use. The goal is to ship games, period.
But boy did I get bogged down in Godot nonsense at the start of this project. In particular I:
- Wasted a ton of time trying to figure out how to add a parallax effect that would automatically repeat vertically, instead of just copy-pasting some assets (I didn’t use the parallax at all).
- Spent an hour failing to convince Godot’s autotiler to accept non-45-degree hitboxes (eventually I realized I could just make a few generic “slope” assets and copy-paste them).
- Spent so much time, both with Sisyphus and Platris, trying to make giant Godot control-node hierarchies to make my layouts do what I wanted. Eventually I realized that since I was working with a fixed resolution I could just…hardcode everything and it would be fine.
why was i wrestling with this structure on day 2
The worst part is that I did all of this very early in the game’s development. The whole game could have changed! I might have thrown it out! As a long-time software engineer it’s hard for me to not worry about doing things the “right” way, where right is like “clean and idiomatic and reusable and blah blah blah.” And that’s probably a good instinct to have. But the right thing right now is the thing that puts pixels on the screen and lets me move on with my day.
Bad: Balancing Un-Holistically (is there a word for this?)
Like I said, my biggest goal with Sisyphus was to create a nice smooth progression system. But at the start of the game I failed to think about that goal holistically. There are a bunch of things that feed into how progression feels:
- How far you hit the boulder impacts how much currency you get - you can balance that.
- The strength of upgrades you can buy impact how far you can hit the boulder - you can balance that too.
- Oh, but upgrades have a cost, so we need to factor that in too somewhere.
- Oh wait and there are achievements and they give you free money! So we’ve gotta balance those too.
I spent a lot of time tweaking “how much money you get for a given launch” pretty early on. But I hadn’t even added achievements yet, and I had only added a few upgrades. So the balancing I did there didn’t make a whole lot of sense. It would have been better for me to simply give myself infinite money, add all of the mechanics that I expected to have, and then gone back for a balance pass once I could consider everything at the same time.
Bad: I checked itch.io too often
Sisyphus did ok on itch! It made it to the top of the “recent popular web games” list, which made me feel really neat. For a while the day after the game launched my stats kept increasing and I got some comments and all of that made me feel really good. Which is great!
The absolute numbers are small but Sisyphus did better than my last game! This felt nice!
But man did I spend a bunch of time refreshing my analytics page and watching my stats. This is probably natural - before this year I had never really posted content like this on the internet; I’m pretty new to the feeling of strangers liking something I did. But both for the sake of my mental state (some games will not do well) and to avoid wasting time (I was so distracted the day after launch!) I’d like to be more conscious of this behavior in the future.
Most of this blog is about mistakes so I want to emphasize: I had a ton of fun making this and I’m pretty happy with the final product! I’ve lost a lot of time accidentally playing the game when I sit down to test something and I think that’s a good sign.
I’ll be back with another game soon - next up is the Ludum Dare game jam!
Unfortunately I couldn’t play all the launcher games that I remembered because flash is EOL’d and ruffle doesn’t work with all of them. But I did manage to play learn to fly, learn to fly 2, learn to fly 3 (briefly, before it crashed on me), burrito bison revenge, toss the turtle and maybe more. Listen, it was a lot of games, I didn’t take notes, I’m sorry. ↩
I originally encountered this framing via a blog from Ramit Sethi back in highschool. The blog doesn’t seem to be online anymore which is a shame because it left a big mark on me! The examples I recall him giving are “focus on eating less and exercising more and ignore macronutrient balance when you want to start losing weight” and “focus on spending less and paying down debt and not which tax-advantaged savings vehicle you should use when saving money.” ↩