Finally another update! I've been working a H U G E project for my day job, one big enough that I actually have my own office now as a result of my success (I think?). That's caused a bit of slowdown (okay, a LOT of slowdown) to my normal update schedule but I also blame coder's block for that!
So, here's the simple format of the updates:
Implemented Responsive Decals
Implemented Transform Repository
Implemented Atmosphere Blocks
Implemented Atmosphere penalties
Implemented Gravity Blocks
Implemented Weapon Appearance
Implemented Weapon Limits
Implemented Weapon Pickups
Increased Plasma Caster Damage
Added SFX for Weapons hitting surfaces
Fixed some Beam Rifle effects not appearing properly
Changed how AI targets players and other AI
I noticed none of that stuff really does a lot for getting the game to a functional and playable state beyond perhaps the Team structure, but I promise a lot of it was very easy to implement and was necessary for the future of the game!
So, I'd like to describe the how and the why for some of this stuff.
First off: "Responsive decals? What's that?" I don't really know what it's called by, I have some environmental details (the cables hanging from the ceiling) and they react to the player's (and enemies) actions. These took me a while to implement as I had to create an entire new set of behaviors for their interaction but I pulled it off and it adds a good deal of character to the world.
Next, Transform Repository: This is an internal thing that's primarily meant for efficiency. Essentially, whenever an object was created in the game, it ran through some steps to generate "key frames" for its animations or transforms. This isn't a big deal for a handful of objects but when hundreds can be created per second, it can start to bog things down! The repository shifts all that processing over to a process at the loading of the game world which performs the task once for each permutation and is accessed later on. There's some other efficiency gains in the background that were made, primarily with collision skipping checks on non-dense objects waaaay earlier in the collision process.
Atmosphere and Gravity blocks are the fiery pipe and the giant metal block respectively. These are meant to block players from accessing areas unless they flip the right switches like in the video. With the right configuration, a simple task can become much more complex and when there's dangerous creatures wandering the Idaho, it makes things much trickier! Atmosphere penalties were finally implemented for the player as well. Without air in the current room, the player is unable to run or "super jump" as the rebreather in their suit kicks in and provides enough clean air to live, but not enough to do more serious activity.
Weapons now show up on the players' back as they're picked up and, well, you can pick them up! Weapons can now be found in the game world and picked up and swapped out as you please. By default, a single player can hold up to four weapons. The more players join the game, the less they have access to. This is to make single player slightly less painful compared to co-op play.
Finally, Teams. The teams system is a setup that I got together primarily for multiplayer but I realized I could use it to emulate factions for single-player and co-op. Enemies can now fight each other based on faction. Makes for a bit more interesting gameplay where you could pit enemies against one another!
There's some smaller details like fixing bugs and balancing some of the weapons (the Plasma Caster was horrendously underpowered) but that's the gist of it for now. It's a relatively big update compared to the last one but I've had a lot of time to put it together, even with the slow downs.
See you in the next one!