timetocode Posted October 31, 2018 Share Posted October 31, 2018 I'm about to begin a whole lot of 3D-related R&D on making large multiplayer levels, and I'm here to get pointed in the right direction. As an example, how would a Babylon.js version of PUBG/Fortnite/Blackops have to be made? I've categorized some of the larger problems and offered a few guesses as for solutions, but am looking for feedback and ideas. I also know very little about 3D games so if y'all happen to simply know how any of these things works in AAA games I'd love to hear it. Edit: I already have the netcode that can do 50-150 players and all the first person shooter fancy stuff, so I'm just going to focus on rendering and collisions which I have no idea about Large Landmass (Terrain) Each of these games has a huge island. My guess is these are cut up into chunks and varying LODs. I've been reading through the bablyon docs and found mesh simplification stuff which sounds to me like it could handle making the lower LOD versions of chunks. There's also a function for subdividing meshes, though I'm not sure how that works and if it would be viable for cutting a larger object into spatial chunks, or if this is something to write some custom code for. Any suggestions? Rendering Buildings, Players, Props, etc I think this category is an extension of the terrain ideas (solved by multiple LODs), but with the added benefit that stuff that is truly far away wouldn't get added to the scene on the client at all. Collisions everywhere Unlike the client, the server has to keep the entire mesh of the game loaded. Luckily the server doesn't have to render it. But how do collisions on the server work? Every tick it has to stop ~100 players from falling through the ground or clipping through walls. It also has to calculate every shot landing. It is easy to use moveWithCollisions for a single player against a simple world -- but what happens when the whole world is one huge scene in NullEngine? Does putting every mesh manually into babylon's octree solve this? I'm totally willing to learn and implement spatial structures and custom collisions if needed. In one of my simple prototypes I tried to fire rays downwards from the players to allow them to jump up onto varying meshes. It worked great, and I make and crazy shape I wanted in blender, import it, and then climb up ontop of it. But as I added more and more players, and more and more rocks/obstacles I eventually hit a performance wall. Does an octree solve this? Is firing rays downwards even an appropriate technique? Any tips on any of these topics are appreciated TY Quote Link to comment Share on other sites More sharing options...
Guest Posted October 31, 2018 Share Posted October 31, 2018 Hello for terrain, you should have a look at @jerome great dynamic terrain: http://doc.babylonjs.com/extensions/dynamic_terrain For collisions I would have done them partially on the local computer (and the server can do some checks but not at the same frequency to avoid cheaters) Quote Link to comment Share on other sites More sharing options...
Guest Posted October 31, 2018 Share Posted October 31, 2018 Also as you mentioned, octrees will help a lot here to boost collisions / picking perf Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.