Home Artists Posts Import Register

Content


[WIP sketch]

Last week was all about wrapping stuff up, this week is all about looking forward and talking about what we are working on next! This blog post will be less heavy on the pictures and will be more about ideas we are going to explore.


DMR 3D Model

It is finished! Well, sort of. It ended up being a bit more chunky than we had anticipated, making it appear less like a semi-automatic weapon, so we’re going through with a very slight redesign to make it a bit thinner, adding a longer barrel while also making tweaks to how the first person view looks.

We felt like the side of the weapon was a little stale, so we made some sketches to come up with some more interesting visuals for the weapon.

I am very pleased with how the model turned out and I cannot wait to add this thing into the game. To be continued!


Plasma Rifle effects

We’re doing the final effects and animation pass for the Plasma Rifle. Take a look at what our muzzle flash currently looks like! 4 completely unique muzzle flashes each consisting of 4 different frames of animation.

[GIF is cropped to focus around the viewmodel. Muzzle flash may appear bigger than it really is]

I’m really happy with how this weapon is shaping up so far. Hopefully by the time we are done with it, it’s going to become a fan-favourite for some players.


Purchasable Lockboxes

[artwork WIP]

The credits you obtain in Selaco play a massive role in the game. The demo does not have a lot of that, mainly because we wanted to restrict the demo a little and not show our entire hand right from the get go.

One such feature that has recently been added are the purchasable Lockboxes often found in small security stations scattered throughout the world. An icon on a screen shows the price of a purchase as well as the contents inside the lockbox. Contents include grenades, tools, Sentry Guns, ammo, armour and a few other surprises. They are similar to Storage Cabinets, except are more focused around just giving consumables rather than permanent upgrades.


Exteriors


I cannot show much here yet, mainly because it’s super-duper work in progress. Most of the Selaco levels so far are focused around interiors since we lacked the resources to do a proper exterior scene. Now that is no longer the case, since we finally have proper pieces of concept art and the texture work for it exists. I started mapping an exterior section 2 weeks ago, a courtyard section that connects two wings of a Water Treatment plant.  I’m very pleased with the visuals so far, but man, there are some problems that we have to address.

For starters, performance. This was inevitable. Selaco’s visual aesthetic is mostly optimised for medium-scale interior sections so the moment we enter something larger, we have to look for clever solutions in order to maintain a steady framerate. The background buildings and the large dynamic light in the sky are two of my main concerns. Performance-wise, it runs fine, but there's a noticeable difference between interiors and exteriors which I prefer to minimise as much as possible.

We have solutions in mind which we are going to start working on real soon. One such solution is to get rid of sectors for the background. Sectors are playable terrain and it’s a significant waste of resources to use sectors for areas the player cannot reach. So instead, we will create buildings using Ultimate Doom Builder, then put them all in a cluster and export it as a 3D mesh. A mesh is far more performance efficient and allows us to cram hundreds of skyscrapers in the background with far less of a performance hit. Thankfully, general polygon count can be kept low, we do not need background buildings to be overly complex.

The other is very dependent on what the fine folks over at GZDoom are doing. Last year, it was announced that in December 2021, GZDoom would be getting a Static Light implementation. This would allow us to bake lights into the scene itself without having to rely on a very performant Dynamic Light. For things that don't move, like exterior lights, we can get a gigantic performance improvement since static lights are pretty much ‘free’ from a performance budget standpoint. Static Lights also allow for realistic shadows to be baked onto the geometry, something Dynamic Lights cannot do unless it touches a wall with nothing behind it.

Unfortunately, light baking has constantly been delayed and it takes very long for a commercially stable light baking system to appear for the engine. The truth is that these are significant changes to both Engine and Selaco, so before we commit to such a thing, we need to make sure it is actually going to happen and that the issues are going to be fixed. Eventually we reach a point where it is too late to be adding such a thing. Selaco has to release someday, but the introduction of Static Lights will take some development time to properly setup.

If a light baking solution takes too long, we will start looking into a different solution to make exteriors as performant as possible. But for now, we hope things are done within a reasonable timeframe!

We also want exteriors to really feel like exteriors. That means having fancy exterior effects to sell it better. Think about a wind system that changes depending on your location. Being indoors, standing near an open door that leads outside, should play a different sound effect since the wind is outside moving it's way to a small door. I have made something that does this and I cannot wait to tweak it further.

Another goal is rain. We want rain that feels realistic and believable. Standing underneath shelter should produce different sound effects compared to standing in the open. We also need rain to look detailed while also being very performance friendly. Cockatrice has a lot of ideas for this and we cannot wait to work on that soon!


Variations of existing enemies.

Before I explain this, it’s worth explaining how the Rifleman works.

Essentially, the Rifleman features a bunch of subclasses that each define the behavior of the soldier. For example, we have the RIFLEMAN_AGGRESSOR, which is far more likely to assault their target and try to get as close as possible, never letting go of the trigger. The RIFLEMAN_DEFENDER works the other way around and prefers to stay as far away from the player as possible and will not always be on the move. Sometimes, they will hold still and wait for you to reveal yourself. The RIFLEMAN_STRAFER is semi-aggressive and is the most likely to keep moving while taking shots at the player. I’m sure you get the idea! There’s a good amount of these that makes similar enemies feel more dynamic by adjusting how they behave. In a lot of games this would be considered a bad idea, since games should be 'easy' to predict in a lot of ways, but since Selaco is all about adapting and reading the enemy, we feel like it works with our combat encounters.

