Map Development Kit

From Exterminatus Manual

Jump to: navigation, search

Contents

Introduction

This is the documentation for the now REDUNDANT Map Development Kit (MDK) for the Half-life 2(HL2) modification Extermaintus(EX). The MDK has been replaced by the Exterminatuis public beta. See the Mapping page for map creating maps to play in Exterminatus.

The purpose of this document is not to teach you how to make maps, but to document the content specific to EX. This document assumes you are familiar with the basics of mapping for HL2, if you do not take start with the Valve Wiki.

Installation

Before you can use MDK you need to have Steam, the "Source SDK" and "Source SDK Base" installed. Installing any Source based game will give you the option to install the "Source SDK" and the "Source SDK Base" from the "Tools" tab of the main Source window. To install the MDK unzip it (preserving directories) to your SteamApps\SourceMods\ folder. If you installed Steam in the default location this will be C:\Program Files\Steam\SteamApps\SourceMods\ . If your log into steam now the Exterminatus Map Development Kit should now appear in the list of "Installed" games in the "My Games" tab.

Configuring the Source SDK

Next we must configure the Source SDK so it is aware of the EX MDK.

  • Log into Steam, switch to the "Tools" tab and open the "Source SDK" (this will open in a new window)
  • At the bottom of the Source SDK window are two drop down lists. From the top one (labeled "Engine Version") select the "Half-life 2: Episode One" option
  • Open the "Hammer Editor" from the Applications section at top of the Source SDK Window (this will open in a new window)
  • In the Hammer window open the "Tools" menu at the top and select the "Options..." menu option (this will open in a new window)

The first tab in the "Configure Hammer" window is "Game Configurations", at the top of the tab is a drop down list labeled "configuration".

  • Click the "Edit" button next to the configuration list(this will open in a new window)
  • Click the "Add" button on the new window and you will be prompted for a game name
  • Enter "Exterminatus" and click "OK" to create the new configuration
  • Close the "Edit Game Configuations" window
  • On the "Configure Hammer" window select "Exterminatus" from the "Configuration" drop down
  • Bellow the "Configuration" list is a list of "Game Data files", click the "Add" button next to this list
  • Browse to your SteamApps\SourceMods\ folder where you unzipped the MDK to, inside you should have an "ex" folder containing "ex.fgd", select this file and click "Open"

