Posted October 02, 2023 by Rebel Paws
Prologue
Yo! During 2020's pandemic I dropped out of college for game design due to the school being very restrictive and classes being shabby such as "Mobile game development 101 and 201!" which for me I was doing that from semester 1 so not appealing for $20k.
Since then I've been dragging through the adult world and honestly it sucks, I miss college, I miss being surrounded by people who share the same dream as me as if it was an episode of One Piece.
I've started and dropped lots of solid games that I wanted to be commercial titles; life is hard.
But recently I've been getting back into jams and participating in the communities; and honestly it's brought back my passion for game dev. Not just wanting to make a commercial title and stop working at some day job I loath. But to create something cool and share it and try out other people's cool projects! So on that end I've had a lot of fun the past 2 jams I've worked on.
Starting out Mini
I watched the jam count down for days, but when it came I had no ideas what to do for it. At first I was gonna make a 2D platformer that drop you into a surreal dream and you'd have to rely on fortune to generate clear paths for you; and to gather enough of a fortune in dream shards to buy your freedom from a vending machine.
But I wanted to do 3D, everyone uses 2D in Godot; and then make fun of it because it has "really bad" 3D because it's not as heavily used yet. So I decided on 3D, but once I started doing the logistics of how much work would go into that to make it decent and how much time the jam had as well as I had. It wasn't adding up. My day job did do a number on what I could do, I was aiming for more enemies but it's a jam; we have a playable game and that's pretty golden.
I was again stuck at 0 then resorted to procrastinating on my phone and playing my comfort game "Lone Tower" since it's pretty much a stat game and I love numbers. I could spend hours trying different ways to boost my tower's stats faster and better.
But it sparked an idea, a solo-tower defense game!
I then setup a basic health bar and health system I could use on any object (I've been using this health system setup since LittleBigPlanet 2. It universally just works) then I got a spawn system going with a path loop that will pick a random position to drop an enemy on the outskirts of the map. And finally got the little monsters running at the tower and killing it!
At this point it was like 30 minutes or so into the project and I felt like my mind was in the God-Flow because things were just coming together so nicely.
Art Though Arting?
I remembered I used a cute toy-like asset pack for an old tower defense game like "Dungeon Defenders" prototype I made ages ago. And since I was getting into tower building I would need some assets to make sure things lined up.
Contractor on Site!
At this point I noticed I was slowing down, the juice in my brain was slowing up; which to quote J-Cole more or less:
"Now your motivation lookin' light cause the ADHD don't show up
Which unfortunately means the progress slow up"
I refused to slow up and got my brain back to work on the build mechanic. It was the last real mechanic I needed and with art in place; I needed it to get done. And that it did!
Once the build feature was set I needed to make the tower combat work. And it took some time, questions like "How do I handle this?", "Do I let each visual unit take a shot and deal damage? Is that broken?"; and so many more start to pop up. But I settled on if there's 5 archers being shown, you get 5 attacks. They do miss so it's not unfair; there's no hit-scans in the game. There was a lot of issues making arrows shoot generally straight and not shooting at dead enemies. But we made it.
2FPS is Fine Right?
At this point I think it was halfway or over halfway through the jam and my game was looking solid! I was impressed with myself and happy it was actually a game. I could make things, watch enemies get beat; and die. But then I noticed that there was an insane performance drop about 20 seconds into the game.
I grinded on this for 4 hours that morning before my day job which I'd be locked into for the entire day. Thankfully by being smart and pooling the objects I'd need at the game start, use smarter code; and re-use code more. As well as solve some mixed bag errors; the game was running great!
This chapter in the game journey had me sincerely concerned. I had used Godot's 3D before for bigger projects just fine, in fact I built a larger-scale tower defense game mixed with city builder and hack and slash game in Godot 3.2 for college. And while it was graphically underneath this project; it was a 3D game that had a lot more running.
But while I know that not everyone else does, and with the current Unity controversies that has left many talking up Unreal and Godot with a lot of people leaving Unity for them. Which is great people are finding engines they like more or are happy with in these times. But that also means that while Godot and Unreal have done nothing to hit against Unity just welcoming new users; people have been taking hits at them.
Fortunately for Unreal the only thing to hit at is it's bulky and their share of revenue; which is what I've seen. Godot is the passion project, community built and funded engine though. It's the lightweight in the ring of multi-million dollar engines. While it was my 3rd engine but first engine I really got into game dev with; it'll always be home. So I want to make sure I rep that home proudly. And if I couldn't resolve the performance issues...I couldn't release this to have people say "Godot...guess it can't hold up".
So it made this issue personal. And I am just glad to say I got the performance up. It's running smoothly and I'm happy about it.
The Final Moments
At this point I've done some work o the game before bed that night. I made the UI all 3D and fancy. Me and Evan were talking about the music and sounds. Things were good, so I crashed.
Woke up and the game was broken, I had to rebuild it which isn't as crazy as it sounds but it helped the game; but consumed a lot of time. I didn't have time to do anything else and pushed what I had to Evan for audio.
The game was still broken, after a lot of debugging over the phone while pacing around Lowes talking to customers; we figured out a quick-fix until I was home.
Now at this point he couldn't get Fmod's plugin to work with Godot 4.1.1 and we were considering rebuilding the game again in 4.0; thankfully when I got home at 9pm that night we were able to find a tucked away 4.1.1 build. Unfortunately this made some things he knew disappear and I knew nothing about the integration.
So we spent a while trying to get some of that working which we did. In the end we had a working game with dynamic audio.
Finally I tackled our tree issue. Trees are what kept crashing the game and making it unplayable....I just had to delete them then re-import. Which gave me the opportunity to redo the tree system so now there's only one tree scene that culls random trees at random.
And now we're here. So thank you to everyone who plays and reads this. This is my best jam game and I'm happy with the experience of it, and the best part of it was that it's not just my jam game; it's our jam game.