GVGAI Book Chapter 2 - VGDL and the GVGAI Framework -- Exercises

Posted by Rasin on April 10, 2021

书籍网站

本章原文

本章练习


GVGAI环境配置

Github中提供了GVGAI框架。这里使用与书中匹配的2.3版本来进行练习。

下载并安装 IntelliJ

IntelliJ下载地址与 JDK 下载地址

下载安装完成后导入项目,如图所示:

项目总览

运行项目

首先我们先试着用GVGAI运行游戏。可以使用键盘直接控制游玩,或者使用示例agent来自动测试。

以玩家身份玩游戏

在左边的 Project 导航中选择 src -> tracks -> singlePlayer -> Test.java 双击打开。

为了顺利编译文件,根据一下图示顺序设定好配置。配置名可以任意选择。

第一步

第二步

确认之后点击右上角的绿色运行按钮或者使用快捷键 Shift+F10 即可开始运行。

SinglePlayer运行画面

默认启动的游戏是 Alians,玩家通过键盘方向键←→和空格键进行操作。

更改游戏

在代码中的29行我们可以看到游戏集文件 examples/all_games_sp.csv。使用CSV插件可以看到游戏列表:

all_games_sp

那么接下来在文件的 37行中,我们可以通过修改 gameIdx 来更改游戏。例如,将其修改为:

int gameIdx = 9;

再次编译运行,游戏就变成了炸弹人:

bomberman

用机器人玩游戏

要使用示例Agent来运行集合中的游戏时,请注释掉第 49行(这行代码是给玩家试玩使用的),并解开第 52 行注释。

		// 1. This starts a game, in a level, played by a human.
		//ArcadeMachine.playOneGame(game, level1, recordActionsFile, seed);

		// 2. This plays a game in a level by the controller.
		ArcadeMachine.runOneGame(game, level1, visuals, sampleRHEAController, recordActionsFile, seed, 0);

runOneGame 第四个函数指定Agent的位置(默认是 Rolling Horizon Evolutionary Algorithm agent)。

文件中第 1826行定义了本框架中包含的实例Agents,例如 Monte Carlo Tree Search agentOLETS

VGDL

VGDL 游戏都存储在 example文件夹中。每个游戏类别都有一个文件夹:gridphysicscontphysics 包含具有传统和现实世界物理引擎的单人游戏,2player 中都是双人游戏,gameDesign 包含参数化的游戏。

修改游戏

可以尝试在 example/gridphysics 中打开一个 VGDL文件,一般以 .txt 后缀结尾。学习VGDL不同的部分可以从修改内容的值开始。也可以根据你的想法在 InteractionSet 中添加新的规则或者新的贴图。有可能你也能创造新的游戏。

更改关卡

可以通过修改例如 aliens_lvl0.txt 之类的文件来更改关卡,比如关卡的布局,贴图的初始位置等等。可以给关卡增加不同难度或者创造新的关卡。

提交到GVGAI比赛服务器

一下是提交步骤:

  • GAGVI官网 创建账号。
  • 登入并点击 Submit → Submit to Signle Player Planning
  • 您的控制器文件应命名为 Agent.java,并包含一个与您用户名相同的包,以 .zip 文件存储。网站中有更详尽的提交规范
  • 填写需要的信息,并选择一个游戏集提交。您的代码将会在服务器上编译执行,具体提交信息可以在个人主页上查看。
  • 一旦编译运行完成,你可以在排行版上看到您的结果。
  • 如果您想参赛,可以先用示例代码提交测试。