Creating CCP maps
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).
Team Control Points
Your team control points 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.
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.
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. 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 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 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.)
These things must happen (for each team) when a node is taken (assuming a neutral node setup):
- Enable this func respawnroom
- Set this func respawnroom to this team
- Disable the last func respawnroom
- Enable these info team playerspawns
- Set these info team playerspawns to this team
- Disable the last info team playerspawns
Early win detection
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). Hovis has developed a workaround system to detect these cases, it's not easy to understand, but it works. 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.)
This can help!
I've supplied my original proof of concept map here: http://piratesofpacifica.com/tf2/ccp_mechanics.vmf
Feel free to use this as a prefab and build your own maps from my I/O design, or use it as a reference. IF you do use ccp_mechanics as a jumping point, it would be awfully nice if you gave me a little credit. I have put an awful lot of effort into planning this maptype and debugging the I/O.