D-Day:Normandy Mapper's Briefing

So you think you've got what it takes to make a map for D-Day and you want to find out what it's all about.  You're in the right place.  This manual will guide you through some of the basics involved in making a map for D-Day: Normandy.

INTRODUCTION: The Basics

Making levels for D-Day is a unique experience.  The maps for the mod combine many of the detail and conceptual ideas used in single player maps and the fast paced flow of multi-player maps.  The best place to start making your map is on the web.  Do some research on WWII and try to find a particular battle or location that you think would make a great map.  See if you can find photos of this area.  Any documentation you can collect on the actual events will be invaluable to you later when you start to lay brushes down.

Now that you know the history behind your map start thinking about how to implement some of the actual events into your map.  For instance, the Omaha Beach map (dday1.bsp) is modeled after Operation Overlord.  In the battle, allied forces had to storm the beach and take out the axis defensive bunkers.  The map reflects this; the allies can only win by capturing the bunkers, while the axis side can win by inflicting heavy casualties on the allies or by successfully defending their bunkers to gain enough points.
Remember, that at the present time, objective entities consist of either point collection to gain a win, or by inflicting kills.  The func_explosive has been enabled in multi-player for D-Day, so you can also incorporate this into your objectives.  An example idea of this would be to blow up an axis generator which keeps the doors to their base sealed.  Be creative!

As you probably know, we have made every effort to try to make D-Day: Normandy as accurate as possible within the Q2 engine.  The maps reflect a big part of this.  Creative texture work and proper handling of r_speeds are all big factors that come into play in "real world" maps.  A good place to get some of the basics behind the more technical issues of Q2 mapping is at www.gamedesign.net .  

One of the fun things about D-Day maps is that they don't have to be balanced to make it even for both teams.  In WWII soldiers fought in uneven conditions and had to overcome obstacles.  Try to reflect this in your maps.  Give the defending team better positioning and defenses.  Choke points for heavy machine gunners and sniper posts are all acceptable.  

GETTING TECHNICAL: Campaign System and Entities

D-Day uses a campaign system for its maps.  What this means is that the map maker must set maps to be played depending on which team wins or loses.  The info_mission_results entity (described below) is responsible for this switch.  Please email Castrator@planetquake.com if you wish to have you map included in a map-pack.  He will assign you with a map number (like dday1, dday2, dday3, etc.) so that your map will play in succession with the existing maps.  If you do not wish to have your map included in a map-pack, set the fields in the info_mission_results entity to existing D-day maps anyway. 

Now for the "not so fun" stuff.  D-Day uses a lot of entities in its maps.  The entities listed below must be used in order to make your map run correctly in D-Day.  Depending on your editor, you may or may not have to make and entity file to use the entites.

*******************************************************************************************
The Following is a list of the custom entities used in D-Day:Normandy.
Use this file as a guide to create you own D-Day:Normandy maps with the correct entities.  Have specific D-Day mapping questions? Contact: Castrator@planetquake.com 

Variables

*NOTE: THE VARIABLES ARE NOT ENTITES.  IN THE ENTITIES BELOW, THE VARIABLE NAMES WILL APPEAR.  WHEN THIS OCCURS, INSERT THE COORESPONDING # FOR THE VARIABLE DEPENDING ON WHAT YOU WANT THE ENTITY TO BEHAVE LIKE IN YOUR MAP.

"mission_t" 

	0	"Defense"
	1	"Offense"
	2	"Patrol"
	99	"Campaign"

"team_t"
	0	"Team 1"
	1	"Team 2"
	99	"None"
Custom Entities

*NOTE: LEAVE OUT THE QUOTATIONS WHEN ACTUALLY MAKING THESE ENTITIES

General Entities:

"info_team_start" It contains all the team information
	"message"  "teamname" What you want to call the team
	"obj_owner"	"team_t" Consult variable from above
	"dll"		"Team's DLL File" (either usa or grm)
	"count"		"mission_t" Consult variable from above
	"kills"		"anumber" The number of kills it takes this team to win 
	"points"	"anumber" The number of points it takes this team to win

*NOTE: You must set either a "kills" or a "points" value (or both).  When the map is played, the outcome will be determined by whichever objective is achieved first. If you do not wish to use a "points" value, just don't fill in the field, but you must, then, set a "kills" value. The same goes if you don't want to set a "kills" value, then you must set a "points" value.

"origin"	not user defined
"angle"		not user defined

"info_mission_results" Contains info related to the particular map

	"team1"	"team_t" (0)
	"map1"	"nameofmap" Next map to be played if Team 1 wins (would look like: map1    		            mapname)
	"team2"	"team_t" (1)
	"map2"	"nameofmap"	Next map to be played if Team 2 wins
	"origin" not user defined
	"angle"	 not user defined


Spawn Entities:

"info_reinforcements_start" Use this spawn entity if you want all your troops to spawn from the same place

	"obj_owner"	"team_t"
	"delay"		"anumber"	Delay before troops are respawned in seconds
	"origin"	not user defined
	"angle"		not user defined

"info_infantry_start" The infantry class will spawn here

	"obj_owner"	"team_t"
	"origin"	not user defined
	"angle"		not user defined
	
"info_officer_start" The officer class will spawn here

	"obj_owner"	"team_t"
	"origin"	not user defined
	"angle"		not user defined

"info_flamethrower_start" The flamethrower class will spawn here

	"obj_owner"	"team_t"
	"origin"	not user defined
	"angle"		not user defined
	
"info_lgunner_start" The light gunner class will spawn here

	"obj_owner"	"team_t"
	"origin"	not user defined
	"angle"		not user defined

"info_hgunner_start" The heavy gunner class will spawn here

	"obj_owner"	"team_t"
	"origin"	not user defined
	"angle"		not user defined
	
"info_special_start" The airborne class will spawn here

	"obj_owner"	"team_t"
	"origin"	not user defined
	"angle"		not user defined	

"info_engineer_start" The engineer class will spawn here 

	"obj_owner"	"team_t" 
	"origin"	not user defined
	"angle"		not user defined

"info_medic_start" The medic class will spawn here

	"obj_owner"	"team_t" 
	"origin"	not user defined
	"angle"		not user defined	

"info_sniper_start" The sniper class will spawn here

	"obj_owner"	"team_t" 
	"origin"	not user defined
	"angle"		not user defined

"info_player_start" The player will be positioned here when the map is loaded, and again when they are killed.
 
	"origin"	not user defined
	"angle"		not user defined


Objective Entities:
"objective_touch" This entity is like a normal trigger that the player must touch to activate.  

	"obj_owner"	"team_t" 	The Team that owns the objective
	"health"	"anumber"	How many points are awarded if captured
	"dmg"		"anumber"	How many points are taken when lost
	"message"	"aword"		The name of the objective

*NOTE: This entity is used frequently.  On the Omaha beach map, it was used to define the names of pillboxes and other objectives.  It is the most frequently used objective entity. 






"func_explosive_objective" This entity awards points when you blow it up.
	"obj_owner" "team_t"  The team that owns the objective
	"obj_name"  "aword"   The name of the objective
	"obj_gain"  "anumber" Number of points awarded if destroyed
	"obj_loss"  "anumber" Number of points taken away if destroyed
	"health"    "anumber" Amount of damage it takes to destroy entity
	"mass"      "anumber" Amount of debris seen when entity explodes
	"dmg"       "anumber" Amount of damage entity will inflict 



             
