A Window into the Madness of Gamedev



So yesterday I implemented keyboard controls (will be in playable demo when I do the next build), it went VERY well, took a bit over an hour to get in and I had a substantial new feature that added a lot more to the game than I expected it would.

It went so well in fact that I asked myself, what the heck is taking this game so long!?

Sometimes you do work on your project and it builds your energy, it makes you feel empowered and that you're going to conquer the world and you get excited to return and do more work. Early days in a project always feel like this, you're fast and loose and enjoying big brush strokes, no concerned with edge cases, not concerned with polish, not worried about feedback, etc.

But then I went to fix a small bug with the system, when you leapt out of the water with keyboard controls unless you were constantly applying movement your fish would inevitably end up looking straight up. It felt very unnatural.

I believe this stemmed from several secondary systems interacting in bizarre ways. For one, the camera pans downward to show you the water surface, this is important because in order for platforming mechanics to work, the player need to be able to see hazards below them so they can artfully reenter the water.

The input system also has a dead zone, if you're below a certain threshold of movement, your fish no longer responds to where your input wants you to go. So if the fish falls due to gravity, and the last point the game thinks you want to look at is now far above you, it's going to feel very weird and not allow you to do belly flops very well (where you crash on your belly) the natural course of movement was to look upwards and not dive, nor flop, it was the least fun outcome.

So it took me a while to sorta figure this out, I'm still not 100% on it, but what I ended up implementing was a system that took into account if you were trying to move, and if not, it takes the forward vector of your fish, and uses that as your movement input. It's not perfect, but it's good enough.

While fixing this I had to decide, do I create unique logic (an edge case) specifically for keyboard controls to try to sort this issue, or is this something that I want to combine into the universal logic for out of water movement. Both avenues have pluses and minuses, if you implement a global solution that affects all inputs, then testing and iterating on the project becomes more cohesive, you don't get reports of issues and have to wonder "under what circumstances were they playing" and if an issue arises you know it's in the core code, not in some random offshoot you worked on months ago.

But adding weird new logic to fix isolated issues can often rot the overall health of your project, you can build on shoddy solutions to small problems and infect your project with bloat and lots of junk that impede future improvements.

So I went ahead and implemented the unique logic specifically to the keyboard controls. Very much a band aid solution, i'm not even 100% i fully understood the problem, it doesn't perfectly solve it, and I now have a bit of code in my game I'm not happy with, but it at least KINDA makes it better.

"Solving" this singular edge case took longer than implementing the entire system, it cost me creative energies rather than building on our ambitions, and it's now one other thing in the giant well of stuff that nags me about my project. My brain whispers "you  gotta figure out why this shit is all broken, simplify things, refactor the code, improve the logic so that moving forward none of this crap happens again".

If I listen to those voices all the time, I never finish the project, it's 25 years down the road and maybe I'm motionless in a gutter by then.

Point is, gamedev is really weird and there are no simple solutions, every day is filled with a myriad of judgement calls and ANYONE can be a critic, they could come in here and say this or that could have been done differently. They can point at the code they can point at the order of operations, they could neckbeard out and in any number of ways be captain hindsight.

Everyone's a damned critic. Funny thing about critics is they very rarely ever accomplished anything themselves, and if they did, they've have more perspective, they'd see the multifaceted problems from more angels and understand that flawed solutions are the only things we have.

There is more to gamedev than code standards and surface level cleanliness. Behind every blemish, bug, and edge case is a story of perseverance and hard fought gains towards a larger problem of creating a work of creativity and struggles against burnout and team conflicts.

I try to work every single damned day, as many hours as I can put myself through, when I'm not working, I think about the project. And even I when I open this forsaken thing wonder, WHY THE HECK IS IT TAKING ME SO DAMNED LONG!? Then I try to get something done and then I remember, "Oh yeah, this sh*t is f*cking HARD".

So before us neckbeards decide to cast that stone at someone putting their ass on the line, pushing themselves in this world of neckbeard jackasses craving their pound of flesh, maybe we can take a moment to think about the complexities of life and maybe ruminate on how utterly batshit crazy this world's gotten as we allow ourselves to give into our bloodthirsts and tribalisms year after year after year and remind yourself, creatives are rarely building a death machine designed to assault your delicate sensibilities. They're bleeding themselves dry trying to make you a fun little toy to enjoy.

LET'S CUT EACH OTHER SOME SLACK YOU F*CKING NECKBEARDS












































I fucking love Happy Gilmore. Supporting characters often don't get the credit they deserve. We, the audience, are driven by our lizard brains. We root for the main character, the character that the production has deemed has to be the victor, be the one we're designed to like, to hope gets the oscar. But in unseen ways, every single person on that set builds the work, and you may not realize it, but their performances are inherently tied to how you enjoy every other element of the production. 

We've lost sight of the fact that we're all supporting characters in this world, the way we rage at one each other in forums, the way we cut each other down and throw petty insults, and seek to humiliate and demean anyone we perceive as not being on our "team". It costs us nothing, we get that high of tearing down the enemy, we destroy all in our path leaving the victory pile of the refuse of society for ourselves alone.

It's all so fucking stupid. People need to grow the hell up. We need adults in the room more than ever. We've all been petty and vindictive and we've all dug these deep holes and it's shameful to admit we need help to get out, most are just intent and digging and digging in an attempt to look as though they know what they're doing and there's purpose to all this self destruction.

ANYWAY! Getting mighty preachy here for someone in their own damned cave. Got a decent amount of sleep finally! Feelin' pretty good! Still not chancing coffee, but think Imma get a bit more work done! Going to be focusing on getting enemies tuned up and exploring the best spawn arrangements and timings, it's about time.

Get SeaCrit

Leave a comment

Log in with itch.io to leave a comment.