Skip to content

war3map.w3i Map Info

Stijn edited this page May 28, 2023 · 5 revisions

Contains general info about the map such as it's name, loading screen title/text/image, dimensions and camera bounds, and other general settings.

Format

uint32		format_version
uint32		map_version
uint32		editor_version
if format_version >= 28 {
	uint32		game_version_major;
	uint32		game_version_minor;
	uint32		game_version_patch;
	uint32		game_version_build;
}
c_string	name
c_string	author
c_string	description
c_string	suggested_players
float[2]	camera_left_bottom
float[2]	camera_right_top
float[2]	camera_left_top
float[2]	camera_right_bottom
int[4]		camera_complements
uint32		playable_width
uint32		playable_height
uint32		flags
char		tileset

uint32		loading_screen_number
if version >= 25 {
	c_string	loading_screen_model		
}
c_string	loading_screen_text
c_string	loading_screen_title
c_string	loading_screen_subtitle

if version >= 25 {
	uint32		game_data_set
}

if version == 18 {
	uint32		map_loading_screen_number
}

if version >= 25 {
	c_string	prologue_screen_model
}
c_string	prologue_text
c_string	prologue_title
c_string	prologue_subtitle

if version >= 25 {
	uint32		fog_style
	float		fog_start_z_height
	float		fog_end_z_height
	float		fog_density
	uint8		fog_color_red
	uint8		fog_color_green
	uint8		fog_color_blue
	uint8		fog_color_alpha

	uint32		weather_id
	c_string	custom_sound_environment
	uint8		custom_light_tileset

	uint8		water_color_red
	uint8		water_color_green
	uint8		water_color_blue
	uint8		water_color_alpha

	if format_version >= 28 {
		uint32		script_type

		if format_version >= 31 {
			uint32		supported_modes
			uint32		game_data_version
		}
	}	
}

uint32		players_count
for each player {
	uint32		internal_number
	uint32		type
	uint32		race
	uint32		fixed_start_position
	c_string	name
	float		starting_position_x
	float		starting_position_y
	uint32		ally_low_priorities_flag
	uint32		ally_high_priorities_flag
	if format_version >= 31 {
		uint32		enemy_low_priorities_flags
		uint32		enemy_high_priorities_flags
	}
}

uint32		forces_count
for each force {
	uint32		focus_flags
	uint32		player_masks
	c_string	name
}

uint32		available_upgrades_count
for each upgrade {
	uint32		player_flags
	char[4]		id
	uint32		level
	uint32		availability
}

uint32		available_tech_count
for each tech {
	uint32		player_flags
	char[4]		id
}

uint32		random_units_table_count
for each table {
	uint32		table_number
	c_string	table_name
	uint32		positions_count
	for each position {
		uint32		position?
	}

	uint32	lines_count
	for each line {
		uint32		chance
		for each position {
			char[4]		id
		}
	}
}

if version >= 25 {
	uint32		random_items_tables_count
	for each table {
		uint32		table_number
		c_string	table_name
		uint32	set_count
		for each set {
			uint32		item_count
			for each item {
				uint32		chance
				char[4]		id
			}
		}
	}
}

Explanation

uint32		format_version  
Format Game
18 RoC
25 TFT
28 1.31
31 1.32
uint32		map_version

The map version which is incremented by one in the editor for everytime the map is saved

uint32		editor_version;
if format_version >= 28 {
	uint32		game_version_major;

1 from 1.32.5

	uint32		game_version_minor;

32 from 1.32.5

	uint32		game_version_patch;

5 from 1.32.5

	uint32		game_version_build;
}

c_string	name  

The map its name displayed ingame. Before the map has fully downloaded the filename is shown instead.

c_string	author
c_string	description
c_string	suggested_players

Shown in the map preview window in the game browser

float[2]	camera_left_bottom
float[2]	camera_right_top
float[2]	camera_left_top
float[2]	camera_right_bottom

Camera bounds as defined in the war3map.j

int[4]		camera_bounds_complements
uint32		playable_area_width
uint32		playable_area_height  
uint32		flags

