Ive been pondering a way to add objectives to a game via a mutator. Im not concerned with bot ai right now, because theres always a way to jimmy-rig the game to act the way you want (and AI scares the crap out of me
I was considering a dynamic system where instead of the objectives being built into the map, the objectives are actually saved to an ini and read when the map loads. Of course, this means that there has to be a way to create them, thus ive come up with a rather screwed up method of letting someone build their own objectives for the map:
There is a team based gametype that lets you choose any map. When you spawn into the map the time limit is removed, the frag limit is gone, and any lives you may have set are removed as well. Bots, of course, wouldnt be enabled during 'Objective Build' mode, so youve pretty much got the whole level to screw around with. The player is given 6 'weapons' which will perform specific tasks in building the objectives for the level. All weapons have a few things in common: Primary fire places or alters objectives, depending on what you actually hit with it, and secondary removes them outright (which would be a pain because itd have to make sure references are cleared) When you create or alter an objective, instead of the weapon actually 'firing' anything it spawns a blank objective of the weapons type and brings up a GUI that lets you alter the properties of it (which would be limited compared to UED, but its the best i can come up with atm)
The actual weapons:
1. Point Placement Tool - allows the user to place and a 'point' objective for the team they are currently on. These points can be playerstarts, 'return' points, or 'control' points. Properties such as 'Infinite completion' will be available (so you could make a generic "Capture the thing" with this quite easily) and many other scoring related properties will be available, as well as appearance and other semi-important stuffs.
2. Carryable Placement Tool - Allows the user to place and edit an objective actor that will need to be picked up and carried somewhere (or held to gain points, if you want) Scoring and display properties will be available, as well as speed and health related modifiers to the carrier.
3. Interactable Placement Tool - allows the user to place and edit objectives with a form of AI. (which means itll be the biggest pain in the ass to get to work right) This type of objective makes for rescue missions, protect the goober, or herd the sheep types of objectives available. Display, movement, scoring, and generic AI modifiers are available.
4. Destroyable Placement Tool - allows the user to place and edit an objective that should be destroyed or damaged to trigger a 'win' condition for it. General properties will be available, as well as any form of armoring or damage reduction.
5. Linker Tool - Using this tool the player is allowed to link different objective-goals together to form a single objective. Linking the red team's flag and the blue team's flag base together will make the objective "Bring the enemy flag to our flagbase," and viola! CTF with a more complicated back end
Also, destroyables can be linked to require players to destroy 5 power generators before they can move on to the next objective.
6. Finalizing Tool - This tool finalizes the current objective that the player is working on, setting it in stone, and allowing for special scoring properties to be added when a team completes it. It also lets the player place a marker to which the HUD will point an arrow at when this objective is the currently active one for the team.
When the finalizing tool is used on the last objective it will bring up an extra window that will override any server settings (such as score limit, lives, and timelimit) to allow for specific time and score limits on a per map basis.
Also, on top of this already screwed up system of creation, i was thinking of allowing the players an extra button that would perform some objective specific task (Such as unplug the robot's power supply or tell everyone in the bank to get down... that kinda stuff) but as it is ive got it so freaking tangled up in my head that i wouldnt be able to make it out. In the end it would rely on the team's current objective creating an inventory actor for each player on the team that would have the ObjectiveContext exec in it, where it will do anything that id need it to... but that means that id also have to make a bunch of generic ObjectiveTask items to try and cover as many bases as possible.
Of course, on the players end there would be a bit of a wait when the level starts up as its got to read the saved objectives for each team and create them, properly link them, and establish all of the specific player starts. The mutator will handle removing the default gametype's objectives (the ball in BR, the flags in CTF, the dom points in DDOM, you get the picture) and it will also take care of any scoring to be had. Players would have to get a menu telling them what objectives there are and how to go about completing them, as well as any 'sub-objectives' that wouldnt be required to win the level, but will give them extra points or allow them to spawn in different places and whatnot. Thered be an arrow on the hud somwhere that will point towards the next objective, so people wont get so lost... might even add in something of an indicator of what the objective requires ("Destroy", "Steal", "Rescue", yadda yadda)
I know i could have sent myself an email just so i can remember all this crap, but i figured i might as well post it here and see how people react to the whole idea and whether or not theyd be interested in playing/messing with such a system.
There is a team based gametype that lets you choose any map. When you spawn into the map the time limit is removed, the frag limit is gone, and any lives you may have set are removed as well. Bots, of course, wouldnt be enabled during 'Objective Build' mode, so youve pretty much got the whole level to screw around with. The player is given 6 'weapons' which will perform specific tasks in building the objectives for the level. All weapons have a few things in common: Primary fire places or alters objectives, depending on what you actually hit with it, and secondary removes them outright (which would be a pain because itd have to make sure references are cleared) When you create or alter an objective, instead of the weapon actually 'firing' anything it spawns a blank objective of the weapons type and brings up a GUI that lets you alter the properties of it (which would be limited compared to UED, but its the best i can come up with atm)
The actual weapons:
1. Point Placement Tool - allows the user to place and a 'point' objective for the team they are currently on. These points can be playerstarts, 'return' points, or 'control' points. Properties such as 'Infinite completion' will be available (so you could make a generic "Capture the thing" with this quite easily) and many other scoring related properties will be available, as well as appearance and other semi-important stuffs.
2. Carryable Placement Tool - Allows the user to place and edit an objective actor that will need to be picked up and carried somewhere (or held to gain points, if you want) Scoring and display properties will be available, as well as speed and health related modifiers to the carrier.
3. Interactable Placement Tool - allows the user to place and edit objectives with a form of AI. (which means itll be the biggest pain in the ass to get to work right) This type of objective makes for rescue missions, protect the goober, or herd the sheep types of objectives available. Display, movement, scoring, and generic AI modifiers are available.
4. Destroyable Placement Tool - allows the user to place and edit an objective that should be destroyed or damaged to trigger a 'win' condition for it. General properties will be available, as well as any form of armoring or damage reduction.
5. Linker Tool - Using this tool the player is allowed to link different objective-goals together to form a single objective. Linking the red team's flag and the blue team's flag base together will make the objective "Bring the enemy flag to our flagbase," and viola! CTF with a more complicated back end
6. Finalizing Tool - This tool finalizes the current objective that the player is working on, setting it in stone, and allowing for special scoring properties to be added when a team completes it. It also lets the player place a marker to which the HUD will point an arrow at when this objective is the currently active one for the team.
When the finalizing tool is used on the last objective it will bring up an extra window that will override any server settings (such as score limit, lives, and timelimit) to allow for specific time and score limits on a per map basis.
Also, on top of this already screwed up system of creation, i was thinking of allowing the players an extra button that would perform some objective specific task (Such as unplug the robot's power supply or tell everyone in the bank to get down... that kinda stuff) but as it is ive got it so freaking tangled up in my head that i wouldnt be able to make it out. In the end it would rely on the team's current objective creating an inventory actor for each player on the team that would have the ObjectiveContext exec in it, where it will do anything that id need it to... but that means that id also have to make a bunch of generic ObjectiveTask items to try and cover as many bases as possible.
Of course, on the players end there would be a bit of a wait when the level starts up as its got to read the saved objectives for each team and create them, properly link them, and establish all of the specific player starts. The mutator will handle removing the default gametype's objectives (the ball in BR, the flags in CTF, the dom points in DDOM, you get the picture) and it will also take care of any scoring to be had. Players would have to get a menu telling them what objectives there are and how to go about completing them, as well as any 'sub-objectives' that wouldnt be required to win the level, but will give them extra points or allow them to spawn in different places and whatnot. Thered be an arrow on the hud somwhere that will point towards the next objective, so people wont get so lost... might even add in something of an indicator of what the objective requires ("Destroy", "Steal", "Rescue", yadda yadda)
I know i could have sent myself an email just so i can remember all this crap, but i figured i might as well post it here and see how people react to the whole idea and whether or not theyd be interested in playing/messing with such a system.
Last edited: