-
Notifications
You must be signed in to change notification settings - Fork 25
Core_Inputs
Related files: Feature Creator Input Formatter
In order to improve performance, we do not only use all the values the game_tick_packet gives us, but we also generate some other inputs which can give the bot an advantage. Below is at first the all the info of the game_tick_packet with their corresponding index in the array, and beneath that there are the extra features we added.
Game values: (self refers to the bot, sorted by index in array, can also be found at input_formatter.py)
- game_tick_packet.gameInfo.bBallHasBeenHit
- game_tick_packet.gamecars[self.index].Score.Score
- game_tick_packet.gamecars[self.index].Score.Goals
- game_tick_packet.gamecars[self.index].Score.OwnGoals
- game_tick_packet.gamecars[self.index].Score.Assists
- game_tick_packet.gamecars[self.index].Score.Saves
- game_tick_packet.gamecars[self.index].Score.Shots
- game_tick_packet.gamecars[self.index].Score.Demolitions
- FrameScoreDifference: the change in score from the last frame to current one. -1 if enemy scores, 1 if your team scores, 0 otherwise
- game_tick_packet.gamecars[self.index].Location.X
- game_tick_packet.gamecars[self.index].Location.Y
- game_tick_packet.gamecars[self.index].Location.Z
- float(game_tick_packet.gamecars[self.index].Rotation.Pitch)
- float(game_tick_packet.gamecars[self.index].Rotation.Yaw)
- float(game_tick_packet.gamecars[self.index].Rotation.Roll)
- game_tick_packet.gamecars[self.index].Velocity.X
- game_tick_packet.gamecars[self.index].Velocity.Y
- game_tick_packet.gamecars[self.index].Velocity.Z
- game_tick_packet.gamecars[self.index].AngularVelocity.X
- game_tick_packet.gamecars[self.index].AngularVelocity.Y
- game_tick_packet.gamecars[self.index].AngularVelocity.Z
- game_tick_packet.gamecars[self.index].bOnGround
- game_tick_packet.gamecars[self.index].bSuperSOnic
- game_tick_packet.gamecars[self.index].bDemolished
- game_tick_packet.gamecars[self.index].bJumped
- game_tick_packet.gamecars[self.index].bDoubleJumped
- game_tick_packet.gamecars[self.index].Team
- game_tick_packet.gamecars[self.index].Boost
- a 1 or a 0 if this car last touched the ball
- game_tick_packet.gameball.Location.X
- game_tick_packet.gameball.Location.Y
- game_tick_packet.gameball.Location.Z
- float(game_tick_packet.gameball.Rotation.Pitch)
- float(game_tick_packet.gameball.Rotation.Yaw)
- float(game_tick_packet.gameball.Rotation.Roll)
- game_tick_packet.gameball.Velocity.X
- game_tick_packet.gameball.Velocity.Y
- game_tick_packet.gameball.Velocity.Z
- game_tick_packet.gameball.AngularVelocity.X
- game_tick_packet.gameball.AngularVelocity.Y
- game_tick_packet.gameball.AngularVelocity.Z
- game_tick_packet.gameball.Acceleration.X
- game_tick_packet.gameball.Acceleration.Y
- game_tick_packet.gameball.Acceleration.Z
- game_tick_packet.gameball.LatestTouch.sHitLocation.X
- game_tick_packet.gameball.LatestTouch.sHitLocation.Y
- game_tick_packet.gameball.LatestTouch.sHitLocation.Z
- game_tick_packet.gameball.LatestTouch.sHitNormal.X
- game_tick_packet.gameball.LatestTouch.sHitNormal.Y
- game_tick_packet.gameball.LatestTouch.sHitNormal.Z
There are now 5 times 17 values, only writing them out once. You got 2 times teammates (lowest indexed first) and then 3 opponents (again from low to high index). If it is a 1v1 or 2v2 match, all values for that car get a value of 0
- game_tick_packet.gamecars[index].Location.X
- game_tick_packet.gamecars[index].Location.Y
- game_tick_packet.gamecars[index].Location.Z
- float(game_tick_packet.gamecars[index].Rotation.Pitch)
- float(game_tick_packet.gamecars[index].Rotation.Yaw)
- float(game_tick_packet.gamecars[index].Rotation.Roll)
- game_tick_packet.gamecars[index].Velocity.X
- game_tick_packet.gamecars[index].Velocity.Y
- game_tick_packet.gamecars[index].Velocity.Z
- game_tick_packet.gamecars[index].AngularVelocity.X
- game_tick_packet.gamecars[index].AngularVelocity.Y
- game_tick_packet.gamecars[index].AngularVelocity.Z
- game_tick_packet.gamecars[index].bDemolished
- game_tick_packet.gamecars[index].bJumped
- game_tick_packet.gamecars[index].bDoubleJumped
- game_tick_packet.gamecars[index].Team
- game_tick_packet.gamecars[index].Boost
- a 1 or a 0 if this car last touched the ball ...
From here the list is filled with information about the boost pads (bActive and Timer), only writing it out once
- game_tick_packet.gameBoosts[i].bActive
- game_tick_packet.gameBoosts[i].Timer
From here is a list of features that are not stored in replays but are instead calculated on the fly in the model they are appended to the end of the list but are returned as a separate array so indexes are restarting
- The difference in radians along the horizontal plane between the direction the car is facing and the ball. This number should be between -π and π
- The distance from the player car to the ball W.I.P. Still got to add the extra values.
If you are looking at replays it has one array with the above in it
Then a second array with the output in it
These 2 together make a single frame
The output array has the controls given in the exact same format as they are outputted by get_bot_output