Skip to content

calebman/flappy-learning

Repository files navigation

用机器学习玩转FlappyBird

项目简介

基于用户生产游戏数据并根据反向传播算法生成决策模型参与游戏,游戏引擎与AI基于Vuejs+TypeScript+Tensorflow.js实现,点此在线预览

相关博客点此进入

流程设计

  1. 玩家通过玩游戏生成游戏数据,这里将采集游戏在每个时间点的小鸟高度、障碍物高度、小鸟距下一个障碍物的水平距离作为输入,以这个时间点玩家的操作作为输出
  2. 将游戏数据统一存储到浏览器的LocalStorage统一管理
  3. AI利用玩家产生的游戏数据基于反向传播算法建立决策模型
  4. AI进行游戏测试

界面设计

界面左右分成两块内容,左侧为游戏界面,右侧为控制台界面,训练模型列表右侧有一个❓图标,点击可打开教学提示,下面描述一下如何训练一个FlappyBirdAI参与游戏

  1. 点击创建一个新的模型完成必要信息填写,这里主要是关联神经网络以及训练迭代次数的一些配置
  2. 在新的模型行中点击教学(或按空格)开始游戏,此时左侧游戏开始,玩家按J跳跃,游戏进行过程中左侧模型训练框中的数据量会不断增加,这些数据将持久化在LocalStorage中并作为AI的训练数据
  3. 当玩家认为数据量达到预期时(建议大于3000)可终止游戏,点击训练按钮开始训练决策函数模型,此时右侧会弹出训练进度图表
  4. 训练完成后游戏将由AI接手自动开始,右侧行会记录AI的最高得分
  5. 模型训练完成,玩家可以点击数据预测使用玩家生成的游戏数据样本交与AI进行预测分析,预测完成后将给出AI预测结果与玩家输入预期不符的数据列表

模型训练效果展示

这里我人工玩了3万左右的数据量,相当于过了2500个障碍物,小鸟的最高得分是2400,具体运行效果如下

开发计划

  • 参照FlappyLearning完成游戏引擎开发
  • 完成用户游戏数据采集器与其持久化模块
  • 引入Tensorflow.js基于游戏数据训练决策模型并使用其参与游戏
  • 完成数据预测模块,便于对模型预测结果进行分析
  • 分析AI参与游戏的能力,优化AI使其能够更好的适应游戏