That could be an issue. I do need more low level control, and I also want to use GPU extensions like fragment_shader_interlock in the future.
Well right now I’m mainly focusing on the big problems people have with the release, and I’m also a bit overwhelmed with PRs.
But once things quite down I would like to work on entities with an ECS.
Do you plan on working on your own ECS for the project? I was recently looking at Bevy’s ECS and wondering how it would look if you built the same feature set in Zig. I’ll keep an eye on your project with interest, great work btw.
There are quite a few ECS implementations already. Here are first two that come to mind
Nice, thank you. I had the following on my radar for inspiration too (C++ and Rust ECS’s)
Entt (c++)
legion (rust)
- bevy ecs evolved from legion
- archetypal (entities contiguous in memory)
- macros
- GitHub - amethyst/legion: High performance Rust ECS library
yaks (rust)
- GitHub - Ratysz/yaks: Minimalistic framework for automatic multithreading of `hecs` via `rayon`
- World Splitting: Yaks’ most unique feature is the ability to “split” the world. This allows you to define systems that operate on mutually exclusive sets of components, which the library can then schedule to run in parallel with strong compile-time guarantees of data safety. This is a more explicit and granular approach to parallelism than the schedulers in Bevy or Shipyard.
- system trait
- uses send and sync pattern (a thread safe pattern in rust)
shipyard (rust)
- GitHub - leudz/shipyard: Entity Component System focused on usability and flexibility.
- Shipyard is an ECS library that prioritizes usability and flexibility, drawing inspiration from the C++ ECS library EnTT.
- sparse set
- views. safe concurrent access
a very popular c/c++ ecs is Flecs: Flecs
it has zig and rust bindings.
This would be a very fun fan services game with community ![]()
Wonder how is your experience with Zig after such long time ? In case you break it too much, try some Odin/Ocaml too ![]()
Ah! I got your video recommended on my Youtube home page, but when it comes to Minecraft-like games I’m so deeply attached to Luanti (formerly Minetest) that I got salty seeing another technically impressive project. I hadn’t realized, however, that it was written in Zig! Perhaps I’ll try and contribute. Also, on the topic of ECS, I’m using FLECS for my own game, and love it. It’s insanely well optimized. Though it’s also the only thing I’ve used, so don’t take my word for it. (It’s worth noting the biggest reason for choosing it was that was written in C, just as my game is) Though I was working on a bullet hell game in Zig recently, and I was stuck between using FLECS Zig bindings or using ZCS. Still haven’t decided…