Just a quik tutorial about converting maps to the DOM gametype!
First of all download the latest version (v5) of UT3DOM Here and install it!
Make sure you also say OK to install the 'unpublished files' for use with the editor! Without these files you will not be able to cook DOM maps!
In the event you just need the "unpublished" files required to cook DOM maps, you can grab them here. Just extract them to %HOMEPATH%\Documents\My Games\Unreal Tournament 3\UTGame\Unpublished\CookedPC
-=-Editor Setup-=-
Edit your UTEngine.ini file that's located by default at : %HOMEPATH%\Documents\My Games\Unreal Tournament 3\UTGame\Config\
Find the "Editor.EditorEngine" section.
Add the following at the end of the "EditPackages" list:
EditPackages=UTMultiTeam EditPackages=UTDom
Close the UTEngine.ini file and save it.
-=-=-=-=-=-
Next open your map within the editor and start creating your DOM variant. Save the map with it's name starting with DOM. eg.. DOM-Mymap.
-=-Setting Map Gametype-=-
Click on the View menu and select World Properties.
Set the gametype as shown below:
Exit out of the World Properties once the DOM gametypes have been set!
-=-Setting up Control Points-=-
Control Points are the DOM bases in the map. Typical DOM maps generally have 2-5 Control Points depending on map size. Double Domination will use only 2 of the 2+ Control Points in your map.
Control Points can be found in the following place:
Select the ControlPointFactory actor.
Go into your map and place the ControlPointFactory in your desired locations.
Next set the options as detailed below:
ControlPointClass(highlighted at top): This setting is used only for the Double Domination gametype. As teams are required to capture both points any any given time you will need to set two of your ControlPointFactories to use xDomPointA and xDomPointB.
So if you have 4 ControlPointFactories in your map pick the furtherest points from each other and set one to A and one to B and these two points will be the only ones available when a player plays the Double Domination gametype and the remaining Control Points will be hidden within the game.
When playing the Domination gametype all Domination Points will be available and the ControlPointClass setting will be ignored.
DominationFactory-PointName: This is the name that appears on the players HUD when playing the map.
Objective-ObjectiveName: For Editor use when setting defence points. I generally set this to the same as the PointName.
Next change any PlayerStart Actors to UTTeamPlayerStart actors and don't forget to set the teams on the actors!
Next perform a "build all" build on the map and the map should be ready to cook.
NOTE:You cannot test DOM maps within the editor as it doesn't correctly recognize the gametype! Testing will need to occur within UT3 itself!
Cook your map and ignore any yellow errors that may appear!
Open UT3 and try your map!
-=-=-=-=-
Additional Notes:
If any Control Points don't appear in the game make sure they have ample space around them to allow them to spawn.
If the cooking process crashes then it means you haven't got the unpublished files installed correctly!
-- Edited by Lord_PorkSword on Sunday 20th of November 2011 03:35:10 AM
I was able to perform a full rebuild but when I try to cook the map, my W7 show that the application is not responding but if I click on close program, I get back to the editor which seem to be working fine ?
The cooking doesn't occur & I get this message :
I have DOM v5
I also delete the shader files but it doesn't work neither damn it !
__________________
Stevie's corner A blog dedicated to UE4, UDK, UT99 / 2004 / III / 4.
Yup, that crash is caused by the 'unpublished' DOM files not being located in the correct place. Did the DOM installer ask if you wanted to add the 'unpublished' files?
And yes you are correct about having to change all the PlayerStarts for TeamPlayerstarts. I'll update the Tutorial!
Next change any PlayerStart Actors to UTTeamPlayerStart actors and don't forget to set the teams on the actors!
UTTeamPlayerStart actors are NOT required. Actualy I would recomend to use a normal PlayerStart actor, unless your map would have to have it.
From the source code of the UTDom.xDoubleDom class
/** Should not be used. If False and playing on a map with no TeamPlayerStart actors (e.g. most DOM maps) players will not beable to spawn.
* True=players can spawn at any playerstarts, False=players spawn in marked team playerstarts. */
var() config bool bNoTeamPlayerStart;
And at the end of that class, the default setting is set to:
Oh almost forgot, I did include a example map "DOM-KismetVehicleExample.ut3" for map authors to learn from, on how a DOM/DDOM map is setup. If I remember right, you can even copy+paste the included kismet to your own maps.
By default, on a Windows Vista/7 system, it should be at:
Snake wrote:UTTeamPlayerStart actors are NOT required. Actualy I would recomend to use a normal PlayerStart actor, unless your map would have to have it.
In my first converted map (from DM), I set a bunch of red player starts on one end of the map and blue on the other.
IIRC, At the start of the round, the red don't always start at the red team starts (but the red team always start at the same side).
Upown respawning, it seems the game mode places you at a team start that's furtherst away from other players (enemy team).
@ Snake
Is there a way to have spawn points that only work at the start of the map, then all respawns happen at a different player start?
Also, I noticed that friend flire is on by default, any way to disable this for offline play? I checked my mutators and they aren't causing this.
In my first converted map (from DM), I set a bunch of red player starts on one end of the map and blue on the other.
If you do use TeamPlayerStarts, remember that you will have to set TeamPlayerStarts for Green and Gold teams.
IIRC, At the start of the round, the red don't always start at the red team starts (but the red team always start at the same side).
Upown respawning, it seems the game mode places you at a team start that's furtherst away from other players (enemy team).
@ Snake
Is there a way to have spawn points that only work at the start of the map, then all respawns happen at a different player start?
Also, I noticed that friend flire is on by default, any way to disable this for offline play? I checked my mutators and they aren't causing this.
Thanks for a great game mode!
For the spawning thing, currently there is no way that I know of to do that.... you might beable to setup some kismet that could do what you want. The only other way I can think of to have to work would be to write mutator and import the .u file into your map.
FriendlyFire is set from the mutator. My guess would be to check your MyDocs\MyGames UTGame.ini file and delete the following 2nd line if it exists:
To set TeamPlayerStarts for Green and Gold, you use team numbers 2 and 3?
As for the friendly fire, I don't have those lines in the UTGame.ini. Since it only happens for the Domination mode (I am not using the Friendly Fire mutator), I though I would ask. I tried it with both MapMixer and the stock UI.
Yeah you got it on the team numbers when using UTTeamPlayerStart actors. DOMTeamStaticMesh actors have one more TeamNum. From the class comments of DOMTeamStaticMesh class:
* More advanced UTTeamStaticMesh. The exact UTGameObjective actor that will be monitoring, can be manualy set.
* No longer limited to only the 0 index to change the material on.
*
* Setup the TeamMaterials array using the following format:
* TeamMaterials[0]=Red Team
* TeamMaterials[1]=Blue Team
* TeamMaterials[2]=Green Team
* TeamMaterials[3]=Gold Team
* TeamMaterials[4]=Neutral
* Writen by Brian 'Snake' Alexander. Copyright(c) 2007-2010 All Rights Reserved.
*/
class DOMTeamStaticMesh extends UTTeamStaticMesh;
FYI and just in case for anyone else wants to know the TeamID used by ControlPointFactory is as follows:
Red Team = 0
Blue Team = 1
Green Team = 2
Gold Team = 3
Neutral = 4
Disabled = 5
This is only really useful when making kismet in your DOM map
In DOM, Freindly Fire is not enabled by default and I would suggest 1st taking a look at your log file right after loading a dom map and you are still getting the friendly fire on, exit the game and open the log file
and your looking for the section where it starts to load the map, and look at what you have in your log that at the same place as the following lines in bold:
ScriptLog: UTUIFrontEnd: Starting Game...open DOM-Condemned?game=UTDom.Domination?MaxPlayers=16?MinNetPlayers=0?NumPublicConnections=16?NumPrivateConnections=0?NumOpenPublicConnections=0?NumOpenPrivateConnections=0?bShouldAdvertise=True?bIsLanMatch=False?bUsesStats=True?bAllowJoinInProgress=True?bAllowInvites=True?bUsesPresence=True?bAllowJoinViaPresence=True?bUsesArbitration=False?bIsDedicated=False?bIsListPlay=False?OwningPlayerName=?GameMode=4?Difficulty=5?PureServer=1?LockedServer=0?Campaign=0?ForceRespawn=0?GoalScore=100?TimeLimit=20?ServerDescription=?NumPlay=8?mutator=UTGame.UTMutator_FriendlyFire?name=Wr@ith?alias=Wr@ith
Log: Browse: DOM-Condemned?name=Wr@ith?team=255?Class=?game=UTDom.Domination?MaxPlayers=16?MinNetPlayers=0?NumPublicConnections=16?NumPrivateConnections=0?NumOpenPublicConnections=0?NumOpenPrivateConnections=0?bShouldAdvertise=True?bIsLanMatch=False?bUsesStats=True?bAllowJoinInProgress=True?bAllowInvites=True?bUsesPresence=True?bAllowJoinViaPresence=True?bUsesArbitration=False?bIsDedicated=False?bIsListPlay=False?OwningPlayerName=?GameMode=4?Difficulty=5?PureServer=1?LockedServer=0?Campaign=0?ForceRespawn=0?GoalScore=100?TimeLimit=20?ServerDescription=?NumPlay=8?mutator=UTGame.UTMutator_FriendlyFire?alias=Wr@ith
Log: Award progress has now been fully reenabled!
Log: LoadMap: DOM-Condemned?name=Wr@ith?team=255?Class=?game=UTDom.Domination?MaxPlayers=16?MinNetPlayers=0?NumPublicConnections=16?NumPrivateConnections=0?NumOpenPublicConnections=0?NumOpenPrivateConnections=0?bShouldAdvertise=True?bIsLanMatch=False?bUsesStats=True?bAllowJoinInProgress=True?bAllowInvites=True?bUsesPresence=True?bAllowJoinViaPresence=True?bUsesArbitration=False?bIsDedicated=False?bIsListPlay=False?OwningPlayerName=?GameMode=4?Difficulty=5?PureServer=1?LockedServer=0?Campaign=0?ForceRespawn=0?GoalScore=100?TimeLimit=20?ServerDescription=?NumPlay=8?mutator=UTGame.UTMutator_FriendlyFire?alias=Wr@ith
ScriptLog: Desc:
Log: Starting memory preloaded movie...UT_loadmovie8 (Copyright_PC)
Log: Waiting for memory preloaded movie to finish loading ...
Log: Playing movie [UT_loadmovie8]
Log: Got memory preloaded movie event!!!
Log: ClearAllAnimSetLinkupCaches - Took 13.11ms
ScriptLog: Setting image img_Krall01 to visible
ScriptLog: Clearing online delegates for UTEntryPlayerController_0 (Player:LocalPlayer_0)
Log: Virtual memory allocation size: 191.46 MByte (200765440 Bytes)
Log: Physical memory allocation size: 0.00 MByte (0 Bytes)
Log: Game class is 'Domination'
Log: Primary PhysX scene will be in software.
Log: Creating Primary PhysX Scene.
Log: No Cached Brush Physics Data Found Or Out Of Date (Model_4) (Owner: BlockingVolume_17) - Cooking Now.
PerfWarning: InstanceGeom: 136.079531 ms - 177 Convex, Terrain 0.000000 ms, PerTriSM 0.000000 ms, InitArticulated 0.000000 ms, BodyInst Alloc 0.706308 ms, InitBody 6.028414 ms
PerfWarning: NxActor Creation: 13.376139 ms
Log: Bringing World DOM-Condemned.TheWorld up for play (0) at 2011.12.21-20.49.51
ScriptLog: Mutators UTGame.UTMutator_FriendlyFire
ScriptLog: MinNetPlayers: 0
ScriptLog: Destroying WebServer
ScriptLog: ============================================================================
ScriptLog: [ INITIALIZING a UT3Domination game ...
ScriptLog: [ Version=5.0 Build:10.12.14
I'm willing to bet your going to find that the mutator is being loaded, how and where at? I would guess via MapMixer, or maybe there is UTGame.ini at your UT3 install folder at (example):
Yeah you got it on the team numbers when using UTTeamPlayerStart actors. DOMTeamStaticMesh actors have one more TeamNum. From the class comments of DOMTeamStaticMesh class:
* More advanced UTTeamStaticMesh. The exact UTGameObjective actor that will be monitoring, can be manualy set.
* No longer limited to only the 0 index to change the material on.
*
* Setup the TeamMaterials array using the following format:
* TeamMaterials[0]=Red Team
* TeamMaterials[1]=Blue Team
* TeamMaterials[2]=Green Team
* TeamMaterials[3]=Gold Team
* TeamMaterials[4]=Neutral
* Writen by Brian 'Snake' Alexander. Copyright(c) 2007-2010 All Rights Reserved.
*/
class DOMTeamStaticMesh extends UTTeamStaticMesh;
FYI and just in case for anyone else wants to know the TeamID used by ControlPointFactory is as follows:
Red Team = 0
Blue Team = 1
Green Team = 2
Gold Team = 3
Neutral = 4
Disabled = 5
This is only really useful when making kismet in your DOM map
I am no expert in conquest, but I guess you might be able to toggle spawn points or assign them a team number based on a flag status? So if the blue team controls a point, then certain spawn points would be activated that are in the general area of that flag point. The idea is to mimic how Battlefield works, you can spawn at any base you control.
As for the friendly fire, with your "help", I figure out it's a UTCom mutator that is doing it. There is no option that I can see in the UI (pressing F5 key) that gives me the option. I will check the .ini files and such.
Thanks for your help Snake.
EDIT: There is a line that controls this in the UT Comp mutator, but I searched for "friend" and "fire", but not "team".
bEnableFullTeamDamage=True
*Odedge is a happy UT 3 player*
-- Edited by Odedge on Friday 23rd of December 2011 06:16:34 AM
I am in the process of converting most of my DM maps to DOM and have 2 questions.
1. Do the bots use the defense points? If so, do they need to be a certain AI level? 2. What is the beginning of the round player start logic? Is it totally random?
I am in the process of converting most of my DM maps to DOM and have 2 questions.
1. Do the bots use the defense points? If so, do they need to be a certain AI level? 2. What is the beginning of the round player start logic? Is it totally random?
Thanks...
1. Yes they use defense points. You have to set the defended object property to the control point actor you want defended.
2. By default and allways for DOM its random starting. Unless in Double Dom games, the admin has the setting bNoTeamPlayerStart=False then TeamPlayerStart actors will be allowed.
Also have a look at the map DOM-KismetExample.ut3 It is an uncooked example map to show map authors how a DOM / DDOM map is setup
For the defense points, I have assigned them to the proper point, but bots seem to just stand on the point.
I will take a look at the Kismet example as I want these maps to be done properly. The example map will hopefully help in one of my maps so when the majority of the flags are one color, I can change the color of an interp actor.
So for player starts, it's best to setup standard starts randomly in the map and a set of blue and red (for DDOM). If you only set up team player starts for red and blue, how will that effect if a players tries to play with the 3-4 team option. I am not a fan of having more than 2 teams and most of my maps aren't big enough to really support that.
Also, is there a DOM specific mesh that can be used for the control points?
Defence Points = a spot for bots to "guard" the control point, that bot is currently defending.
Its really just best to use regular playerStart's. Dont worry about setting up teamplayerstarts for just in DDOM. DDOM will automaticly choose how it uses regular playerstarts. It has the logic to handle 2, 3, or 4 team matches with using nothing but the regular playerstart actors.
As for meshes, Its hard coded to use the stock meshes.
Here is a quick any easy way to add a ControlPoint with a Monitor that will already have the MaterialInstance and kismet all setup for you.
STEP 1)
Right click on DOM_Monitors package -> select "Fully Load"
STEP 2
Select the "Prefabs" group in the DOM_Monitors package. Then select 1 of the 3 prefabs to use. Then right click in map -> "Add Prefab Monitor_ControlPoint"
STEP 3
Move the prefab UP along the Z axis (so it is not half way underground). Then right click it again and Convert to normal actors
STEP 4
Open kismet editor and goto the sequence group Main_Sequence.Prefabs.Monitor_ControlPoint_Seq
STEP 5
Right click on the Control Point Event and select "Update ... to latest version"
STEP 6
If done correctly, Your kismet should now look like the following.
1) In a nutshell, your team receives a fraction of a point for each control point your team controlls each tick of the game.
The long answer.
To really understand it you have to see the scoreing code in the UTDomGame class. At the start of the match your team receives 0.2 points per tick per control points controlled. As the match goes on, if the TimeLimit is not 0 then at the last 25% of the match, the points earned are increased to 0.4 points and then at the last 10% you get 0.8 points.
Also even if you capture a control point only to have another team take it away in less then a second, you do still get your points.
[code]
/** * Logic that handles the scoring during game play */ state MatchInProgress { event Timer() { local int i; local float c; Super.Timer(); if ( !bDDOMGame && !bGameEnded ) { c = 0.2; if (TimeLimit > 0) { if (GameReplicationInfo.RemainingTime < 0.25 * TimeLimit) { if (GameReplicationInfo.RemainingTime < 0.1 * TimeLimit) c = 0.8; else c = 0.4; } } if ( !bPlayersMustBeReady || (CountDown <= 0) ) { for (i=0; i < CDomPoints.Length; i++) { ScoreTeam(i, c); } if (GoalScore > 0) { for (i=0; i < GameReplicationInfo.Teams.Length; i++) { if (GameReplicationInfo.Teams != None && GameReplicationInfo.Teams.Score >= GoalScore) EndGame(None, "teamscorelimit"); } } } } } } [/code]
2) Bots tend to some times just do what they want to :P Its really hard to say due to the very complex logic they use. If bots are not going for a powerup item, try tweaking the pathnodes around it. Sometimes moving a pathnode to a slightly better location helps.
some debugging console command may help you. During the game open the system console and type in one of these 3 commands
ShowDebug
or
Viewclass Pawn
or
ShowDebug AI
3) If I remember right the 1st control point added to the map, is the bottom most on the hud. Then each control point added after is added above the last one.
Control Point icons are drawn to the hud like so:
4+ <--the 4th
3 <-- the 3rd control point added to the map
2 <-- the 2nd control point added to the map
1 <-- the very 1st control point added to the map is here
Thanks for the replies and I am glad you like answering questions as I like asking them.
Regarding the power ups, they will get them (and in DM games, they always get them), but it just seems like a low priority for them.
I think you remember correctly on the control point display order. I will test it on my last conversion. I don't know if it would matter to players for control points named "Top", "Center", and "Bottom" to have them position on the screen in a logical way. I guess if you are just using generic names like "fountain", "garden", and "patio", it doesn't really matter that much.
Snake... do you know if there is a way to keep track of the score in a Domination (or any other game modes)?
While it's not a big deal, on one of my maps, I always change the color of a rotating sign (it's a map based on Q*bert). I would like to keep that theme for the Domination version. I am thinking of displaying the color of the team that's currently in the lead or maybe who has the most flags?
I haven't mapped for most of the year and am extremely rusty... at everything.
UT3Dom adds the following kismet condition and events:
DOMSeqCond_GameType - Kismet condition that one of two outputs will be triggered depending if the current game is a Domination or a Double Domination game.
and finally this is the event your going to want to use:
DOMSeqEvent_ControlPointEvent - Triggered when there is a new ControllingTeam. has the output of TeamNum (The current Controlling Team Index Red=0 Blue=1 Green=2 Gold=3) and another one TeamScore for the current controlling teams score. To have something change color depending on the current controlling team for that point, setup kismet just like how its setup for the Monitors (see my post I made a few days ago).
I am going to hold off with an enthusiastic response (being I am rusty in Kismet), but thanks for the info. If I get something to work, I will reply with an "Awesome" response.