Development Update #18

Hello Citizens,

I feel like every development blog is taking longer and longer to come out, but lately, I’ve been using the leaks channel in discord to show all the new stuff that’s been worked on, plus with the amount of work I’ve done recently to get the game where it is now and preparing the playtest, the development blog had to be set aside to allow me to focus on the game and achieve results faster. 

This development blog is more on the technical side, but still has some visual candy, enjoy!

We felt it was time to change the logo due to the feedback we received from the community mentioning that the logo had some similarities with some pretty bad things, let’s just say, that would’ve likely given us a bad reputation and some articles in Kotaku, lol. The new logo is based on the Celtic knot, which symbolizes the three stages of life: life, death, and rebirth, which plays in part with the fact that every time a player dies, their consciousness gets transferred into a new clone.

Our previous server was located in US West but to provide a better experience for both US and European players, which is what our player base mostly consists of, we moved our server box to US East, which has provided better connectivity for most players in those regions, in the future we’ll be looking to expand into more servers, likely having a dynamic server system that switches between different regions depending on the time-zones which they’ll likely have more players.

The backend code on both in-game and GameSparks has received massive overhauls, drastically improving performance, lowering the API calls and removing most (around 99% success) of the saving and loading issues we had in previous play-tests, which was one of the main culprits in having to stop the play-test early as it affected pretty much everyone, especially non-US players. Sadly, we will still have some weird ongoing backend issues that will persist until we switch to our new custom system, that’s currently in development.

I’ve been getting sick of GameSparks lately and their paid service is too expensive for what it provides. There are better alternatives out there but I took the huge leap of developing our own backend system in Node.js. This won’t be coming anytime soon, but I’ve already laid out the blueprints, and the same person that built our donation system is creating it. Once this system goes live, it will drastically improve the backend performance and give us unlimited flexibility when it comes to backend features that we’d like to do, plus it will be extremely cost-effective in the long run as we won’t have to pay a monthly fee of $300 for Gamesparks live! Just the cost of the server that it’s hosted on and development, which is a lot cheaper in the long run.

Characters are now detached from the controller/player state and handled properly by the server, trying to leave the game without the server’s authorization will lead to the character staying in the world for 10 seconds before initializing the saving and cleanup sequence. This also means that you can no longer ALT+F4 and instantly wipe your character off the server. Sorry!

Like every other developer blog, there have been massive code refactoring and improvements. I can safely say that this has been likely one of the most productive ones as a lot of core systems have been improved drastically, but I won’t be going into details since that would more likely than not bore the hell out of you.

After countless profiling from previous play-tests, I noticed that one of the main culprits of the poor performance was due to the server’s CPU being bogged down by all the ticking going on with the characters and AI, which are the only things that tick frequently. I came up with a system that dynamically reduces the tick rate of the server’s version of these actors, every new instance of a character or an AI, it will dynamically make the tick rate slower, giving the server some breathing room to process all other requests. By adjusting the interpolation rates, you really won’t notice much the slowed ticking rate as the simulated version of the actor is still ticking every frame, but these are processed by the clients and not the server. A lot of technical jargon here, but let’s just say the server performance has been increased drastically, hence why we’re able to have a lot more players and AI in a server without much performance hits.

With every developer blog, comes a heap of bug fixes, this development cycle has been quite one of the most productive ones in terms of coding improvements and bug fixes, ever since the play-test went live, there has been a constant barrage of patches, fixing most of the reported issues in just a few hours. You can see in the discord the number of patches that get deployed weekly, the majority of bugs reported are fixed in a few days and the cycle will just keep going until we get to a point that things get really stable.

After months of wanting to implement the Unreal Engine 4 replication graph, I’ve finally taken the time to go over it, understand the dynamics, and implement it to the project. This is a new replication system that was designed to scale well with a large number of players and replicated actors, which is what Fortnite uses to run 100 player matches with 50,000 replicated actors. I won’t get into the details of this, but let’s just say it has drastically improved the networking on the game, cutting down the network traffic by quite a lot, which will allow us to increase player counts per server and have more things going on at the same time. We’ll likely be able to support more players per server than before, we already hit around 34 players, the new goal is 50 players, so I’m pretty excited to see how that plays out.

Apart from all the coding and network improvements, the game has been improved on the visual side. Most of the 3D models have around 3 LODs, including the player models and AI, and also have animation update rate optimizations which lower the frames of the animation when the model gets smaller on-screen, and in turn, causes the animations to look choppy at a distance, but it improves performance. Win!

