This is a test version of the AI, which can be used to create new AIs, and compare them with the current AI.
More...
|
| TestAI (AbstractKart *kart) |
|
virtual void | update (int ticks) |
| Updates the ai base controller each time step.
|
|
virtual void | reset () |
|
virtual const irr::core::stringw & | getNamePostfix () const |
|
| AIBaseLapController (AbstractKart *kart) |
| This is the base class for all AIs.
|
|
virtual void | reset () |
|
| AIBaseController (AbstractKart *kart) |
|
virtual void | reset () OVERRIDE |
|
virtual bool | disableSlipstreamBonus () const OVERRIDE |
| Certain AI levels will not receive a slipstream bonus in order to be not as hard.
|
|
virtual void | crashed (const Material *m) OVERRIDE |
| This is called when the kart crashed with the terrain.
|
|
virtual void | crashed (const AbstractKart *k) OVERRIDE |
|
virtual void | handleZipper (bool play_sound) OVERRIDE |
|
virtual void | finishedRace (float time) OVERRIDE |
| Called whan this controller's kart finishes the last lap.
|
|
virtual void | collectedItem (const ItemState &item, float previous_energy=0) OVERRIDE |
|
virtual void | setPosition (int p) OVERRIDE |
|
virtual bool | isPlayerController () const OVERRIDE |
| This function checks if this player is not an AI, i.e.
|
|
virtual bool | isLocalPlayerController () const OVERRIDE |
| This function checks if this is a local player.
|
|
virtual bool | action (PlayerAction action, int value, bool dry_run=false) OVERRIDE |
| Default: ignore actions.
|
|
virtual void | skidBonusTriggered () OVERRIDE |
|
virtual bool | saveState (BareNetworkString *buffer) const OVERRIDE |
|
virtual void | rewindTo (BareNetworkString *buffer) OVERRIDE |
|
void | setNetworkAI (bool val) |
|
virtual void | update (int ticks) OVERRIDE |
|
| Controller (AbstractKart *kart) |
| Constructor, saves the kart pointer and a pointer to the KartControl of the kart.
|
|
virtual void | reset ()=0 |
|
virtual void | update (int ticks)=0 |
|
virtual void | handleZipper (bool play_sound)=0 |
|
virtual void | collectedItem (const ItemState &item, float previous_energy=0)=0 |
|
virtual void | crashed (const AbstractKart *k)=0 |
|
virtual void | crashed (const Material *m)=0 |
|
virtual void | setPosition (int p)=0 |
|
virtual bool | isLocalPlayerController () const =0 |
| This function checks if this is a local player.
|
|
virtual bool | isPlayerController () const =0 |
| This function checks if this player is not an AI, i.e.
|
|
virtual bool | disableSlipstreamBonus () const =0 |
|
virtual bool | saveState (BareNetworkString *buffer) const =0 |
|
virtual void | rewindTo (BareNetworkString *buffer)=0 |
|
virtual void | rumble (float strength_low, float strength_high, uint16_t duration) |
|
virtual void | setControllerName (const std::string &name) |
| Sets the controller name for this controller.
|
|
const std::string & | getControllerName () const |
| Returns the name of this controller.
|
|
virtual bool | action (PlayerAction action, int value, bool dry_run=false)=0 |
| Default: ignore actions.
|
|
virtual void | newLap (int lap)=0 |
| Callback whenever a new lap is triggered.
|
|
virtual void | skidBonusTriggered ()=0 |
|
virtual void | finishedRace (float time)=0 |
| Called whan this controller's kart finishes the last lap.
|
|
virtual KartControl * | getControls () |
| Get a pointer on the kart controls.
|
|
void | setControls (KartControl *kc) |
|
virtual bool | canGetAchievements () const |
| Only local players can get achievements.
|
|
virtual core::stringw | getName (bool include_handicap_string=true) const |
| Display name of the controller.
|
|
AbstractKart * | getKart () const |
| Returns the kart controlled by this controller.
|
|
|
virtual unsigned int | getNextSector (unsigned int index) |
| Returns the next sector of the given sector index.
|
|
virtual void | update (int ticks) |
| Updates the ai base controller each time step.
|
|
virtual unsigned int | getNextSector (unsigned int index) |
| Returns the next sector of the given sector index.
|
|
virtual void | newLap (int lap) |
| Triggers a recomputation of the path to use, so that the AI does not always use the same way.
|
|
float | steerToAngle (const unsigned int sector, const float angle) |
| This function steers towards a given angle.
|
|
void | computePath () |
| Computes a path for the AI to follow.
|
|
virtual void | raceFinished () |
| Nothing special to do when the race is finished.
|
|
void | setControllerName (const std::string &name) OVERRIDE |
| In debug mode when the user specified –ai-debug on the command line set the name of the controller as on-screen text, so that the different AI controllers can be distinguished.
|
|
float | steerToPoint (const Vec3 &point) |
| Computes the steering angle to reach a certain point.
|
|
float | normalizeAngle (float angle) |
| Normalises an angle to be between -pi and _ pi.
|
|
bool | isStuck () const |
| This can be called to detect if the kart is stuck (i.e.
|
|
void | determineTurnRadius (const Vec3 &end, Vec3 *center, float *radius) const |
| Determine the center point and radius of a circle given two points on the circle and the tangent at the first point.
|
|
virtual void | setSteering (float angle, float dt) |
| Converts the steering angle to a lr steering in the range of -1 to 1.
|
|
virtual bool | canSkid (float steer_fraction)=0 |
| Return true if AI can skid now.
|
|
|
void | handleRaceStart () |
|
void | handleAcceleration (int ticks) |
|
void | handleSteering (float dt) |
|
void | handleItems (const float dt) |
|
void | handleRescue (const float dt) |
|
void | handleBraking () |
|
void | handleNitroAndZipper () |
|
void | computeNearestKarts () |
|
void | handleItemCollectionAndAvoidance (Vec3 *aim_point, int last_node) |
|
bool | handleSelectedItem (Vec3 kart_aim_direction, Vec3 *aim_point) |
|
bool | steerToAvoid (const std::vector< const ItemState * > &items_to_avoid, const core::line3df &line_to_target, Vec3 *aim_point) |
|
bool | hitBadItemWhenAimAt (const ItemState *item, const std::vector< const ItemState * > &items_to_avoid) |
|
void | evaluateItems (const ItemState *item, Vec3 kart_aim_direction, std::vector< const ItemState * > *items_to_avoid, std::vector< const ItemState * > *items_to_collect) |
|
void | checkCrashes (const Vec3 &pos) |
|
void | findNonCrashingPointFixed (Vec3 *result, int *last_node) |
|
void | findNonCrashingPointNew (Vec3 *result, int *last_node) |
|
void | findNonCrashingPoint (Vec3 *result, int *last_node) |
|
void | determineTrackDirection () |
|
virtual bool | canSkid (float steer_fraction) |
| Return true if AI can skid now.
|
|
virtual void | setSteering (float angle, float dt) |
| Converts the steering angle to a lr steering in the range of -1 to 1.
|
|
void | handleCurve () |
|
|
class TestAI::CrashTypes | m_crashes |
|
RaceManager::AISuperPower | m_superpower |
|
AbstractKart * | m_kart_ahead |
| Pointer to the closest kart ahead of this kart.
|
|
float | m_distance_ahead |
| Distance to the kart ahead.
|
|
AbstractKart * | m_kart_behind |
| Pointer to the closest kart behind this kart.
|
|
float | m_distance_behind |
| Distance to the kard behind.
|
|
int | m_start_delay |
| The actual start delay used in ticks.
|
|
float | m_time_since_last_shot |
| Time an item has been collected and not used.
|
|
float | m_time_since_stuck |
|
int | m_start_kart_crash_direction |
| Direction of crash: -1 = left, 1 = right, 0 = no crash.
|
|
DriveNode::DirectionType | m_current_track_direction |
| The direction of the track where the kart is on atm.
|
|
float | m_current_curve_radius |
| The radius of the curve the kart is currently driving.
|
|
Vec3 | m_curve_center |
| Stores the center of the curve (if the kart is in a curve, otherwise undefined).
|
|
unsigned int | m_last_direction_node |
| The index of the last node with the same direction as the current node the kart is on.
|
|
const ItemState * | m_item_to_collect |
| If set an item that the AI should aim for.
|
|
bool | m_avoid_item_close |
| True if items to avoid are close by.
|
|
float | m_distance_to_player |
| Distance to the player, used for rubber-banding.
|
|
RandomGenerator | m_random_skid |
| A random number generator to decide if the AI should skid or not.
|
|
enum TestAI:: { ... } | m_skid_probability_state |
| This implements a simple finite state machine: it starts in NOT_YET.
|
|
const ItemState * | m_last_item_random |
| The last item selected for collection, for which a probability was determined.
|
|
bool | m_really_collect_item |
| True if m_last_item_random was randomly selected to be collected.
|
|
RandomGenerator | m_random_collect_item |
| A random number generator for collecting items.
|
|
enum TestAI:: { ... } | m_point_selection_algorithm |
| Determines the algorithm to use to select the point-to-aim-for There are three different Point Selection Algorithms:
|
|
|
static void | enableDebug () |
|
static void | setTestAI (int n) |
|
static int | getTestAI () |
|
int | m_track_node |
| The current node the kart is on.
|
|
LinearWorld * | m_world |
| Keep a pointer to world.
|
|
std::vector< int > | m_successor_index |
| Which of the successors of a node was selected by the AI.
|
|
std::vector< int > | m_next_node_index |
| For each node in the graph this list contains the chosen next node.
|
|
std::vector< std::vector< int > > | m_all_look_aheads |
| For each graph node this list contains a list of the next X graph nodes.
|
|
bool | m_enabled_network_ai |
|
float | m_kart_length |
| Length of the kart, storing it here saves many function calls.
|
|
float | m_kart_width |
| Cache width of kart.
|
|
Track * | m_track |
| Keep a pointer to the track to reduce calls.
|
|
const AIProperties * | m_ai_properties |
| A pointer to the AI properties for this kart.
|
|
AbstractKart * | m_kart |
| Pointer to the kart that is controlled by this controller.
|
|
KartControl * | m_controls |
| A pointer to the main controller, from which the kart takes it commands.
|
|
std::string | m_controller_name |
| The name of the controller, mainly used for debugging purposes.
|
|
static bool | m_ai_debug = false |
|
static int | m_test_ai = 0 |
| Stores the '–test-ai=n' command line parameter: It indicates which fraction of the AIs are going to be the test AI: 1 means only to use the TestAI, 2 means every second AI will be test etc.
|
|
This is a test version of the AI, which can be used to create new AIs, and compare them with the current AI.
It is otherwise (at this stage) identical to the Skidding AI.