Happy new year, welcome to the very first month in review at the mark of the first quarter of this century.
What a time. What a month. (And a week… but who’s counting…)
Content time!
Continuing from last year it was time to get to work making some content! I am really eager to start working out some actual game with all these complex systems and feature’s I’ve been grilling over the past 4 months.
So I pop on, start chipping away at things. I add a section to the tutorial section to try and make the concept of the essences, the broken down elements of items, more clear and established as something to be able to think about any time throughout the game.
Awesome, next it’s time to actually begin the “call to action” for our hero. Without that the player doesn’t really have even a figment of a reason to actually get into things and play within the world.
I already spent a little time re-building the hub world, Mothers Dream, and I can finally make my very first cutscene to introduce you to everything going on.
Surprise! Damn… Of all the cinematic tools I have made, I have none of them. That all started from Del Lago and beyond. I can’t even do the most basic of actions like moving the player to a starting mark to enter from stage right. Nothing.
Okay… Okay…
Okay okay okay okay okay okay… Okay. I have wanted to bring awakened guardian up to speed with all the game tech I’ve done over the past few years, I guess now is the time.
Let’s just… Dump all of it on top of the game, that’ll work, right?
Hours and hours of fixing compile errors later I have a completely broken into pieces game, that doesn’t work at all! Yes!
This is good though. I get to cover all my old work, all my new work, and put together the single most comprehensive collection of my work to date: The framework that I’ve been trying to realize through many iterations now.
But turns out. Because I was making vastly simpler projects up till now, there were some huge gaps in performance that I needed to craft from scratch… While trying to make sense of two entire gameplay systems, and bringing it all together to remake the game as is… With no discernible changes…
So I began this upgrade journey.
The name of the game is generic, modular, and abstracted.
What does generic mean?
Generic is basically the opposite concept of the term “hard coded”. With hard coded programming you’ll make a variable called “ItemCollider1”, and if you need another one you’d make a SECOND variable called “ItemCollider2”. This restricts your functionality to very specific structures. (You can only have items with 2 colliders.)
Doing the same thing but in a generic fashion you’d make one single variable called “ItemColliders”, which is a list that you can put ANY number of colliders into, and simply handle them by processing them all. This allows you to have items with 1 collider, or 100. No matter what you build, this generic method can handle your needs. It’s a very powerful way of handling elements of your game systems.
What does abstracted mean?
Abstraction in programming is a concept where if you have a bunch of underlying functionality that a bunch of things use. Rather than duplicating the code over and over and over for each thing, you can instead make a common “class” that handles all that basic functionality, and then you make “child classes” that all take on that underlying functionality as a basic attribute of them, like how breathing is automatic.
The way you can look at this, relating to automatic human functions, is to think of like: A “mammal” is something that breathes, is warm blooded, has a digestive tract… has babies. And then “human child class”, does all the things mammals do, but also has career aspirations, knows numbers, lives in houses.
The unique one of a kind elements of the systems are made and used at surface level, but the common needs of all systems become abstracted into a lower level thing that is just always there.
Relating back to videogames, you can have “characters” which live, and move around, and have stats. But then you can have a “Bandit Character”, which wants treasure and will rob characters for it.
And lastly, Modular?
Nice and simple to understand, it’s breaking down things into small chunks that work on their own. Modules can be added and removed without causing much damage to the rest of the game. Or on more powerful terms, modules can be swapped around and combined in many ways to realize all sorts of variable elements in a game. Swap out a ground mover with an air mover and you turn a wolf into a bat.
So I stated tackling this massive beast.
It’s an upgrade, it’s a rebuild, it’s adding tech that I already built for other projects. It’s a real undertaking.
I upgraded the start up systems, my manager system, which creates a far more controllable start up. You can make any number of new “managers” and they’ll all be able to start up with the start up system, with the ordering necessary to make sure nothing breaks. It’s a great ‘start’.
Once I was finally able to get the game to start at all, I began rebuilding the guardian. With the new way the game starts up nothing was working out. Additionally, the units in the game were the objects of the most expansion in later iterations of my tools. I started with breaking apart my character monolith. It was one single component that had ALL the character functionality. Every mode of movement, rotation, damage, knockback, status effects, input processing… All hard coded. It was the opposite of good programming.
With that massive chunk broken down and strewn all over the floor I began restoring all the features, one step at a time.
I got our Guardian existing at all… That’s an important one.
Then I restored Inventory and equipment, and took a moment to make it more generic. Now gear can be equipped to custom defined slots for any game. I have 8 armour slots, and the sole “inHand” weapon slot for Awakened Guardian, but with this same system you could make 2 weapon slots for the common halo shooter style game, or the classic doom style of melee, pistol, machine gun, shotgun, rocket launcher, grenades, etc. Doesn’t matter because it’s generic!
Now that the Guardian was actually able to start up and initialize it’s internal systems, I got to restoring mobility. Moving, running, jumping. I got to realize in greater depth my “Movers” modular system. Different movement, running, rolling, jumping. All of them are individual “movers” that can be turned on and off based on gameplay needs. But now that they’re modular, you can easily access and edit any one movement feature. As well as mix and match to get all sorts of differing movement styles. Which again allows for changing out movement for any style of game, using current modules, or making new ones.
I brought together all the systems for the “Player Controller” the thing that represents us, and our controller input. Which plugs into any target unit and sends the input signals to the unit body to play out. This allows players or AI to take control of any target unit and simply pass input into it to make it work. Got the Camera Controller working for the player, taking all the camera functionality out of the units and instead directing it exclusively to the player.
I then restored Melee attacking. This was something that needed the inventory to exist first, which is why I tackled the inventory and equips so early on.
During that, I had a eureka about how to tackle input. Something I didn’t really have realized in previous versions of this framework. Tackled that as I migrated to the new unity input system. One of the many signs of how old Awaken Guardian was, because I migrated to the new input system with Del Lago Layover in 2022.
Surprise!
Now that I had tackled so much of this upgrade, and started to see the end on the horizon, in order to really optimize my work, I thought it would be best to break my ankle right outside my door at midnight. That’ll improve everything…
It was definitely a real ordeal. I’d never broken anything before and at first I had thought that I may have just sprained my ankle real badly. Despite hearing a loud set of cracks I can only describe as being movie level sound effects played over my life. The moment I got to emergency, every staff that looked at my ankle all said the same… That it’s probably definitely, a broken ankle.
Yup. I broke both sides of my ankle. Inner and outer. I would need surgery to put in a plate and screws. And 11 hours after breaking my ankle, I went home to wait for a booking to get that surgery.
Surprisingly, the whole ordeal was quite manageable, pain wise. I guess I can count myself lucky. More so than anything it was uncomfortable. Waiting in the waiting room for hours, not being able to move around to stretch out my achey body, struggling to get a good position while sleeping, and to navigate my house and take care of my needs.
So begins the wait for surgery.
Eventually, I could no longer delay doing more work. Aside from being cumbersome, my ankle was not causing me any trouble. I really want to see this stupid upgrade through. I was a bit naive when I initiated the upgrade thinking it’d only take like, two weeks. But now we’re hitting the month mark, and I’m starting to get uneasy. If I don’t just see this through it’s going to drag and drag and drag.
So I get back at it. I restore aiming and throwing. Then crouching. And finally, I began restoring ai in order to get lock on working.
Still waiting on booking that surgery and my temporary splint is starting to really become uncomfortable. I had all these crazy agitated pressure points from the tensor bandage, and the plastic splint things that made the aplint rigid had all these teeth jutting out to hold your lef in place. Well, that’s totally doable for a day while you wait in the hospital for surgery, but over 9 days it was starting to be worse than the broken ankle itself.
I am nearly through the entire character action portion of the system upgrade, so I try to just guts through and get everything up to speed. I restore the last menu cameras. Got AI working, I even fixed a long standing issue that had AI rolling over and over like crazy. I restored my crafting “interaction mini-games”. I actually made it through everything I can think of surrounding engaging and interacting with the game and world. You can now play the game again! I’m back in action!
From there I can get back to the sole reason I stated this upgrade in the first place: accessing my cinematic tools. What a long and arduous pit stop between all the work I’d accomplished in 2024 and finally returning to the first task of the year: Starting to work out some content.
In the nick of time I pulled the majority of the game systems back together right as I FINALLY get called back for surgery. Gotta get up at 5 am and head to the hospital. No certainty of how long I’ll be there or how I’ll be doing afterwards. Thankfully, the entire process of getting this surgery breezed by in a flash. I got into surgery by noon, wake up from the anesthetics pretty crisp and clear, had to wait 2 hours to be sure nothing was wrong, and got home by 3pm! And aside from some real tender points, my pain and discomfort level is not much different than I was pre-operation. I’m writing this Month in Review the day after all that. Easy peasy.
Back to the dev work talk.
Though I will basically just be resuming where the game was, functionally, before. It will not be without an immense amount of improvement and opportunity.
On the way, the movement system got a bunch of easing built in from previous projects. Making the character have a bit of slow down and speed up as you make drastic changes to input.
I upgraded the jump with a jump hold power curve. This allows far more granular control over exactly how a jump will feel. It’s how jetpack mechanics work in games.
I filled in all sorts of logic that was only lightly laid out in previous projects and created some brand new patterns for some of the systems, like how I proved input now.
I optimized systems that I reviewed, one of the best things was replacing as many update loops as I could with coroutines. Update loops on components happen every frame. So when you have, say, an item with 3 components that have update loops. When you have 7000 items in the map, you then have 21,000 update calls. If those updates are only checking for “if in attack cooldown” to do something, then 1 of the items in the map are actually being used for attacking, necessitating the updates running, while 6999 items are wasting 3 checks each every frame all the time.
If you instead start a coroutine upon attacking, which handles cooldown only when an item needs to cooldown, then you remove all those 21k updates. They are not needed, and clear out a massive chunk of wasted processing.
I massively simplified the aim functionality.
I implemented a long long long desired spinal flexion layer to the character animation.
I improved the save loading window with the save date data, and reorder the saves based on last save order. This also helps with testing older versions with newer versions of the project. As when you change how the saving is handled, previous versions of the game that try to load the new data fail catastrophically.
It was a prosperous expansion of systems along with implementing so many foundational patterns that bring awakened guardian to the most advanced and expandable state it has ever been in. It’s incredibly exciting.
While this will serve me building content out very soon, it’s also an immense boon to Genome Studios projects into the future. From this stage of the GS_Play Unity framework I can quite rapidly build any projects I may set out to create.
This also puts me in a great position to be able to collaborate with developers in the future where these modular systems can far better be digested, and expanded upon, with the knowledge that this will all be total improvement to the tech. Rather than, what I’ve been doing all of the end of last year, which was simply propping up, and fixing, old, poorly created, hard coded, monolithic, code and systems from 2022 and earlier.
In Conclusion
It’s been a very tumultuous month, full of surprises, and tangents. But I am really excited for where I am headed, and what I’ll be able to do into this year, and beyond. Even with a broken ankle to deal with.
I have near term, and mid term, plans and goals that I would like to build towards fast, and precisely. And hope to be able to share them in the coming months in review.
Thanks for coming along for this months journey. Here’s to a gainful and prosperous year, and more months, to review, to come!