分享 来一场 AI 对战吧

yueyoum · 2013年08月12日 · 最后由 yueyoum 回复于 2013年08月13日 · 2540 次阅读

折腾了一个月,把自己一直想做的东西终于折腾出来了。

AI 对战,你写的 AI 和 别人的 AI 进行 对战。

先看演示示例:

youtube: youku:

CodeBattle 这个项目包含四个部分。

server: https://github.com/yueyoum/codebattle-server client: https://github.com/yueyoum/codebattle-client proto: https://github.com/yueyoum/codebattle-proto ai: https://github.com/yueyoum/codebattle-ai

client 是一个 unity3d 的项目,它用来建立房间,以及显示 AI 的操作. proto,client 和 server 之间的数据交互 使用了 google protobuf 来序列化和反序列化数据. ai 这个就是此项目的重头戏,你根据数据交互格式,以及游戏规则写自己的 AI,来和别人的 AI 对战。

大家主要看的是 proto 和 ai 这两个 repo, proto 定义的数据格式,ai 里面有游戏规则,以及示例 ai。

如何开始:

在 client repo 中找到 编译好的 client 下载链接,下载解压后运行。 如果你使用 我提供的 server,那么 默认的 ip 和 port 不用更改,直接 create room。 你就会到达一个新场景,顶部是 room id,但场景中没有一个 marine。

这需要你的 AI 加入这个 room,才会为你的 AI 创建 marines,当两个 AI 都加入同一个房间后, 对战就开始了。

刚开始你没有自己的 AI,可以运行 ai 这个 repo 中的示例 AI,来感受一下整个流程。

当然,你也可以设计出新的玩法,然后 checkout server repo,修改后在你本地运行。 client 中也包含了 unity3d 的项目文件,你也可以 checkout 后 自行修改,添加自己想要的功能

有点意思,谢谢分享,回头看看。。。

现在还没 ruby 的 ai,希望有人能添加

挺有意思。

昨天发布后,很多同学表示需要 linux client。

于是我今天打包发布了 linux 版的 client.

在这里面可以找到下载链接 https://github.com/yueyoum/codebattle-client

@yueyoum client 的 join 还不可用就不方便啊…… 另外闪光弹限 10 个是不是有点不好,如果双方闪光弹都用完了不就只能乱射了吗……设置较长的冷却时间怎么样?

有意思,2 个 marine 会相撞么?

@wormful

确实,现在 client 只能创建房间,我设定的 join 就是加入别人创建的房间,成为 ob。观看别人的比赛 这个功能这几天会完成。

闪光弹 我没限制冷却是因为 如果有 AI 想每两秒发射一次,一直发射来不停的得到其他 marine 的信息,如果闪光弹 的 cd 太长,那么这种操作就无法实现了。

我在最近的跟新中考虑把限制修改为 20

@quakewang

不会,而且 自己发射的子弹也不会撞击自己人,而是会直接传过去

需要 登录 后方可回复, 如果你还没有账号请 注册新账号