Architecture Design - NULL-HDU/Barrage_Frontend GitHub Wiki
总体架构图
该游戏分前后端,前端项目为 Barrage_Frontend,后端项目为 barrage-server。
-
Barrage_Frontend 负责控制自身飞机、产生子弹、碰撞检测和游戏画面渲染。
-
barrage-server 负责维护游戏全局数据、伤害计算和分发游戏全局数据。
Barrage_Frontend 与 barrage-server 通过建立websocket连接相互传递数据。
1 Barrage_Frontend 架构图
Barrage_Frontend 共分3个模块:view、engine、socket。gamemodel为前端全局数据。
engine 主要有4个功能:
- 控制 Socket 的解析与 View 的渲染的速度比例。
- 进行 bullet 碰撞检查。
- 接受用户的输入,包括键盘输入,鼠标左键输入以及鼠标轨迹的输入,用来控制飞机的技能发动,移动以及方向的变化
- 对失效的子弹进行回收。
socket 负责将本地数据按照协议打包发送到后端,以及解析后端的数据并对gamemodel做相应的修改。
view 的主要作用是读取 gamemodel 中由前端 engine 创造并控制或由 socket 从后端读取并写入的各种 ball 的数据,然后在 canvas 中渲染绘制出来。
2 barrage 架构图
barrage-server 由4部分组成:User、Hall、Room、Playground。 User封装了一个websocket的链接,它接受并解析全端数据,并将数据传输到Room,它也提供发送给前端数据的api。 Room是接受User数据,根据数据类型做不同的处理。 Hall是一个特殊的Room,所有的User刚创建时都会被添加进Hall,它也能根据User的数据做不同的事。 Playground主要有两作用:
- 管理并维护一个同一Room中所有User的全局数据
- 计算并返回各个User应该接收到的数据包。
3 玩家进入游戏到结束游戏, socket 与 backend 的数据交流图
message type相关请查看Protocal文档