试玩游戏
在 Agent 上的 AI 实验
PythonAI agentneuroevolution本地 Docker 运行
run_local.shMac打开 http://localhost:8080
本地开发
GolangNode.JSPhaser服务器
go 1.14本地启动:
8080客户端
进入 http://localhost:3000
注意
30008080productiondockerClient8080docker通讯约定
protobufprotocprotobufserver/message.proto游戏前端设计方案

这个前端项目是基于:
SpriteshootManagershoot managerbullet游戏后端设计方案
Components(组件)
5Architecture(架构图)


channelClient 与 Server 交互设计方案
Player connect(玩家连接)


Player Disconnect(玩家断开连接)


Client input(客户端输入)

Profile
ProfileGolangslow components--cpuprofile--memprofile代码结构
AI 训练设计方案
openAI GymCS2DNeuroEvolution(神经进化)运行
gowogvirtualenvpython3requirements.txt运行训练脚本
save_fie_nameweightsweightsGenetic Algorithm(遗传算法)
_cs2denv_ga.py 的实现_CS2D AgentCS2DopenAI gymagentreset()step()observation_spaceaction_spaceObservationSpaceupdate_player玩家位置玩家大小尺寸列数行数块宽度块高度块012011 / distance(到目标的距离)agent1001NeuroEvolution(神经进化)
_train_ga.py 的实现_Neural NetworkNeuroEvolutionNN(神经网络)NNMutate一个特别的改进是,我们只存储应用于神经网络的噪声种子列表,而不是存储所有的代权值。因为在同一个种子下,所有的随机化都是相同的,所以一个种子可以代表一个网络的突变算子。我们不需要保留每一代的所有权值,我们只需要存储一组从开始到当前一代的种子,然后从这组种子中重新构造权值来得到所有神经网络的权值。
Maxim Lapan"Deep Reinforcement Learning Hands-On"