Post news RSS Chlog #2 Quests, Optimizations and Module

Quests and Main Quest Chain, Optimizations, Module system. Does the game have an ending?

Posted by on

Chlog #2

Quests and Main Quest Chain, Optimizations, Module system

This is the second article in a series of articles about updates. This time we are more focused on the plot, improving the quality and gameplay rather than on adding new visual content.

3 major changes:

  1. Quests and Main Quest Chain.
  2. Optimizations.
  3. Module system.

Quests and Main Quest Chain

Finally, we added very important RPG aspect – quests and main quest chain generated for each character individually.

When a player creates a character he also chooses various personality traits. Main purpose of them is to generate suitable storyline. When the character is created, he receives a chain consisting of 6 quests based on a character’s personality. This allows player to play for his character the way it should be. Many people are tired of playing for epic heroes and moreover in the worlds where everyone plays for epic heroes. And we give them the opportunity to try a new experience.

We added quests tab to check active quests. In these screenshots we show first quest from the main quest chain. It is rather simple, just get level 4. But next quests are much more difficult and the last is almost impossible. In the same time the reward becomes greater and greater. If character fully completes his main storyline he gets a big reward consisting of tens of thousands of experience points, fame, coins and mythos. However, only a very few will be able to cope with it.

Nevertheless, the main quests do not have to be done at all if a player doesn’t want. Character can do his own thing from the very beginning of the game. By the way, the best way is to complete them gradually, doing at the same time other tasks and gaining might for serious challenges.


We decided to heavily improve performance and overall quality before adding new content. And we are very satisfied with the result. Below are comparisons with the version from the last video (0.4).

RAM (Memory): Before optimization Client+Server with the highest settings consumed around 4.8 GB and consumption continued to grow over time because of memory leak. The main problem was the use of the physical library Bullet. We updated it and also fixed a lot of code, especially serverside. After that, physics part stopped leaving unnecessary garbage in memory. In addition, we optimized the game objects. Each of them had an independent copy of the properties. Now all common properties are stored separately. This greatly reduced memory space used by objects. In result, after these and other small fixes Client+Server with the highest settings settings occupies around 2.4 GB of RAM space. In other words, up to 50% less.

Networking: It cannot be accurately measured but for now server and client send each other ~40% less data. The most important thing is wrapping data into simple arrays without noticeable overhead instead of using complex ones. Server/client turns it into more complex collections only after receiving data. Secondly, unchangeable information is sent only once. Third, the farther dynamic object (like NPC or mushroom) from the character, the less often it is updated. Also we fixed different synchronization bugs so you will no longer see the sudden disappearance of a part of the forest.

Performance: Before optimization Client+Server with the highest settings consumed 60% of my CPU, FPS was around 20-30 on my PC. Server performance suffered from the dynamic objects and was about 10 updates per second. Updating Bullet physics, improving it usage and fixing memory leaks caused by it drastically improved client and mostly serverside performance. Server’s frequency of world updates has risen from 10 to 50 times per second. Also our voxel terrain is now grouped into the bigger parts and that makes game scene render faster. We also did that larger objects are seen farther than small objects so game doesn’t render barely visible objects. We improved environment generator, it no longer generates trees and other things located in each other. In result, CPU usage decreased from 60 to 40% and FPS increased from 20-35 to 40-60 with the highest settings (100-120+ with medium settings). There is still a lot of work but you can already feel the result.

Overall quality: I mentioned improved render distance and generation above. Another thing is the angle of an object after generation. Before that all objects were spawned perpendicular to the ground. Now the angle is determined depending on a type of object. No more weird trees.

Module system

At the beginning of development, we planned to make a game with a randomly generated world. It turned out that it completely kills RPG atmosphere and minimizes a lore of the game world. We decided to correct this misunderstanding and return to a concept similar to the D&D modules. Currently, we are working on our first one named Tirdar. We'll tell and show you more about it next time. The module is a part of the game world, but the action takes place in a certain territory, in which a too hot conflict flares up. Module has its memetic factions and characters. The characters can solve factions’ problems or simply don’t care about them too much and build own kingdoms or start an unforgettable adventure. The location will not be very large but detailed. So players will be interested to cooperate and fight for the richest regions. And, of course, vegetation and some other objects will still be generated a bit randomly but according to the region properties, be destructible and renewable as it was before. As a result, we hope to get a polygon full of events, actions, where there is a place not only for thoughtless war, but also for peaceful professions, intrigue and politics.

That's all for now. Thanks for reading. I hope you enjoyed it!

Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.