Update 26-01-25

Rust. Rust. Unreal. Excitement?

What's new?

What's up, been a long time since I've made one of these. I've done some progress on the game server since my last blog post, but nothing SUPER amazing.

One major news is that we're now in-engine. That's right, I've finally started doing in-engine development, which means I'm finally implementing gameplay mechanics.

In terms of progress, here's what's been made:

Project management

  • Started a GitHub project to track, schedule and estimate issues

Server and infrastructure

  • Switched networking library to ENet, using the rusty_enetarrow-up-right library for the server, and its corresponding C++ ENet versionarrow-up-right

  • Implemented a basic sharding mechanic. Each shard can hold 1000 players, up to 4 shards per process. Numbers subject to change once we do more in-depth testing

  • Implemented ArgoCD and a simple K3s cluster to auto-deploy a server instance for testing with people

  • Kubernetes manifest files to automatically create DNS records that bind a DNS to a server instance

Client

  • When a client connects, existing clients now instantiate the remote player's prefab

  • Very basic above-the-head names to distinguish clients

Why yet another networking library change?

In the last update, I mentioned that I had introduced sharding with Valve's GNS.

Unfortunately, the way the Rust gns library works is that it has a global object that is instantiated and is used to poll messages/events from.

I'd have no way of knowing clearly for which server the packet or event is for, and I'd probably need to do some rewrites of the library to account for that.

ENet solves that issue inherently by the way that it works, so I went with that, despite missing some cool mechanics.

What's next?

I've got a good amount of work ahead of me in terms of server features, that are not necessarily related to gameplay. Here's a sneak peek of the different things I'll be working on in the next iterations

Obviously this board isn't a final look at what I'll be doing in the next few weeks, as I've still got to create issues for basic movement to be implemented on the client, but it's a broad enough view of what I'll be doing.

A special thanks to

I'd like to take a moment to give a special thanks to Vapor Cat Gamesarrow-up-right for the community they've provided, as I've had many good conversations concerning system design and game design in there.

Cool peeps, give it a join.

Last updated