Software and Documentation
The GVG-AI Competition Framework - 2016
Last code update: 17th March 2016 (back).
- Bug fix: when retrieving observations of a given sprite type that is 'hidden', no observations are return, and therefore sorting should be avoided. Now the forward model contains a list of visible (vs. hidden) sprites, so they are completely transparent to the agent observations.
26th February 2016 (back).
- Integration with the Level Generator
- New function for the agent: void result(StateObservation state, ElapsedCpuTimer elapsedCpuTimer). It is called when the game is over and the state received contains information about the final game state. This call should return in 100ms, causing disqualification of the controller otherwise. The function can or can not be included in Agent.java (base method in AbstractPlayer is empty).
- VGDL Refactoring. In order to reduce the number of lines some VGDL descriptions take, the interactions in the Interaction Set have been factorized. Now, a single interaction with the form "A B C D (...) > Effect" is equivalent to multiple interactions: "A B > Effect; A C > Effect; A D > Effect;"
- HealthPoints: Avatars (or any other sprite) now have (in some games) heath points. This was simulated before using resources, which now have been replaced by this.
- Accessible through StateObservation (getAvatarHealthPoints, getAvatarMaxHealthPoints, getAvatarLimitHealthPoints).
- There is an initial amount of heath points (parameter "healthPoints").
- A maximum reachable is defined: parameter "limitHealthPoints".
- Effect for subtracting points "A B > subtractHealthPoints" subtracts 1 point by default, and can be set using the parameter "value". If the number of health points is less or equal than 0, the sprite is killed.
- Effect for adding health points, "A B > addHealthPoints", which adds 1 health point or different if indicated in the parameter "value". Optional parameter "killSecond" that kills B.
- Time Effects: This is a new type of effect that is triggered at a certain time step.
- Effects defined as "A TIME > Effect" apply Effect upon A at "timer" time steps from the beginning. A parameter "repeat", if set to true, makes that the effect happens at every "timer" game steps.
- A B > AddTimer (...): adds a new timer as a results of the collision of the sprites A and B. Parameters:
- timer: when will the delegate effect will take place.
- ftype: effect that will be executed after "timer" step.
- stype and stype2: parameters for the delegate effect.
- IMPORTANT: The delegate effect must take into account that the sprite types stype and stype2 may not exist or have no representatives in the game. The delegate effect cannot affect one sprite in particular, only a sprite type (i.e., all sprites of that type).
- An initial version of PathFinding for NPCs that only works so far for PacMan's ghost. More developments will come on this in the future.
- It is not available to Agents.
- It uses precomputed paths, loaded at start. There is minimum hit in the Forward Model's performance, but it only works with static environments.
- New key handler for (human) play: KEY_PULSE, requires releasing the key before processing the new input.
- Some effects have been modified:
- A B > CollectResource now kills the resource sprite B by default. A new parameter "killResource" needs to be set to False to avoid this.
- A B > ChangeResource has a new parameter "killResource" that kills sprite B if set to True. Contrary to the previous one, this is set to False by default.
- A B > StepBack; A B > PullWithIt: include a parameter "pixelPerfect" that, if set to True, places A contiguous to B when colliding (instead of reseting the position, as before).
- All effects have a new parameter "repeat" that repeats the Effect the number of times indicated in sequence.
- A B > AttractGaze has a new parameter, "align", that teleports A to B in the axis of B's orientation.
- A B > TransformTo has a new parameter, "killSecond", that kills B if set to True.
- A B > SpawnIfHasMore: new parameter "spend" that allows defining an amount of resource that will be subtracted if the spawning takes place.
- MultiSpriteCounter termination condition has a new parameter "min" that defines a lower bound on the count of sprites (this is, allows setting the condition as "greater or equals than").
- Some new attributes for sprites have been introduced:
- hidden: for all sprites, if it's set to True, it won't appear in the Observations (this is mainly used for auxiliary sprites that do not take an important role in the game mechanics).
- Chaser sprite type has a maxDistance parameter. If the sprite is farther from the target than this (euclidean) distance, it moves randomly.
- Some new effects:
- A B > KillBoth: kills both sprites A and B (before this, two separate were necessary.
- A B > ShieldFrom ftype stype: for the rest of this game cycle, the effect "ftype" applied to collisions between A and "stype" will be ignored.
- A B > KillIfFrontal (resp. A B > KillIfNotFrontal): If B hits A while travelling in opposite directions (resp. not in opposite directions), A is killed.
- A B > CollectResourceIfHeld heldResource: Sprite A collects resource B only if it holds resource "heldResource"
- A B > Spawn stype: spawns sprite "stype" if A and B collides.
27th September 2015 (back).
- All training set games in the repository (total: 60 games).
5th August 2015 (back).
- Few aesthetical changes in some of the games of the training set 4.
- SpawnIfHasLess added (analogous to SpawnIfHasMore).
- New type of producer (RandomBomber) that moves randomly and spawns sprites of a given type.
- Chaser now chases not only a specific type, but also the subtypes of the given type.
- transformTo respects the previous orientation of the sprite now.
- New parameter for SpawnPoint to give an orientation to the sprite spawned.
- A bunch of new images for sprites.
25th July 2015 (back).
- Added games, levels and necessary sprites of a new training set. This set is the one used as test set at CIG-2015 and as validation set at GECCO-2015.
8th June 2015 (back).
- Bug fix - Observations in the observation grid were not properly deleted when destroyed after a 'transformTo' event.
- In the game modality, levels are surrounded by walls to avoid crates being pushed off the maze.
18th February 2015 (back).
- The following (not in use) avatar types have been deleted: NoisyRotatingFlippingAvatar, RotatingAvatar, RotatingFlippingAvatar, VerticalAvatar, AimedAvatar, AimedFlakAvatar, InertialAvatar, MarioAvatar.
- Avatar's input has been refactored so Game and ForwardModel use a common sequence of calls.
- Oriented avatar now rotates in-place before moving, if the current orientation is different tthan the direction of the action supplied. This can be deactivated with flag rotateInPlace=false in the vgdl description.
- New function getAvailableActions(boolean includeNIL) that allows to specify if NIL should be part of the list of actions or not. The default getAvailableActions() is still available and working as before (NIL is not part of the array returned).
- Some IF-Something effects were applying the score change (if any) independently if the condition was met or not. This has been changed so the score is changed only if the IF condition is met.
- Exceptions in the graphical thread fixed.
- The graphical glitch present in some games (such as Boulderdash) has been fixed.
- The reset method has been removed from the ElapsedCpuTimer class.
- CompetitionParameters has now a variable (TIMER_TYPE) that determines if either WALL or CPU TIME is used for ElapsedCpuTimer.
- A new agent for testing has been included (Tester.java).
- A new function is available for the avatar: getAvatarLastMove(), that returns the last action executed by the avatar. Note that this may not be the same as the last returned value of the act() method, as the controller may have overspent (in which case, ACTION_NIL is executed and returned by getAvatarLastMove).
- Game and Forward model implement the tick() function in the same order (reverse to the drawing sprite order). The avatar ALWAYS moves the first.
- StateObservation and ForwardModel have a new method: setNewSeed(int), that allows to set a new seed for the random generator.
- Reduced speed of the bullets in Firecaster to avoid overshooting a contiguous box, and the speed of the infected sprites in Infection.
- New Effect in the ontology: TransformToSingleton, that transforms to an object that can only be once in the level (killing the other sprites of the same time).
- The effect TeleportToExit now checks that there is indeed an exit. If there is not, the sprite that receives this effect is killed.
- Added new field to VGDLSprite: isFirstTick. sprites added cannot move passively during its first cycle. This avoids inconsistencies such as shots that are farther than one cell in their first frame of existence (as the avatar is updated first now).
- In Firecaster, a change in the order of the interaction set is made in order to allow spreading of fire.
- Go Home -