Welcome to our first milestone retrospective! These are intended as a look back at our previous milestone, and in the interest of transparency, talk in greater depth about the things that worked, the lessons learned from the things that didn't work, and the always important small victories.
We’ve covered a lot over the course of our Inside Chronicles of Elyria series, and just in case there remains any confusion for those who haven't been able to keep pace with our updates, we briefly wanted to start this retrospective by reiterating where we are in terms of development, and how we're moving forward toward the eventual release of Chronicles of Elyria.
CoE development is moving forward quickly and consistently with a core team. Currently there's 5 people on the project including myself as our sole engineer, our former Lead Designer (known as Snipehunter), our former Lead Technical Artist (known as Irreverent), our former Sound Engineer, and our former composer.
We've switched our milestone priority to focus on Domain, Settlement, & Land Management first, and are returning to adventuring mechanics afterwards. This allows us to focus on key areas that proved most engaging to our current backers, to ensure we've completed design decisions on some of the most unique selling points of CoE, and to spend our time moving the needle forward on CoE's development in a way that aligns best with our resources.
Kingdoms of Elyria, dating all the way back to 2016, has been advertised as a standalone user experience intended to test and validate the domain, settlement, and land management mechanics of Chronicles of Elyria. Beginning in 2017, KoE was retroactively added to the list of backer rewards available to anyone with an Elyrian Pledge Package or higher.
Kingdoms of Elyria, while still a tool for validating CoE's domain, settlement, and land management mechanics, and being freely available to all existing CoE backers, is also being released as a standalone title. This is being done to ensure a revenue stream for the studio that will enable us to complete Chronicles of Elyria without having to return to rewards-based crowdfunding. Additionally, KoE simultaneously expands the Elyria ecosystem and meets the demand for a new approach to the colony sim and grand strategy genres by introducing exciting MMO elements.
KoE will have an initial release, followed by 3 free updates. The initial release, named KoE: Settlements, will focus on colony sim mechanics. The first update, KoE: Domains, will expand Kingdoms of Elyria to include 4X and grand strategy mechanics by introducing travel between settlements and the ability to advance to governing a County, Duchy, or Kingdom. The second update, KoE: Online, will introduce the MMO servers, allowing people to continue to play offline, or join up to 5,000 other players on a server of their choosing. The final update, KoE: Legacies, will be available only to Chronicles of Elyria backers with titles of aristocracy or nobility, and will allow them to play simulated histories of their CoE server with the settlements and domains they've claimed.
Kingdoms of Elyria has been divided up into eight milestones, the roadmap of which has been revealed here. The eight milestones are being delivered to backers through four testing phases.
Barring any unforeseen circumstances, we want to provide you with a retrospective on our development progress roughly every 6 weeks. We’ll also be dissecting the good, the bad and the ugly with a format we’re calling our "KDA". Here's how we're going to be using the terms:
To begin with, our backend and the first two versions of our ECS (Entity Component System) were initially written in TypeScript using the Node.js platform. This was done in order to make rapid progress, leveraging the Node.js ecosystem and the many ready-made solutions to the challenges of a microservice architecture. We also used TypeScript for the vast majority of our gameplay code. However, in 2019 it became clear during our efforts to generate the four different worlds that while TypeScript/Node.js was horizontally scalable, it didn't scale as well vertically. It also became clear this was likely to lead to an overall more time-consuming development process, as well as more expensive server fees come launch.
So, one of the first goals of Milestone 1 was to put in place a new .NET-based platform and the third version of our ECS. This included porting existing gameplay code from CoE to .NET, including components and systems for things like character information, identities, inventory & equipment, & survival. This is going to be an incremental process but so far it's gone very smoothly. Performance is looking great, and the migration away from TypeScript to C# has, for us, rapidly sped up the development process. Likewise, the move from TypeScript to C# was one of the key ingredients to releasing an offline version of KoE in addition to the online game, as the gameplay code can now fit seamlessly in both the client or the server.
Speaking of which, another thing we killed it on was our choice to move to Unity for the Kingdoms of Elyria client. This was done for several reasons and we're super happy that we did. We're able take the vast majority of content created for CoE and move it into the KoE client without difficulty, and the game both looks and feels great so far.
The environment of KoE, while not as dense and lush as Chronicles of Elyria, not only remains true to the world of Elyria, but also matches the overall art style for CoE. We've made progress on the terrain, trees & underbrush, characters, creatures, equipment, and tools. One thing you'll note from screenshots and videos is that most buildings are placeholders. These temporary models allow us to interact with structures, without having to have the building solution in place yet. We'll be redoing the buildings in Milestone 3 when we focus on construction and the all important architecture tool.
One of the biggest risks we've taken with KoE is the player citizen and the ability in a colony sim to control a single character. While implementation of the player citizen is complete, it's one of the things we're most interested in getting feedback on, and is a major reason why we're putting out an alpha test as early as we are. We want to make sure it feels right.
One of the primary exit criteria of Milestone 1 was commanding your player character to hunt and gather resources for the purpose of survival. Our blog post last week provided plenty of details on resource gathering. As you've probably seen from our videos, you can command your player character to chop trees, pick berries, mine stone, and harvest herbs. Much of the animations on these are stand-in for the moment, but the implementations are complete and give us room to move onto Milestone 2, where the NPCs will not only gather resources, but feel compelled to do so in order to survive.
One of the challenges we faced in Milestone 1 was the fog of war. While a simple concept, the variation in terrain elevation as well as the ability to change the angle of the camera meant we couldn’t use common solutions. Instead, we needed a fully 3D, volumetric fog. We tested various approaches but when performance wasn't what we needed it to be, began R&D on our own solution. Having made solid progress with multiple algorithms, we’re still not entirely satisfied.
At the moment, the fog exposes objects and the environment based on where the settlement buildings and player character are, but when you move out of range the fog fully reforms, rather than leaving a semi-visible area behind. The goal is for areas previously exposed to continue to show trees and buildings as they were the last time you saw them, while not showing living creatures or citizens in that area. Ultimately, we weren't able to resolve the technical issues for fog of war that was due in Milestone 1, and have moved the remaining work into Milestone 2 to complete.
Another area we overcommitted on in Milestone 1 was pathfinding. When we set our exit criteria for Milestone 1 it included animal AI as well as implementation of the survival systems. However, both of these require, for best experience, functioning pathfinding on the server. Sadly, we failed to allocate enough time for implementing a new .NET pathfinding solution that would work in both our client and server. Once we realized this, we researched potential solutions and began implementation. It's not yet complete, so pathfinding will be completed in Milestone 2 along with the more robust animal AI we planned to do in Milestone 1.
The technical obstacles faced due to fog of war as well as the pathfinding will impact the schedule slightly. Firstly, we're now targeting May for the release of the first Alpha Test. Not only that, but with some things slipping from Milestone 1 to 2, that means Milestone 2 has grown in scope. However, conscious of not wishing to push back our first Alpha test too much, we've split the scope of Milestone 2 into two.
The first alpha test will now include all of the Milestone 1 work, including that which moved into Milestone 2, as well as the first half of the M2 work.
From there, we'll be releasing periodic updates to the alpha testers so they can see the progress being made as we complete the second half of the Milestone 2 work.
While we weren't able to fully implement survival, we were able to get the core survival components in place, as well as the means to survive. In Milestone 2 we're going to be taking those and, with the completed pathfinding work, implement the full array of survival mechanics into KoE.
We also want to note that while virtually all of the UI is stand-in artwork for the moment, we did identify what the UI/UX for KoE was going to look like and where components were going to be located on screen. You can see some of that in the videos and screenshots as we implement the survival-related UI and notifications.
Finally, the biggest "assist" in Milestone 1 was on the topic of artificial intelligence. Chronicles of Elyria has always used an AI system driven by goals and needs, however prior implementations (and the one we initially began in Milestone 1), required the designers and engineers to strictly define which goals and needs should be considered at any point in time, as well as how the NPCs should achieve those goals. But, half-way through Milestone 1 we made the decision to scrap the current solution and move over to a more flexible, Goal-Oriented Action Planning (GOAP) solution. And, while we didn't introduce the action planner yet, saving that for the NPC AI in Milestone 2, we did implement player citizen command-handling as a fixed action-plan based solution. It works great! With some optimizations, we're excited by what this means for the NPC AI going forward and we're looking forward to diving into greater depth on this in a future blog.
In our next Inside Chronicles of Elyria video we’ll be taking a look at hunting and the latter half of gathering, which will conclude our Milestone 1 coverage.
On April 22nd we'll be posting our Milestone 2 Preview, where we look at what we'll be tackling next, what the exit criteria is, and what we expect to be available in the first playable Alpha Test of KoE.