1
0
KF2-Dev-Scripts/Engine/Classes/AICommandBase.uc
2020-12-13 18:01:13 +03:00

48 lines
2.0 KiB
Ucode

/**
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*/
class AICommandBase extends Object within AIController
native(AI)
abstract;
/**
* When determining the utility value one can think of it in these terms:
*
* -how important is doing this action compared to other actions
* -how exciting is doing this action compared to other actions
*
* e.g. I have 2 idle actions; reading a newspaper and picking on a pedestrian. Picking on the pedestrian is more existing
* so it should be higher rated than reading the newspaper
*
* e.g. I have an action am drinking ambrosia and responding to a threat. In this case drinking ambrosia is really
* important. At the same importance as "EngageThreat" classification. So we will add EngageThreat.UtilityStartVal
* to our utilty score to represent that.
*
*
* Utility functions should be checking for the data that says whether or not something occured. They should NOT be
* checking for things like: If you were in an Idle Action and/or if your current Action has some property set.
* That is bad as that is causing undue coupling between Actions.
*
* Additionally, the Utilty Function rules all. Period.
*
* If things are not correctly occurring then the utility function is broken in some way.
* One should not try to set special bools on blackboard/controller/active state and then look for them
*
* If the current set of stimuli is not "valid" / "able to have data for the utility" then we need to
* more than likely add some generalized functionality to it.
*
* If that can not be done then we need to start along the "bool cloud" path in the stimulus struct But that should be the last option.
*
*
*
**/
static event int GetUtility( AIController InAI )
{
`warn( "AICommandBase Base Class GetUtility was called. Please have your Parent Type or your indiv AICmd implement this function" );
ScriptTrace();
return -1;
}
defaultproperties
{
}