bw logo

Chapter 10. Offline Processor

The Offline Processor is one of the BigWorld tools used to generate a navmesh for each chunk in a space. It uses Recast to generate the meshes.

Note

The other tool provided by BigWorld to generate a navmesh is NavGen. For more details, see NavGen.

For details about Recast, refer to the project site, at http://code.google.com/p/recastnavigation/.

Offline Processor

10.1. Configuring Offline Processor

The Offline Processor, located at bigworld/tools/misc/offline_processor.exe, needs to be configured so it knows where to find your game resources. This is done by listing the resource paths, in order of precedence, in bigworld/tools/misc/paths.xml.

In order for the Offline Processor to generate Recast navmeshes for a space, that space must be properly configured, by setting the navmeshGenerator option in space.settings to recast. If this option specifies any other generator, the Offline Processor will not generate meshes. Modifying this value will not automatically cause chunks to be dirtied, so if a navmesh already exists, the next generation will have to be run in overwrite mode. For details refer to Running Offline Processor.

Recast uses settings that are stored in a Girths file, located at bigworld/res/helpers/girths/xml by default. This file contains profiles for entity types that will use each layer of the navmesh. For details, see Server Programming Guide's section Configuring Girth Information for Navmesh Generation.

10.2. Running Offline Processor

The offline processor is designed to be run in a fully automated environment, and is therefore controlled via command line parameters.

offline_processor.exe [options]

The available options are:

  • -clusterIndex The index of this machine within the cluster. See Cluster generation for more information.

  • -clusterSize The size of the cluster in which this machine belongs. See Cluster generation for more information.

  • -help Displays a usage message.

  • -nogui If no space is specified, or the space could not be found, this will avoid displaying the interactive GUI.

  • -overwrite Forces all data to be re-generated even if the chunks are not dirty.

  • -space Path to the space which is to be processed (e.g. "spaces/highlands").

For example, the following would force all data to be recalculated for the highlands space:

offline_processor -overwrite -space spaces/highlands

If no arguments are supplied, an interactive dialog will be displayed in order for a space to be chosen to process.

10.3. Cluster generation

The offline processor allows you to accelerate the build process by spreading the workload amongst multiple machines (or multiple cores on a single machine). First, make sure that each computer has an up-to-date copy of the space being calculated. It is best to use cluster generation in conjunction with a version control system, such as CVS or SVN.

Use the clusterIndex and clusterSize command line arguments. For example, if you have four machines to process a single space you could use the following four command lines (one on each machine),

offline_processor.exe -overwrite -clusterIndex 0 -clusterSize 4 -space spaces/highlands
offline_processor.exe -overwrite -clusterIndex 1 -clusterSize 4 -space spaces/highlands
offline_processor.exe -overwrite -clusterIndex 2 -clusterSize 4 -space spaces/highlands
offline_processor.exe -overwrite -clusterIndex 3 -clusterSize 4 -space spaces/highlands

The computers will proceed individually (there is no coordination between machines). To get the results from each computer back into one space use the version control system's check-in functionality (e.g., svn commit). There should be no overlap between the computers over the changed files, so merging individual files should be unnecessary.