FerBotz (new AI, XCGE release 20)

Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: FerBotz (new AI, global release 18)

Post by Higor »

Well, one of the mods/mutators you're loading is generating a 'clearArray' name entry.
I'd say BunnyTrack has something to do with it, but if you can do text searches withing binary files, you'll easily find out which one it is.

Unless you're in for yet another ugly hack...
User avatar
[rev]rato.skt
Adept
Posts: 438
Joined: Mon Aug 16, 2010 1:09 pm

Re: FerBotz (new AI, global release 18)

Post by [rev]rato.skt »

hi guys,


I have a problem when the Ferbotz enters the game soon after it leaves and enters a normal game bot...
Brazilian Server:
Alma Negra - 34.95.189.187:7777
Classic - madruga.utbr.cf:7777
Duel - x1.utbr.cf:6666
User avatar
Gustavo6046
Godlike
Posts: 1462
Joined: Mon Jun 01, 2015 7:08 pm
Personal rank: Resident Wallaby
Location: Porto Alegre, Brazil
Contact:

Re: FerBotz (new AI, global release 18)

Post by Gustavo6046 »

[rev]rato.skt wrote:hi guys,


I have a problem when the Ferbotz enters the game soon after it leaves and enters a normal game bot...

Uhh, details? :P
"Everyone is an idea man. Everybody thinks they have a revolutionary new game concept that no one else has ever thought of. Having cool ideas will rarely get you anywhere in the games industry. You have to be able to implement your ideas or provide some useful skill. Never join a project whose idea man or leader has no obvious development skills. Never join a project that only has a web designer. You have your own ideas. Focus on them carefully and in small chunks and you will be able to develop cool projects."

Weapon of Destruction
User avatar
Chamberly
Godlike
Posts: 1963
Joined: Sat Sep 17, 2011 4:32 pm
Personal rank: Dame. Vandora
Location: TN, USA
Contact:

Re: FerBotz (new AI, global release 18)

Post by Chamberly »

[rev]rato.skt wrote:hi guys,


I have a problem when the Ferbotz enters the game soon after it leaves and enters a normal game bot...
Check an ini somewhere or something?
Image
Image
Image Edit: Why does my sig not work anymore?
User avatar
[rev]rato.skt
Adept
Posts: 438
Joined: Mon Aug 16, 2010 1:09 pm

Re: FerBotz (new AI, global release 18)

Post by [rev]rato.skt »

