Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/calebman/flappy-learning
flappy-learning with tensorflow.js
https://github.com/calebman/flappy-learning
typesc
Last synced: 3 months ago
JSON representation
flappy-learning with tensorflow.js
- Host: GitHub
- URL: https://github.com/calebman/flappy-learning
- Owner: calebman
- Created: 2019-09-23T05:43:55.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2022-12-11T06:49:00.000Z (almost 2 years ago)
- Last Synced: 2024-07-13T04:34:32.188Z (4 months ago)
- Topics: typesc
- Language: TypeScript
- Homepage: https://demo.chenjianhui.site/flappy-learning/
- Size: 2.95 MB
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 24
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-github-star - flappy-learning - learning with tensorflow.js | calebman | 5 | (TypeScript)
README
用机器学习玩转FlappyBird
## 项目简介
基于用户生产游戏数据并根据反向传播算法生成决策模型参与游戏,游戏引擎与AI基于**Vuejs**+**TypeScript**+**Tensorflow.js**实现,**[点此在线预览](https://calebman.github.io/flappy-learning/)**
相关博客[点此进入](https://chenjianhui.site/2019-09-06-machine-learning/)
### 流程设计
![](https://resources.chenjianhui.site/2019-09-06-run-flow.png)
1. 玩家通过玩游戏生成游戏数据,这里将采集游戏在每个时间点的**小鸟高度、障碍物高度、小鸟距下一个障碍物的水平距离**作为输入,以这个时间点**玩家的操作**作为输出
2. 将游戏数据统一存储到浏览器的LocalStorage统一管理
3. AI利用玩家产生的游戏数据基于反向传播算法建立决策模型
4. AI进行游戏测试### 界面设计
界面左右分成两块内容,左侧为游戏界面,右侧为控制台界面,训练模型列表右侧有一个❓图标,点击可打开教学提示,下面描述一下如何训练一个FlappyBirdAI参与游戏
![](https://resources.chenjianhui.site/flappy-learning-web-page.png)
1. 点击**创建一个新的模型**完成必要信息填写,这里主要是关联神经网络以及训练迭代次数的一些配置
2. 在新的模型行中点击教学(或**按空格**)开始游戏,此时左侧游戏开始,玩家**按J跳跃**,游戏进行过程中左侧模型训练框中的数据量会不断增加,这些数据将持久化在**LocalStorage**中并作为AI的**训练数据**
3. 当玩家认为数据量达到预期时(建议大于3000)可终止游戏,点击训练按钮开始**训练决策函数模型**,此时右侧会弹出训练进度图表
4. 训练完成后游戏将由AI接手自动开始,右侧行会记录AI的最高得分
5. 模型训练完成,玩家可以点击数据预测使用玩家生成的游戏数据样本交与AI进行**预测分析**,预测完成后将给出AI预测结果与玩家输入预期不符的数据列表### 模型训练效果展示
这里我人工玩了3万左右的数据量,相当于过了2500个障碍物,小鸟的最高得分是2400,具体运行效果如下
![](https://resources.chenjianhui.site/2019-09-06-flappy-bird-learning-example.gif)
### 开发计划
- [X] 参照[FlappyLearning](https://github.com/xviniette/FlappyLearning)完成游戏引擎开发
- [X] 完成用户游戏数据采集器与其持久化模块
- [X] 引入[Tensorflow.js](https://www.tensorflow.org/js)基于游戏数据训练决策模型并使用其参与游戏
- [X] 完成数据预测模块,便于对模型预测结果进行分析
- [ ] 分析AI参与游戏的能力,优化AI使其能够更好的适应游戏