Previously all transactions in-game were simply just adjusting the union credits, that has been reworked into a proper transactional system where it stores a transaction ID, what was the transaction for, and other bits of information which will be quite helpful shortly once we expand the economic systems of MR.

The contract system has received a massive overhaul! The previous system has been scrapped entirely and rebuilt from scratch. Different contract templates can have a wide assortment of contracts, which will allow players to create contracts shortly by selecting a template and then selecting what type of contract and how many steps to complete it, which all of it will be automated by the system once it’s running. Putting this system to the test, I have implemented daily contract randomization in the backend, where every 24 hours it randomizes contracts based on data, which is then retrieved by the game servers to generate a list of contracts for the players to complete. From the min, max amounts of steps to complete, to the objects needed to be done. This provides a reliable daily source of income for players and content to do when there’s no one around or you feel like going solo for the day.

We have a new product licensing system implemented, built on top of the PMOD items we originally used for production. After tons of feedback and multiple play-tests, we decided to switch to the production licensing system as the primary form of production. Instead of purchasing a PMOD item for every single production, you wanted to do, now you just purchase a timed license, which allows you to produce that item. We still haven’t scrapped the PMOD item system yet as it’s still in-game and now you get those from loot drops, these will allow you to produce items you don’t own a license to and also at a cheaper rate.

You can now purchase storage upgrades that last 2 IRL weeks, you can purchase 500 slots of these at 2,000 UC, up to a max of 10,000 slots per world. Handy for all those hoarders out there.

Storage transfers have been finally implemented after many requests from the community. You can now transfer items between worlds, the cost is calculated by the base price of production of the item and a static multiplier with the tax percent that the storage terminal owner has set. These items once transferred will end up in the temporary storage of the world that you sent them to, a new container in your storage that receives all item transfers and other items when you don’t have enough storage space, these items will expire after some time and will require paying a fee to retrieve them.

Serving as the Terran Union’s most recently colonized frontier world in 2160, Clia 5A48 has had little along the lines of development in its two years of construction. Established for its mining resources, Clia 5A48 has little to offer compared to most Terran Union colonies. Besides the mining facility, Clia 5A48 is equipped with low-grade industry equipment for production as well as a joint mess room and bar. Even though lacking in general infrastructure, Clia 5A48 retains luscious green scenery made up from numerous forests accompanied by numerous rivers and waterfalls. In order to travel to and from Clia 5A48, use The Quantum Gate to Getha as no other sustained travel routes have been established. Not long after the founding of the colony, the Terran Union has publicly called for settlers and works alike to seize the initiative to inhabit and develop the new world in order to enhance the value and viability of a potential vital colony for the ever expansion of the Terran Union.

With Cliea we wanted to add some much-needed contrast into the game to break away from the concrete and metal monotony of most worlds. Right now it’s in its very early stages, mostly serving as a temporary world for alien hunting and eco-ing with placeholder services and geometry.

Union City has received much-needed upgrades, mainly due to the old apartment buildings being too unoptimized because they aren’t game-ready assets. It will keep receiving a lot of overhauls and optimizations in the upcoming months, such as increasing the verticality, improving performance and adding more gameplay features to bring the city to life.

We will keep working on the road-map provided on the website and this should take us to alpha, which is a couple of months away. During this time, the game servers will be left online and the game will keep receiving weekly updates; from bug fixes, new features, and new worlds. Once we reach alpha, we’ll be planning out another funding move, be it a proper crowdfunding campaign, hitting up an investor/publisher, or something else, and also improving the donation system to include more rewards in every tier. I will keep doing my best as a solo developer, but at some point for the game to reach its goals, it will need big money to hire a development team and work this with a proper development pipeline to reach beta/full release, which is only a matter of time till we reach that stage.

Discuss this development update here:

Since April we’ve been running a play-test that has been quite successful, it has been quite the journey. So many bugs, crashes and balancing issues we had to endure, but after some time, it has been stabilized to the point that we’re having people playing it almost 24/7. Donations recently have been going through the roof and every week we’re seeing new players pop in and enjoying the current iteration to the point where it made me change my mind and leave the game running until further notice with no planned wipe until alpha, which is months away. The iterative loop of playing, discovering bugs, providing feedback, and taking action on those has proven lucrative to the game and the progress lately has been astonishing, the game has never been better and it will only keep getting better as we repeat this loop for months.

Some play-test footage below!