3
\$\begingroup\$

I recently played a open world FPS game with a large and dense game world, in a single map like this.

It contains many objects, roads, rivers, trees, houses, rocks, hidden places, NPCs, etc... all carefully placed relative to each other. The game was made in two years (which is pretty fast regarding the content).

How can a team work at the same time on such a huge map?

3D models and textures can have been done separately and in parallel as I understand. The question is about how to put all this content on the map and model the map itself (lowering or raising some parts since it is a huge heightmap).


Several things solutions I have in mind:

  • The map could be divided into big chunks, with each person (or small team) working on a small part. Then (at the end) everything is reassembled. I seriously doubt this, because of the map topology. Or maybe the height of the map was fixed first (no more change possible after some point), then map cut in squares, then reassembled (which would work because height was not changed).

  • Developers created a multi user editor where it is possible to connect to a server (using LAN) then any change in editor would be directly visible and propagated to other editors connected to the same server. Something like Minecraft.

How can this be done? Has anybody worked on a similar game?

\$\endgroup\$
  • 1
    \$\begingroup\$ Here's one dev team's blog post about that topic: the-witness.net/news/2011/12/… The defined their file format to be amenable to revision control system merges. The whole blog is well worth reading... they do mention that height-map (and land-shape) changes need to settle down first. \$\endgroup\$ – david van brink Nov 30 '14 at 2:55
1
\$\begingroup\$

What can be done with many engines out of the box is to:

  1. Settle down the heightmap for the whole world, as you usually cannot split this one up easily
  2. Use layers to divide the entities into well encapsulated sets (e.g. road network, buildings of city1, buildings of city2, npcs of city1, ...) and save layers in separate files (CryEngine does that, other probably as well). Make sure non-modified layers are not saved.
  3. Make sure there is clean ownership of layers so that people don't mess up other's work. Having the format in XML or something version-control friendly helps, as noted in the comment to the original question by david van brink.
\$\endgroup\$
  • \$\begingroup\$ It's great you mention CryEngine because the game I played was using that one. I did not mention it in OP because it needs to be not game specific. \$\endgroup\$ – tigrou Dec 13 '14 at 9:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.