A lot of these subclasses are predefined by the level creator, but the option is there to randomise these subclasses by spawning the '<Name> Random' version of the enemy. On top of that, their likelihood of doing certain things is adjusted on the fly. An aggressor, for example, may become far less aggressive if its squad is being picked off.

Engineers (Shotgunners) were not as dynamic as the Rifleman and we figured it was time to address that. We do love their role in the enemy roster, since the Engineer can easily ruin the players plans if they are not careful enough, but they are a bit too ‘stiff’ and are often a bit too easy to predict. Partially because Engineers currently lack the sub-classes of the Rifleman. I am working on adding 2 new behaviour types for Engineers.

Engineer - Rusher

They will not stop at anything. The Rusher type will always push no matter how close they are to the player.

Engineer - Suppressor

Suppressors exist to suppress the player by spraying with the shotgun. They will never rush forward and prefer to stay at the same spot for as long as they can. If you stay behind cover often, the suppressor might force you to stay there unless they are dealt with or you see a window to leave.

Engineer - Balanced

Is a combination of Rusher and Regular. Rush when the player is far away, remains more stationary when close.

Engineer - Slug Shot

Almost an entirely different enemy type. These will only be for the final game. While the other Engineers each have orange-colored sprite, the Slug Shot will be bright yellow. Why? Because they are dangerous and have to stand out a little more!

This Engineer type fires one highly accurate projectile instead of a buckshot, at the cost of a slightly longer windup. It is one of the rare few enemies that have a projectile so fast that it could be considered a hitscan attack. Getting hit by a slug shot is devastating and might be powerful enough to kill you right away if you have no armour on higher difficulties.

Thankfully, these types of attacks are easy to read. Not only does this enemy type have a laser pointer attached to their shotgun, making it easy for you to figure out where the attack is coming from, they also have a louder-than-usual windup sound effect and a bigger flare compared to the Shotgunner.

Little side bonus, but I really hope to explore new voices sometime in the future. Currently all soldiers are voiced by the same actor, but it would be great to have a wider cast where every soldier gets a random voice assigned to them. Including females.


AI Strafing Improvements

This was a long time coming. In the current demo version, strafing AI would only consider collision with nearby objects before they would stop strafing and do something else, but completely ignored whether or not player line of sight was kept if they continued strafing. The result is that soldiers would often strafe behind a wall, losing track of their target entirely. There are occasions where this is better, but is often not ideal so I wanted to address this.

[Prototype of the Strafe Node system - Nodes will not be visible in the final game]

We’ve added a Strafe Node system that spawns a bunch of nodes into the direction of the strafing soldier. So if a soldier strafes to the left, the game uses math to figure out where the end destination of the strafe is, and spawns Strafe Nodes across the path.

Each Strafe Node does a number of checks to decide whether or not a strafe is considered ‘valid’. There’s a lot that goes into this but the most important one is ‘’Can this Strafe Node see the target of its master?”. If a Strafe Node cannot see the player, it most likely means that Line of Sight will be lost if the enemy continues strafing, so it might be best to stop there and come up with a new plan. In this case, the Strafe Node tells the soldier it is not a valid location.

There are more checks happening here, of course. If the soldier is low on ammo, it is probably a much better idea to keep strafing so Line of Sight is lost, then reload once line of sight is broken before heading back into the fray. Health is also considered. A target low on health is far more careful and less aggressive, making it desirable to occasionally try and lose line of sight in order to reach a different location.

With Selaco’s intention to make AI feel more dynamic and unpredictable, there will be random cases where this rule is completely ignored. This is by design to put an emphasis on the cat and mouse game that we are often aiming for, forcing the soldier to lose the target and relocate elsewhere.


AI - Altitude Correction

In the current demo, flying enemies always felt rather stiff. This is due to the fact that they weren’t doing much to adjust their height levels. They were basically generic enemies without gravity and an enormous ‘step height’ (this defines how high a surface may be before allowing an enemy to go over it. This is low for soldiers so they cannot get on top of surfaces that are higher than them) to allow them to ‘cheat’ and reach every type of surface.

Now, they actively check for the position of their target and the area around them. If there is plenty of space between floor and ceiling, the enemy will frequently adjust their positions so they are no longer constantly on the same height level.


AI Modules

Another change to the AI that is still being worked on, is breaking everything up into separate modules that each AI can inherit. It is well known by this point that Selaco has been worked on for many years, and a lot of the AI behaviour was kept in one single class with far too many functions and blobs of Spaghetti that has evolved more and more over the years. Now that we are working on expanding the roster, it is becoming increasingly difficult to work with. A flying enemy, for example, should not use the same AI features as a regular soldier.

I am currently breaking everything down into separate components. Then once a new enemy type is created, the designers can choose between a wide range of different modules that make up the behaviour of the enemy type. AI_STRAFENODES is one of them; want the soldier to strafe from time to time? Add this module to the AI and they will pick up on it right away, provided you have the animations and the behaviour specified in the class. Same applies for AI_ALTITUDECORRECTION. Have a flying enemy and you want them to appear less stiff? Add this and it will pick up on it right away.


Conclusion

Work continues! I think, currently, there is more stuff being worked on than ever before. Sorry that we cannot show everything! As mentioned numerous times before, we cannot show everything we are working on. Some enemy types are kept under wraps, as well as most of the environmental designs for levels.

Thank you all so much for your continuous support!

Comments

MSM

These are some really cool developments! Keep going! I especially you can realize exterior levels with still acceptable performance.

Anonymous

This game is going to be so goddamn cool, I swear.