The flags for the map where the values are:

0x0001: hide minimap in preview screens
0x0002: modify ally priorities
0x0004: melee map
0x0008: playable map size was large and has never been reduced to medium (?)
0x0010: masked area are partially visible
0x0020: fixed player setting for custom forces
0x0040: use custom forces
0x0080: use custom techtree
0x0100: use custom abilities
0x0200: use custom upgrades
0x0400: map properties menu opened at least once since map creation
0x0800: show water waves on cliff shores
0x1000: show water waves on rolling shores

format_version >=25 only:

0x2000: unknown (used fog on ground?)
0x4000: unknown (supplement required?)
0x8000: item classification
0x10000: water tinting

format_version >=31 only:

0x20000: accurate probability for calculations
0x40000: custom ability skins

char		tileset

The map tileset which can be one as defined in the specification for war3map.w3e

uint32		loading_screen_number

Loading screen background number which is its index in the preset list (-1 = none or custom imported file)

if version >= 25 {
	c_string	loading_screen_model		
}
c_string	loading_screen_text
c_string	loading_screen_title
c_string	loading_screen_subtitle

if version >= 25 {
	uint32		game_data_set
}

if version == 18 {
	uint32		map_loading_screen_number
}

if version >= 25 {
	c_string	prologue_screen_model
}
c_string	prologue_text
c_string	prologue_title
c_string	prologue_subtitle

if version >= 25 {
	uint32		fog_style
	float		fog_start_z_height
	float		fog_end_z_height
	float		fog_density
	uint8		fog_color_red
	uint8		fog_color_green
	uint8		fog_color_blue
	uint8		fog_color_alpha

	uint32		weather_id
	c_string	custom_sound_environment
	uint8		custom_light_tileset

	uint8		water_color_red
	uint8		water_color_green
	uint8		water_color_blue
	uint8		water_color_alpha

	if format_version >= 28 {
		uint32		script_type

0 for Jass and 1 for Lua

		if format_version >= 31 {
			uint32		supported_modes
			uint32		game_data_version
		}
	}	
}

uint32		players_count
for each player {
	uint32		internal_number
	uint32		type
	uint32		race
	uint32		fixed_start_position
	c_string	name
	float		starting_position_x
	float		starting_position_y
	uint32		ally_low_priorities_flag
	uint32		ally_high_priorities_flag
	if format_version >= 31 {
		uint32		enemy_low_priorities_flags
		uint32		enemy_high_priorities_flags
	}
}

uint32		forces_count
for each force {
	uint32		focus_flags
	uint32		player_masks
	c_string	name
}

uint32		available_upgrades_count
for each upgrade {
	uint32		player_flags
	char[4]		id
	uint32		level

Level of the upgrade for which the availability is changed (this is actually the level - 1, so 1 => 0)

	uint32		availability

(0 = unavailable, 1 = available, 2 = researched)

}

uint32		available_tech_count
for each tech {
	uint32		player_flags
	char[4]		id
}

There's no need for an availability value, if a tech-id is in this list, it means that it's not available

uint32		random_units_table_count
for each table {
	uint32		table_number
	c_string	table_name
	uint32		positions_count
	for each position {
		uint32		position?

Positions are the table columns where you can enter the unit/item ids, all units in the same line have the same chance, but belong to different "sets" of the random group, called positions here.

Table Value
Unit table 0
Building table 1
Item table 2
	}

	uint32	lines_count
	for each line {
		uint32		chance

Percentual chance 0-100

		for each position {
			char[4]		id

This can also be a random unit/item id. aN unit/item id of 0x00000000 indicates that no unit/item is created.

		}
	}
}

if version >= 25 {
	uint32		random_items_tables_count
	for each table {
		uint32		table_number
		c_string	table_name
		uint32	set_count
		for each set {
			uint32		item_count
			for each item {
				uint32		chance

Percentual chance 0-100

				char[4]		id

This can also be a random item id

			}
		}
	}
}
Clone this wiki locally