Your "Game Data files" list should now contain "$SteamDir\SteamApps\SourceMods\ex\ex.fgd". This file tells Hammer about all the EX entity types listed in the next section. You can now continue setting up your options. The default "Texture format" (Materials (Half-life 2)) and default "Map Type" (Half-life 2) should be fine. Their are a couple of default entity type options you can change next (but you don't have to). I recommend "prop_static" as the "default point entity" (the MDK contains dozens of 40k themed props) and "func_detail" as the "default solid entity". The default values for "texture scale" (0.25), "lightmap scale" (16) and "Cordon texture" (black) are also recommended. Next comes the tricky part, the paths.

  • "Game Executable Directory" should read "$SteamUserDir\Source SDK Base\bin\hl2.exe", this is the SDK Base "game" that will be running the EX MDK.
  • "Game Directory" should read "$SteamDir\SteamApps\SourceMods\ex\" , this is the folder where the EX MDK has been installed to.
  • "Hammer .vmf maps" should read "$SteamDir\SteamApps\SourceMods\ex\mapsrc", this folder is created as part of the MDK installation as somewhere for you to keep the source(src) of your maps.
  • Click "Apply" to save your changes.

The MDK includes the source(.vmf) files for it's tutorial maps in the ex/mapsrc folder. You can safely change "Hammer .vmf maps" to somewhere else if you prefer (like "my documents/maps/" for example). Next you need to tell Hammer how to compile your map source and put your compiled map into EX.

  • In the "Configure Hammer" window switch to the "Build Programs" tab
  • Select "Exterminatus" from the list of "Configurations"
  • "Game executable" should read "$SteamUserDir\Source SDK Base\bin\hl2.exe"
  • ".BSP executable" should read "$SteamUserDir\Source SDK\bin\ep1\bin\vbsp.exe" , this program turns your VMF map source into a basic BSP file that the Source SDK Base game can load
  • ".VIS executable" should read "$SteamUserDir\Source SDK\bin\ep1\bin\vvis.exe" , this program optimizes your BSP, so the game draws just those parts that are in sight
  • "Rad executable" should read "$SteamUserDir\Source SDK\bin\ep1\bin\vrad.exe" , this program calculates how the lights you have p[aced will illuminate your BSP map
  • "Place compiled maps before running the game" should read "$SteamDir\SteamApps\SourceMods\ex\maps" , this is where your BSP file needs to be for the game to load it.
  • Click "Apply" to save your changes.

You can now close the "Configure Hammer" window by clicking on the "OK" button. Hammer should be now configured to with with the EX MDK. You will be able to use EX textures, models and entities. Read on to learn more about the custom entities in EX.

Entities

EX supplies seven new types of entites for mapping, all their names start ex_ so as to be easy to find in the entity lists. The EX FGD file (configuration for Hammer) can be found in the SourceMods/ex/ folder, before setting it up in Hammer. Here I will detail the specifics of each type of ex_ entity.

ex_gameplay

Required - Logical Entity


Allows the mapper to tell the game which team won the round.


One (and only one) of these is required by exterminatus per map. A temporary ex_gameplay will be created by the mod at run time if you don't include one in the map. Fire the "Imperials Won" or "Tyranids Won" inputs to dictate who won the game. The ex_gamplay entity can also tell you when each team is due to start spawning via it's "OnTeamSpawnWaveReady" outputs.


In future if more game modes follow or weapons and classes become restricted they will probably be controlled from this type of entity.


ex_objective

Required - Logical Entity


Co-ordinates game flow, in-game objectives and team spawning.


Objectives belong to a team specified by their "Initial Team" property. When a map loads most of the ex_objective entities should be Neutral, with the Imperial and Tyranid teams owning one ex_objective each. By activating the "Captured" input a player can change which team the objective belongs to. When an objective is captured it chooses another objective to become the focus of gameplay based on "Next Imperial Objective" or "Next Tyranid Objective", depending on which team captured it and fires that objective's "On Become Target" output and it's own "OnTeamCaptured" output. "On Become Target" output is foreseen to be used for activating an ex_mission and related entities.


While it is not absolutely necessary to keep an ex_objective with it's respective ex_mission(s) and ex_dropzones it's probably a good idea to avoid confusion, it's location is displayed on the HUD in the full game. Players waiting to spawn get the view from their team's next objective, so give them something interesting to look at.


NOTE: At any given time both teams missions should be focused on a single ex_objective, with each team having its own ex_objective that acts as the team spawn.

ex_dropzone

Required - Location Entity


Spawn points associated with ex_objectives.


When a teams spawn timer hits 0 and dead players on that's team are respawned ex_dropzones with an "Objective" that was last captured by the team. Dropzone's containing other solids will not be used by the game (to prevent telefragging or players getting stuck in geometry) so make sure your dropzones don't stick into the walls, floors or ceilings.


NOTE : There needs to be enough of these for an entire team of 8 players to spawn at once for each ex_objective. Players cannot be spawned at drop zones that are blocked by any kind of solid (This includes other players). The objective with the least number of drop zones determines the greatest number of players the map can support.

ex_mission

Optional - Logical Entity


Tells the players what their mission is.


ex_mission entities rely on a map and language specific text file kept int the ex/maps folder named like mapname_language.txt. If the file does not exist for the player's language EX will try mapname_english.txt, if that is also missing EX will report the missing file in the player's console. The text file is supposed to contain a series of "tokens" and a translation of their text in the specific language. Mappers using ex_mission entities should make their own mapname_english.txt based on the sample provided.

Sample mission file:

"lang" 
{ 
	"Language" "English" 
	"Tokens" 
	{
		"neutral_tyranid" "USE the button on the skull console to capture the neutral objective"
		"neutral_human" "USE the button on the skull console to capture the neutral objective" 
		"tyranid_tyranid" "Defend your console and capture the neutral objective"
		"tyranid_human" "USE the button on the tyranids console to stop them spawning" 
		"human_tyranid" "USE the button on the humans console to stop them spawning"
		"human_human" "Defend your console and capture the neutral objective" 
	} 
}


The "Imperial Token" and "Tyranid Token" properties relate to "tokens" in the text file for this map that describe the respective team's mission. If the text file doesn't exist the token will be used instead of the translation. Fire the "ActivateMission" input to assign the teams these missions, the translations will then appear in the console (this will appear on the HUD and mission screen in later releases).


While it is not absolutely necessary to keep an ex_mission with it's respective ex_objective, ex_dropzones and ex_dropship_path it's probably a good idea to avoid confusion.


Player's can find their team's current mission by using the show_mission console command.


NOTE: it's up to the mapper to provide and activate the appropriate entities to allow the player to achieve their mission.

ex_random_branch

Optional - Logical Entity


When it's "Randomize" input is triggered a random branch output will be triggered, all specified outputs have an equal chance of being triggered.


Intended to introduce some unpredictability into the paths of dropships and missions, by toggleing alterative ex_dropship_paths or ex_missions


ex_dropship

Optional (Redundant) - Model Entity


Formaly combination of visual spawn wave readiness, now redundant .


Dropships belong to a team as specified by their "Initial Team" property and follow a series (preferably a loop) of ex_dropship_path entities starting with the one named in it's "First Stop target" property. Dropships have a series of states that can be controlled by their path or by their "Start_State" inputs.


NOTE: These are big, larger than their representation in Hammer, give them plenty of room to move and land.

ex_dropship_path

Optional (Redundant) - Location Entity


Guides the dropships and helps the mapper control their state and speed.


Dropships follow a path between these entities, each ex_dropship_path specifies the next in the path in it's"Next Stop Target" property, much like the paths used by func_trains. Like the path_track entities ex_dropship_path can divert their dropships along alternate paths by specifying an "Branch Path" and having their "ToggleAlternatePath" input activated.


ex_dropship_paths can also redirect their dropship to a path for it's team's current spawn objective. If a ex_dropship_path specifies an ex_objective in it's "Objective Name" property and an ex_dropship_path in it's "Objective Target" property whenever a dropship passes this ex_dropship_path it checks if it's objective matches the current spawn objective of the dropship and diverts the dropship toward it's "Objective Target" if they match. The intention with this feature is that dropships would have an "idle" path that takes them on a vague tour of the maps objectives and when it approaches the objective where it's team are supposed to spawn it can follow a path to that objective to respawn the team's players there, then rejoin it's" idle" path.


You can set the dropship's speed and state, when it passes a ex_dropship_path by using the "New Dropship Speed" and "Set Dropship State" properties.

Samples

The source for these samples can be found in SourceMods/ex/mapsrc/ and are intended to demonstrate the use of ex entities.

  • Basic Team Deathmatch - ex_tutorial_01b.vmf - The very minimum you need to spawn as a player on either team.
  • Objective Capturing - ex_tutorial_02b.vmf - Shows how objectives can be captured.
  • Assigning Missions - ex_tutorial_03b.vmf - Illustrates how missions and objectives can be linked.

NOTE: These sample maps only have enough dropzone's for a single player, you need as many dropzones per objective as you can have players.

Naming maps

It's a good idea to name any EX maps starting with ex_ so that any players downloading your map will know it is for EX. It's also good practice to include a version number in the map name, and increase the number each time you share a modified version, so that your players know what version they have and what version they need to play. For the time being you'll need to remember to rename your mission txt files when you increase your map's version number.

Miscilanious

The other way to Configure the Source SDK to work with EX

Personal tools