Spawn Point Tutorial

by Uncle Sam

**Introduction**

Hey gang. In this tutorial we’re gonna go over spawn points and how to tie them in with control points. Since the majority of levels are played in conquest mode, we’ll be discussing how to set up spawns for a conquest map. That being said, the spawn point and control point files for your map are located in the CONQUEST folder of your RFA file. Let’s go ahead and have a look at them and try and understand what does what:

* ControlPoints.con - Contains the coordinates for each control point. This will basically set where the flag goes. Technically a flag is a static object but it is defined here and not in StaticObjects.con.

* ControlPointTemplates.con - This file sets all the parameters for each control point. What you edit here will determine what kind of level you’ll be playing on.

* SoldierSpawns.con - Contains the coordinates for each individual player spawn point.

* SoldierSpawnTemplates.con - Takes each player spawn point and assigns it to a group.

* SpawnPointManagerSettings.con - Takes each group of spawn points and assigns them to a team for the start of the round.

*NOTE: We will not be discussing object spawn points in this tutorial. That will be dealt with in a separate tutorial for length’s sake.*

****ControlPoints.con****

Let’s begin by taking a look at the ControlPoints file. Let’s take a look at part of the one for Iwo Jima:

The first line assigns a new control point and gives it a name. This name must match the one that you will put in the templates file. The second line obviously defines it’s position. You will have to have both of these for each control point that you want to make.

****ControlPointTemplates.con****

You’ll always see this section at the top any control point template file:

This text must be here even if you’re making a template file from scratch. If you’re editing an existing one, leave it alone. This is the section for the Allied landing beach at Iwo Jima:

* ObjectTemplate.create ControlPoint sandBase\_Cpoint - Sets the new control point parameters section. The name must match the name of the control point from the controlpoints.con file.

* ObjectTemplate.networkableInfo ControlPointInfo - Required by game. Don’t edit.

* ObjectTemplate.setControlPointName Landing\_Beach - This is the in-game name of the control point. If the Allies capture it, “Allies captured Landing\_Beach” would appear on the screen.

* ObjectTemplate.radius 25 - Defines how close you must be to the flag to take control of it.

* ObjectTemplate.team 0 - Determines who will be in control of the point at the beginning of the round. (1 - Axis, 2 - Allies, 0 - Neutral) These numbers are universal for defining teams in CON files. Remember them.

* ObjectTemplate.spawnGroupId 6 - Determines what predefined group of player spawn points will be attached to this control point.

* ObjectTemplate.objectSpawnerId 6 - Same as spawnGroupId but for objects.

* ObjectTemplate.areaValue 0 - This line is very important for Conquest maps and warrants a detailed explanation. In order for a team to force the opposing team to start losing tickets automatically, that team must hold 100 or more areaValue points at one time. Let’s say there were 5 “capture-able” points on the map. If you want a team to have to capture all of them before the opposing team starts flashing red, you would set this value to 20 for each control point. (20 X 5 = 100) If you wanted them to have to capture only 2/3 of them, you could set it to 35. This would put you at 105 points, but since its over 100, it will still work. Permanent bases that can’t be captured or should only be taken by one team(like the landing beach) should be set to “0”.

**Take a Breath**

* ObjectTemplate.timeToGetControl 2 - How long it takes to capture a neutral flag. Set to “9999” for permanent team bases.

* ObjectTemplate.timeToLoseControl 2 - How long it takes to make a flag captured by the other team neutral. Set to “9999” for permanent team bases.

* ObjectTemplate.onlyTakeableByTeam 2 - Makes it so that only one team can actually capture the point. To my knowledge, this is only used on the beaches at Iwo Jima and Omaha Beach. Remove this line if you have no use for it!

* ObjectTemplate.disableIfEnemyInsideRadius 0 - This one is obvious but you probably don’t want to change it.

* ObjectTemplate.disableWhenLosingControl 0 - Ditto.

* ObjectTemplate.loseControlWhenEnemyClose 1 - Allows point to be captured by opposing team.

* ObjectTemplate.loseControlWhenNotClose 0 - Leave it alone unless you’re making a “king of the hill” map or something.

* ObjectTemplate.unableToChangeTeam 0 - Determines if another team can take the point. Set to “1” for permanent team bases.

Otherwise, set to “0” or remove the line completely.

* ObjectTemplate.geometry flagbase\_m1 - Initializes the flagpole model.

* ObjectTemplate.hasCollisionPhysics 1 - Makes the flag solid. Watch yer drivin’.

* ObjectTemplate.addTemplate AnimatedFlag - Initializes animated flag.

* ObjectTemplate.setPosition 0/8.2/0 - Keep it the way it is. Test out other values if you want, but that’s at your own risk.

* ObjectTemplate.setTeamGeometry 1 flagJp\_m1 - Sets the model for the waving flag. (Jp, Us, Uk, Ge, So).

* ObjectTemplate.setTeamGeometry 2 flagus\_m1 - Ditto for team “2”.

Whew! Don’t worry that one was by far the most complicated.

****SoldierSpawns.con****

Now on to SoldierSpawns.con. Let’s look at one of the player spawn points.

The first line assigns the spawn point a name. This name must match its counter-part in the SoldierSpawnTemplates.con file. You’ll notice in many of the official levels that spawnpoints are often called OpenSpawnPoint, AxisSpawnPoint, etc. You can name them whatever you want though. Its really up to you. You should know what the other two lines do by now.

****SoldierSpawnTemplates.con****

This is the template for the player spawn we just looked at:

In the first line, the name matches perfectly with its counter part. The second line is the Spawn ID. Each player spawn point must have its own ID regardless of what group its in. If you have 30 spawn points you’d better have 30 spawn ID’s. No repeating them.

The third line is very important. This will assign the spawn point to a group of spawns and you use this Group ID to tie the group to a control point. So if you had 5 soldier spawn points in a group you would tie it to a control point so that whoever was in control would be able to utilize them. Go back and look at the ControlPointTemplates.con file to see what ID you want to tie it to.

****SpawnPointManagerSettings.con****

I find that this file doesn’t serve much purpose unless you’re making a spawn group that isn’t tied to a control point like the para-drop point on Market Garden. But to be safe use it anyway:

* spawnPointManager.group 4 - Spawn Group ID.

* spawnPointManager.groupTeam 1 - Team that will be using the spawn point at the start of the round.

* spawnPointManager.groupIcon test1.tga - Either leave this line the way it is or delete. I have seen no difference in doing either.

* rem spawnPointManager.groupStatus 0 - REMed out it almost every official map. Leave it or delete it.

****Parachute Spawn Point Details****

This is incredibly easy to do. Open up your SoldierSpawnTemplates.con file, and for every player spawn point that you want to deploy with an open chute at spawn, just add this line: ObjectTemplate.setSpawnAsParaTroper 1

*NOTE: Specialized spawn points like the one in Market Garden do not need to be tied to any control point since they cannot be captured. However, they still need their own group ID. Don’t forget to spread them out from each other a little. Also, in the SoldierSpawns.con file, give them a decent altitude of 100-200 above ground for their “Z” coordinate value.*

****Last minute tips and advice****

1. When setting up a group of spawn points, make sure to spread them out some so that soldiers will actually have a chance to overtake a spawn camper, like a tank or artillery.
2. If you get confused, take a look at the CON files for the official levels. Learning from example is the best way.