Page 1 of 35

FerBotz (new AI, XCGE release 20)

Posted: Fri Mar 09, 2012 9:30 pm
by Higor
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:
FerBotz_16.1.7z
Linux binary
Fixed critical v16 bugs
(640.55 KiB) Downloaded 338 times
Release 17:
FerBotz_17.7z
Huge navigation fixes.
(646.82 KiB) Downloaded 307 times
Release 18:
FerBotz_18.7z
Better MH.
Native build is default installation now.
(652.18 KiB) Downloaded 631 times
Release 19:
FerBotz_19.7z
Requires XC_Engine v19
Native only
(553.32 KiB) Downloaded 182 times
Release 20:
FerBotz_20.7z
Navigation overhaul.
(590.33 KiB) Downloaded 1043 times
Features: (that I remember)
Interface:
- 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.

Combat:
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.

Navigation:
- 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.

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

Cheating:
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')
MegaDomination.
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 FERBOTZ:
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.

Re: FerBotz (new AI, release 1)

Posted: Sat Mar 10, 2012 12:33 am
by Dr.Flay
Definitely going to have a play with this. Very interesting indeed!

Re: FerBotz (new AI, release 1)

Posted: Sun Mar 11, 2012 1:05 pm
by UT99.org
medor wrote:Can we use it as default bot on servverside ? MinPlayers=x

Re: FerBotz (new AI, release 1)

Posted: Sun Mar 11, 2012 7:46 pm
by Higor
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...

EDIT
Ugh, found a couple of ugly networking bugs, may take some more...

Re: FerBotz (new AI, release 2)

Posted: Mon Mar 12, 2012 1:03 am
by Higor
EDITED FIRST POST

- 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

Re: FerBotz (new AI, release 2)

Posted: Mon Mar 12, 2012 8:35 am
by UT99.org
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/

Re: FerBotz (new AI, release 2)

Posted: Mon Mar 12, 2012 12:06 pm
by Feralidragon
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.

Re: FerBotz (new AI, release 2)

Posted: Mon Mar 12, 2012 8:12 pm
by Higor
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.

Edit:
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.

Re: FerBotz (new AI, release 2)

Posted: Mon Mar 12, 2012 11:33 pm
by UT99.org
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

Re: FerBotz (new AI, release 2)

Posted: Tue Mar 13, 2012 12:05 am
by Higor
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).

Edit:
Also intend to stop a rare crash on monsterhunt.

Re: FerBotz (new AI, release 2)

Posted: Thu Mar 15, 2012 4:19 am
by Higor
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.

Re: FerBotz (new AI, release 3)

Posted: Sat Mar 17, 2012 10:22 pm
by Higor
EDITED FIRST POST

- 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)

Re: FerBotz (new AI, release 3)

Posted: Sun Mar 18, 2012 7:49 am
by EvilGrins
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.

Re: FerBotz (new AI, release 3)

Posted: Mon Mar 19, 2012 2:44 am
by papercoffee
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?

Re: FerBotz (new AI, release 3)

Posted: Mon Mar 19, 2012 4:13 pm
by Higor
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.