Dota 2 Maps

From Valve Developer Community
Revision as of 08:05, 10 January 2014 by Null (talk | contribs) (Redid the first section of the guide.)
Jump to: navigation, search

There are no official tools to create Dota 2 maps, although the community has hacked together a number of tools to compile Dota 2 maps that work.

Dota 2 is based on some scrapped ideas of Alien Swarm and the first program base is based upon the Alien Swarm SDK. This means that the Alien Swarm SDK, with some small tweaks, can be used.

Configuring Alien Swarm SDK

Start by installing AlienSwarm SDK, either by following this link or by going to the Tools tab in your Steam Library.

Extracting the VPK

Download GCFScape, you need this to extract your VPK files. If it is bugging, get the x86 files, those are fine working on x64 systems.

Start the program and open pak01_dir.vpk in \Steam\SteamApps\common\dota 2 beta\dota\

Rightclick on "root" and click on "Extract...", extract it to a folder somewhere on your hard drive.

When it is finished go to Steam\SteamApps\common\dota 2 beta and copy the “bin” and “platform” folders into the extracted root folder.

Setting up your SearchPaths

Copy the “gameinfo.txt” file from Steam\SteamApps\common\dota 2 beta\dota into the extracted “root\bin” folder.

Open the newly copied “gameinfo.txt” file with a text editor and edit the SearchPaths section to point it to your extracted root directory. It should look similar to this:

       "Game"        "E:\path\to\folder\root\"

Go to SteamApps\Common\alien swarm\swarm\ and add the same line to the SearchPaths in gameinfo.txt.

Configuring Hammer

To properly build a Dota 2 map, you need the following tools:

Download both of these and extract them into the bin folder from above.

Open Hammer, and select Tools -> Options...

Remove the AlienSwarm .fgd file and add the dota 2 fgd from above.

Create a new map. Select 'Run Map'. Hit 'Expert'. Create a new config 'Dota 2'. For the first command, we want to run BSP, so hit New, then 'cmds' and select 'BSP Program' and copy the BSP parameter line from default. Second command we want to run is 'UpVersion', so hit new 'New' then 'Cmds'. Select 'Executable' and find 'UpVersion.exe' in the directory you put it. Add '$path\$file.bsp' to the parameters. Finally, we want to copy the final .bsp file to the dota 2 maps directory, so hit New, then in Cmds select 'Copy File'. The params are '$path\$file.bsp "path\to\dota2\maps"'

Mapping notes

  • Maps are a much larger scale in Dota 2 than they are in other Source games. Units are around 48 units wide, towers are 128x128x320 units tall.
  • If an entity is outside the bounds of the map, it crashes the game with no error.
  • AlienSwarm converts all brushwork into func_detail, so you need to seal the map with a func_brush named structure_seal. The brush should be textured nodraw.
  • Required entities include: info_player_start_goodguys, info_player_start_badguys, ent_dota_game_events, env_global_light.
  • Models require a shader that is not provided in Hammer. In your extracted gamedata, open every .vmt file and replace "GlobalLitSimple" with "VertexLitGeneric". A tool such as Notepad++ can do this quickly.

Building the NavMesh

Required Tool: GNVTool 1.0 by Penguinwizzard

This tool converts netpbm formats to valve's GNV format. It also converts GNV to pbm files.

netpbms are 1 bit bitmap files. The size of your bitmap must be your world size divided by 64. The bitmap dimensions must be divideable by 8 or the navmesh will be sheared. Dota 2 uses black for walkable, and white for not walkable.

Usage: 'GNVtool.exe tognv source.pbm target.gnv offsetx offsety'

Offsetx|y are always negative and 1/2 the dimensions of your bitmap.

list of software that support pbm files or converts to pbm format pbm export plugin

You can view your navmesh in game by doing 'dota_gridnav_show 1'

Visual Guide to GNVTool

Making a Minimap

Minimaps require a few files in a few places.

You will need VTFEdit to convert an image into a .vtf file

First is the overview screenshot. This can be created in a number of ways (Valve paints theirs, other people have taken screenshots). Once a suitable image is found, Open VTFEdit, select Import, find your image, and save it as MAPNAME.vtf. Also, go to 'Tools' and click 'Create VMT'. In the Options tab, for shader, select UnlitGeneric and check the boxes 'Translucent' and 'Vertex Alpha'. Save it as MAPNAME.vmt.

Put both of these files in a folder named materials/overviews in your dota (or addon) directory.

Next, create a new textfile named MAPNAME.txt. This is a Key Value file denoting where the bounds of the minimap lie. The structure is as follows:

MAPNAME // Change this key to your map's name
	material "overviews/MAPNAME" //path to the VTF and VMT above.  Note that the file extension is missing here
        //Coordinates to the upper left corner of your map
        pos_y 2560
	pos_x -2560

	scale 5.000 //Minimap scale.  Smaller the map, smaller the number. 
	rotate 0 //Minimap rotation.  This should always be 0.  
	zoom 1.0000 //Minimap zoom.  This should always be 1 unless your texture is larger than the playable bounds of your map.  

Put this file in your resource/overviews folder in your dota (or addon) directory

Additional Notes

The func_brush named "structure_seal" should be nodraw (no skybox required). Select a hero by typing "jointeam goodguys/badguys"

Demo maps

Flatgrass by Z-Machine