前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >游戏智能系列之二:再次进行准备

游戏智能系列之二:再次进行准备

作者头像
AlgorithmDog
发布2018-01-08 16:16:41
7860
发布2018-01-08 16:16:41
举报

上次准备用 AIsteroids 和 0.A.D 平台去学习游戏中的人工智能,现在换成 Clashjs。 AIsteroids 和 0.A.D 作模拟平台碰到了一个严重问题:1)AIsteroids 平台太简单了,只要让飞机不停右转同时发射子弹,就能很大概率赢得胜利;0.A.D 则太复杂了,复杂的即时策略游戏 AI 不适合初学者学习,陷入特定游戏的细节也不符合我们学习的本意。

aisteroids_win
aisteroids_win

学习会有反复和曲折,我们需要拥抱变化。因此,我在网上搜寻,找到了一个新平台来实践我们学习的知识。

1. Clashjs 游戏

Clashjs 是我在 GitHub 上找到开源项目。从下图可以看出来,Clashjs 也是一个飞机对战游戏。

clashjs
clashjs

Clashjs 比 AIsteroids 复杂。在 Clashjs 游戏中,有多台飞机参与战斗,最后只有一家获胜。并且参与战斗的飞机必须先吃到红色的镭射包,才能发射镭射打击敌人。这两点让 AI 设计者需要考虑更精细的策略才能取胜。

2. Clashjs 游戏简明教程

对一款模拟平台,我们要做的第一件事就是把它启动起来。启动 Clashjs 很简单。

1)安装 node 和 npm;
2) 把 Clashjs 项目从 Github 上克隆下来;
3) 进入 Clashjs 项目运行 npm install && npm run dev;
4) 在浏览器地址栏输入 http://127.0.0.1:8080 

项目地址。值得注意的是,如果您不是在本地运行 Clashjs,在您输入 npm install && npm run dev 之前,您需要 package.json 中的 “webpack-dev-server –progress –profile –colors –hot” 语句中加入 “–host 0.0.0.0” 从而允许通过 IP 访问。如果您对 Docker 了解,也可以下载我做的镜像 /lietal/game_ai,配置好的 clashjs 放在主目录下。

模拟平台运行起来之后,我们要做的第二件事就是加入自己的 Bot。您可以在

clash_home/src/players/you.js 写入自己的算法,然后在
clash_home/src/players/you.js 写入自己的算法,然后在

clash_home/src/Players.js 引入,重新运行 npm run dev。这样就把自己的 Bot 加入模拟平台啦,是不是很方便。

当然了编写 Bot 的时候,我们需要遵守一定的规范。Bot 写出了如下所示,其中最关键的就是 ai 函数。这个 ai 函数输入玩家信息、敌人信息和游戏信息,输出要采取的动作。

{
  info: {
    name: 'javierbyte',
    style: 2 // one of the 6 styles (0 to 5)
  },
  ai: function(playerState, enemiesStates, gameEnvironment) {
    // think...
    return 'move';//
  }
}

玩家信息都用 PlayerState 表示,敌人信息则用 PlayerState 的数组表示。游戏信息则用 GameEnvironment 表示。

PlayerState:
{
  position: `[<number>, <number>]`,
  direction: `<string>`, // One of 'north', 'east', 'south' or 'west'
  ammo: `<number>`,
  isAlive: `<bool>`
}

GameEnvironment:
{
  gridSize: [<number>, <number>],
  ammoPosition: <array of [<number>, <number>] arrays>
}

输出的动作一共有 6 个。其中四个是 north、east、south 和 west,表示转向的方向。另两个则是 shoot 表示射击和 move 表示前景。

3. 总结

游戏智能系列文章会以 Clashjs 为平台介绍游戏智能算法,比如有限状态机和行为树。之前选用的两个游戏平台 AIsteroids 和 0.A.D,一个太简单一个太复杂,重新选择 Clashjs 作为模拟平台。学习过程出现了曲折和反复,只能拥抱变化~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年9月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Clashjs 游戏
  • 2. Clashjs 游戏简明教程
  • 3. 总结
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档