Hello everyone! And welcome to one week past the Month in Review! This is Gaian, and I’ll be happy to catch you up on everything that has been going on this October 2024.
Lets get to it!
I Finalized My Feature Expansion Goal!
Items and Equips got a huge spruce up. I tackled unequipping, displaying stats, clarifying the Inventory, Equips, and Character menu’s. I fixed and fussed over ranged item use, got some combat animations set up with the programmatic events that allow things like hitboxes and character movement and comboing. It was great.
Part of the UI update included adding in the Stats Display to Character and Equips. You can now see what gear will do to your stats, including the nice positive and negative changes that come by changing your equips to something else. It makes the stats system far more tangible and finally begins to allow the game to offer the give and take of stats that have already been in the game since forever!
I got scaling damage calculations in!
I GOT SCALING DAMAGE IN!
I thought I had it already but lo and behold as I was attacking a test enemy with a weapon that had less damage than the equipment provided in armour and I did 0 damage. That is an absolute no-go when working with action combat. Even the lowest level and weakest enemy, or player, should be able to do SOMETHING against another enemy or boss.
This sent me down a rabbit hole around a concept called “Effective Health”, which is the reduction of health numbers and damage numbers into “number of hits to kill”. It doesn’t matter if you have one million health and the attack does one hundred-thousand. The outcome is 10 hits to kill. Where “effective” comes in, is if you reduce the damage by 50% it takes 20 hits to kill, changing the concept of the health to 2 million “effective health”. It’s a bit weird of a concept but it allows for a homogenization of understanding around Health, Damage, and armour and lets you design interesting stat combinations that still adhere to an enjoyable combat experience. You could have an enemy with 10 HP and a billion armour, which would make your attacks feel scarily weak, say 1 dmg, but you’d still take 10 hits to kill the enemy like the previous million to hundred-thousand example. The only difference is the players perception of strength against the enemy. It’s a very interesting designerly concept, I even made a calculator in the dev window.
I recovered and built up Lock-On! It was something I had thought I lost, but I found where it was last, digging through the game systems. I brought it up to a far more “players expect a bare level of functionality” level, including displaying target health when locked on, changing targets with left and right lockon inputs, distance breaking, and line of sight blocking lockons that would otherwise be through floors or walls. It is FAR more usable.
Feature Expanion Done! Entering World Building.
As I entered my world building stage of effort to prop up Awakened Guardian with my current level of development skill and understanding I started to take stock of everything going on with building up and contextualizing the game experience. This included the call to action in the progression of the gameplay and narrative; using generative means to accomplish as much as I can to alleviate burden on game design; and working towards building a greater world to play within.
The first major task I took on was upgrading my item placements, which for placeholder/prototyping purposes were all manually placed. I had already built a generative means of placing my items along with my vegetation instancing and placement system, but it was in the carcas of a later AG project version that I moved away from. This allows me to set up biomes that can create items and resources for gameplay without me needing to manually set up everything, it allows more random and placements of item points, and gives me a huge upgrade in how much time and effort I need to edit and re-edit my terrains and environments. It was a great start, but then I realized basically nothing about the game was deterministic. Deterministic, meaning that the random from the start of the game will have the same outcomes no matter when or where you start the game. This is what random gen games with a “seed” value use to make that seed output the same random game no matter who starts it.
Determined for Determinism.
The lack of Determinism within my generative and gameplay systems sent me down another rabbit hole into upgrading and building an entire Load/Save Game menu system, including a “Timeline Name” that I use as the game seed for generating the experience therein. This stirred up so many old and new issues all around loading, saving, and otherwise handling starting the game software, starting, and loading the game therein, and starting new games on demand.
That was only the tip of the iceberg. The need to better control how generation happens led me into a heavy duty world generation procedure upgrade.
We now have procedural resource placements! Deterministic character names, fur colours, region seeds, item spawning, new generations, and game loading.
Next in the World Building tasklist was making me able to create bigger worlds than my hub region “Mothers Dream”, which is fairly small for a terrain environment. One of the biggest hurdles was in generating the NavMesh, the system that allows AI characters the ability to naviage the world without walking into trees and walls and rocks and things.
I started making headway but found I needed to upgrade my pathfinding tool. Oh no, now I need to update the engine version I’m using. Oh no, now this means I have to update a bunch of other tools I use in the project. Oh no, now this update has bricked my graphics settings and rendering details…
This was a MASSIVE ordeal upgrading things. I eventually got it in and working.
But now, I revamped how I use Nav Mesh, into something way simpler and more capable of generating for large maps! This was a great start at clearing the barriers around creating a broader world to experience and making for more adventure and survival throughout the future game.
I was able to take my environment size from 256×256 to 1024×1024 meters. That’s 16 times more space!
So I finally started a brand new region and an incredible slew of studies therein.
I started with randomized biome placement and randomized road placement.
Due to the biomes in the region being variable I began experimenting with biome ground texturing, to make the biomes paint their own terrain when they are spawned, or not when absent.
The biome transitions were far too stark, which drove me to explore intermediary biome types to make a gradually shifting, more organic, terrain and biome experience.
Now with somewhat of a plan of action for how I was going to vary up the environment I started figuring out what I was going to do about actually filling the world with content. Turns out there’s a lot of theory around open worlds, outposts, pacing between outposts, and even player mindset, paths, and strategies when engaging with an outpost area.
I started with a small Bandit camp to study the size and complexity of the site. It started WAY too small and simple. I wasn’t interested in going for say, a campfire with 3 guys around it. I wanted the place to feel adventurous, complex, and intriguing. So the outposts grew and grew, gaining more points of access, breaks to line of sight, elevation, and more. All to start making a basis I can build randomization into, through area formation, access/navigational puzzles, AI behaviour, and other variable details that can be used to mix up how a given site is experienced.
Considering the need for AI’s in these spaces I also studied navmesh generation quality and scale. Another reason my outpost grew and grew. When generating a large nav mesh, you’re basically looking to make it as big and general as possible. This is to reduce the granularity of the generation which causes MASSIVE load times. But because of that generalization small compact areas were being completely cut off, making the AI’s unable to traverse their entire outpost site.
As I explored all this world-building content I had to regularly take passes at optimizing for such a massive level. Simplifying the navmesh was one; but also the vegetation density of the biomes; LOD (level-of-detail) distance thresholds; and simplifying stock asset particles, and lighting. I also was trying to study the burden of AI systems. Animation, Pathfinding, and AI decision-making are things that start to bloat the game and slow down the framerate. So far things are pretty okay, though I don’t have hundreds of units at play yet.
During this time I did tons of item stack and item use fixes to make inv management easier and throwing and using weapons more smooth. They were just things that a user would only know when it’s not working intuitively, and would want just to ease things like managing such a limited inventory, using multiple stacks of the same ammo, or wanting to decide on which of the same weapon you want to use based on durability.
Tackling so much of my understanding around the content of the world, I started focusing my attention on populating that world with actors. Turns out having an empty world is a little boring and uneventful.
So I began a huge shift towards completing features to support eventual AIs.
Up till now, my Players targeting system was just based on some spheres around them. I had revamped the targeting system a few years ago but left it pretty underwhelming. I may have mentioned it in previous Months in Review, but I tidied it up and made it actually work to start. But now I expanded it to use my AI’s sensory systems. Using a frontal cone to detect targets in your vision, a radius for Hearing, and a radius for pure-sight “sense”.
Hot off the succesful evolution to those varied senses I started working out a sensory memory and difficulty to detect system to make the player, and AI’s “struggle” to see hidden and harder to detect targets. This was meant to make the world act more homogenous between the player and AI’s, and more like a simulation. You can’t see what you can’t see, and they can’t either. It works by obscuring the targets from the targeting system until an amount of time of looking at the target passes and you finally have it “enter your awareness”. With memory acting as the counterbalance to this, that you continue to be aware of the target for a while after they’ve left your sensory fields. There’s likely a LOT of additional work required to make this function precisely like it needs to, but it’s so far a geart start. My favourite effect from this system is that one can make secret interactables in the environment, say a secret wall switch, that you need to stop and look at for a good few seconds before it becomes clear and usable. This mirrors the mechanic found in Rogue where you use a turn to “inspect” your surroundings. Revealing hidden doors and things you otherwise would not be privvy to.
I quickly added a minimum stats req for detect, to make certain things absolutely require an amount of senses to see, and then started on conceptualizing modifiers to the “difficulty to detect” value that operates the whole system. I ended up getting one layer, of light increasing detectability, in, and have more planned out.
As part of the detectability feature I also began a prototype for crouching to eventually get stealth in. This has the fun side effect of creating narrow passages that can be traversed.
To enrich the world with more cause and effect I prototyped “Water type damage” to put out fires and torches. Yet another facet to better stealth.
With so much systems stuff going on for the past while I ended up breaking out to work out an indulgence I’d had stuck in my mind for a while. Making carryable objects able to cause damage when hitting a degree of velocity. This was because I REALLY wanted to be up on the roof of an outpost and toss a block onto an enemies head and just splat them. I got my wish. Along with that I added the ability to make certain body boxes immune, resistant, or vulnerable. Vulnerable being the key word here.
Now, along with owning enemies with crates and boulders and stuff, if you hit an enemy in the head with a rock, you also floor them. I can’t stop myself from laughing when an enemy just eats it when I conk them with a heavy rock. Ahahaha.
I’ve only just started tackling all the needs of my World Building pass, but things are going well. Up next?
While I’ve tackled a lot of necessary systems and studies, I still have a few more major ones, along with deepening and enriching the level building to actually work towards fun gameplay with narrative context.
On the systems docket is:
A spells system revamp to complete the range of combat features. I outlined a lot of what needs to be done so I simply need to program and test it. It should be a pretty sweet addition that will also enable the first drafts of boss enemies and more complex combat sequences!
I’ve already breached into it this November week but: A… I… dun dun dunnnn. I’ll be using GOAP (Goal Oriented Action Planning) to rebuild the AI system in a way that allows for a richer world experience. It’s still a long ways away but I hope to make a dynamic world through allowing Units and Creatures the means to satisfy needs like hunger, and riches or to support a subregion (an outpost) through collective awareness and shared objectives.
Lastly is a long forgotten system, Status Effects. The cherry on the combat, environmental interaction, and ecosystem cake. Status Effects will of course be things that can be added through melee, ranged, and spellcasting combat. But environmental hazards and triggers can also add things like wetness, oil-covered, or other confounding effects; and lastly, things like rainy weather, or intense sun, can cause global effects to all the beings in the area. All juicy additions to making the world rich and complex and unique to the present point in gameplay.
Thanks for reading so far into this, it’s been a long a heavy duty month of work, and I hope to continue to accomplish many big strides on the path to bringing together a first playable build of this new work!
Here’s to another month!