First of all, this devlog is long overdue and happy new year! So, a lot has happened since the last article regarding the game both directly and indirectly. I am going to detail the concrete improvements I made to the in-house build and go over After the Collapse‘s release and development goals. As usual, and while I generally try to not over-promise, keep in mind that we’re still in a very early stage, as such it is subject to changes. Fair warning, its a meaty article to make up for the lack of activity in January.
In any case, happy reading 🙂
While I’m still using placeholder assets, I put a lot of attention on improving the rendering engine and game’s responsiveness. Also, I am taking extra care on making sure the underlying code is fool proof. While it makes for a slow and not so sexy beginning, having solid foundations will save time in the long run. That said, I still have a few nice improvements to showcase:
Until recently I was using a very basic and tile-based lightning system. While from a technical standpoint it was serviceable, it looked god-awful and was entirely CPU bound. I replaced that system by something much nicer to look at, using the Penumbra library. Light sources produce a visible halo while taking walls and other light stopping items into account. It’s easy to use, powerful and has a much better CPU/GPU usage ratio. It has some limitations, but nothing that is of much concern for a base building game.
Also it handles directional lights. It means that further down the line, I will be able to add torchlight or fixed spotlights for night time. Depending on how much I want to emphasize a “day vs night” type of gameplay, it’s a nice addition.
Sound and Music Support
For those who played my previous game, you’ll be happy to know it will work as expected this time. While I haven’t implemented directional sound just yet (only a volume change compared to the distance from camera), I can now associate sounds to specific actions, play music or trigger ambient noises pretty much as I want. It’s also running on a secondary thread so it won’t have any impact on the game’s performances.
Basically on that front, my main problem now is to actually find the dozen of relevant sound effects and edit them accordingly. Comparatively to Unending Galaxy where the sound layer was a problem from start to finish, we’re in a very good place.
I managed to put into the data files most of the behaviors related to how a settler is going to satisfy each individual need (food, sleep, and so on). For each particular need, we can set a particular behavior. Will the survivor look for a consumable or a specific map object first? If it’s an item, can the survivor use it right away or does he need to go to a specific location first? Does he get a mood penalty if said location isn’t available? For instance, I recently added the ability to produce and need to consume food. The survivor is asked to look for a meal in a storage zone (first, given there’s not magic food dispenser anyway). Then he’ll look for a dining room (a zone with tables and chairs). If he can find said dining room, he’ll go sit on a chair and consume his meal. If not, he’ll consume the food right away but suffer a temporary mood penalty.
It sounds like basic game base building game behavior, and it is. But it’s in the data, so it’s customizable without touching the code which is pretty nice for modders. Of course, I still have some cosmetic issues (multiple people using same bed/chair for instance) to address, but nothing major.
As I’m getting close to tackle combat versus hostile creatures/factions, I also added support for line of sight (LoS). In combat or patrol your survivors won’t be some kind of magical “all seeing eyes”. An enemy behind a hard wall won’t be visible to your survivors. I am also working on basic direct control (RTS style) for combat situations. But I am getting ahead of myself here. Combat will be the subject of its own article in the coming week. Automated combat is already working though, as it was the first thing implemented, but it’s still pretty basic. I will just note that we could get to something interesting mixing the previously explained dynamic lighting and LoS for out of base missions.
There are a bunch of other minor changes, but it’s not really article material, I’ll just note that I finally wrote a full survivor generator that will semi-randomly pick traits, jobs, stats, name and physical appearance. Meaning we now have 2 different systems, we can use premade survivors (mod in your friends and enemies!) and the more traditional randomly generated ones.
There are other areas I’m working on, but I’ll get to that in the following “design” section of this article.
I’m gradually adding the usual functions you’d usually find in a base building game like the ability to “destroy stuff for resource” and the ability to cancel building orders using the standard input method (lasso selection). However it led me to question why so many games have independent “mine”, “cut tree” and “destroy building” commands while they are effectively doing the exact same thing, wording aside. In some instances, I get it, if you have a cut grass and a cut tree for different purpose when both items are generally next to each other, it makes sense. However i still think they are overdoing it. At the moment I don’t feel the need for more than one or two different “destroy stuff for resources” commands. We’ll see.
Finally, the last improvement I’m proud of, while it won’t mean much to you, is that i greatly optimized the rendering engine. Before that pass (and depending on the zoom level) displaying the terrain itself (64×64 tiles) would use 30% of the rendering time, that number is down to 2% now. Simply put, I’m caching packs of 8×8 tiles together as textures instead of rendering each one individually. While I’m still technically drawing the exact same amount of pixels on screen, given how 3D cards work it’s way more efficient to do it that way. I’m only mentioning that because that system is saving so much time I will be able to add in the future more effects and animations that I wouldn’t have thought possible before (animated grass, smoke and so on).
Development-wise, I’ve started to write a semi-realistic sickness and health system. It’s mostly at the concept stage, but the general idea is having threats that are not limited to people shooting bullets at you. Its end goal is to be able to procedurally generate various sicknesses, or adverse effects from radiations, etc. with varying attack vectors, levels of effectiveness, and so on. What makes it interesting is that, in turn, medicine will end up being effective (at varying degrees) against multiple sicknesses of the same ‘strain’. That being said, it’s a long term goal. RIght now my main concerns are combat, procedural generation and the user interface. Subjects we’ll get over in the coming weeks.
Finally, with many crafting and base building games (like Rimworld) leaving EA in the recent/coming months, there’s some room for a new big base-building game. After the Collapse wasn’t initially planned to be a large, long term project, but it would be pretty short-sighted of me not to use that opportunity. As such, I am going to take a bit more time than anticipated to refine the game in-house before releasing it into early-access. It doesn’t mean you should expect a complete product from the get go, but I think it’s best to wait until more systems have been completed.