What do you guys do when you get a sudden urge to build a 100,000 player MMO with fully destructible world? You do the math that it could run on a single 128 core Threadripper server (everybody in the same world) with your crazy netcode ideas and super well optimized C code...
Before Claybook we had a multiplayer prototype with 1GB SDF world state modified with commands (deterministic static world state, undeterministic dynamic object state). Tiny network traffic. Could easily scale this idea to 1TB world (2TB RAM on that Threadripper)...
HypeHype has interesting ghost multiplayer, where you don't directly interact with other players. They are ghosts for you, but you can interact with events. This reduces latency concerns. This idea can be taken further.
My GPGPU physics simulators in Claybook act on single particles. Particle does neighborhood queries to find if other particles are close enough and moves itself and adds forces to itself. There's no communication between particles. They all make their own decisions...
This can be expanded to online multiplayer. Server sends players coarse / low latency data about other players. If two players are close the server ensures they get more precise data of each other. Players don't communicate directly. They only modify their own state.
Works a bit like kinematic objects in a physics simulation. The simulator has no idea how the kinematic object moves and can't affect it. It only knows the position and velocity of that object. Simulated object is pushed by the kinematic object. You can do same bidirectionally.
A simple ball physics simulator on GPU does the same. Each ball moves themselves out of neighbor balls. Both sides of the collision do the same independently with no communication between the pair. Both sides don't even act on identical state (other collisions handled between).
One Million Checkboxes website was a nice experiment for collaborative creation. A 1000x1000 grid of persistent checkboxes running on a web server. Every user could modify it at the same time. People created together at the same time in the shared place. We can expand this to 3d.
The crazy thing is that I think this is doable in 1 year by a 1 person team = me. It would of course run on a web browser on top on a GPU-driven WebGPU renderer (I have experience writing both). But I don't think I can afford a 1 year sabbatical to make this happen :(
I calculated that the server cost would be $10k/month if I had 100,000 DAU on the same 128 core Threadripper server. But if that happened, then I don't think I had problem with money anymore :) Still even $1k/month is a lot for a hobby project. Would need to be serious.
Oh and I forgot to say. Modern Threadripper has full rate AVX-512 and I would like to write ISPC code for the server to utilize that properly. All the dreams combined :)
This is only doable if you design the game interactions carefully. The game logic had to be simple. But I like making games with simple game logic. Focus on the core. The problem is that a design like this needs a mass of players and that's not achievable on day 1.
Running replicated world modify commands from 100k players is super expensive? Claybook peaked 10k SDF world modifications per frame. The GPGPU physics engine modified the world for every collision. I experimented with fluid erosion. Each (1M) particle carves every frame.
Most people don't modify every frame. In Minecraft for example your pickaxe modifies maybe 2 times every second, and most people are walking, standing, fighting, etc, not digging. And adding bricks is limited to your inventory (resource gathering gives a natural limit).
We had a real-time deformable terrain in a car racing game (a cancelled Ubisoft project). It was so cool that all tire tracks were persistent. Terrain was virtual textured and VT normal was based on physical heightmap. Could see tire tracks in desert dunes kilometers away :)
Would be super cool to see the tracks of every person and vehicle persistently in the world. World is in change all the time. Everything is persistent and you can see the history of each location. Where people have walked, where they have fought, what they have build / destroyed.
It would be a nice idea to have a virtual place for people who want to build together and show their creations. A bit like a giant MagicaVoxel sandbox. A custom high quality compute shader raytracer to render it. Has to look good of course.
@SebAaltonen That’s basically Minecraft at higher resolution voxels isn’t it ?
@swooshclick It's an early idea. Maybe SDF, maybe voxels. Both are easy to modify. Main difference would be that all players are in the same world that has persistent state modifying it together. And physics of course. We need more physics. Think Teardown, but simpler. Must be fun too.
@SebAaltonen Fantastic idea! It would be wonderful to follow the whole process Maybe set up a patron or something and make some videos/articles on the process explaining stuff and showing off new ideas/implementations This would maybe take more time but give you more leeway with some added $
@SebAaltonen minecraft MMO


