FerBotz (new AI, XCGE release 20)

Posts: 1835
Joined: Sun Mar 04, 2012 6:47 pm

FerBotz (new AI, XCGE release 20)

Post by Higor » Fri Mar 09, 2012 9:30 pm

Started building a long time ago, time to put it to the test.
Basic instructions in the ZIP file.

Don't forget to tell the game to find *.u files in a different folder as the instruction say.
Alternatively, you can move those *.u files to the system folder but expect to see a ton of .u files on your system folder.
Also, create (or copy) the System/Botz/ directory in the UT folder where the user settings are if you're on Linux.

Important notice: read Setting up.txt for details about native Ferbotz.
Important notice 2: Requires XC_Engine v19

Release 16.1:
Release 17:
Release 18:
Release 19:
Release 20:
Features: (that I remember)
- Ability to add random class/skin/face/voice BotZ. (command: mutate addbotz)
- Add BotZ using class and skin localizations (example: mutate addbotz BotZ blue 0 7 male_soldier;marine;malcom;male_two)
- Command instructions: mutate addbotz help (in spanish: mutate addbotz ?)
- Add BotZ using a preset list (user must build it, command: mutate addbotzlist, now with guide) (immune to Auto player count adjust)
- Add BotZ using a half-assed menu (command: mutate botzmenu)
Note: BotZ addition only available to admins or automated scripts on servers.
- Must be enabled in mutator selection screen (Activar Botz)
- Filling server using BotZ when not enough players
- Creating generic map plugins for special point adding (I'll write a guide one of these days)
- Adding BotZ by faction (read Factions.txt)
- Main FerBotz.u package can be tweaked without causing mismatches
- Navigation editor for player class DynamicBotzPlayer, read "Navigation Editor.txt" for details.
- UDP server query that displays Bots and Botz on the player list with proper identification.

Players vs Botz:
Loaded as an extra mutator, it will move all players, bots and manually added botz into one team, and fill the other team with Botz's.
This is ideal for servers and quikly setup assault games.
The criterias can be specified in this mutator's settings:
- Player:Botz ratio, higher ratio the more unfair the game is.
- Ability to round the total ratio to ceiling (5.5 ratio means 6 botz)
- Picks bots from either the Botz List or generated randomly (with skill variants as well) ****.
**** Faction picking not yet implemented.
- You may also select the teams each side is placed on.

Overview, combat code is still too simple, meaning that BotZ will rarely try to actively chase, run away or strafe at an enemy.
- Advanced projectile dodging and evasion, will also attempt to jump over rockets and biogel.
- Projectile aiming is far deadlier (not quite UT3 level yet :lol2: ).
- Aiming system doesn't use randoms for determining aim error or hit, a combination of movement and prediction is used as well, meaning you can get hit 5 times in a row or none.
- Ducking when sniping (may bug for a few seconds if the BotZ leaves the sniper spot)
- Weapon usage can be tweaked in the .int file, as well as adding new sniper weapons.
- Spamming shots
- Translocator kill
- Weapon profile system (incomplete), with combat states and movements.
- Ability to copy profiles for weapon variations (see Ferbotz.int for flak cannon examples).
- Long distance enemy detection + sniper suppressing.

Team AI:
- BotZ attempts to support at closer distance by sticking to one of the leader's sides, try ordering 2 BotZ to follow you.
- New order: Patrol (explained later)
- Defenders tend to move from one defense point to another.
- BotZ won't cease to hold a position.
- Team AI can be expanded using external game definitions (explained later)
- Domination: Advanced control point logic, the more players teams have, the easier for team made of BotZ it is to win.

- Path shortening, includes jumping between unconnected platforms.
- Always chooses best/shortest possible way of jumping.
- Can complete very difficult platform trails.
- Jump before hitting an obstruction.
- JumpBoots and Translocator path shortening.
- Switching to Translocator before hitting a Translocator navigation point.
- Continuous translocation + switching air direction to avoid fire (try this at Face or any huge CTF map)
- Impact launching the Translocator.
- Avoid danger zones where BotZ gets killed often.
- Take different route if killed during flag carrying on next attempt to capture.
- Looking in different directions while sniping, camping and running.
- Different lift handling, not perfect but treats those differently.
- Enhanced air control to ensure proper landing.
- Ability to navigate during jumps and falls.
- Translocate if pushed away in low grav zones (botz will save themselves often in Morpheus)
- Botz may attempt to correct his running direction if about to hit a wall. (useful for Following a player in unpathed areas)
- Translocator throwing method uses angle determination equations, nearly perfect + negative gravity support
- NATIVE FERBOTZ: Ability to create/edit reachspecs and to insert newly created paths into the linked navigation point list.
- NATIVE FERBOTZ: Edit mode for easy setup of custom navigation points.
- NATIVE FERBOTZ: Automatic path node derivates insertion and calculation at map start.
- NATIVE FERBOTZ: LiftJumping and direct link nodes (plus variations).
- NATIVE FERBOTZ: Ability to remove existing navigation points [PathNode, BlockedPath, InventorySpot].
- NATIVE FERBOTZ: Complete mapping of the path network, can be used to evaluate multiple destinations with a single pathfinding call.

Plugin system:
- Ability to load packages that add waypoints or BotZ affecting entities (camp locations, bug preventing points, etc)
- Ability to load Gametype package that can be used to set a BotZ goals and tasks.
- Ability to set initial orders using gametype plugin
- The function manager can be subclassed and edited, sample plugin for UT community SDK included (sdkBFM.u).
- NATIVE FERBOTZ: Path files stored in System/Botz/ for navigation enhancements.

Botz won't properly attack Stationary Pawns, but nothing that breaks the game

Highest skilled BotZ will instantly put down their weapon before entering a chain translocation mode.
Highest skilled BotZ have no translocator cooldown.
If bSuperAim=true, BotZ have better aim tracking (enabled by default, setting it to false may make bot too noobish for some people)

Gametypes affected by stock plugins:
DeathMatchPlus: Roaming.
TeamGamePlus: BotZ will attempt to stick closer to an ally, becomes notable when playing with more than 5 teammates, also roaming.
CTFGame: BotZ tasking to recover flags or cover the flag carrier.
MonsterHunt: Big monsters and triggers are targeted when there's no available objectives.
Jailbreak: attackers pick between hunting or releasing the team, arena support. (NOTE: SEND ALL BOTZ TO ATTACK, 'SET BOTZ ORDERS ATTACK')
Last man standing -> Botz still can't be eliminated, but they'll play now.

Other stuff:
Jailbreak hack fix was added to allow BotZ to respawn.
Siege hack fix for correct behaviour with PlayerReplicationInfos.
SmartCTF hack to allow Botz to show up on scoreboards.
CPU load reduction to try and keep the framerate at acceptable levels without losing the advanced navigation/dodging features.
The client package is a separate module that is sent to clients, this one is responsible of displaying the BotZ on clients without having to send the actual Botz package.

Native code compiled under both Windows and Linux, please report bugs with Linux version as I can't run the game on my Ubuntu VM.

Ferbotz.u should never be sent to clients.
Never a final release, you may only modify the packages for actual usage and not distribution.
You do not have the required permissions to view the files attached to this post.
Last edited by Higor on Mon Mar 06, 2017 11:15 pm, edited 43 times in total.
Image unreal://
Image unreal://

User avatar
Posts: 3332
Joined: Thu Aug 04, 2011 9:26 pm
Personal rank: Chaos Evangelist
Location: Kernow, UK

Re: FerBotz (new AI, release 1)

Post by Dr.Flay » Sat Mar 10, 2012 12:33 am

Definitely going to have a play with this. Very interesting indeed!


Re: FerBotz (new AI, release 1)

Post by UT99.org » Sun Mar 11, 2012 1:05 pm

medor wrote:Can we use it as default bot on servverside ? MinPlayers=x

Posts: 1835
Joined: Sun Mar 04, 2012 6:47 pm

Re: FerBotz (new AI, release 1)

Post by Higor » Sun Mar 11, 2012 7:46 pm

I'd have to do one thing before that happens:

Study the TooManyBots() function that controls whether default bots should be added or not.
Find a way to prevent default bots being spawned in favor of the BotZ.

So far I've noticed TooManyBots() is called when someone gets killed, I'll see if hooking into the ScoreKill in mutator does the job before TooManyBots()
If that's not possible, there's always the solution of a periodic Timer checking the player amount and making the necessary modifications.

May take a while, I'll try to do it today.

BTW, Tell me what map server plays on, if it's a stock one I may add some map-specific fix or extra points...

Ugh, found a couple of ugly networking bugs, may take some more...
Image unreal://
Image unreal://

Posts: 1835
Joined: Sun Mar 04, 2012 6:47 pm

Re: FerBotz (new AI, release 2)

Post by Higor » Mon Mar 12, 2012 1:03 am


- Change log in second public revision:

No more log warnings from UpdateEyeHeight()
Automatic BotZ number adjusting, useful for servers (see BOTZDEFAULT.ini)
Translocation works better in Dedicated servers
Fixed bug causing projectiles to freeze on clients
Fixed bug causing more than one BotZ to have the same name
Image unreal://
Image unreal://


Re: FerBotz (new AI, release 2)

Post by UT99.org » Mon Mar 12, 2012 8:35 am

medor wrote::tu: i go try it

regard FerBotz for no mismatch ...if it works i'm going to upload it on http://uz.ut-files.com/

User avatar
Posts: 5456
Joined: Wed Feb 27, 2008 6:24 pm
Personal rank: Work In Progress
Location: Liandri

Re: FerBotz (new AI, release 2)

Post by Feralidragon » Mon Mar 12, 2012 12:06 pm

medor wrote:if it works i'm going to upload it on http://uz.ut-files.com/
Sorry medor, I know you have the best intentions, however Higor was pretty clear on redistribution and reuploads to other locations:
Higor wrote:Not a final release, don't modify or distribute.
Perhaps you should wait for him to make a final release or state he let's you do so, otherwise you may start to cause mismatches yourself since it's not final.

Posts: 1835
Joined: Sun Mar 04, 2012 6:47 pm

Re: FerBotz (new AI, release 2)

Post by Higor » Mon Mar 12, 2012 8:12 pm

medor, if you want, I can create a server release for you.
It's simply adding a few characters to the name and obfuscating the code in it.

Trying to implement a more user friendly way to add special points in map plugins.
If you don't know what I mean, add a couple of BotZ in LavaGiant (make sure the .u map plugins can be loaded) on either red or blue team, and tell them to defend.
Image unreal://
Image unreal://


Re: FerBotz (new AI, release 2)

Post by UT99.org » Mon Mar 12, 2012 11:33 pm

medor wrote:Higor :rock: Take your time to do right. No ned a personal work.
The side that interests me is simply better bots. For over 10 years can be expected to wait more :lol:

Ferali :tu: For now I have not sent on redirect and no annouce on my forum.

It is true that if the name is FerBotzBeta1 FerBotzBeta1.1 ......... it is clearer to me and my friend googleTranslate. Image

Posts: 1835
Joined: Sun Mar 04, 2012 6:47 pm

Re: FerBotz (new AI, release 2)

Post by Higor » Tue Mar 13, 2012 12:05 am

Good, I'll have a v3 before giving a public version.

Going to try and fix a problem with BotZ jumping up stairs instead of running thru them.

About the intended user-friendly method to add special points on the map.
I'm writing a stat log actor that works in conjunction with a special Boss player class, this player class has the necessary commands to insert points and log them into one (or more) .uc file built in a way that once finished, it can quickly be compiled on ucc -make.
Once compiled the game loads the .u file and inserts the points ingame everytime the map is loaded, this is useful for adding extra defense points, tell the bots to avoid certain dangers they can't notice and advantage points for other gametypes.

If you already downloaded the test package, try it offline on AS-Overlord or any of the other assault maps that have a Botz plugin (check in Botz folder), like AS-Redemption][ (this map is awesome, but broken on normal bots). These 2 maps have a special point coded into the plugin that tells botz to avoid the mortar shell, or to stop and shoot at the helicopter (not entirely effective yet).

Also intend to stop a rare crash on monsterhunt.
Image unreal://
Image unreal://

Posts: 1835
Joined: Sun Mar 04, 2012 6:47 pm

Re: FerBotz (new AI, release 2)

Post by Higor » Thu Mar 15, 2012 4:19 am

Renaming the package will break the gametype/map extensions.

So unless the file is transferred directly from the server, it's a no go.
I removed the code from the v2 FerBotz.u and the compressed it with UCC resulting in 153kb.

If you're willing to put the uz file in the server instead of a redirect, I'll hand you a server v3.
BTW, anyone has a tool or program to strip code quickly? I have lots of classes and don't feel like erasing code from each one at a time.
Image unreal://
Image unreal://

Posts: 1835
Joined: Sun Mar 04, 2012 6:47 pm

Re: FerBotz (new AI, release 3)

Post by Higor » Sat Mar 17, 2012 10:22 pm


- Change log for third revision:

BotZ will properly jump out of water and fall from platforms.
Physics oddities reduced.
Special point creation system using a statlog actor (a guide will come later).
BotZ won't get stuck with a translocator on defense points, or jumping up stairs.
Kicker handling improved (not properly fixed)
Fixed bug causing a botz to constantly aim at ground on deathmatch games.
Added map plugin for CTF-EpicBoy (lots of defense points, map didn't have any)
Image unreal://
Image unreal://

User avatar
Posts: 8881
Joined: Thu Jun 30, 2011 8:12 pm
Personal rank: God of Fudge
Location: Palo Alto, CA

Re: FerBotz (new AI, release 3)

Post by EvilGrins » Sun Mar 18, 2012 7:49 am

When I saw the title of this thread I thought it might have to do with furry bots.
:roll: :mrgreen: :D :tongue:
Not everyone can spell.
medor wrote:Replace Skaarj with EvilGrins :mrgreen:
Smilies · viewtopic.php?f=8&t=13758

User avatar
Posts: 10148
Joined: Wed Jul 15, 2009 11:36 am
Personal rank: coffee addicted !!!
Location: Cologne, the city with the big cathedral.

Re: FerBotz (new AI, release 3)

Post by papercoffee » Mon Mar 19, 2012 2:44 am

Higor wrote: Added map plugin for CTF-EpicBoy (lots of defense points, map didn't have any)
Now you got my attention ...my favourite map got a bot fix?

Posts: 1835
Joined: Sun Mar 04, 2012 6:47 pm

Re: FerBotz (new AI, release 3)

Post by Higor » Mon Mar 19, 2012 4:13 pm

Well the extra defense points and addons added by map plugins are only used botz, take for example that normal bots will search in the NavigationPointList for defense points and this is only generated in UnrealEd.

When it comes to testing botz translocation, CTF-EpicBoy is one of the best examples around (open map, botz will translocate like crazy and snipe in a couple of unorthodox spots if told to defend).
Still, botz entirely bases its navigation code on UT's built it path system, even uses JumpSpots and TranslocDests which would only work on normal bots due to code limitation.
So if the map isn't properly pathed there will be problems, but since the pathnodes are being used differently, some little problems that were affecting bots will dissapear, and vice-versa.

It's interesting to perform path testing sessions in every gametype,
Start a map on spectator or commander mode.
Add a Botz, add other bots too on Domination (otherwise, botz will camp).
Unhide all path nodes ( "set navigationpoint bhidden 0")
Spectate the botz and see the way it approaches every node.

Examples of path handling:
See Hyperblast and the botz jumping from one side of the ship to the other, or when leaving the flak cannon room jumping to the floor right behind them (above the ramp) instead of running around.
In Hall Of Giants and Morpheus the botz will try connecting jumps and translocation.
DM-Crane, if the botz gets the jump boots after spawning, he might jump off the building in a fancy way, landing in a weapon and not dying, something similar happens in Barricade.
Deck16][, see them jumping off the flak cannon ramp.
LavaGiant, blue base, see them jump directly from the sides platforms to the center one to grab the flag.
In general, when trying to fall from a platform or ledge without jumping, instead of trying to reach the pathnode, it will try to land exactly on the floor below it + collision height, this ensures the bot won't miscalculate a fall if the node is either too high, or the item too low.

I also intended to add suicide zones in assault map plugins, useful to make attackers reach destinations faster if new spawn points were enabled.
Image unreal://
Image unreal://