Introduction

Of Sprites, Caches and other stupid things. This couple of weeks I managed to get many new features on the road, but was also halted by many stupid things.

Development progress

24.7. - 1.8.

After adding the units for alpha, we noticed a couple of missing animations and sprites. We sent this to our animator/artists, NightRaven, who provided us with the missing assets, so we managed to get them in and ready for an alpha release.
Those sprites aren’t final sprites yet, some of the are work-in-progress art, some of them are placeholder art, so those can change drastically before or after the alpha release of the game. But it’s good to have them in.

During this implementation we also figured out that there were values missing from the loading progress (that is, attack values, range values, etc.) - so we had to go and dig through that, and rectify those values in the JSON file to have proper working gameplay.

2.8. - 11.8.

After adding the units, we managed to run into an issue: If we load all the sprites, etc. from the disk, and all of them are single sprites, we would require the player to use around 1.9G of memory, as all the units in all the player colors are being stored in memory as uncompressed objects. This, of course, is stupid. Theoretically we could put all units on one big sprite atlas and throw them into the game, and have the animations refer to the images. Then we would only need to generate this image once for every player.
Turns out the SetPixels() call to textures is also pretty slow, who would have thought.

As a workaround for the coloring of units, we are now using a file cache in the user directory to store colored units and cache them on disk where possible.
This leads to only taking a bit of time for the first time when loading the game, indicated by the loading screen that the cache is being built.
In the future we may ship an AssetBundle with the pre-generated units and buildings, but for now, the cache reduced the loading time from nearly 6 minutes, down to about 15 seconds, so we will roll with it for now. (We also did a couple of optimizations during the loading progress, like not recoloring the same texture X-times per animation)

Cache

To clarify: we will clean this up and probabbly use a big sprite atlas once the alpha is out, but for now we have get this show on the road, so, unpolished version it is for now.

Thanks to that we were also able to finally finish an entire round of the game from spawn over building units to attacking the enemy and winning, so for the near future we will focus on finishing and polishing the core game loop, so we could potentially throw out demo builds to fans very soon.

That also result in us finding out: we never mocked up our victory screen. For the time being I added some ‘developer graphics’, but I’m sure we’ll hear about this in the near future.

Victory

Upcoming planned next steps

Something something, eating my own words about coming back “regulary”. I’m not really regular at this point, I prefer to use the time on hand to plow through the mechanics, so irregular updates it is, at least until we are feature complete. You are always free to poke me in #devlog on our Discord tho!

Status Date Topic Sub-Topic Description
Done   LandCrisis Units Units ingame
Done   LandCrisis Org Unit/Building Caching
Done   LandCrisis Org Victory conditions
Work   LandCrisis Units “queue” mechanics
Work   LandCrisis Tech Unit “upgrades”
Work   LandCrisis Org fixing dev build bugs
Work   LandCrisis Org Rolling Builds (5)
Plan   LandCrisis Maps Import FoW implementation
Plan   LandCrisis Org Static playtest, alpha build

Closing statement

Feel free to hold my feet to the fire over on our Discord server - click here.
Also, if you want to see more in-depth dev screenshots or have any questions feel free to ping me in #devlog on Discord!

Stay safe, stay strong, keep your distance and I’ll keep you guys updated soon!

- KuhnChris