The purpose of this Unreal Tournament mod/mutator is analyzing the bot usage of the path network of a map.
Once a match is started with the BPNU mutator activated, a BPNUTrigger (I'll refer to it as Trigger from now on) will be added on top of every NavigationPoint actor (and of course all its subclasses, like PathNode, LiftExit, InventorySpot, PlayerStart, etc.).
Every time a bot passes on the trigger an internal counter (which I'll call ContactCount from now on) will increase.
A player can then use one of the different Results console commands (like "Mutate BPNU Results" or "Mutate BPNU Inventory"), to activate the following procedure:
If for example you see a trigger with an 85 texture it means that the relative trigger has been touched about 85% of the times compared to the Trigger with the maximum ContactCount. Textures are color-coded, the lower percentages are blue while the higher are red.
The triggers that haven't been touched by bots will get a 0 texture (white text with black background).
The percentage for each trigger gets calculated with the formula "(ContactCount - Min) / (Max - Min)", it isn't very intuitive but it provides percentages that aren't affected by how long the match goes on.
By roaming around the map and checking the different numbers you can get an idea of which spots of the map the bots prefer to roam and which places are used rarely (or not at all). There are lots of maps where the action occurs mostly in a few places (for example in DM-Grinder the Rocket Launcher area is used way too often), reworking the pathing to make the path usage more balanced will make the map much more fun to play with bots.
The results are pretty accurate considering bots act randomly, if you let matches go on for a long time the percentages between different tests will be very similar.
The Average percent value can be used to "rate" a map's pathing, generally in my tests I noticed that maps with good balance had about 25% average in the global results and 50% in the PlayerStart results. Keep in mind that these results alone aren't indicative of a good pathing, since maps with very few pathnodes are going to score better.
An extra feature (that might cause some false positives, especially with few bots playing) is the detection of "frozen" nodes, basically the places where bots keep getting back and forth between two nodes until they sight an enemy. These nodes get marked with a F texture (white text with red background), and by default they are not taken into account when calculating the Max and Min ContactCount values.
Right now this feature works only when a single bot is stuck, so it is less effective in team games. It also creates LOTS of false positives if there is only one bot in the game in a small map (you can disable this feature by setting bFrozenDetect to False in the .ini File).
This mod has been tested online briefly, it doesn't affect gameplay in any way (I didn't add replication so triggers aren't made visible) so it would be pretty pointless to add it to a server. Be aware that every player (not only admins) will be able to access the mutate commands.
The mod is in beta state, there are some features missing (the trigger textures will also be replaced with something prettier) but I tried to polish and test it quite thoroughly.
Enjoy
Unzip BotPathNodeUsageV072.zip, then copy the files into your Unreal Tournament\System folder.
Then select Bot Path Node Usage in the mutator menu to activate it for the next match.
First step is selecting the mutator in the mutator list when starting a match.
I recommend setting both time and score limit to 0 (infinite), and using the highest number of bots that the map supports.
Bots will have to play for a while (at least 10 mins I'd say) before producing meaningful results, the longer the match is the more reliable the results will be.
You can play the match yourself together with the bots, but I would recommend to either spectate the match or use the "ghost" command and exit the map area, so that you will not interfere with the results.
Speeding up the game with the command slomo (for example "slomo 4") is very useful, since you can get proper results in a matter of few minutes.
When enough time has passed either freeze ("playersonly" command) or kill ("killall bot" command) the bots, and check the results using one of the many commands of this mod (for example for global results use "mutate BPNU Results"). Triggers of the specified category will be made visible, and a report will be printed in the game console. Walk/Fly/Ghost around the map to see the numbers assigned on each trigger.
Check the Command List section below for a list of all the available commands. The "mutate BPNU Help" command will print a list of the commands in the game console.
This mod is handled entirely with "mutate" console commands. I recommend setting some key bindings to avoid retyping a lot of text (for example "set input y mutate BPNU Results" will set the Results command to the Y key).
This is a list of all the commands available in the Mutator, use them by writing "mutate BPNU <command>" in the game console (for example "mutate BPNU Inventory", "mutate BPNU Summary", etc.). They are not case sensitive.
Help will print on the game console the list of commands available (without the short description found here).
This is a list of all the variables that can be modified in the BotPathNodeUsage.ini File. I tried to make the mod as configurable as possible, so there are quite some values.
They are mostly advanced settings that you can very well ignore.
They can also be modified in-game using the "set" command (for example "set BotPathNodeUsage.BPNUMutator bSilentResults true"), or you can run the game in windowed mode and use the "editactor class=BotPathNodeUsage.BPNUMutator" and "editactor class=BotPathNodeUsage.BPNUTrigger" commands to browse all the properties in an external window.
Author:
Website:
Filename:
Release Date:
Last Update:
Version:
Game:
Mod Name:
Gametype:
DeathoX 8 (a.k.a. XYZ 8000)
www.DeathoX8.com
BotPathNodeUsage
12 / 02 / 2013
12 / 02 / 2013
0.72
Unreal Tournament
Bot Path Node Usage
Any
Big thanks to Feralidragon for helping me in making the spawn detection work and clearing some doubts I had about UnrealScript.
Editor(s) used:
Base:
Build Time:
Known Bugs:
Custom Textures:
Custom Music:
Custom Sounds:
.uc Files:
Lines of Code:
Notepad++, GEdit, GIMP 2.6, UnrealEd 2.0
Bot Path Node Usage
A week + lots of testing
None
Yes
No
No
2
1418
This mod is copyright 2013, by DeathoX 8.
You may NOT decompile this mod or use it as a base for any other additional mods without explicit
permission from the Original Author.
You are NOT allowed to commercially exploit this mod, i.e. put it on a CD or any
other electronic medium that is sold for money without my explicit permission!
You MAY distribute this mod through any electronic network (internet (web/ftp),
FIDO, local BBS etc.), provided you include this file and leave the archive intact.
UnrealŪ Tournament (c)1999 Epic Megagames, Inc. All Rights Reserved. Distributed by
GT Interactive Software, Inc. under license. Unreal Tournament and the Unreal
Tournament logo are registered trademarks of Epic Megagames, Inc. All other
trademarks and trade names are properties of their respective owners.