48 lines
2.0 KiB
Ucode
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
|
||
|
{
|
||
|
}
|