Honestly, the comparisons in this thread don’t make much sense.
The memory and CPU numbers you’re putting next to the public emulators aren’t a C++ vs C# thing. Public emulators eat RAM and CPU because of design choices: everything loaded and kept alive forever, per-entity timers and tasks, LINQ and allocations in hot paths, reactive subscriptions everywhere. Rewrite the same design in C++ and you’ll get the same problems. Write a sane design in C# and it runs fine with a fraction of those numbers.
You also talk about raw performance way too much. That was never the real problem with public emulators. Their real problem is concurrency: async/await used everywhere for no reason, shared state touched from several threads without a clear ownership model, locks added randomly to patch race conditions, and the duping, desync and random crashes that come with all that. “Native” doesn’t fix any of it. You need a clear threading model (single-threaded map/channel loop, message passing, whatever), and nothing in the post says how you handle that.
Put together, it gives the impression you don’t really know what you’re talking about, and that “native C++” is mostly a marketing line.
Your own videos don’t help either. The AI is clearly behind, and it lags with only ~200 players online. For a project whose whole pitch is performance, that’s a tough look.
The memory and CPU numbers you’re putting next to the public emulators aren’t a C++ vs C# thing. Public emulators eat RAM and CPU because of design choices: everything loaded and kept alive forever, per-entity timers and tasks, LINQ and allocations in hot paths, reactive subscriptions everywhere. Rewrite the same design in C++ and you’ll get the same problems. Write a sane design in C# and it runs fine with a fraction of those numbers.
You also talk about raw performance way too much. That was never the real problem with public emulators. Their real problem is concurrency: async/await used everywhere for no reason, shared state touched from several threads without a clear ownership model, locks added randomly to patch race conditions, and the duping, desync and random crashes that come with all that. “Native” doesn’t fix any of it. You need a clear threading model (single-threaded map/channel loop, message passing, whatever), and nothing in the post says how you handle that.
Put together, it gives the impression you don’t really know what you’re talking about, and that “native C++” is mostly a marketing line.
Your own videos don’t help either. The AI is clearly behind, and it lags with only ~200 players online. For a project whose whole pitch is performance, that’s a tough look.