[Core.System]
Paths=../System/Botz/*.u

[Engine.GameEngine]
;ServerActors=IpServer.UdpServerQuery
ServerActors=FerBotz.Botz_UdpServerQuery

[Engine.GameEngine]
ServerPackages=MVLA14UUb13C
ServerPackages=FerbotZ_cl_3

[CacusMapVote.CacusMapVote]
CustomGame[2]=(bEnabled=True,GameName="TeamGamePlus",RuleName="Siege Ferbotz",GameClass="SiegeIV_0025.SiegeGI",FilterCode="sgxFer",bHasRandom=False,VotePriority=1.000000,MutatorList="FerBotz.BotzMutator,NoMapProtection.NoMapProtection",Settings="MaxSpectators=4,MaxPlayers=18,MinPlayers=18",Packages="")

MapFilters[2]=sgxFer CTF-*

add folder Botz to
UnrealTournament\System\

logs

http://freetexthost.com/zv153uq5ma
Brazilian Server:
Alma Negra - 34.95.189.187:7777
Classic - madruga.utbr.cf:7777
Duel - x1.utbr.cf:6666
User avatar
Chamberly
Godlike
Posts: 1963
Joined: Sat Sep 17, 2011 4:32 pm
Personal rank: Dame. Vandora
Location: TN, USA
Contact:

Re: FerBotz (new AI, global release 18)

Post by Chamberly »

I didn't say server packages and all that. Just settings. Well, give me a few days to figure this out or so, I don't have my PC atm so I'll have to re-install and work with it.
Image
Image
Image Edit: Why does my sig not work anymore?
User avatar
[rev]rato.skt
Adept
Posts: 438
Joined: Mon Aug 16, 2010 1:09 pm

Re: FerBotz (new AI, global release 18)

Post by [rev]rato.skt »

Chamberly wrote:I didn't say server packages and all that. Just settings. Well, give me a few days to figure this out or so, I don't have my PC atm so I'll have to re-install and work with it.
i wait thx.
Brazilian Server:
Alma Negra - 34.95.189.187:7777
Classic - madruga.utbr.cf:7777
Duel - x1.utbr.cf:6666
User avatar
[rev]rato.skt
Adept
Posts: 438
Joined: Mon Aug 16, 2010 1:09 pm

Re: FerBotz (new AI, global release 18)

Post by [rev]rato.skt »

I could find out WHAT caused the error, MinPlayers = 0 this is set to 0 , if not in the 0 Ferz not working,
but I have another doubt for him to create buildings in the siege as it does ? here he is not doing anything , or updates in created things...
Brazilian Server:
Alma Negra - 34.95.189.187:7777
Classic - madruga.utbr.cf:7777
Duel - x1.utbr.cf:6666
a9902957@nepwk.com
Experienced
Posts: 85
Joined: Thu Nov 03, 2011 5:12 am

Re: FerBotz (new AI, global release 18)

Post by a9902957@nepwk.com »

Hello,

love this modding project of yours Higor!

Also like playing Unreal Badlands ( https://web.archive.org/web/20050101180 ... anual.html
http://www.moddb.com/mods/unreal-badlands1 ) to the music of LucasArts' Outlaws.

So I made some necessary adaptions to play the Wanted gametype with FerBotz <3 (well, should have made a new gametype and not touch Badlands.u but
"meh!" and the Script Editor not playing all that nicely in Wine (or is the doubling bug also there when run natively on Windows?) did not help it much either).

They have problems with reloading sometimes and not go actively enough for the dropped cards, but all in all they are competitive.


I gave it a quick try to make them go down the well in BL-Sundown but failed at that. :|


Also tried them with UnrealGod ( http://unrealtournament.99.free.fr/utfi ... God_16.rar ) and was delighted that UnrealGod detected them as players outright.
(They do not spend their skill points of course and are not roaming the maps but that could be helped of course. Great job on making this so easiely extensible and open to additions!)

I would also love to try them on Infiltration or Night's Edge (well, did so already for the latter but they are not getting a Loadout).

AirFightUT should have airnodes (however it has utterly different handling/gameplay, too).

http://www.ut-files.com/index.php?dir=M ... WAR2.0.zip has a jetpack pickup (and overpowered weapons).

Also tried them on the PlannerBot Test Release gametype together with PlannerBots, alas that would take some hacking, too.


:rock: :gj: :tu:
Attachments
badlandsWantedFerBotz.7z
(8.87 MiB) Downloaded 100 times
User avatar
Chamberly
Godlike
Posts: 1963
Joined: Sat Sep 17, 2011 4:32 pm
Personal rank: Dame. Vandora
Location: TN, USA
Contact:

Re: FerBotz (new AI, global release 18)

Post by Chamberly »

That is good to hear and what a good post! Glad you could take them out of the boundary and try other things.

@Rato it depends on map. They can play Siege maps - Clarion, Kanjar, and Niven. I'll work on expanding map playable soon once I get a hang of the editor.
Image
Image
Image Edit: Why does my sig not work anymore?
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: FerBotz (new AI, global release 19)

Post by Higor »

Version 19 update
This is a test build intended to test a widely rewritten package/class structure.
- Changes from this version:
================= BUILD IS NATIVE ONLY:
XC_Engine (v19) is required to run FerBotz
- Dummy pawn code entirely removed.
- Servers require XC_GameEngine.bUseNewRelevancy=True to display bots on clients.
- Bots that imitate a player type not supported in clients will look like Xan instead of being invisible (VA styled).
- UnrealScript-only classes and plugins can use XC_Engine natives (previously in FerBotz) for improved functionality.
Vastly improved elevator handling, botz can even assess when generic elevators can be at the nearest to them.
Botz are less likely to jump down bridges and other ledges during combat.
Path weighting rewritten, botz are more likely to select alternative routes.
Alternative UnrealScript pathfinder implemented, botz can find kill routes that give it a line of sight to a target.
Random Botz may take the face setting as name.
Botz added from list properly select a team.
Improved long range sight and sniping.
Combat profiles:
- Added 'EnemyTooClose' condition to weapon profiles.
- Fixed bug causing bots to not select appropiate weapon profile in arena matches.
- Improved Shock Rifle and Rocket Launcher usage at melee range.
- Weapon profiles loaded up to down, custom profiles are prioritized over default ones.
MonsterHunt profile reworked:
- Only compatible with the MonsterHunt prototype: https://github.com/CacoFFF/MonsterHunt-Rebuild
- Bots tend to hunt and clear most monsters.
- Less performance drain at high bot count
DLL changes:
- Botz is no longer a native class, now subclassed from FerBotz_cl_4.BotzClientPawn.
- Botz_PathLoader is no longer a native class, path loader uses XC_Core.BinarySerializer.
- Added Botz_NavigBase.ResetScriptRunaway function.
- Improved Botz_NavigBase.ClearAllPaths function, can relink previously pruned paths going through node being cleared.
Path builder:
- DynamicBotzPlayer displays real/path distance on each connection.
- Simplified and improved path pruning (some maps were broken due to this, recheck!).
Notes:
The alternative pathfinder is a lot slower in code, but completely immune to a bug that happens in big maps where paths don't work regardless of how well the network is built.
Interactions between gametype plugins and stuff like weapon profiles may lead to very weird behaviour (make sure you report everything you see).
Try MH-LongCorridor2006 with lots of Botz if you have it (plus the MH prototype).
User avatar
Zanna
Average
Posts: 67
Joined: Mon Jan 23, 2017 1:30 pm

Re: FerBotz (new AI, XCGE release 19)

Post by Zanna »

Can someone explain how this works?
"mutate addbotz help" or any other of the parameters in the read me does not work
Did the whole "set up" and added the path in the .ini; added "Activar BotZ" as mutator, still nothing; not even the other one (player vs botz"

Did I miss something?

---ok i think I need the custom engine, lets get it
-- ok done, they seem to be working now
der Kas... the cheesy prison supervisor...
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: FerBotz (new AI, XCGE release 20)

Post by Higor »

Version 20 update

- Changes from this version:
================= BUILD IS NATIVE ONLY:
Path builder:
- Added Botz_DirectPlatformBelow path, it's a direct link that activates when it becomes walkable.
- Added Botz_NavigRemoverSmart, removes clustered/excess PathNodes and InventorSpot within its radius.
- Added Botz_Telewatcher, dynamically disables routes through disabled teleporters within its radius.
- Fixed bug preventing 45º routes from being pathed upwards.
- Botz_NavigDoorSpecial paths can optimally remove links between other nodes blocked by a gate.
- Botz_NavigDoorSpecial works normally in case of one-way incoming paths.
- Botz_NavigDoorSpecial supports triggered doors.
- Various bugfixes on direct link node placement.
- Water reachspecs have added weight (as with unreal editor built paths)

New pathfinder:
Maps the entire path network and sets on each node the path's weight (that leads to said node).
Then objectives are evaluated based on said networks mapping, this allows botz and game profiles to
evaluate multiple goals by mapping the network once.
It is possible to even determine which of many objectives can be reachable sooner.
- Used for all (except inventory finding) pathfinding now.
- Ported to c++, can call an event to customize cost in the route network.
- Can be used to remap the network from a different starting point without having to recalculate the cost.
- It's possible to modify the requirements for allowed reachspecs during mapping.
- Fixed route caching bug causing bots to get stuck on walls.

Botz_LiftCenter path better handled by both Botz and other pawns.
Botz are less likely to get stuck at items.
Botz's weapons no longer freeze when they go out of ammo.
Shock rifle profile and combo code greatly improved.

Game profiles:
- Attacking code revamped, BotzTargetAdder.SuggestAttack is always called, then bot decides whether to get items or not.
** This lets SuggestAttack modify the bot's inventory picking priorities.
- MonsterHunt profile (MH proto only): prioritization of objectives according to orders:
-- Attack: MonsterWaypoints/MonsterEnd, Monsters, Triggers
-- Freelence: MonsterWaypoints/MonsterEnd, Triggers, Monsters
-- Defend: Triggers, Monsters, MonsterWaypoints/MonsterEnd
*** If bots try going through locked doors/gates, order 'defense'.
EDIT: Added this PNG file to visual tutorials, remember to check the DirectLink tutorial on how to connect these nodes to ANY other node.
PlatformBelow.png


=============================
The route mapper has it's downsides, as it only currently maps the entire path network and that can be slower on maps with way too many navigation points.
The upside is that it allows the coder to evaluate multiple 'endpoints' without performing pathfinding for each one.
Other advantages are that one can specify the Start Anchor meaning that pathfinding in air situations (or for hypothetical paths taken by other creatures) is possible.
If this goes well, it'll be implemented into XC_Engine in a not so distant future.



Anatomy of the route mapper:

Every NavigationPoint's VisitedWeight will indicate the 'distance/cost' of the shortest route between StartAnchor and said point.
If VisitedWeight is equal or above 10000000 then that means said node is unreachable from StartAnchor.

Code: Select all

//Modifiers:
// 0x0001:	no R_WALK routes
// 0x0002:	no R_FLY routes
// 0x0004:	no R_SWIM routes
// 0x0008:	no R_JUMP routes
// 0x0010:	no R_DOOR routes
// 0x0020:	no R_SPECIAL routes
// 0x0040:	no R_PLAYERONLY routes
// 0x0080:	soft-reset (VisitedWeight, prevOrdered) instead of hard-reset (+ cost, nextOrdered)

// When calling MapRoutes a 'hard-reset' will occur and all paths will be ready to be mapped
// PostHardResetEvent allows the user to modify NavigationPoint's cost inbetween a hard-reset and the mapping

// If you intend to change the StartAnchor after already having mapped the network,
// perform a soft-reset to avoid calculating path 'Cost' again
native final function MapRoutes( NavigationPoint StartAnchor, optional int MinWidth, optional int MinHeight, optional int Modifiers, optional name PostHardResetEvent);
This is an example function for locating StartAnchor near the bot, StartAnchor is a global variable here.

Code: Select all

//Only overrides anchor if found one
function bool LocateStartAnchor( optional bool bUnreachableAllowed)
{
	local float BestWeight, Weight;
	local NavigationPoint N, NewAnchor;

	BestWeight = -1;
	ForEach NavigationActors ( class'NavigationPoint', N, 2000)
	{
		Weight = 2 + int(FastTrace(N.Location)) - VSize(Location - N.Location) * 0.001;
		if ( (Weight > BestWeight) && (bUnreachableAllowed || PointReachable(N.Location)) )
		{
			NewAnchor = N;
			BestWeight = Weight;
		}
	}
	
	if ( NewAnchor != None )
	{
		StartAnchor = NewAnchor;
		return true;
	}
}
When a hard-reset occurs, every NavigationPoint's Cost is set to either:
= ExtraCost variable if bSpecialCost=False
= SpecialCost event if bSpecialCost=True
This event (if specified on MapRoutes) will allow the modification of Path's costs between the hard-reset and the route mapping.
Here the Botz increase cost of paths where he's been previously killed.

Code: Select all

// Increase cost of navigation points post MapRouts hard-reset
event CostBads()
{
	local Botz_BaddingSpot B;

	For ( B=MyBads ; B!=none ; B=B.NextSpot )
		B.ApplyBadding();
	if ( PlayerReplicationInfo.Team < 4 )
		For ( B=MasterEntity.TeamBads[PlayerReplicationInfo.Team] ; B!=none ; B=B.NextSpot )
			B.ApplyBadding();
}
This is an example function on how to build the route cache from a desired EndPoint, obviously we should check that this EndPoint.VisitedWeight is lesser than 10000000 to verify it's reachable.
This allows us to determine the next path to follow AFTER we've mapped the route.
There 10k arbitrary limit is there to prevent crashes.
This code skips elements in the route that are touching or too close to the bot.

Code: Select all

function NavigationPoint BuildRouteCache( NavigationPoint EndPoint)
{
	local int i;

	EndPoint.RouteCache = none; //Build the chain
	while ( EndPoint.prevOrdered != None )
	{
		EndPoint.prevOrdered.RouteCache = EndPoint;
		EndPoint = EndPoint.prevOrdered;
		if ( ++i == 10000 ) return None;
	}

	i = 0;
	while ( (EndPoint != None) && InRadiusEntity(EndPoint) ) //Skip nearby nodes, treat them as visited
		EndPoint = NavigationPoint(EndPoint.RouteCache);
	while ( (EndPoint != None) && (i<16) )
	{
		RouteCache[i++] = EndPoint;
		EndPoint = NavigationPoint(EndPoint.RouteCache);
	}
	return RouteCache[0];
}
Old UT Veteran
Skilled
Posts: 163
Joined: Sat Mar 24, 2012 1:37 am

Re: FerBotz (new AI, XCGE release 20)

Post by Old UT Veteran »

Damn, Higor is on a roll here. MH and now Ferbotz - gotta start checking this shit out.
----------------------------
Quick late night comment:
I checked out v20 and now I can't win a DM match if my life depended on it.
My concerns (noted but never reported): Botz turn rate is kind of annoying as they just 'snap' toward an enemy mid/close distance. I noticed that the shooting animations would either desynchronize or not update, and make the botz appear as if they're shoot bullets out of their sides (e.g. bot looks in direction N but bullets fire 45-90 degrees off to the left or right of the direction bot is facing) - prominently when using the mini-gun. In extreme cases when botz is retreating, I noticed that they would run toward the retreat destination and bullets would be flying from their backs. Additionally when using the bio-rifle, botz would charge up sludge, fire it at wall and kill themselves afterward if no objectives are noted or botz is just wandering in the same spot. They tend to hold the charge and then release it after a certain amount of time.

Other than that I'm really happy how fun it can be to play against those pesky fellas.
Post Reply