注:本文内容已更新至
这周服務器主程安排给了我一个任务(其实是我在用Go做完了一些小demo后,向主程请示下一步的安排)让我将他用Lua语言写的球球大作战的服务端代碼转成Go语言形式。
此内容以上传至github感兴趣的可以看一下
框架主要分以下几个部分
因为要有主入口,所以要新增一个server文件client文件用来测试垺务器端。而服务器又分以下几类:
- 进入房间后玩家数据的收发
球球大作战中服务器端主要是与玩家和AI做交互
玩家要将自己的数据传递給服务器端做记录,并做好消息的分发例如:
- 收到Move后跳转到战斗玩家中的移动逻辑;
- 收到Stop后跳转到战斗玩家的停止逻辑;
- 收到Spit后跳转到戰斗玩家的吐孢子逻辑;
- 收到Split后跳转到战斗玩家的分裂逻辑;
当客户端连接失败后,将于服务器端断开连接
战斗逻辑主要是根据玩家传遞过来的信息跳转到相应的战斗逻辑中
- 同步小球的进入和离开视野的信息,更新位置;
- 玩家施放球后更新信息;
主要是用四叉树算法进行檢测这块是个硬骨头,还在啃...
涉及算距离长度,宽度格式变换时,总不能在每个文件中写同样的函数吧因此专门建立一个工具文件,其他文件要用这个文件里的某个工具时导入即可,方便高效
主要是在更新玩家视野这部分,需要先计算出玩家视野的中心点坐标再计算玩家的视野范围;
除此之外还有移动管理模块,服务器端管理模块等等(这部分信息量较大,还在学习中)
以上就是我看完第┅遍游戏球球大作战战斗服务器端源码后的小结后续将会画出战斗服务器的逻辑流程图,理清战斗逻辑尝试自己使用Go语言完成。
另外由于该游戏服务器端的网络库是由sniperHW自己开发的,因此我还得考虑如何用Go语言实现其网络库的功能