WARFARE: A HOW TO
INTROWarfare isn't the easiest of game types to set up in the editor, especially if it's your first attempt. Hopefully you can find this of some use. A basic knowledge of the editor is required.
I will show you how to set up a Warfare map with Core-node-node-node-Core link setup along with a stand alone node and a countdown, basically Core, prime, centre plus countdown and an extra node.
Each of these types of node will add something to the gameplay, whilst a normal node that links onto a next is the same as most of the ones you come across. They are a main playing point in warfare, link the dots up on the minimap and shoot the enemy core. A stand alone node isn't linked. However these nodes aren't useless. Countdown nodes obviously countdown to something, what is up to you.
You could do some minimal core damage, or all of it at once. Maybe have it damage all other nodes making them neutral, have it spawn a vehicle, or multiple ones. A standalone node is more useful as a node to supply extra vehicles, or have multiple stand alone nodes and use kismet to trigger node damage, like in WAR-Avalanche, or make the enemy core more vulnerable WAR-MarketDistrict. The options are only limited by your imagination.
One point, is that you can NOT link Core to Core directly, as soon as the game hits overtime it will crash, a node is required to calculate the amount of damage cores take in overtime.
Anyway, to work.
THE NODESFirstly start off be creating a new level. Saving it as WAR-mapname, mapname being your choice of course, but the WAR- prefix must exist or you can't get nodes to work in-game.
To start, you need to place your nodes where you want them, if you have a layout in mind put it to use.
To start with, we'll place the cores. These can be found in the Actor Classes browser under. Navigation Point -> Objective -> UTGameObjective -> UTOnslaughtObjective -> UTOnslaughtNodeObjective -> UTOnslaughtPanelNode -> UTOnslaughtPowerCore -> UTOnslaughtPowerCore_Content
So not that hidden :p
And then your nodes in UTOnslaughtPowernode instead of UTOnslaughtPowerCore and is UTOnslaughtPowernode_Content, this is expandable, you do not need to expand it to add a normal node.
While we're at this we might as well add the stand alone node and countdown node. Now a standalone node can be built using the normal powernode_content. However a countdown node requires another type, Expanding UTOnslaughtPowernode_Content reveals UTOnslaughtCountdownNode, this is what is used for countdown nodes alone.
Simple, it looks like it works. Except right now if you do a full rebuild you won't have anything show up in-game, the cores will cast light and sound will exist however. One thing to note is that both cores cast Red by default, this IS editable through their properties, but is not required as once setup properly thee cores will light to the correct team colour.
Now for the fun bit, the link setup, i will only be creating one link setup, but give a breif explanation at the end how to add others.
To start we need World Properties accessible under View -> World Properties, once open, into WorldInfo and you will see 'MyMapInfo' clicking this does nothing right now, so click on the blue down pointing arrow and click 'UTOnslaughtMapInfo'. You will have five new expandable menus show up:
Map - No idea what this one does
Minimap - Your minimap my tutorial on setting these up is avaliable here
Object - Object you've just added name, i believe
UTMapInfo - Level information such as wether to build translocator paths (useful for CTF levels, also these can be used by bots with jump boots in some cases. The mapMusic, player counts and visibility for the AI.
UTOnslaughtMapInfo - The fun stuff for warfare only.
Expanding UTOnslaughtMapInfo will give you a few new options, the first 3 you do not need to worry about. The 4th, LinkSetups needs to be expanded, twice.
This is your Default link setup, aka the one that gets saved within the map by default. Do NOT edit it's name, unless you don't want this one to be the maps main link setup.
A few more expandable menus exist here and most are self explanatiory, but ill go over them for those unsure.
NodeLinks - This is your link setup from core, through nodes, to core.
StandaloneNodes - The standalone and countdown nodes that don't have any links
NodeStartingOwners - Setting if any nodes on the map start pre-built to a team.
NodeMinPlayers - This setting allows nodes to be un-linkable or even visible unless there is a specific amount of players in the game. Useful for adding more vehicles iff theres a larger player count.
DeactivatedActors - Specific actors that are going to be hidden with this linksetup loaded.
DeactivatedGroups - Whole groups that can be hidden when the linksetup is hidden.
ActivatedActors - Opposite of Deactivated
ActivatedGroups - Opposite of Deactivated
Not that unless it's deactivated in your main link setup and you wish to have them useable in another link setup will you need to use the activated actors.
Anyway on to setting up the links.
Clickign the Green '+' next to NodeLinks will add the first bit of a link setup. As you can see it states FromNode - ToNode. So you will have to Go from Core to Node1, then another step with Node1 to Node2, Node2 to Node3, Node3 to Core2 etc. Expanding the newly added item  you can then select a node/core in the viewports and then click the green arrow to enter it into the box. Repeat this until your node setup is as described above. Cores should only be at the start and end, and each node should be both in a ToNode and a FromNode in a different section.
So a Core-Node-Node-Node-Core will need 4 Items to complete the setup, as shown in the screen below.
To add a standalone node it's the same type of method except you're adding it under StandaloneNodes and not NodeLinks, you only have to add it once.
Adding a countdown node is just as easy and also added into the StandaloneNodes, unless you feel like adding one into a linksetup, like WAR-Hostile for example.
Below should resemble what you have:
Now you have this it’s a playable level, you can add some weapons and play away, your link setups will work, and so will your other nodes, except your countdown node at the moment is doing a 60 countdown, and then nothing happens except it kills itself.
If you want it to spawn a vehicle, do some core damage or anything else fancy you are going to have to use Kismet. Before we do that, lets have a quick look at the countdown node properties.
If you select the node and hit F4 there’s several expandable options, you don’t need all of them, but a quick look in ‘Objective’ shows you a ‘DefensePriority’ setting and ‘ObjectiveName’ The first is for AI, the higher this number, the more bots will defend it, this applies to all nodes so you can give important nodes a higher defence priority. Objective Name is just that, it’s the name of the node that you will see on the map, name it to whatever you see fit, however when we come to setting up sounds for nodes be warned not everything exists if you want it to be perfect. UTOnslaughtCountdownNode has another two options ‘bDamagesCore’ and ‘CountdownTime’ The first one is to give AI an indication that this node if held for the countdown will damage the core, giving them a prompt to defend it. CountdownTime, is just that, it’s the length of the timer to countdown once the node is built.
KISMET: CORE DAMAGE
For now lets just do some simple and core damage after the countdown finishes. To do this, select your countdown node, and set it to the time you want, for testing its easier to set it to a few seconds then increase it when you know it works.
With your countdown node selected open up kismet
If you have no idea on Kismet you should have a read through this, ill try to explain it simply but I wont go into detail about everything. AVLD Kismet
Now right click anywhere in the kismet window, hover over ‘New Event Using UTOnslaughtCountdownNode_0’ (this will appear if you have the node selected, depending on the amount of nodes, the 0 may be a higher figure.
You will now be presented with a new event in your kismet window, it has two connections ‘Out’ and ‘Team’s PowerCore’ Now for us to make sure damage happens to the correct core we need to compare who owns the node to something, now the easiest way to do this is to compare the node, to a powercore and check to see if it’s the same team, this also works then if teams switch map sides on alternative rounds.
To do this add a ‘Compare Objects’ node from Right-Click -> New Condition -> Comparison -> Compare Objects and connect out from the countdown to in on the compare, do this by clicking and dragging.
Now that we have this we need something to compare it to, so select one of your nodes, whether it’s blue or red, or if it switches does not matter, now right click to add it, also add an empty one of these as well, you can either add another as you did then delete the object out of it, or Right-Click -> New Variable -> Object -> Object, if it’s empty it will display ‘???’
Now to link these up, connect ‘Team’s PowerCore’ from the countdown Event to the ‘???’ variable, and connect this onto A of the Compare Objects too, then connect B to the variable with the powercore.
Now ??? will refer to whatever the Powercore for the team holding the countdown node is, so you are comparing either powercore with a set powercore. Now obviously if these two cores result in the same value, you want to damage one core and if they differ the other. So when A is equal to B (A == B) they are the same and when they are not equal (A != B)
As Core 0 is on B, we want to damage Core 1, etc. (Sorry if this bit is poorly explained, just copy the pictures :P)
Now lets add the next bit for the damage, add two ‘Cause Damage’ Actions from Right-Click - > New Action -> Actor -> Cause Damage. Connect ‘A == B’ up to one of them (In) and ‘A != B’ to the other.
Now the one connected up to ‘A != B’ should have it’s target dragged to the Core variable that’s plugged into B. Now go back to the viewports and select the other core, come back and add it as a variable too. Now connect Target on ‘A == B’ to this core. This will set up the damage to be directed at the correct core. To determine the actual damage amount you need to add a Float (it’s possible to add it into each Cause Damage Action properties, but this makes sure both result in the same amount. To add a Float, Right-Click -> New variable -> Float -> Float. Connect both of the Amount outputs from the Cause Damage actions to this float. To set the damage amount select the float and change the properties of ‘FloatValue’.
When you think of this, a core has 100 CORE HP, that’s actually equal to 5000HP normally. Base your damage amounts off that.
So if we want to do 15 core damage, the easiest way to figure out is to do .15 x 5000, giving us 750, setting your damage to 750 will do 15 core damage, 20 damage (.2 x 5000) = 1000.
Now when you input this figure into FloatValue, and play in game it will do all that damage at once, there is a way around this, although results are never perfect, for some odd reason you might end up with 1 core hp less damage. Ill show you that once your damage is working fine as a whole.
Close out of Kismet, save your level, kismet changes require no re-build so jump in and give it a test. If something goes wrong run back through your kismet, if the wrong core takes damage switch around the Damage targets, if the damage is too much or too little change the Float Value.
MATINEE: DAMAGE IN STAGES
There are a few ways of doing damage in stages, although ill explain the way that takes up less space and is easily editable. Matinee, if you have no idea what this is, you should read up a little, although hopefully this is in simple enough terms for a beginner.
Start by opening up Kismet again, right clicking else where in your window add a ‘New Matinee’ here you have a new box, with several input options, and currently two output options and a Data variable connected. Double click on it to load UnrealMatinee
In UnrealMatinee right click in the lower left grey area and Add a New Empty Group, Name it what ever you want, but for organisation ill call mine CoreDamage, if I happen to add more things to this later it will be easier to find then a random number or something. Now on your newly created group, right click and you get presented with another menu, from this ‘Add New Event track’
For safety to make sure it only triggers when it plays forwards, you’ll see two arrows one facing left the other right on the end of the ‘Event’ tab, click on the one facing left, or backwards as you will. This just means events on this line are only triggered playing forward.
By default a Matinee is 5seconds in length this can be extended or shortened by clicking and dragging the top part time line (to the right of the group names) across until you see a red arrow at the 5.00 mark. You can now click and drag the arrow along the timeline to set it to the length you wish. Set this to the amount of time you want your core damage to last over. You can ignore the green arrows and section.
I’ve set mine to 2 seconds, and will trigger core damage every .5 seconds (except 0, giving me 4 triggers), to do this click in the lower section of the timeline (with the numbers in) here you can move a slider along the timeline, once placed in the section you want to have the core damage happen, making sure that your ‘Event’ track is selected and hit ‘Enter’ or ‘Return’. When prompted type in an Event Name, I just used CoreDamage again, and repeat across your timeline for how ever many triggers you want. Keeping the name the same!
Make a note of how many ‘events’ you added with that completed feel free to close Matinee (If you don’t close and attempt to rebuild it will need to be closed)
You may now notice you now have a 3rd output on your Matinee with the name of your Events, and a section on the bottom to attach a variable to with the name of the group. The latter is useless for this
Now if you’ve just gone and added lots have fun figuring out how much damage you need now. Because before we connect this all up, if you originally had 20 Core Damage or 1000 Hit Points and now have, like I do, 4 triggers on your event line divide that 1000 by 4 and you get 250, as you will be firing off your ‘Cause Damage’ event when the Matinee plays 4 times.
Break the links between both ‘A == B’, ‘A != B’ and both the ‘In’ on your ‘Cause Damage’ actions. You can do this by right clicking on one of the nodes at the end of the lines and breaking the link.
With that done, drag them apart so you have some space to place your Matinee between. Selecting your matinee will show it’s properties in the lower left of the kismet window in these, check ‘bRewindOnPlay’ with that done, copy and paste the matinee (not the data) Your newly pasted Matinee will auto-connect, or should, to the old Data giving you two matinee’s using the same time and information but working independently.
Connect them up as shown above, ‘A == B’ into one and ‘A != B’ into the other Matinee, making sure it’s going to go to the right ‘Cause Damage’ event on output, take the ‘CoreDamage’ (or whatever you named the events on the timeline) output from the respectful Matinee and connect it to ‘In’ on the ‘Cause Damage’
One small thing you can do on anything in kismet to make it cleaner, is to right click a action/matinee etc and select ‘Hide Unused Connectors’ this hides all the input/outputs not in use, and they can all be brought back doing the same but selecting ‘Show All Connectors’
Close and test in game, you should now have the same amount of core damage, but it will happen in stages. It’s possible to make it do 1 core point of damage at a time for any amount but I find this results in more inaccurate results and has a higher chance of having one core hp damage missing in the end. A screen shot of the kismet and matinee of how that would look is shown below