Jump to content

Looking for tips on handling large worlds


timetocode
 Share

Recommended Posts

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 :D TY

 

 

Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...