Rules of the game
This competition aims at finding out high skilled AI controllers by using our game engine.
One game has three rounds. The maximum fighting time of a round is 60s. After rounds 1 or 2, the characters' positions and HPs will be reset, and a new round is started. All games, including training games for Lud, in the competition are conducted with the options "--limithp [P1HP] [P2HP]" (limit-HP mode), "--grey-bg" (grey-background mode), and "--inverted-player 1" (inverted-color mode) of FightingICE. There is one special rule: the information sent to AIs will have a delay of 15 frames. However, to promote more use of visual-based AIs using deep learning etc., you can get around the delay issue if you choose to develop a visual-based AI using a method called getDisplayByteBufferAsBytes. A sample visual-based AI in Java (DisplayInfoAI.java) and that in Python (/PythonSamples/DisplayInfo.py) are available in the 2018 sample AIs folder.
Two leagues (Standard and Speedrunning) are associated to each of the three character types as follows:
The Standard League considers the winner of a round as the one with the HP above zero at the time its opponent's HP has reached zero. Both AIs will be given the initial HP of 400. The league for a given character type is conducted in a round-robin fashion with two games for any pair of entry AIs switching P1 and P2. The AI with highest number of winning rounds becomes the league winner; If necessary, remaining HPs are used for breaking ties.
In the Speedrunning League, the league winner of a given character type is the AI with the shortest average time to beat our sample MctsAi, available in the aforementioned 2018 sample AIs folder. For each entry AI, 5 games are conducted with the entry AI being P1 and MctsAi being P2, and another set of 5 games with the entry AI being P2 and MctsAi being P1. Both AIs will be given the initial HP of 400. If MctsAi cannot be beaten in 60s, the beating time of its opponent entry AI is penalized to 70s.
Zen and Garnet's official character data are available in advance while the official character data of Lud will not be revealed. However, after submission, before the Lud leagues (Lud Standard and Lud Speedrunning) start, each entry AI will be provided training time of 10 games (5 games with P1 and 5 games with P2) against the aforementioned sample MctsAi, where both AIs will be given the initial HP of 400.
The ranking rules are as follows:
In each of the six leagues (in this order: Zen Standard, Zen Speedrunning, Garnet Standard, Garnet Speedrunning, [Lud Training Session], Lud Standard, and Lud Speedrunning), the AIs are ranked according to the number of winning rounds. If ties exit, their total remaining HPs will be used. Once the AIs are ranked in each league, league points are awarded to them according to their positions using the current (2010-) Formula-1 scoring system . The competition winner is finally decided by the sum of league points across all six leagues.
This game is played asynchronously in real time.
A unit time of the game is called a frame. There are 60 frames per second. In other words, one frame is 16.67ms.
At each frame, the status of the game will be updated according to the game rule and the input. You must make a new input during this frame; this applies to both players and AIs.
If an input from the AI is not passed to the AILoader instance, AILoader will consider the AI's last input as a new input. Therefore, your AI will be processed one frame later than usual.
As an example, if your AI has already used 22ms to decide its input based on the previous frame's information, it will only have 11.34ms (16.67 * 2 - 22) left to make its decision with the latest game situation, with a delay of 15 frames if you do not use getDisplayByteBufferAsBytes.