前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >当我阅读完上千行的游戏球球大作战战斗服务器端源码后...

当我阅读完上千行的游戏球球大作战战斗服务器端源码后...

作者头像
Zoctopus
发布2018-09-28 16:25:18
1.2K0
发布2018-09-28 16:25:18
举报

这周服务器主程安排给了我一个任务(其实是我在用Go做完了一些小demo后,向主程请示下一步的安排),让我将他用Lua语言写的球球大作战的服务端代码转成Go语言形式。

于是,我开搞了!

此内容以上传至github,感兴趣的可以看一下github地址

框架主要分以下几个部分

1,sever-client部分

因为要有主入口,所以要新增一个server文件,client文件用来测试服务器端。而服务器又分以下几类:

  • 与客户端的连接
  • 选择进入的房间
  • 进入房间后玩家数据的收发
  • 战斗中的数据变化

2,玩家和AI部分

球球大作战中服务器端主要是与玩家和AI做交互。

玩家要将自己的数据传递给服务器端做记录,并做好消息的分发,例如:

  • 收到Move后跳转到战斗玩家中的移动逻辑;
  • 收到Stop后跳转到战斗玩家的停止逻辑;
  • 收到Spit后跳转到战斗玩家的吐孢子逻辑;
  • 收到Split后跳转到战斗玩家的分裂逻辑;

当客户端连接失败后,将于服务器端断开连接。

3,战斗逻辑部分

 战斗逻辑主要是根据玩家传递过来的信息跳转到相应的战斗逻辑中

战斗逻辑中分为:

  • 玩家复活;
  • 更新聚合后的信息;
  • 同步小球的进入和离开视野的信息,更新位置;
  • 玩家施放球后更新信息;
  • 玩家移动;
  • 吐孢子;
  • 分裂;
  • 更新球的移动

4,碰撞检测部分

主要是用四叉树算法进行检测,这块是个硬骨头,还在啃...

5,外部工具部分

涉及算距离,长度,宽度,格式变换时,总不能在每个文件中写同样的函数吧。因此专门建立一个工具文件,其他文件要用这个文件里的某个工具时,导入即可,方便高效。

6,模块支持部分

主要是在更新玩家视野这部分,需要先计算出玩家视野的中心点坐标,再计算玩家的视野范围;

除此之外还有移动管理模块,服务器端管理模块等等。(这部分信息量较大,还在学习中)

7,小结

以上就是我看完第一遍游戏球球大作战战斗服务器端源码后的小结,后续将会画出战斗服务器的逻辑流程图,理清战斗逻辑,尝试自己使用Go语言完成。

另外,由于该游戏服务器端的网络库是由sniperHW自己开发的,因此我还得考虑如何用Go语言实现其网络库的功能。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1,sever-client部分
  • 2,玩家和AI部分
  • 3,战斗逻辑部分
  • 4,碰撞检测部分
  • 5,外部工具部分
  • 6,模块支持部分
  • 7,小结
相关产品与服务
测试服务
测试服务 WeTest 包括标准兼容测试、专家兼容测试、手游安全测试、远程调试等多款产品,服务于海量腾讯精品游戏,涵盖兼容测试、压力测试、性能测试、安全测试、远程调试等多个方向,立体化安全防护体系,保卫您的信息安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档