(Here is Excelsior, if you just want to play it).

A piece of advice that I have heard a lot from friends in game dev (YouTube videos) about making games is that games are never finished; games are given up on. Especially when, like this project, you do every component of it (except the audio!) from scratch, there’s always that extra bit you could add, polish that last mechanic, rework that bit of art, etc., and before you know it you’ve never even made a build and the game jam ended three weeks ago…

I am here to say: that advice is totally wrong. My game is DONE! 100% finished. I am honestly really happy with it. It’s short and sweet, which was the goal, but there’s enough depth in the combinations of new abilities and upgrades, plus a few secrets scattered around the map, and a strong potential for some speedrunning. (While a speedrun would probably not take long to optimize, there are certainly some ways this game could be pushed to its limits that would be interesting to see–now that it’s up, maybe I’ll add a timer and a leaderboard just to see if anyone can beat my time…

Well, while I’m reopening the project, I did implement the moving platforms kind of lazily, and to prevent bugs I had to remove the ability to wall jump off them. While most players don’t even get the walljump ability or see moving platforms depending on their route and cards, it is an inconsistency that would probably only take a line or two of code to remove, so I’ll do that while I’m there…

And while I’m changing things, I don’t like how it is better to die and restart from the bottom than just climbing up the buildings again–it encourages restarting, and it seems like the optimal play would be to get the first two upgrade lines and then immediately die, just to collect them again. This is not an issue I am worried about for anyone’s first time playing, but it wouldn’t be a major change to the gameplay loop to respawn the lines when you get below them… or maybe I could add triple the lines, but never respawn them…

And here I am, two paragraphs later, never having ended my parenthesis. ).

I don’t write all this just to be silly. When I finished the movement controls (when I posted my last dev log), I felt fine about missing a few smaller platforming QoL features. My next project was (and still is) an improved codebase for a 2D platformer, and I was really only missing a subtle, hard to implement feature (edge detection, so Botsy doesn’t get caught on platforms by a pixel).

Two weeks after I decided I was okay to have a game without edge detection, after I had finished the art, music, sound and post processing, I decided I had to have edge detection, and I had to code it myself, which resulted in me spending probably 2 hours implementing it wildly, and another hour afterwards trying to fix the walljump, which broke as a result of the edge detection.

See how much Botsy moved on the right? That difference is what I spent probably 3 hours working on, when my game was already done. It was like 2 AM. I had thought I was going to put the game online at noon that day.

I’m happy that I have edge detection in my game, because clean and smooth mechanics and movements are very important to me. But it was unnecessarily difficult to implement so late in the project, for a few reasons. I couldn’t easily reference the size of my collider because there were so many different scales in my parent and children objects that I just threw on to make my art the right size. I doubt anyone who plays the game would have noticed either way–it’s playtime is honestly only a few minutes for most people, who don’t need to try out every upgrade or find every secret.

So that’s the main lesson I’ve learned from this project. It’s worth taking a long time with a game to feel proud of it, and I do feel proud of this game. But it is not my masterpiece. I should stick to my outlines more and focus on the stuff that matters!

That main lesson stands out, but lessons 2-100 are all small, detail oriented and still important. I feel so much more capable as a programmer now that I have spent so much time these last three weeks working on this game so much, and I am really excited to be able to start from scratch on something exciting. It’s genuinely exciting to feel and know that I am starting this new project with better practices and more efficiency.

Anyways! Today’s post is longer because I didn’t post last week–I was too embarrassed that I hadn’t finished the game yet. I did take a few days off, which slowed me down. But also, making a game is hard! It takes time, especially when I hadn’t been doing as much game dev in senior year. But it was worth the wait, because the game is now online!

I will definitely be changing some stuff for probably a few weeks, so leave any comments of changes you’d like to see! You can play Excelsior here. Phew.

Leave a comment