Home Artists Posts Import Register

Content

Good day, everyone,

It's been a fantastic couple of weeks for Selaco! I'm glad things have consistently improved after a dull period some time ago. And with only 5 months (oh god!) left on the clock, we can’t lose anymore time.

Just like the week before it, we’ve continued clearing out the remains of our backlog which, I must admit, has a lot of stuff in it that I’ve been postponing for months or even years. It's easy to push things aside when you have over a year left of dev time, but not so much when the release date is rapidly approaching. One such thing is the Mech that I’ll talk about later in the blog post.

We also finally got to work on actual mod support for the game. So, let's start with that!

Commencing Dev Blog #62!


Mod Support

We've begun working on Mod Support for Selaco! While we're still in the early stages of the process, the core foundation is fully intact and I dont think it will take much longer to finish.

Of course, being GZDoom, it's already moddable thanks to the open-source nature of the game. However, our goal is to streamline the process and integrate it more seamlessly within the game itself. While players can use external tools to assist them with mod management (such as ZDL for DOOM), I believe it's more ideal when all the necessary tools are integrated into the game from the get-go, without requiring players to download additional tools onto their computer.

Selaco's root directory will include a folder called 'Mods'. Upon downloading a mod, players can drag the files into the Mods folder, and these mods will automatically be enabled when the game launches.

If a player has at least one mod installed, the 'Mod Settings' menu becomes available in-game. Here, players can view a list of their installed mods and configure them according to their preferences.

Here is what it looks like!

Yes, these mods exist and will be available at launch!

The appearance of this menu is still a bit too busy to our liking, so expect some tweaks to be made in the release version.

Modders can include their username, a description, a header, and even a ReadMe so players can read up instructions in-game. These are plain-text files (.txt), so one of the purest form of art (ASCII art) is possible in GZDoom now.

We are actively working on Steam Workshop support too. While we can't directly integrate a Steam Workshop menu within the game itself, due to the GPL-License that GZDoom comes with, we're making it so that any mod you subscribe to will be sent straight to your Mods folder.

From the perspective of a modder, not much changes compared to DOOM. However, we will provide a text file in the Mods folder to explain some best practices for Selaco modding. For instance, we highly recommend modders include an ON/OFF button so their mod can be disabled at any time—either taking effect right away or after a level restart—without a saved game getting corrupted. With the game being open-source, we cannot mandate that, nor do we want to. But the best we can do is encourage modders to use it and avoid headaches for their players.


ACE Security

Last update in regards to the friendly NPC model. He’s rigged up and ready for use! Here he is with a heroic pose.


Mech

Up next, the Mech! We already have him rigged up, but nothing is animated yet so that’s on my to-do list before the year ends! Here are some pictures.

(The first 2 pictures have been shown in the past)


Rigged up! The lines allow us to move individual parts of his body.


To explain it a little better, you essentially pick up the pieces you want to animate, and start moving them. With all bones being connected, you end up moving different pieces of limbs automatically. When we have a pose we can use, we hit Render, and move to the next frame!

Here is quick demonstration:

Now, start posing every frame manually which make an animation when played in order, similar to claymation or stop motion, and render it out so it can be turned into a sprite. A traditional approach to modern animation involves using Frame Interpolation, which allows for smooth transitions between two frames. However, as Selaco uses sprites and draws inspiration from older video games, we intentionally avoid achieving a smooth look, as a 'perfect' animation tends to appear unnatural for sprites and can be too demanding because the computer has to load a large number of PNG’s files.

Our initial attempt involved using Frame Interpolation with applied frame skips during rendering to create a 'laggy' appearance similar to traditional DOOM-sprites. While this approach worked reasonably well, we felt it made the animation seem artificial, you could tell it originated from a smooth animation but got scaled back in post. It was also more likely to miss important details. For example, a frame skip could happen right at the moment a soldier inserted a magazine into his weapon. That's not a frame you want to miss when someone is reloading.

Instead, we now decide in advance how many animation frames we need based on guesswork (for example, we know the average walk cycle requires only 4 or 5 frames, while a death animation may require 10 or 13). We then manually pose each frame without using any tools to blend them together. This means that every single frame of animation is intended to be seen that way, and ensures all the important bits of visual information is always properly conveyed.

I had to dig deep to find this one, but here is the first animation we've ever made that we felt worked well within the game.  It has 4 frames and all of them are crucial.

The Mech will be used late in the game, but won't truly get to shine until we reach Chapter 2.

