Jump to content
Sign in to follow this  

Observations from a systems engineer

Recommended Posts

As I have been playing this game for the past week, I have been wondering about the internal mechanics of the server engine. Obviously without the code I can't know what is going on , but I can guess.


1.  There are numerous microservices in a distributed environment.

2. While load is light, these work just fine, very efficiently.

3. When load is heavy, the queues get very deep and cause deadlocks between different microservices

4.  Users start cancelling requests with other actions

5.  The old actions are clogging up the queues, more incomplete actions pile up between the microservices as users get frustrated and repeat actions quickly.

6. Everything grinds to a halt until a bunch of people are forced to lose connections or the servers are reset.



My suggestions:

1.  Have a max queue depth of no longer than 10 millisecond's worth of data. Deeper queues are NOT better.

2. consider using parallel queues, if one gets stuck for too long, just kill the whole thing and proceed with the unstuck one.

3. Use backpressure to notify fillers of the queue to wait. It is easier to cancel actions if portions of it haven't been submitted to other microservices yet.

4. Consider using tags to quickly remove cancelled requests from heavily used queues.


Anyways, I hope NQ can solve this as I love the game and want to see it thrive.


Share this post

Link to post
Share on other sites

The other thought I had was that messages seem to be dropped under load. I hope the backend isn't using Kafka.  Kafka will drop packets under load, as it wasn't designed for transactional type messages, only for fast streaming where dropping random video frames doesn't matter.


Share this post

Link to post
Share on other sites

and a hide d core(ship/cargo bum), despawn when on another planet or offline.

make sections of cities solid objects(no furniture prefabs on their end, removes excess loading on our end of useless per voxel block coordinate vs solid with a solid model with less invisible lines)

Share this post

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Create New...