#bird #reinforcement-learning #game #tcp-server #agent #play #applications

应用 rusty-bird

Rusty bird 是一个简单的 Flappy bird 实现,可以通过 TCP 由外部应用程序控制。因此,用户可以将强化学习代理连接到它并玩游戏

1 个不稳定版本

0.2.0 2021 年 6 月 14 日
0.0.1 2021 年 6 月 8 日

#494 in 游戏

GPL-3.0-only

46KB
457

Rusty Bird

Github testing GitHub issues GitHub Latest version

另一个 Flappy Bird 克隆?🦆 Rusty bird 不仅仅是一个 Flappy Bird 克隆。Rusty bird 被编程以便尽可能容易地进入强化学习。借助 Rusty Bird,您可以训练自己的独立代理来玩游戏。

想要用 Python 经典地构建代理吗?也许像 Haskell 或 Elixir 这样的更异国情调的?没问题。Rusty Bird 使用一个 TCP 流,您可以直接连接到它并获取游戏的状态和当前分数。

您绝对应该尝试 Elixir!👀

目录

特性

  • 完整的 Flappy bird 游戏
  • 通过 TCP 服务器提取游戏状态和分数

用法

Rust bird 是一个 CLI 应用程序,它启动 Flappy bird 游戏。目前您需要的只是可执行文件和已安装的 Rust。

对于预编译版本

您可以使用 rusty-bird start 启动游戏。

从源代码运行应用程序

克隆存储库,并用 cargo run -- start 运行包或使用 cargo build 构建自己的可执行文件

常见问题解答

状态信息看起来像什么样子?

状态作为 JSON 结构发送。它包含玩家的 y-position、分数以及前三个管道障碍物和玩家之间的距离。

这是它的模式

{
  "player": <player y-position>,
  "score": <int>,
  "pipes": [
    [
      [<lower x distance>, <lower y distance>],
      [<upper x distance>, <upper y distance>]
    ],
    [
      [<lower x distance>, <lower y distance>],
      [<upper x distance>, <upper y distance>]
    ],
    [
      [<lower x distance>, <lower y distance>],
      [<upper x distance>, <upper y distance>]
    ]
  ]
}

这是示例数据

{
  "player": 103.79996,
  "score": 0,
  "pipes": [
    [
      [168.0, 267.20004],
      [168.0, -182.79996]
    ],
    [
      [418.0, 98.20004],
      [418.0, -351.79996]
    ],
    [
      [668.0, 111.20004],
      [668.0, -338.79996]
    ]
  ]
}

您将为 Rusty Bird 添加新功能吗?

当然!这个项目对我来说是一个很好的学习经历。已经计划了一些功能,以使您的代理的开发更容易。由于我不是数据科学家,所以我需要您的帮助!😊

许可

Rusty Bird 采用 GNU GPLv3 许可发布

依赖关系

~28–66MB
~1M SLoC