FerBotz (new AI, XCGE release 20)

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

Re: FerBotz (new AI, release 14)

Post by Higor »

Botz have problems if NexGen handles game start, untick that setting in NexGen and try again.

EDIT:
Got them to fire Jets but they don't drive them at all yet (jet crashes on a wall)... and the bots reappear at the location they initially fired instead of dying :loool:
About the unseen things that were needed to get to that point:
- Implementation of a flight profile system (like weapon profiles).
- Implementation of a fast profile loader and checker.
- Secondary path check and validation to see if the bot should start flying.
- Per profile validation, allows each flight item to see if said air path can be taken.
- Derive the navigation, firing (optional) and aiming (optional) code to the flight profile during said state.

EDIT2:
Remove FerBotz from Packages
User avatar
[rev]rato.skt
Adept
Posts: 438
Joined: Mon Aug 16, 2010 1:09 pm

Re: FerBotz (new AI, release 14)

Post by [rev]rato.skt »

New's Bugs
bots locking your movement, and are not creating anything or upgrading...
and they are attacking the crystal of own team.
[youtube]fSCb8Yxy9iQ[/youtube]
Brazilian Server:
Alma Negra - 34.95.189.187:7777
Classic - madruga.utbr.cf:7777
Duel - x1.utbr.cf:6666
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: FerBotz (new AI, release 14)

Post by Higor »

Siege is broken ATM.

Btw in edit mode we can now see the connections made by a Botz path (after map was reloaded).
BotzPathImg.JPG
EDIT:
Also, early tests of the old Quantum Fighter Jets...
That's not me flying it.
That's not me flying it.
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: FerBotz (new AI, release 15)

Post by Higor »

UPDATED FIRST POST

- Changes from this version:
Fixed botz getting stuck near items (InventorySpot too far from item).
Fixed botz not waiting in elevator if jumps towards it.
Fixed botz resetting move state mid air.
Botz now do path shortening mid air.
Added flight navigation base system.
- Support for JetReplaceG.GhandiJetLauncher (crash if you kill bot while flying)
Botz can do pathfinding on destinations that aren't reachable to it's closest path node.
Fixed log spam in Siege games.
Fixed weapon profiles failing to work with custom versions of supported weapons.
Botz will now be forced to attack/perform tasks instead of trying to get items if map has no items (CTF. AS. MH).
Players VS Botz mutator added!
"MUTATE ADDBOTZLIST INDEX=x" now adds the bot number 'x' in the list.
Major code cleanup, removed useless beta waypoint system.
UPDATED: SETTING UP.TXT
================= NATIVE ONLY:
Fixed air nodes not properly connecting with ground nodes


Note: FerBotz.int was updated to display the settings in Advanced Options and the new mutator, you may want to correct your corresponding INT, EST, DET, etc localization file for these additions.
User avatar
Emperor
Average
Posts: 58
Joined: Wed May 21, 2008 8:56 pm
Personal rank: Rtma Eros Paragon
Location: Australia

Re: FerBotz (new AI, release 15)

Post by Emperor »

Well I'm trying version 15 and it works with custom weapons now but over all without their heaven forbid, Translocator Kills, they aint performing much better then regular bots, intended?
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: FerBotz (new AI, release 15)

Post by Higor »

They don't lead translocator shots because it'd make the game unplayable.
They DO switch to translocator very often in normal games to kill you at short distances if possible.

Edit--------------------------- by papercoffee

Snippet time.
Now it's the pathing loop's turn, which happens on each Botz_NavigBase actor after being loaded.

//********************PathCandidates - Runs an automatic path build routine in runtime
native final function PathCandidates();

Code: Select all

void ABotz_NavigBase::execPathCandidates(FFrame &Stack, RESULT_DECL)
{
	RegisterNames();

	guard(ABotz_NavigBase::execPathCandidates);
	P_FINISH;

	ANavigationPoint *N = Level->NavigationPointList;
	FLOAT dist = MaxDistance * MaxDistance;
	ABotz_NavigBase *B;
	UClass *BaseClass = ABotz_NavigBase::StaticClass();

	if ( N == this )
		N = N->nextNavigationPoint;

	while ( N )
	{
		if ( (FVector(Location - N->Location).SizeSquared() <= dist) && (FindExistingDest(this, N) < 0) && (FindPrunedDest(this, N) < 0) )
		{
			BYTE pathType = 0;
			if ( N->IsA( BaseClass) ) //Logic for NavigBase <> NavigBase
			{
				B = (ABotz_NavigBase*)N;
				if ( CanTakeIncomingPath( B, this) && CanSendOutgoingPath(this, N) ) //This path will check back in it's own PathCandidates function, safe to deny here
				{
					pathType = B->eventIsCandidateTo( this);
					if ( pathType == PM_Normal )
						pathType = eventOtherIsCandidate( N);
				}
			}
			else //Logic for NavigBase <> NavigationPoint
			{
				B = NULL;
				if ( CanSendOutgoingPath(this, N) )
					pathType = eventOtherIsCandidate( N);
			}

			if ( pathType )
			{
				if (_CountFreeSlots( &Paths[0] ) > ReservePaths )
					eventAddPathHere( this, N, pathType == PM_Forced );
				if ( B == NULL && (_CountFreeSlots( &upstreamPaths[0] ) > ReserveUpstreamPaths) && (FindExistingDest(N, this) < 0)/* && (FindPrunedDest(N,this) < 0) */) //We just make sure we didn't apply a 2 way path here
					eventAddPathHere( N, this, pathType == PM_Forced ); //Removed conditions... because older Navigbases won't connect with newer ones otherwise
			}
		}

		N = N->nextNavigationPoint;
		if ( N == this )
			N = N->nextNavigationPoint;
	}

	eventFinishedPathing();
	unguard;
}

