Hey, hello there! This is yet another new entry in this truly wonderful weekly update blog! This week was quite big. There is a couple of new stuff so let's get right to it!

Pooling

First, I want to talk about a subtle upgrade. In the game, I'm using static factories to generate different game objects such as projectiles, props and entities among other things.

While this is quite handy (especially since you don't need to drag'n' drop any components at all), it wasn't really optimized.

Some object (especially projectiles) could frequently be instantiated and destroyed. For some objects this is fine but for others, it can really affect the FPS.

To fix this we need to use pools. These are essentially scalable stacks of the pre-instantiated game objects that are ready to use. Instead of destroying them we simply disable them and store them back into the pool, thus recycle the game object and avoiding a lot of overhead.

While on the surface this might seems odd it's actually really useful with short-lived and numerous objects. Pretty simple to integrate into my factories too! It works like a charm!

I've partially based my Pool system off this one if you're interested.

Spark Effect

Next, there's a new particle effect in the game. This one is quite AESTHETIC, so be warned.

Basically, it's a Memphis design effect that is supposed to represent some kind of collision.

The particles are also coloured accordingly to the colour palette too!

Right now these are used on any physical hit. However, I'm still trying to think about a better use case for them...

Here's a video showing them off:

New Enemy

Finally, I'm proud to say that there's now another new enemy in the game: the archer.

This enemy uses a bow to attack. It will try to keep its distance and instead try to attack at range. It will also try to trick the enemy to avoid being targeted by them too.

They also got a different behaviour that other, in which they will try to circle around their target and keep moving no matter what.

When they're near their target and has a clear sight of them, they will draw an arrow, pull their bow and launch it. It's a good idea to strike when they're pulling their bow as it's when they're the most vulnerable.

Like their sabre-wielding piers, they will also patrol around their room and be on the lookout for any enemies. They will also flee when weak and can be one-shot too!

Here's an encounter with an archer:

Minor Updates

Big refactor of the GUI. Replace duplicated code with inheritance. Optimized some GUI events. Fixed some oversight in some GUIs.

Added a cached state controller that can cache useful data that rarely changes.

Added individual limbs target to player characters Right now there isn't any damage multiplier on the player's limbs nor are the enemies try to target some. This might be an idea for later though.

Made the active arrow much more flexible Replace the unintuitive layer mask int to a LayerMask instance. It makes it so much better to edit these Made the arrow play the appropriate collision sound when colliding with objects.

Big code conventions refactor.

Added proper animation masks to my animated models

Made most behaviour tree controllers much more flexible Basically the same thing as the active arrow, which is replacing layer mask int to LayerMask instances. Fixed bugs with the hamburgers

Fixed some oversights in physic collisions between layers.

Next Week

I'm still not done with the archer enemy. It still needs a bit of balancing and bug fixing. I also need to perhaps complexify my behaviour tree a tad bit.

I'm slowly getting there at each iteration. It's quite interesting and all but working with behaviour tree requires a lot of conception and debugging too!

After I'm done with the archer, I'll probably add a gunner too. Afterwards, I'm gonna focus on the bosses. Of all entities these are probably the dumbest and also the buggiest, so that's up next.

And then there's the usual suspect (relics, capacities, items, rooms, etc.).

I sure hope that with the right type of enemies the game can get better exposure...

Only time will tell...