Hyperion is a Minecraft game engine that aims to enable a 10k player PvP battle to break the Guinness World Record (8825 by EVE Online). The architecture is ECS-driven using Flecs Rust.
I would greatly appreciate the contribution. To see what to work on check the issues page or join Hyperion's Discord for the latest updates on development.
Note: performance has improved since this video was recorded.
hyperion.webm
Players | Tick Time (ms) | Core Usage (%) | Total CPU Utilization (%) |
---|---|---|---|
1 | 0.24 | 4.3 | 0.31 |
10 | 0.30 | 10.3 | 0.74 |
100 | 0.46 | 10.7 | 0.76 |
1000 | 0.40 | 15.3 | 1.09 |
Test Environment:
- Machine: 2023 MacBook Pro Max 16" (14-cores)
- Chunk Render Distance: 32 (4225 total)
- Commit hash
faac9117
run withjust release
- Bot Launch Command:
just bots {number}
Note on Performance:
Most of the computational cost is fixed due to synchronization with all threads. A couple of
The primary burden relies on our proxy that can be horizontally scaled. A lot of logic including regional multicasting is done in the proxy.
brew install just
just
brew install just
just release
This list is not comprehensive. Feel free to PR or file an issue if something is missing/incorrect.
Feature | Hyperion | Pumpkin | FerrumC | Valence | Minestom* |
---|---|---|---|---|---|
Language | Rust | Rust | Rust | Rust | Java |
Goal | game engine for massive events | 1:1 vanilla re-impl | 1:1 vanilla re-impl | game engine | game engine |
Structure | flecs ECS | custom ECS | custom ECS | bevy ECS | non-ECS paradigm |
Major Dependencies | valence** | ||||
Can handle 10k players | ✅ | ❌ | ❌ | ❌ | ❌ |
Used in production | ❌ | ❌ | ❌ | ❌ | ✅ |
Stable and large adoption | ❌ | ❌ | ❌ | ❌ | ✅ |
Proximity Voice (Simple Voice Chat) | ✅ | ❌ | ❌ | ❌ | ✅ |
Lighting | ✅ | ❌ | ✅ | ❌ | ✅ |
Placing blocks | ✅ | ❌ | ❌ | ? | ✅ |
Breaking blocks | ✅ | ❌ | ❌ | ? | ✅ |
Blocks physics | ✅ | ❌ | ❌ | ❌ | ✅ |
Entity-entity collisions | ✅ | ❌ | ❌ | ❌ | ✅ |
Block-entity collisions | ✅ | ❌ | ❌ | ✅ | ✅ |
World borders | ✅ | ❌ | ❌ | ✅ | ✅ |
Block Edit API (think WorldEdit) | ✅ | ❌ | ❌ | ✅ | ✅ |
PvP | ✅ | ❌ | ❌ | ✅ | ✅ |
Vertical scaling (fully multi-threaded) | ✅ | ❌ | ❌ | ✅ | ✅ |
Horizontal scaling | ✅ | ❌ | ❌ | ❌ | ❌ |
Advanced tracing support | ✅ (tracy) | ❌ | ❌ | ✅ | ❌ |
Set Resource Packets | ❌ | ❌ | ? | ✅ | ✅ |
Minecraft 1.20.1 | ✅ | ❌ | ✅ | ✅ | ✅ |
Minecraft 1.21.x | ❌ | ✅ | ❌ | ❌ | ✅ |
Proxy Support (Velocity) | ✅ | ✅ | ? | ✅ | ✅ |
Inventory | ✅ | ✅ | ? | ✅ | ✅ |
Particle Support | ✅ | ✅ | ? | ✅ | ✅ |
RCON | ❌ | ✅ | ❌ | ? | ✅ |
Chat Support | ❌ | ✅ | ? | ✅ | ✅ |
Command Support | ✅ | ✅ | ? | ✅ | ✅ |
*
= Minestom has many more features than we've mentioned here. If you're comfortable using Java and want to run a
minigame Minecraft server in a production environment, Minestom is a good choice. It's especially recommended if you
don't need to support an extremely large number of players (like thousands).
**
= we depend on these (forked) crates from valence
valence_anvil
valence_build_utils
valence_entity
valence_generated
valence_ident
valence_ident_macros
valence_math
valence_nbt
valence_protocol
valence_protocol_macros
valence_registry
valence_server
valence_server_common
valence_text