Creating CCP maps: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(cleanup)
Line 1: Line 1:
Creating a CCP_ type map is a little more intensive than the average TF2 map, due to the unstable nature of CCP_ gameplay (requiring more for-thought and planning directed towards balance) and also due to the "workaround" nature of the map mechanics (TF2 wasn't made to support this map type, and the I/O connections get very hairy).
Creating a CCP type map is a little more difficult than your average TF2 map, due to the unstable nature its gameplay (requiring more forethought and planning for balance) and also due to the "workaround" nature of the map mechanics (TF2 wasn't designed to support this type of maps, so the I/O connections get very hairy).


==Team Control Points==
== Team Control Points ==
Your [[team control point]]s need to be setup in an overall "circular" arrangement. Pay attention to how the geometry affects game balance, it usually a good idea to have a very symmetrical map to make sure one team doesn't start with ah advantage.
Your [[team control point]]s need to be setup in an overall "circular" arrangement. Pay attention to how the map layout affects game balance, it is usually a good idea to have a very symmetrical map to make sure neither team has ah advantage.


So far [[Hovis]] (me) has only tried configurations of 4 points. More testing is required, but [[Hovis]] feels that a good CCP_ map will consist of 6 nodes, and maybe more.
So far, only a 4-point configuration has been attempted. And while more testing is required, the CCP author ([[Hovis]]) feels a good map can consist of as many as 6 nodes, or maybe more.


==Respawn Rooms==
== Respawn rooms ==
There are two basic ways to handle respawning with ccp_ that is with team 'neutral' spawn rooms (that change owners with the associated node) for each node, or with 2 respawn rooms per node that are team specific. This is a matter of taste for the map developer, both can be made to work, but I find 'neutral' respawns to be easier to make.
There are two basic ways to handle respawning with CCP. One is through team-neutral spawn rooms (that change owners with the node re-association) for each node, and the other is with 2 respawn rooms per node that are team-specific. This is a matter of taste for the map author, both can be made to work, but I find the "neutral" respawns to be easier to handle.
If you're going to use 'neutral' respawn rooms, you must deal with a new issue, that being spawn campers.  I find the simplest solution is to simply do away with [[func regenerate]]s and make the respawn rooms exit only via map design, or clever triggers combined with [[func respawnroomvisualizer]]s.
If you want to make more than one spawn room per node, be my guest, but I think it will simply cause more pain in the long run.


In either case, you will need some intermediate I/O control to make sure your players are spawning in the right rooms at the right time. (You will want your players to spawn into the room associated with the most "forward" control point that team owns.)
If you're going to use "neutral" respawn rooms, you must deal with a new issue - spawn camping. I find the simplest solution to this is to simply do away with [[func regenerate]]s and make the respawn rooms exit only via map design, or clever triggers combined with [[func respawnroomvisualizer]]s. If you want to make more than one spawn room per node, be my guest, but I think it will simply cause more pain in the long run.


These things must happen (for each team) when a node is taken (assuming a neutral node setup):
In either case, you will need some intermediate I/O control to make sure that players are spawning in the right rooms and at the right time. Generally, you will want players to spawn into the room associated with the most "forward" control point that their team owns.
* Enable this [[func respawnroom]]
* Set this [[func respawnroom]] to this team
* Disable the last [[func respawnroom]]
* Enable these [[info player teamspawn]]s
* Set these [[info player teamspawn]]s to this team
* Disable the last [[info player teamspawn]]s


==Early win detection==
The following events must be triggered (per team) when a node is captured (in neutral node setup):
It is possible for one team to take their enemy's starting node before that enemy team takes their first node, this causes a problem because the automatic win detection doesn't fire (there's still an unclaimed node) but now the enemy team CANNOT continue (they need a node to get a node).
# Enable this [[func respawnroom]]
[[Hovis]] has developed a workaround system to detect these cases, it's not easy to understand, but it works.
# Set this [[func respawnroom]] to this team
Please inspect the logic_compare entities in the reference VMF for the I/O settings.  (IF I still understood how it works, I'd describe it; but I DON'T remember, and somebody else can probably build a better one anyway.)
# Disable the last [[func respawnroom]]
# Enable these [[info player teamspawn]]s
# Set these [[info player teamspawn]]s to this team
# Disable the last [[info player teamspawn]]s


==This can help!==
== Early win detection ==
I've supplied my original proof of concept map here:
It is possible for one team to capture the opposing team's starting node before they manage to take it themselves. This causes a problem because the automatic win detection doesn't activate if not all of the nodes are captured, and the enemy team cannot continue because you need a node to capture a node. [[Hovis]] has developed a workaround system to detect these cases, it's not easy to understand, but it works. Please inspect the <cide>logic_compare</code> entities in the reference VMF for the working I/O settings.


http://piratesofpacifica.com/tf2/ccp_mechanics.vmf , a faq is available here: [[ccp mechanics]].
{{note|If I still understood how it works, I'd describe it; but I don't remember, and somebody else can probably build a better one anyway.}}


Feel free to use this as a prefab and build your own maps from my I/O design, or use it as a reference.
== Reference material ==
IF you do use ccp_mechanics as a jumping point, it would be awfully nice if you gave me ([[user:Hovis]]) a little credit.  I have put an awful lot of effort into planning this maptype and debugging the I/O.
* [http://piratesofpacifica.com/tf2/ccp_mechanics.vmf ccp_mechanics.vmf] - the original POC map.
* [[ccp mechanics]] - a FAQ for the above map.
 
Feel free to use the original I/O design as a reference for your own CCP-type map, or even use the map in its entirety as a foundation for your own. If you do use <code>ccp_mechanics</code> as a jumping point, make sure to also credit its author ([[user:Hovis|Hovis]]).


== See also ==
== See also ==
* [[Cyclic Capture Points]]
* [[Cyclic Capture Points]]

Revision as of 05:23, 1 February 2008

Creating a CCP type map is a little more difficult than your average TF2 map, due to the unstable nature its gameplay (requiring more forethought and planning for balance) and also due to the "workaround" nature of the map mechanics (TF2 wasn't designed to support this type of maps, so the I/O connections get very hairy).

Team Control Points

Your team control points need to be setup in an overall "circular" arrangement. Pay attention to how the map layout affects game balance, it is usually a good idea to have a very symmetrical map to make sure neither team has ah advantage.

So far, only a 4-point configuration has been attempted. And while more testing is required, the CCP author (Hovis) feels a good map can consist of as many as 6 nodes, or maybe more.

Respawn rooms

There are two basic ways to handle respawning with CCP. One is through team-neutral spawn rooms (that change owners with the node re-association) for each node, and the other is with 2 respawn rooms per node that are team-specific. This is a matter of taste for the map author, both can be made to work, but I find the "neutral" respawns to be easier to handle.

If you're going to use "neutral" respawn rooms, you must deal with a new issue - spawn camping. I find the simplest solution to this is to simply do away with func regenerates and make the respawn rooms exit only via map design, or clever triggers combined with func respawnroomvisualizers. If you want to make more than one spawn room per node, be my guest, but I think it will simply cause more pain in the long run.

In either case, you will need some intermediate I/O control to make sure that players are spawning in the right rooms and at the right time. Generally, you will want players to spawn into the room associated with the most "forward" control point that their team owns.

The following events must be triggered (per team) when a node is captured (in neutral node setup):

  1. Enable this func respawnroom
  2. Set this func respawnroom to this team
  3. Disable the last func respawnroom
  4. Enable these info player teamspawns
  5. Set these info player teamspawns to this team
  6. Disable the last info player teamspawns

Early win detection

It is possible for one team to capture the opposing team's starting node before they manage to take it themselves. This causes a problem because the automatic win detection doesn't activate if not all of the nodes are captured, and the enemy team cannot continue because you need a node to capture a node. Hovis has developed a workaround system to detect these cases, it's not easy to understand, but it works. Please inspect the <cide>logic_compare entities in the reference VMF for the working I/O settings.

Note.pngNote:If I still understood how it works, I'd describe it; but I don't remember, and somebody else can probably build a better one anyway.

Reference material

Feel free to use the original I/O design as a reference for your own CCP-type map, or even use the map in its entirety as a foundation for your own. If you do use ccp_mechanics as a jumping point, make sure to also credit its author (Hovis).

See also