I've been mulling over possible gametypes for a mod some friends and I are planning. This is meant as a platform for launching other game types, like CTF, or king of the hill, or something resembling Onslaught or Assault mode from UT2004, or any gametype you can think of really. Constructive critisism, comments, and suggestions - accompanied by a logical explination - are welcome. BTW, if you're doing a mod, please don't rip off my idea any worse than I'm ripping off other games.
Initialization:
The world map is divided into an even number of regions (so it can be divided between the opposing teams). When the server is started, the regions are divided up evenly among the 2 sides, so that each team controls an equal number of regions (with the regions colored to match the controlling team) and the regions controlled by a team are all adjacent to each other (so you don't get a region controlled by one team surrounded by regions controlled by the other team).
Begin play:
At the start of the match, 2 adjacent regions that are controlled by opposing teams are chosen, and the map assigned to them is started up. There are a couple ways I've thought of to go about choosing the map.
1) Each region of the world is assigned a general terrain type (snowy, temperate, tropical, beach, icy, tundra, savanna, etc) in the data file used to lay out the regions of the world (an XML file or something). The game then grabs a map which matches that terrain type from the available maps (this would also be defined in an XML file) and assigns it to be used whenever those 2 particular regions are chosen as the battle ground.
Defining things in a simple XML file also makes it easy for another party to create new world maps easily (I could even make a program to make defining new world maps super easy with a GUI), or to edit existing world maps to incorporate terrain types that suit the maps they have on their server.
2) This method also uses a predefined terrain type to determine the map to be used. However, unlike the first method, it does not permanently assign the chosen map to those 2 regions for the entire length of the match. Instead, it randomizes the map used for the 2 regions in question. This means that you could fight over the same 2 regions twice but play on a different map each time. It adds a bit more flexibility on a per-match basis, but also creates the possibility that you could fight on the same map for 2 entirely different pairs of regions. Which might hinder the immersion factor.
End play:
At the end of the round, both teams are returned to the view of the world map. The winning team now gains control over both regions. Then the process of choosing 2 regions for the next round begins again.
Objective:
If you haven't figured it out already. The way to win the match is to gain control of all the regions in the world. This can create very differing types of gameplay depending on how many regions are in the world. If there are a lot of regions, you could see an epic war that may never see a match winner and would behave much like an MMO game that continuously changes even when you're not online. If there are only a few regions, the match could end in a couple hours or less.
Miscellaneous ideas:
Control bonuses:
To help the process of victory along, I think that perhaps it would be a good idea to grant small bonuses based on the percentage of the world your team controls. These bonuses would be minor - so as not to create a strong "rich get richer, poor get poorer" scenario - but would be helpful enough to push the winning team closer to winning and make the under dogs feel even more like under dogs. To try to create the feeling that one really gets when he knows the opponent is getting stronger with every victory. So that you really start to feel like you need to win this next battle or you might lose the war.
Tide bonuses:
To try to create the feeling of a tide turning victory, I also think it would be a good idea to have temporary bonuses that would be stronger than normal control bonuses. Each successive loss for a team increases the power of their tide bonus (on an exponential slope, so that each round lost adds more and more strength to the bonus, until a cap is reached). For example. If the blue team wins 2 matches in a row (that number could change), the red team would be eligible for a tide bonus in the next round. If the red team won that round, they would receive a strong (relative to the control bonuses) bonus for the next round, which, as the name suggests, may give them the chance to turn the tide of the war back in their favor. The power of the tide bonus also affects how long it lasts. A 2 round tide bonus (like you would get from the example above) would only last you 1 round and then completely disappear for the next round. A 3 round bonus might last 1 round at full strength, and then 1 more round at 1/4 strength before disappearing completely. If you lose a round while a tide bonus is in effect for your team, the tide bonus is erased immediately.
Peasant revolt:
At random, the server could choose to do a "Peasant revolt". Example. A region acquired by the red team but originally assigned to the blue team (at the start of the match) could spark a battle which would allow the blue team to take back the region (weather it's surrounded by red regions or not). The blue team would have a handicap of some kind in this scenario, making it harder, but not impossible to achieve victory. If they did achieve victory, their team would gain the region back.
Map memory:
I'm not familiar with how HL2 will handle the destruction and deformation of objects (buildings, ground, etc), but I think it would be cool if a way could be divised for the map to retain some "memory" of the last battle. Like if a large explosion created a crater in the ground, or a building or other structure took signifigant damage the next time the map was loaded, those battle scars would still be there. If you wanted to get really fancy, you could even heal the scars based on how many rounds have passed since the last battle on that map. For example, if the last battle left a huge crater, perhaps it's slightly more shallow during this battle. Then 5 rounds later, it's signifigantly more shallow, then a few rounds after that, it's almost completely gone. The same goes for buildings. Maybe a bridge was destroyed in one battle, and 3 rounds later it's still not there. But if you come back to that map a few rounds after that, the bridge is back. Again, I'm not sure how pheasable this would be, and I don't think any of us will really know until we get the SDK.
I'd also like for the server to keep a running XML database of world stats and player stats. Being in XML format would make them easy to integrate into a website (using JavaScript, PHP, Flash, etc.) so your players could have official records to back up their bragging. If the server is really dedicated, you could even get real-time world status reports for the regions that are controlled, the number of players on the server, the bonuses for each team, etc.
Initialization:
The world map is divided into an even number of regions (so it can be divided between the opposing teams). When the server is started, the regions are divided up evenly among the 2 sides, so that each team controls an equal number of regions (with the regions colored to match the controlling team) and the regions controlled by a team are all adjacent to each other (so you don't get a region controlled by one team surrounded by regions controlled by the other team).
Begin play:
At the start of the match, 2 adjacent regions that are controlled by opposing teams are chosen, and the map assigned to them is started up. There are a couple ways I've thought of to go about choosing the map.
1) Each region of the world is assigned a general terrain type (snowy, temperate, tropical, beach, icy, tundra, savanna, etc) in the data file used to lay out the regions of the world (an XML file or something). The game then grabs a map which matches that terrain type from the available maps (this would also be defined in an XML file) and assigns it to be used whenever those 2 particular regions are chosen as the battle ground.
Defining things in a simple XML file also makes it easy for another party to create new world maps easily (I could even make a program to make defining new world maps super easy with a GUI), or to edit existing world maps to incorporate terrain types that suit the maps they have on their server.
2) This method also uses a predefined terrain type to determine the map to be used. However, unlike the first method, it does not permanently assign the chosen map to those 2 regions for the entire length of the match. Instead, it randomizes the map used for the 2 regions in question. This means that you could fight over the same 2 regions twice but play on a different map each time. It adds a bit more flexibility on a per-match basis, but also creates the possibility that you could fight on the same map for 2 entirely different pairs of regions. Which might hinder the immersion factor.
End play:
At the end of the round, both teams are returned to the view of the world map. The winning team now gains control over both regions. Then the process of choosing 2 regions for the next round begins again.
Objective:
If you haven't figured it out already. The way to win the match is to gain control of all the regions in the world. This can create very differing types of gameplay depending on how many regions are in the world. If there are a lot of regions, you could see an epic war that may never see a match winner and would behave much like an MMO game that continuously changes even when you're not online. If there are only a few regions, the match could end in a couple hours or less.
Miscellaneous ideas:
Control bonuses:
To help the process of victory along, I think that perhaps it would be a good idea to grant small bonuses based on the percentage of the world your team controls. These bonuses would be minor - so as not to create a strong "rich get richer, poor get poorer" scenario - but would be helpful enough to push the winning team closer to winning and make the under dogs feel even more like under dogs. To try to create the feeling that one really gets when he knows the opponent is getting stronger with every victory. So that you really start to feel like you need to win this next battle or you might lose the war.
Tide bonuses:
To try to create the feeling of a tide turning victory, I also think it would be a good idea to have temporary bonuses that would be stronger than normal control bonuses. Each successive loss for a team increases the power of their tide bonus (on an exponential slope, so that each round lost adds more and more strength to the bonus, until a cap is reached). For example. If the blue team wins 2 matches in a row (that number could change), the red team would be eligible for a tide bonus in the next round. If the red team won that round, they would receive a strong (relative to the control bonuses) bonus for the next round, which, as the name suggests, may give them the chance to turn the tide of the war back in their favor. The power of the tide bonus also affects how long it lasts. A 2 round tide bonus (like you would get from the example above) would only last you 1 round and then completely disappear for the next round. A 3 round bonus might last 1 round at full strength, and then 1 more round at 1/4 strength before disappearing completely. If you lose a round while a tide bonus is in effect for your team, the tide bonus is erased immediately.
Peasant revolt:
At random, the server could choose to do a "Peasant revolt". Example. A region acquired by the red team but originally assigned to the blue team (at the start of the match) could spark a battle which would allow the blue team to take back the region (weather it's surrounded by red regions or not). The blue team would have a handicap of some kind in this scenario, making it harder, but not impossible to achieve victory. If they did achieve victory, their team would gain the region back.
Map memory:
I'm not familiar with how HL2 will handle the destruction and deformation of objects (buildings, ground, etc), but I think it would be cool if a way could be divised for the map to retain some "memory" of the last battle. Like if a large explosion created a crater in the ground, or a building or other structure took signifigant damage the next time the map was loaded, those battle scars would still be there. If you wanted to get really fancy, you could even heal the scars based on how many rounds have passed since the last battle on that map. For example, if the last battle left a huge crater, perhaps it's slightly more shallow during this battle. Then 5 rounds later, it's signifigantly more shallow, then a few rounds after that, it's almost completely gone. The same goes for buildings. Maybe a bridge was destroyed in one battle, and 3 rounds later it's still not there. But if you come back to that map a few rounds after that, the bridge is back. Again, I'm not sure how pheasable this would be, and I don't think any of us will really know until we get the SDK.
I'd also like for the server to keep a running XML database of world stats and player stats. Being in XML format would make them easy to integrate into a website (using JavaScript, PHP, Flash, etc.) so your players could have official records to back up their bragging. If the server is really dedicated, you could even get real-time world status reports for the regions that are controlled, the number of players on the server, the bonuses for each team, etc.