Update 10: Quick Tech Overview

Hello everyone!
We receive a number of questions during the livestreams about our tech stack, so Ali was kind enough to jot down a few notes.

We’ll try to keep this updated as we go.

And as always, if you have any questions, please feel free to hit us up on the stream or in Discord.


Simplicity

The stack is designed to be simple and straightforward. For rapid development and easy operation.

Database

For the Proof of Concept, we have standardized the database to MySQL. All server processes connect to MySQL.

Connectivity

Client and all services are connected via reliable UDP. We utilize the library LiteNetLib.

Client

The client is a straightforward dumb viewer of Server state.

Unity

The servers live both within and apart from Unity. They use Unity services without using Unity’s entity management or other core systems. These are handled by custom systems that are Ticked by Unity’s Update method.

Method of Operation

The processes are pseudo-EntityComponentSystem design. They are vintage in their design but for good reason. Older designs were efficient. Older designs make good use of CPU cache. Older designs were modular.

Each System loops through all required entities (such as NPCs or Clients) and does its operations on them.

Model-Entity Design

Data is held in data objects which map to Database records. Models are accessors and Context. Systems hold logic which operate on the Models.

Infrastructure Design

Designed to run on commodity hardware, stateless. Can live on metal, containers, Kubernetes, or whatever else the future holds.

Scalability

Again, this is a bit old-school, but by keeping all communication via rUDP sockets, we are eliminating many possible bottlenecks. There is minimal load and communication between processes. Zones are designed to run independently once a Client is assigned to one.

This means that while a Zone might bottleneck, it will not affect other Zones or processes.

Sharding

There is no current plan to shard zones (ie. creating instances). However, there is nothing preventing enabling that if it becomes necessary.

Previous
Previous

Update 11: “Project_N” has a new name!

Next
Next

Update 09: Niche Worlds Cult