MESS (Macro Entity Scripting System)

(short for ) is a tool for automating various tasks when making Half-Life levels. It can be used for things like covering terrain with props, simplifying complex entity setups and automatically generating intermediate entities.
== Features ==
* Template entity library: MESS contains a set of template entities that make complex entity setups easy to manage, such as mtl_trigger_random, mtl_trigger_area and mtl_env_model.
* Template behaviors: MESS comes with several automation scripts. For example, the 'target pattern' script generates entities like trigger_relay and trigger_changetarget from target patterns like "+door1" and "mytrain -> pos2".
* Template instancing system: insert the contents of other maps, or create local templates and use them to cover terrain, or create instances at specific locations. Templates can contain both brushes and entities.
* Scripting system: templates can be customized using a small scripting language. This can also be used by advanced users to create their own template entities and automation scripts.
* Compatibility: MESS can be used with any editor that exports Valve 220 MAP files and that uses FGD files for entity definitions. It can also read JMF and RMF files.
* File conversion: MESS can convert between .map, .rmf and .jmf files. This includes support for TrenchBroom groups and layers, VIS group filtering and cordoning.
== Drawbacks ==
* No editor preview: unlike Hammer 4.x, GoldSource editors typically don't support an instance previewing system, which makes MESS templates difficult to use for big pieces of architecture. This limits the use of templates to entity setups and small props.
== Screenshots ==
MESS_macro_cover_showcase.png|Covering terrain with props
MESS_template_entity_showcase.png|Using template entities to manage complex entity setups
MESS_fun_showcase.png|Having fun with recursive templates
== Options ==
* -help - Shows available command-line parameters.
* -convert - Enables file conversion mode. This mode has its own set of options, which can be found here.
* -repl - Starts an interactive read-evaluate-print loop (REPL) for MScript, which can be used to test MScript expressions.
* -dir PATH - Specifies which directory to use when looking for template maps. Setting this overrides the template-maps-directory config file setting.
* -config PATH - Specifies which config file to use. This can be used to switch between game-specific configs. By default, mess.config is used.
* -fgd PATH - Specifies where MESS should put the .fgd file that it generates. Setting this overrides the fgd-path config file setting.
* -vars ASSIGNMENTS - A list of variable names and MScript values or expressions that will be available in the processed map.
* -globals ASSIGNMENTS - A list of variable names and MScript values or expressions that will be available via the getglobal MScript function.
* -maxrecursion N - The maximum recursion depth for templates. This is a safety mechanism that guards against accidental infinite recursion. The default is 100.
* -maxinstances N - The maximum number of template instances. This is a safety mechanism that guards against accidentally inserting a massive number of instances. The default is 10000.
* -norewrite - Disables rewrite rules, which can be used for testing and debugging.
* -log LOG_LEVEL - Determines how much information MESS will write to the output:
:* off -- All logging is disabled.
:* minimal -- Only a few important messages are logged.
:* error -- Only critical errors are logged.
:* warning -- Non-critical warnings are also logged.
:* info -- Additional information is logged, such as which templates are being loaded.
:* verbose -- Even more information is logged, such as details about each instantiation.
* INPUT_PATH - The input file path. This is required. MESS accepts .map, .rmf and .jmf files.
* OUTPUT_PATH - The output file path. If not specified, the input file will be overwritten. The output is always a Valve220 map file, regardless of the file extension.
== External links ==
* Official documentation: setup guide, tutorials and entity references
* GitHub Repository
* TWHL forum thread
* MESS example maps
Category:Third Party Tools
Category:Third Party GoldSrc Tools
Category:Non-Steam Applications
Category:GoldSrc Level Design