View Full Version : Objectives via a mutator...

6th Nov 2003, 08:33 AM
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.

6th Nov 2003, 10:20 AM
sounds like a crazy builder mod full of replication probs

6th Nov 2003, 10:24 AM
Builder mode is only for initially setting up the Objectives. Screw replication for it, i think ill even make it so that anyone trying to connect crashes to desktop :)
I can see a bunch of replication problems cropping up, but i figure that limiting it to 20 objectives per team and up to 8 goals per objective should fix up a bit of the replication. Plus it would only need to be sent once, afterwards all it would have to tell players is that an objective has been disabled.

7th Nov 2003, 02:10 AM
Ok, ive got the structure set up, and i believe ive figured out a few ways to ease up on the replication issues. The objective set will come in two flavors, one specifically streamlined for replication (mostly just descriptions and a couple extra helper vars) and left the big mother to stay on the server and go into the ini. As it is though, a map with one objective per team (with one goal per objective) ends up dumping something like 1k of raw text to the ini, as well as any of the other things i forgot to add to the list but will be adding in the next few days. Which means that if a level had the full 8 objectives with 5 goals each itd be dumping (and reading, on level load) something like 30k or more. Im not entirely sure how speedy any ini reading/writing is, but RegX says its not too slow, so heres to hoping!

Ive attached an example of what would be dumped to the ini, for those of you who care ( ;) )

(PS: I hope that nobody minds that i keep bumping this thread with updates... Ill get rid of the whole thing iffen anyone wants)

8th Nov 2003, 04:38 PM
Noone minds. The concept is pretty sweet.

20th Nov 2004, 09:34 AM

Is there a way to accomplish this with UT2k4?

20th Nov 2004, 12:17 PM
Assault pretty much does, tbh. Im not sure it would have actually panned out as I had hoped it would anyway, too much of the default behavior isnt accessible to mutators.
In the end though it more or less boils down to: If it could have worked for 2k3 it could work for 2k4....Now, as for the fun vs months-of-hair-pullingly-painful-coding ratio, im not so sure ;)

20th Nov 2004, 03:18 PM
I'm building map's for a "semi" Realism UT2004 MOD, It's called StrikeForce. Is there any simple type of objective you think I could integrate into the maps? Something like, Team "A" has to infiltrate team "B"'s camp and hit enter at a computer to "retrieve data".