Code: Select all

inline INT _CountFreeSlots( int *Elem)
{
	INT j = 0;
	for ( int i=0 ; i<16 ; i++ )
		if ( *(Elem+i) == -1 )
			j++;
	return j;
}
User avatar
papercoffee
Godlike
Posts: 10443
Joined: Wed Jul 15, 2009 11:36 am
Personal rank: coffee addicted !!!
Location: Cologne, the city with the big cathedral.
Contact:

Re: FerBotz (new AI, release 15)

Post by papercoffee »

@ Higor ...it's the same for you, please avoid double posts. :wink:
User avatar
gust
Novice
Posts: 14
Joined: Thu Jul 31, 2014 1:16 pm

Re: FerBotz (new AI, release 15)

Post by gust »

Last edited by gust on Fri Aug 01, 2014 9:37 am, edited 1 time in total.
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, release 15)

Post by Chamberly »

Wow Hello gust! :) Nice to see you here!

(Sorry for off topic, he a cool guy haha)

Will take a look at the file. :)
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, release 15)

Post by Higor »

I could have sworn the AssaultBackup actor had the new navigation methods implemented, my repository was messed up.

On a different note, added on main Botz repository.
gust:
- AimPoint actor is now spawned during PreBeginPlay(), no need to do sanity checks on it anymore.
- AirState was completely removed for next release, instead i'm using a temporary movetarget to alter destinations or chain movements.
- CombatState's DescribeSpec error was fixed, it was me being dumb enough to call that function in a reference that's NEVER up at that movement (oops).
- PreventDeath check added on Died() function.

Will take a look at the new file...
EDIT: Can you point out the Class/State/Function to look at? I don't use a Diff app :(
Higor
Godlike
Posts: 1866
Joined: Sun Mar 04, 2012 6:47 pm

Re: FerBotz (new AI, global release 16)

Post by Higor »

Updated first post

- V16 changelog:
Botz can now properly roam in DeathMatch and TeamGamePlus (Instagib Ready!).
Increased stability in flight code (not yet usable).
Simplified navigation code.
Enhanced obstruction evasion code during navigation.
Fixed bad export in DM and TGP plugins, won't crash linux clients.
Fixed outdated DM-Oblivion plugin crashing all clients.
Fixed botz disregarding Mutator's PreventDeath.
Fixed bug in 'retreat' combat substate.
Fixed some more log warnings.
Updated Setting up.txt
================= NATIVE ONLY:
Linux build included.
Full source code included.
User avatar
gust
Novice
Posts: 14
Joined: Thu Jul 31, 2014 1:16 pm

Re: FerBotz (new AI, global release 16)

Post by gust »

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

Re: FerBotz (new AI, global release 16.1)

Post by Higor »

Updated first post

- Critical update changelog
Fixed bug making botz attempt to translocate without translocator.
Fixed debug actors being visible showing up on normal games.
Included updated SiegeIV profile and lots of map navigation files.
================= NATIVE ONLY:
High jump and high transloc nodes now do properly path generation.
Fixed error in Nav file loading.


=================================
gust

No longer needed:

Code: Select all

					if( aN[1] != None )
					{
						aN[1].describeSpec( aN[0].Paths[ i[1] ], aS, aE, h, k);
					}
AimPoint extra sanity checks (spawned in Botz's PreBeginPlay)
User avatar
gust
Novice
Posts: 14
Joined: Thu Jul 31, 2014 1:16 pm

Re: FerBotz (new AI, global release 16.1)

Post by gust »

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

Re: FerBotz (new AI, global release 17)

Post by Higor »

Updated first post

- Changes from this version:
Updated client interface to Ferbotz_cl_3 >>>>>>>> CHECK YOUR BOTZDEFAULT.INI FOR CL_2 REFERENCES
Dummy pawn creation should no longer cause issues with player count in servers (credits to Gust).
Fixed Bug in path cost adder, loooots of log spam removed.
Fixed bots getting stuck on pickup locations.
Botz plugins may now select which AI state botz should use.
Fixed Siege plugin, following players supported now.
Fixed bots resetting state while traversing between very distant points (ty Red_fist).
Fixed bug causing bots to fall when jumping between very thin platforms.
================= NATIVE ONLY:
Fixed bug causing base Botz nodes to connect to other high, unreachable nodes.
Basic Botz nodes now respect each other's MaxDistance when connecting each other, makes simple one-ways possible.
Moved more functions to native code.



EXTRA NOTES:

Replaced ThisOrThat function with a native operator.
This allows very simple conditional multi-object operations, and is a skip expression, meaning that if A exists B never gets executed.
Example:
- Target = Enemy Or OldEnemy Or FindEnemy();
This sets the target to Enemy if exists, else to OldEnemy, else to FindEnemy().

Uscript:

Code: Select all

//***************************** << - Returns B if A doesn't exist
native static final operator(22) Actor Or (Actor A, skip Actor B);
Native:

Code: Select all

void ABotz::execOr_ActorActor(FFrame &Stack, RESULT_DECL)
{
	P_GET_ACTOR(A);
	P_GET_SKIP_OFFSET(W);
	if( !A )
	{
		P_GET_ACTOR(B);
		*(AActor**)Result = B;
		Stack.Code++; //SAME AS P_FINISH
	}
	else
	{
		*(AActor**)Result = A;
		Stack.Code += W;
	}
}
You may check these out on the source code.
Post Reply