Home Artists Posts Import Register

Content

Dev Blog - New stuff!

Good evening everyone! Last time we showed a bunch of rough sketches of new stuff that we are working on. We won’t have as much to show this week, but we can at least talk about some progress!


Crawler Mines

The Crawler Mines we talked about last week now have a 3D model and are rigged up in Blender ready to be animated. Which is where I am currently spending a lot of time on!

Crawler Mines will more often than not attack in large swarms and we do not want all Crawler Mines to share identical running cycles. To make a swarm look more intimidating, we are adding a buttload of death, walk and attack variations to ensure that you always see new animations in battle.

I’ve done some internal testing and while they are not presentable yet, I am confident that these enemies will be satisfying to kill. They will break in tiny pieces, they will cause chain reactions, they go flying as they explode and much more.

Here are some renders and animations. Mind you, some of these are work in progress.

Remember: Super WIP!


Plasma Rifle

Still in its concept art phase, but is now more developed. We still have to add proper texture and details onto the model but at least you can get a good idea of what the weapon will look like.


Mech

We showed this Mech last week. It is currently being modeled! Not much more to show for now unfortunately, but hopefully in 2 weeks! We are recording the entire process of its creation, so we will share a time-lapse when it’s done.


Burning Sprites

We have added the ability to burn enemies down. While we don’t have a flamethrower weapon, we do have other methods to light people on fire which I’m sure players will figure out once they get to play.

Silvia and I tag-teamed this one. I made a reference animation using Blender which was essentially just a silhouette or an Alien Model pretending to be on fire. I rendered 9 angles of this animation and sent them over to Silvia. She painted on top of it to make it look like they were burning. This is a fully 9-angled sprite similar to the one that is done in Blood, except more ‘cartoony’ looking to fit within our art style.

On top of that, additional particle and smoke effects are spawned in-game to make the effect more convincing. I’m happy with how they turned out! The only thing missing are the screaming of a burning character. Oh boy, I can’t wait to ask our VA to pretend to be on fire. That will be fun (and difficult).



Selective Biliniear Filtering

Bilinear filtering is one of the most basic features supported by early 3D hardware that is still used to this day.  As everyone probably knows, GZDoom supports bilinear filtering. But if you are like me, and I feel the majority of doom players, using it for low resolution textures just looks terrible. That's why we all turn it off after downloading GZDoom.


From HandWiki:

"Bilinear filtering is a texture filtering method used to smooth textures when displayed larger or smaller than they actually are.

Most of the time, when drawing a textured shape on the screen, the texture is not displayed exactly as it is stored, without any distortion. Because of this, most pixels will end up needing to use a point on the texture that is "between" texels"

So, we know it makes our sprites and wall textures look like crap, so why do we want it? We want to use it for the UI!

Selaco is aiming to have a more modern UI experience that looks good on a variety of monitors and at different resolutions. Ideally we would want to be able to play the game from classic early-PC resolutions like 800x600 and go all the way up to 4K and beyond. At present our target display resolution is 1920x1080 as it is the most common screen resolution by far,  and most of the UI experience is designed with that in mind.

To make the game support lower and higher resolutions than expected, we can reuse the same graphics made for 1920x1080 and move them around a bit, but at some point it becomes necessary to start scaling those graphics up or down in order to fit everything into the screen. If we don't use some sort of filtering, scaling the HUD or Menu graphics will start looking terrible.

This is where we run into problems with GZDoom. The engine does NOT support selective filtering. You either turn it on for EVERYTHING or nothing. The same filtering, or in terms of how the engine actually communicates with the hardware the same sampling method is used for everything that is drawn on screen. So we can't have our lovely low-resolution sprites and wall textures while also having scalable high resolution HUD and menu textures.  GZDoom seems to have been designed, in regards to the HUD and menus, to take very low resolution graphics and scale them UP only. Which looks fine with no filtering at very specific scale intervals, but that's not how we want to do it.


The Fix

We have resisted actually modifying GZDoom itself for quite some time, but to solve this filtering problem it became necessary. It turns out it was actually pretty easy to add support for selective bilinear filtering when drawing 2D images in GZDoom.

GZDoom defines a number of texture samplers for OpenGL, OpenGLES and Vulkan that tell the texture drawing operations how to sample the texture as it is being drawn on screen.

(Sampling at its most basic level is just the method that the video card uses to determine what pixel from a texture (or "Texel") is to be assigned to a pixel on screen, or it's corresponding Fragment in the shader. With bilinear filtering (or the more advanced trilinear and anisotropic versions) the sampler will interpolate data between texels to come up with the final color for the fragment. However with point sampling (essentially the same thing as "no filter") when the image on screen ends up being larger or smaller than the source image, each pixel on screen ends up with the closest corresponding texel color with no smooth transition between them.)

All we had to do was define one additional sampler that always has bilinear turned on, and provide a flag to all drawing operations available to ZScript that tells you whether or not to use this new sampler or the existing ones based on user preference. The benefit is that now we can properly scale various UI elements on screen to fit the resolution without terrible artifacting. This is most noticeable when scaling the image DOWN, as small downscales with no filtering look significantly worse than the equivalent amount of upscaling with no filtering.


Before (Scaling down to 720p in current Pre-Demo build)

This is pixelated and not a pleasant look.


After (Scaling down to 720p in our current Development Build (hits the Pre-demo soon!))

As you can see there is a lot of improvement, however some small elements still don't scale down very well and that will be fixed eventually. You can see the poor scaling with the text on the Datapad count at the bottom left and the text in general. Some work is going to be done to make certain elements more readable and more scalable in time, but you can see how much the addition of bilinear filtering has improved the quality of scaling the UI.


Level Design

Still going strong. Level 3 (Starlight) is a long one and I’m currently working on the second sub-level of this area, called ‘The Factory’. It’s a large and interconnected map that is struggling to maintain a steady supply of power. It’s dark and you will have to rely on your flashlight in order to see clearly, which the Crawler Mines are not quite fond of.

I'm very excited for this map! I haven't done a dark atmospheric level in a while so this is a breathe of fresh air. It sort of feels like I'm mapping for Ominous again, which was how the project was called a few years ago when the focus was on being a horror experience.


Conclusion

Another productive 2-weeks! Hopefully with a bit of luck we have a full 3D model of the Plasma Rifle to show in the next blog post. Silvia is wrapping up the concept art then it will be sent to our 3D artist right away. On top of that, the Patreon Demo is shaping up very well and we’re still on track for a demo launch in Q1 2022.

We hope to see you again in our next blog post!

Comments

Anonymous

Excited for The Factory and crawlers look fun!

Anonymous

eugh <3