Results are in. The overall I did expect, graphics probably so, but I got surprised on the Originality.
For Premonition I had the fear of being too predictable if I went with the “In The Air Tonight” theme. This time, I went with “Superhot x Mirrors Edge”. The concept in general was actually pretty good, but the execution was so flawed it tanked the whole game. With good reason.
I have a game with 2.25 overall score, delivered raw, 3 seconds before the deadline. Have I done this in college, I would’ve been absolutely crushed. I’ve never delivered anything playable even.
But I feel proud.
And not because I applaud mediocrity. On the contrary. I made it to the finish line, despite having everything going sideways. I went here to do a skill check on myself, and I accomplished my goal. I did not play to win at all, and it’s ok. I am inching closer to having a playable game submission, and I know I have the chops to do the rest of the work pretty well.
I don’t want a perfect itch.io page. I want to claw myself into this industry whatever it takes, because this is the place I belong. And despite employers wanting a perfect candidate, I know there’s no perfect studio. Not that they’re hiring anyways. I will be part of the 0.1% that comes out alive from the grinder.
Thanks for everyone for their comments and honest feedback.
I’ll be back.
Hopefully, this time, with an actual game.
Now, back to the show:
Despite game development being more akin to a marathon, game jams are the 100m sprint version of that. You release your whole energy on a set amount of time, racing to the finish line. However, managing that energy (and all your resources for that matter) is key.
I think that uploading a submission 3 seconds before admissions close is, pretty much, something that sums up the whole experience. Crunching a game, being so close to giving up, and clutching a prototype three seconds before the clock strikes.
The idea was simple: Superhot but it’s an earthquake simulator. I made two severe mistakes on my last game: did not follow my instincts and compromised my idea for a worse one, and leave gameplay to the end. This time, the whole concept started at gameplay.
Pause was interpreted as a timestop mechanic: you freeze, time freezes.
The sounds stop as soon as you stop, and you had to figure out a way to escape the whole mess, and follow your intuition to know where to go. There were going to be light cues, it would become silent when you stopped and then noisy and chaotic when you started back up. It was an awesome concept! I was going to use my controller’s raycasting to do a Portal-like UI, where you pointed at things and text shows up. The game has some routines to change the gameplay depending on time of day or other date-related variables. I had all three wildcards: silence, UI inside game and advent calendar; all planned out.
Then also, I committed a new sin: using experimental self-built tools to build your game.
TL;DR: Just like my first game, I pushed Godot far enough that I ended up in uncharted territory. I have some of the steps documented, and I might do something about this. Are there better solutions? Yes. But I didn’t know them. Now I do.
I built the game using a fork of Godot 4.3 RadiantUwU/godot at refs/heads/radiant-fork that has some new experimental features for graphics, alongside some other new things I haven’t touched. Mainly, it implemented PR 79731 that was the main reason why I ran a custom self-compiled engine for Premonition. I wanted a specific vibe that the stable release did not let me produce. Because of this I went into a gigantic rabbit hole.
I spent a good couple days I could’ve spent doing an actual game because of a very stupid reason: I did not want the console to appear on the released games. On hindsight, it was a very very stupid thing to have hyperfocused on. The artifacts from that fork (or, the files you get from compiling it through GitHub actions) were working as intended.
It took me a couple hours exporting the release templates for Linux and Windows, not like I’ve done this before… but the game jam required all 3 platforms and/or web. I cannot do web because I write in C# (long story short: technical difficulties with Godot and .NET itself). And I run custom software. So I had to roll my own templates and editor. No issues, this was the intended choice after all.
But then everything went wrong. This is too long and deserves its own post.
Oh this one was horrible. This was my first attempt at rigid body physics, and also a completely different new map for what I’ve been working on. It had hills and slopes. This meant that I had to work more with collisions and new geometries.
This meant:
I got too confident with my boilerplate and the experience from Premonition. I thought I could aim higher, but honestly, I did expect the worst. Even that surpassed my expectations of how bad can it get.
But this is not the worst, oh no.
I thought that, if I had the ingredients ready, I could cook faster and deliver on time. Now, yeah this is true, but you also need to know that with new recipes come new cooking times. I was not ready for the cooking of a game where its toolchain wasn’t ready to go at the start.
I very clearly said on the Discord: folks test your game early and export it often. Yet I kind of didn’t hear my own advise. However, this did save me. More on that later.
The takeaway is that I needed to adjust my cooking times and know when to cut it off and deliver. I thought I knew but my own arrogance came hunting me back and kicking my own ass back in line.
The single biggest thing I learned (and that other game devs have told me) is to export often and early. Alongside using version control for your code, you need to make sure you can export an executable that’s playable. Maybe if you’re very lucky, playtest it. I test on prod so I don’t even playtest. If the big ones pull day one patches, why can’t I?
Two things: I did early tests and I found out that the templates on the fork were all debug templates. This is what led me to this rabbit hole on the first place and ended up in this horrible mess. However, I did know how these worked.
I did not test it often. I tested it the day of, and it would close on start. Turns out that, for some reason, I needed to check the Embed project exports on the dotnet side. The only way it ran, is that I also delivered the exact same libraries I built it from. On hindsight, sounds reasonable to static-link a game that was built on a custom toolchain to begin with.
At 4PM, without a working game, I was about to give up. Then my dad, of all people, told me “hey, having an imperfect game out is better than a perfect unreleased one.”
Hey that’s also the advise I give to other devs! Now I’ll do as I say!
I managed to implement the gameplay (falling rocks that hit you, and block the way to the lighthouse), a signalling system to make them turn on, and the code to switch environments at random. I also figured out the culling issues I had on Premonition, where light leaked through the 3D meshes. I had to click reverse culling in the shadows tab on the light settings.
This is why, despite having been 30+ hours awake in full crunch mode, I kept on going. Now, the best part, is the delivery.
I am writing this and my heart starts pumping back up. I have done this before so many times in college. Crunch culture is super common in design fields, including those far removed from gamedev. However, knowing how to deal with this pressure and have clear enough of a mind to execute the last ditch effort you planned from the start… that’s knowing how to clutch a probable disaster. I don’t like to light my own candle, but this is probably one of my best talents I can possibly show. I have worked under pressure my whole life. My heart can be at 180, but my mind is so clear and composed that I can manage these quickly developing disasters like nothing. Maybe this is why I like aviation so much.
Hyperfocusing on the wrong thing.
I had a lot of time. I had pretty much all the boilerplate I needed. I had the idea locked from the start. It could’ve been an easier ride. And I blew it because I was so hellbent on getting something the way I wanted, I got blindsighted onto a path that wasn’t feasible. I was hyperfocusing on the wrong thing.
I was doing this, whilst telling to myself: “hey this is the worst geometry I’ve ever done”.
Fucking it up with full knowledge of the situation is not an accident, it’s negligence.
I namedropped aviation up there, and they’re one of the best sources of wisdom for leadership, management and safety. I had a safety plan just in case, but I kind of walked myself into that situation. However, I did know how to recover. This saved me from not having something to have real third-party feedback to post-mortem at all.
I had 2 more days compared to the Brackeys Game Jam in September. I had the time to rebuild the whole thing for 4.3-stable. I didn’t. I stuck to an idea that wasn’t worth it at all. Looks don’t make a game. I had to skill check my gameplay knowledge. I screwed up that chance. I doubled down on the same mistakes I did.
I thought I knew. I don’t. I had to have a complete working prototype of the full gameplay idea in the end. Nobody would really care about the graphics anyway if the gameplay was interesting. I could’ve spent the time balancing the physics, the firing rate of the projectiles, the physics, the level design… the game itself. This is what a game jam is. And I am so scared to go into paths I am not familiar with, that I stick to what I know, and what my namesake is in the end: pretty graphics.
Again, fucking it up knowing about it is negligence. But doing it on purpose requires intent. And I did not have the intent of delivering a bad game. This is where I draw the line.
I knew the theory but didn’t have the practice.
And I am not afraid of saying that.
Failing to deliver a game is not worth of ridicule and public shaming. It’s a game jam. Again, I might be negligent but I didn’t have intent, therefore it is not a crime sort of say. I say to myself that I did this to push myself to the technical abilities of mine, I wanted to try something new, this was my first game doing this thing…
Yeah, sure, nice and all that. But this is not the important bit. The important bit is that _I actually did not leave this as a nice project file on my hard drive, but I have a body to autopsy, a body to post-mortem. I don’t feel bad or anything, in fact I am proud that I actually have two very imperfect games to showcase, that anyone can download and see where I come from. I don’t believe that anyone strikes gold first try, and if so, they’ll fuck it up later on in some way, shape or another. Because if I have something human inside this flesh vessel, is that I know how to screw it up, but I also know how to recover and maybe even learn from it.
I am doing the Pirate Software jam. In fact I did this because I wanted to warm up to that. I came out with so much more knowledge, experience and boilerplate, that I feel more than prepared for anything that comes.
I am actively working on Two Tribes, the RPG where you don’t have to fight anyone, but yourself. It’s the place where most of my heart and souls go after all. It is shaping up to be something insane, so check out my Bluesky at https://bsky.app/profile/framebuffer.xyz. I’m way more active there.
As I casually mentioned above, I release some of the tools I develop for Two Tribes or my game jams on GitHub and now on the official Godot Asset Library! I am doing many more as I go, and I even used the storefront addon myself and I was surprised about how easy and how well it worked. There are several C# assets that, honestly, they don’t even work or they screw up your .NET project/solution. This one is, quite literally, drag-and-drop. If you develop in .NET and you need a quick solution for your 3D games, check it out at https://github.com/Framebuffers/SharperFirstPersonController
Notice that I mentioned my controller, but it’s technically not there in Intuition. I did use it on that game… its twin that I developed, literally, 20h before as a last ditch effort. I kind of omitted this little fact: when I mentioned that I wasn’t giving up at 4pm… I also took another choice and fixed the game I was working on for 8 days.
The day before I developed a completely new game from scratch. It was more like Mirror’s Edge. It was a first person platformer. Same deal with the timestop and falling objects, same deal about reaching the top… but it was a completely different map and completely different gameplay flow.
That’s a story for another time.
I do this because, right now, this is my therapy through the worst days (honestly, year) of my life (yet). I don’t have a job (and haven’t been able to find one for 7 months), and programming is my passion. However, you can’t get a job doing this unless you have proven experience or you do things on your own. This is it, I guess.
I am on this weird catch-22 where I have the time to do this, but I need to spend time figuring out ways to make ends meet. I have the gear to stream (minus the PC but that’s no issue for me), but I am living on a place without any kind of privacy to talk while streaming, without having annoying noises in the background. And honestly, it goes without mention that mental health is a scarce resource these days. Less so if you’re neurospicy like me.
Here’s the deal: I’ll work a way around this if someone’s interested in me yapping about this. Maybe even interested in enabling me to pump out content! If you help me get there, specially with feedback on how to do it, despite it all; that’d be wonderful!
Yes I wanna make a living out of this, but I know the journey is long and arduous. But, like Petscop said…
Maybe we can investigate this together.
Thanks for reading <3
-frame
Did you like this post? Tell us
Leave a comment
Log in with your itch.io account to leave a comment.
I read through this entire thing, and it seems like you've learned quite a lot. I'd like to give you some of my thoughts in terms of a purely game design standpoint, if you'd like. If not, feel free to stop reading here.
Anyways:
I first want to commend you for custom building a game without much reliance on the Godot engine. I am still fairly new to game dev and I don't think I would have wanted to undergo something like this to be honest. I also empathize with you about the job search. I got laid off last November and I still haven't been able to find a software engineering job, so try not to beat yourself up over that. The market sucks, and to be honest, if you put your game dev stuff on your resume it will absolutely attract companies.
Here's where I'd like to give you feedback (and yes I know you went through all of the other stuff. Don't take this as me saying you should have done all of this for the game jam, just take this as if you hypothetically made a game to release in full):
Overall, the game's bones are there. I can see it being very stylized and intuitive. Pun intended! It's definitely a Herculean task to try and bring a grand concept to life when things will inevitably get in the way. It's also great that you are introspective of your abilities as a developer and are able to see some of the flaws that you encountered. I love that you are actively working to improve, and with that it will propel you to colossal heights.
Here's the 3M Design Document Template. I hope you find it useful! Cheers and good luck on the Pirate Software Jam.
Honestly, you said it all. Specially at the end, that’s the problem in a nutshell and how to fix it.
The 30 second rule. Swim or drown.
only one thing to clarify: I did the want to not use Godot. On the contrary, I want to take it to the next level.
Having said that, I have a surprise for January that just happens to challenge me go stock Godot and GDScript.
This is just getting started.