As enjoyable as it is, I've never animated a mech like this before! It’s one of the reasons I’ve been sitting on this one for so long. I always feel quite a lot of pressure when an artist finishes an asset that took a while to make, that I have to bring to life somehow.  After all the hours it took them to make such a thing, the last thing I want to do is send an animation video that feels borderline insulting toward their creation.

Time to do some research on mech movement and get it to work!


Armor System

There is a very dirty lie in our current Steam and Patreon demo. Something was so far down our to-do list back then that we had completely forgotten about it. Whoops.

This message here? It's a lie! You did not gain additional armor absorption when having more armor, and it did not absorb 50% of your incoming damage either.

I did implement such a system, but apparently DOOM's armor system worked a little differently than we thought, so our system didn't function as intended and behaved like Green Armor in Doom at all times. This is one of the downsides when working on top of a 'template' (despite most of that template no longer existing at this point).

The solution? We completely ditched the DOOM armor system and rewrote our own from scratch, entirely based around our game. We now have 'SelacoArmor,' which behaves a little differently.

When you have armor, there's a tiny label at the bottom that mentions (in real time) how much damage is currently being absorbed by your armor. In this case, damage will be reduced by 25%.


Pick up more armor, and the icon changes into something that looks stronger (having 75+ armor)

Armor now absorbs 50% of incoming damage, as indicated by the label below. Maintaining a high armor level will result in less damage being lost when taking hits, making it an important, though not essential, additional resource to manage. I expect experienced players to try and maintain 75+ armor as much as possible .

We are also planning to implement a system where, after you stop taking damage, a text label above the Armor HUD displays how much damage has been absorbed. For instance, imagine you're in a firefight, standing in the middle of a grenade explosion. That's a significant amount of damage you're taking! However, in many games, it's often unclear how effective your armor was in these types of situations. Did it save your life? How much health would you have lost without armor? Does armor even work against explosive damage? Armor tends to be a bit vague in video games, and we often take it for granted, knowing it protects our health but don't often bother looking into the inner workings.

Illustrated below is a mock-up. When the player stops taking damage, a label briefly appears, informing the player about the amount of health loss absorbed by the armor.

This will inform the player about just how effective their armor is, while also providing the satisfaction of knowing just how much damage was absorbed when taking a point blank shotgun shot to the face!

There we are 2 things we want to explore when we begin working on the second chapter. At this point, players should feel comfortable with the core mechanics of Selaco, so we can start introducing more advanced mechanics.


Enemy Armor System:

The plan is to implement a system where enemies can utilize SelacoArmor, but with different behavior. Enemies with armor will still take damage as usual, but they are less likely to stagger or take headshot damage. However, after taking enough damage, their armor can break, making them vulnerable. Kind of like the Brutes in Halo 3. 

Of course, this is nothing more than an idea right now, but we think there’s potential here. We just have to make sure the system doesn’t get too involved. We don't want players to, for example, constantly switch weapons just to deal with armored enemies. And we also have to make sure that shattering enemy armor is going to be satisfying and rewarding, rather than tedious.

We’ll see how it goes!


Upgradable Armor:

The Workbench is currently limited to just weapons, but we would love to expand upon this and allow for more customization. Not quite like an RPG where you keep upgrading things to become stronger, but rather allow players to make choices in regards to their playstyle. For example, an upgrade that increases bullet absorption at the expense of Dash/Slide effectiveness to complement slower playstyles. Or make armor absorb less damage but also make it last a little longer


Other updates:

  • Burger Flipper has been completed! Selaco now has a second in-universe game that you can play straight from your Datapad. Woohoo!
  • We’re in the process of drastically reducing VRAM usage. Will elaborate more in the next post when it’s ready. (UPDATE: One day after writing this, it has been implemented!)
  • Level 6-1a and Level 6-1b are finished. Currently doing internal tests.
  • A whole bunch of audio stacking issues have been fixed. For example, usually when firing a shotgun at an enemy, every single shotgun pellet would play an impact sound, often overloading the audio output. These have been fixed.
  • I promised to demonstrate the train, but unfortunately got sidetracked by other things that needed to be done. I promise I’ll show it in the next Developer blog!


Conclusion

I’ll squeeze in one more blog post before the year ends where I take a look at the year as a whole and evaluate how everything went, including accomplishments, mistakes, the state of the game, and more.

As usual, we are grateful for your support! <3

Happy Holidays!

Wesley de Waart

Comments

MSM

the mech looks great, good stuff!

Jesse Dolman

The often insane sense of detail that all somehow still benefits the game experience in a very real way never ceases to amaze me. Like the armor performance feedback. Good luck with the remainder of Chapter 1!