![]() But there's nothing special about games here. Like any other kind of parallel scaling, it's trivial in some places, more challenging in others, and depends a lot on your workload (including you actually having enough work to saturate the cores in the first place!). So no, I'm going to push back against this notion that multicore scaling for games is some sort of crazy intractable problem. ![]() While there are definitely single-threaded bottlenecks in games, you have to be working pretty hard before they start bottlenecking the workload! Instead, we are just suffering from a combination of general inefficiency and lack of work to do. The most important thing I want to note is that in both cases, you are not seeing tremendous imbalance between the cores most of the time. Our clients can make use of cores in even more ways, although they have less work to do and generally have fewer cores available, and you can see Veloren taking advantage of 16 client threads with similar utilization here. We can already get decent utilization out of 32 threads at busy times, and the server was not really close to peak load in terms of player count (and we are very far from done optimizing). I've done some theoretical bottleneck calculations and we will still have tons of work to do with 64 cores available, if the game is written properly. But if you're using it (as Veloren is, and as I hope more people do) in a more deliberate way, to further parallelize within a system, you can indeed scale quite well to large numbers of cores. If you're just using ECS to parallelize disjoint subsystems then no, it won't get you there. I It is certainly far far easier to see real performance wins with multicore than by using multiple servers, which introduce very heavy coordination costs. Specs and bevy and all the ECS work being done is super exciting and fun. I'm happy you're using specs to work on an open source game. > There are many hard problems in video game performance, but "games just can't make good use of multiple cores" is not one of them. If most players WANT to play on small servers with close friends then the mountain range of work to effectively support a 1000 player server is not worth it". The value of that work is likely not worth the cost. ![]() Like, radically harder than you are imagining. So I think the short answer is "it's really really hard. Unity has been working on their DOTS/ECS system for years, but it does not appear to be close to ready for the mainstream. Writing multi-threaded gameplay code is extraordinarily difficult. Unity and Unreal both have primarily single-threaded gameplay. My opinion on it is extremely, extremely negative. ![]() There are no general solutions to any of this. Minecraft is particularly challenging because the entire world is highly mutable. This solution is cool, but it's not novel or anything. There's no game engine that I'm aware of that effectively uses more than a couple of cores for gameplay simulation.ĭistributed physics is a well understood problem with no "solution". Pretty much no video game engine scales with cores. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |