Java游戏代写 | Assignment 3: General Games – Part 2


1 Overview

Assignments should be done in groups consisting of five to six (5{6) students. Please use
the Groups feature in myUni. If you have problems finding a group use the Discussions
forum to search for group partners.

Each student has to take major responsibility for one of the exercises and collaborate
with the team members on the remaining exercises. Each exercise needs 1{2 students
taking major responsibility. For Exercise 4, you should have 2{3 students taking major
responsibility. The group has to make sure that the workload is evenly distributed.

2 Assignment

This assignment uses the General Video Game AI framework (GVGAI). Detailed infor-
mation about the competition and GVGAI is given at You
can get the code at You can only use
Java for this assignment.

Assignment 3 requires that you compute and test sequences of inputs to be played for each
game level. We only consider the Single Player Planning Track in this assignment.
For a quick start, take a look at src/tracks/singlePlayer/ for an example
on how to use the framework.

In this assignment, you have to consider the following 4 games: Bomber, Boulder-
chase, Chase, Garbagecollector. These games are deterministic, meaning performing
a sequence of inputs results in the same outcome every time. Note that each game
includes 5 levels (from \lvl0″ to \lvl4″), so you will be looking at 20 game levels in total.

Since a sequence of inputs can be simulated using the advance function (see \One Step
Look-Ahead” controller) without having a game instance running, there will be no wall-
clock time constraint. Such a sequence is to be applied to the initial game state, and its
score is measured after applying the last input, or when a terminal game state (win or
lose) is reached during the simulation, whichever comes first. The score should be taken
directly from the game state without modification from heuristics.

For this assignment, we consider a call to the advance function to be the time unit for
the benchmark, as it is the bottleneck operation in the optimisation. Note that if the
simulation of a given sequence reaches a terminal game state, subsequent steps will not
change the game state, or incur computational cost. This means different sequences can
have different evaluation costs, which must be accounted for in the termination criteria
of your algorithms.

Exercise 1 Team work: who has done what? (zero points)

Just like in Assignment 1, we’d like each team member to write one paragraph about
what he or she has contributed to this assignment. We will not mark this, and it will not
have any effect on the marking of the other exercises. You might now ask, \why do this
then?” { well, through this no-stakes approach, we’d like to encourage self-regulation
within the group and cooperative learning. You can’t lose; you can only win.

Exercise 2 Single-objective inputs optimisation (20 points)

For this exercise, you have to evolve a sequence of input that maximises the score on a
given game level.

1. Design an evolutionary algorithm to compute an input sequence maximising the
score on a game level. Describe and justify its design in the report. It should make
use of (and count the number of calls to) the advance function. You may use
existing techniques if appropriate.

2. Run the algorithm on each of the 20 game levels 10 times (or more) with 5 000 000
calls to advance each time, and report for each game level the average and standard
deviations of scores after 200 000, 1 000 000, 5 000 000 calls.