From Valve Developer Community
Revision as of 15:15, 7 December 2008 by Piranha (talk | contribs) (SENC)

Jump to: navigation, search

VMPI (Valve Message Passing Interface) is a tool that distributes map compiles over multiple computers, either on a LAN or the Internet. Every computer runs VMPI in Valve's offices, even the receptionist's, allowing production-quality maps to be spat out in a matter of seconds.

VMPI was released to the public with the Orange Box SDK update. It is thought that the tool had been withheld up to that point because of a dependence on MySQL that has now been eliminated.

VRAD and VVIS can be distributed. VBSP cannot (and doesn't really need to be).


Each distributed compile is organised by a master machine, to which worker machines connect. Each machine must have the game/mod being compiled for installed.

  • To create a master, start VRAD or VVIS with -mpi; port 23311 will open to allow workers to connect.
  • To create a worker, start with mpi_worker <master IP:port>

This will get the job done, but you may also want to consider the following:


Change the master's connection port. Default is 23311.
Delays the compile until a keystroke is pressed. Useful for letting workers connect.
VMPI's graphical output
Shows a graphical output of the work that's being done.
  • Gray: work unit not sent yet
  • Green: completed work unit
  • Light green: work unit being done by master
  • Blue: work unit being done by a worker machine.
Each block represents a single core on a machine, so a quad-core processor will have four.
Enables a debug menu during compiles (-mpi_graphics automatically enables it.) To access the menu, press "D" on the keyboard during a compile. This command also seems to be buggy as I have never gotten it to work.
Shows the statistics of the workers used in the compile and how much work they have completed. Statistics are shown after the compile is completed.
Sets the maximum amount of workers allowed in the job.
Spawns a local worker on the master machine. Only useful for testing.
Prevents the master from processing its own work units.


Keeps polling a specified master until it starts a compile. If not used before a master machine starts a compile, the worker will time out and display an "MPI_Init failed" error.
Auto-restarts polling mode after a compile is finished. This command is buggy and doesn't always work, so don't rely on it. Must be used with "-mpi_Retry" if you don't want to keep getting the "MPI_Init failed" message.

Either / unknown

Throttles file transmission rate (kB/s)
-mpi_verbose <0-2>
Level of debug output.

Remote workers

VMPI workers can connect over the internet. However, high-latency or low-bandwidth connections (including upload speed) can cause timeouts.

Bear in mind that because data flows both ways both the master and the worker require an open and forwarded port, TCP and UDP.


SENC (Source Extended Net Compiler) provides a GUI for VMPI compiles.

Additionally, its worker comes with a fake (but not in an illegal sense!) Steam installation, allowing you to run workers on whatever machine you please.