Progress 1
Devlog 1 for Skyland Kingdoms
I have been working on Skylands now for almost 23 months, however in that time many life events have happened, so in actual dev time I estimate I have spent around 9 months on the project. Most of that time has been on tech and core features.
Gameplay wise I have a very small part of the core game working, you are able to place 3 different buildings, resources are delivered and the building is built. Workers can be assigned to production jobs, builder jobs and hauler jobs, and the simple production chains work, consuming the resources, waiting, then producing the outputs.
(rest of this post becomes more tech heavy, if you have questions join my discord)
The game client has been made using Unity, despite some of its annoyances I can get the most done in the least amount of time with it compared to other engines, and building a custom simulation server engine was more than enough work. I have some basic art for the buildings, but the workers and island are still very basic.
The small bit of gameplay is powered by far too much tech. First, all buildings, resources, recipes (the game static data) is loaded from JSON files; this lets me quickly setup, tweak and change those values, and one day will hopefully power a large collection of mods. Visual assets are all loaded via Unity Addressables (a powerful way of loading unity assets via a name or ID), again this should easily allow new models for ‘anything’ in game.
The core game simulation is completely decoupled from Unity and client code, letting it run as a fast lightweight server, but I spent lots of time making it ‘embeddable’ within Unity to power single player modes and speed up development time (having to start and relaunch a server over and over again is very time consuming). I have reviewed and chosen a very nice, fast ECS system (see ARCH ECS) that powers my simulation and client.
Platform wise I am aiming for initially only supporting Windows builds, with Steam Deck/Linux soon after. An alpha mac build will also be available, but I won’t be able to fully support this just yet. Full Linux and Mac support will depend on you, if enough people request it I will make it happen. I would also really like Android and iOS support, most likely as a mini client, unable to host or play single player, but it will again depend on player interest.
Everything that is needed is networked. I have an implementation of what I’m calling ‘Curve Based Networking’ which is based on the networking from Planetary Annihilation (see The Tech of Planetary Annihilation: ChronoCam) which gives me lots of flexibility around syncing data while preventing cheating and letting me use a client server architecture. I have spent lots of time on code generation systems for the networking/synchronization systems, letting me get fast fast code at the cost of 100s of files.
Finally I have spent LOTS of time on automated tests. As a solo developer I simply cannot continuously retest parts of my game over and over and over, so I have built up a testing framework which again is completely separate from Unity, setting up my game server and world, all in memory and then simulating the game as fast as possible. I have around 50 tests now verifying different parts of my game simulation which have been invaluable catching bugs when I break something. I am still investigating ways to test the Unity client, which I believe will be worth doing but needs lots more time.
What does all this mean for you when playing? You can start the game, place a simple wood production chain, Woodcutter, Sawmill, which will produce Wooden Logs, Planks, Boards and Beams. You can assign workers, and productivity levels change accordingly. Not super interesting but the foundation is fairly solid.
That’s the current state of Skyland Kingdoms. Next up I will detail the development and release(s) plan for the next year or so and explain when you might be able to play something. Thanks again for reading, join my discord server if you want to discuss.