Skip to content

Shattersong Online

What's up internet!

It's finally time to show some of the stuff we have been working on.

Shattersong Online is an online sandbox game with a focus on social interaction and community building. With activities like combat, adventure, crafting and building being ways to interact with and explore the universe together.

Massively Multiplayer Online Game(roleplaying optional)

The goal is to have all players and communities living in one big single shared universe together. This is a huge technical challenge — one which we aren't taking lightly — and a lot of effort has gone into building good tech to support this goal.

Creating one contiguous space then scaling it up to support many thousands of players is really hard! There is no magical cloud technology that can make this easy, instead we came at the problem from the other direction. Starting with a fundamentally distributed universe, we worked to reduce the seams.

The universe, which we call the aether, is split into many worlds, which we call shards. Each shard is exactly one persistent contiguous space or "world", and shards can all be run on different physical computers. Players travel between shards using in game portals.

Connected shards

Providing a seamless way of going between shards, portals bind the aether into one cohesive space. Going between worlds doesn't involve any loading screens, and with our Sweet Cross-Server Portal Tech™ you can see what's on the other side of the portal before you enter, and travel is as easy as jumping through.

Worlds are bound together by portals like a web... a wide, world web? One universe for everyone!

Server authoritative

With everyone sharing the same aether it's important to prevent cheating. We decided from the start to keep the game entirely server authoritative. The client decides what inputs to send to the server, and nothing else. This prevents the majority of potential hacks.

Playing on the web

In addition to native builds for Windows, Mac, and Linux, the game will be playable on the web. No large downloads required, just visit a website and you're playing the game, right in your browser. The client starts nearly instantly and game assets are loaded asynchronously, so it is a pretty frictionless experience.

We are using the in-progress WebGPU API to get advanced rendering support in the browser, and WebRTC data channels to work around the issues of network performance. The WebGPU spec is not yet implemented in any stable major browser, but we are keeping an eye on it and testing in nightly browser channels. The web build currently runs in Chrome Canary, complete with graphical glitches!

In development

Building the foundations and underlying tech has taken a lot of time. We are now ready to move into more gameplay oriented development. For the next while we will be working on building the main gameplay systems, which will include mechanics for:

  • Adventure
  • Combat
  • Crafting
  • Building

During this time most work will be on gameplay systems and there won't be a huge amount of content being developed. Once we feel that we have our core gameplay systems in place, focus will shift toward adding content.

Transforming terrain

Dynamic and networked tiles allows players to modify the world.

This is the basis of supporting player building...

and for blowing stuff up!

[TODO] Combat

Here's a cool crab to distract you from the fact that we don't have much to show in the way of combat yet!

Exploration

Exploration should be fun, not tedious. Players will have a range of movement abilities to get around quickly.

We aim to make all important areas of each world accessible without having to spend hours digging tunnels and mine shafts.

Performance

There will be limits on how many concurrent players can be on each shard, but we definitely want to make that limit as high as possible. This makes performance, particularly server and network performance, very important.

To squeeze out as much performance as we can, are making the entire game, server and client, in Rust. Rust provides excellent perf without providing any of the existential dread and feelings of regret you get from using C++.

To keep the data flowing through the pipes smoothly we are using the custom networking layer turbulence on top of UDP. We also make sure all our networked data is smol and don't send more stuff than we have to.

Even with good performance, we want to make sure that when the server is under heavy load it doesn't fall over. When a shard server is too overloaded, that shard will smoothly slow down time to compensate. An overloaded shard might result in a massive pvp battle going in slow-motion, but never unrecoverable errors.

Who are we?

TRIPLE HEX consists of 2 friends who are making a game:

William (@healthire) is a programmer. He has 5 years gamedev experience, previously working at game studio Chucklefish, with credits on game titles Starbound and Wargroove. For the last 2 years he has been programming games in rust from his home in Växjö, Sweden.

Catherine (@kyren) is a big nerd. (Write your own introduction Catherine)

We teamed up to make something hopefully pretty neat!

Game status: pending

Thanks for making it all the way to the end, and for reading about our hopefully one day really cool game! Before you go, here are some clips of us and a few friends faffing about some serious game testing work:

Join us on Discord!

join the Shattersong discord Click here to join the Shattersong Online discord!

Subscribe to the newsletter

Marketing permission: I give my consent to Shattersong Online to be in touch with me via email using the information I have provided in this form for the purpose of news, updates and marketing.

What to expect: If you wish to withdraw your consent and stop hearing from us, simply click the unsubscribe link at the bottom of every email we send or contact us at contact@triplehex.dev. We value and respect your personal data and privacy. To view our privacy policy, please visit our website. By submitting this form, you agree that we may process your information in accordance with these terms.