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

这周服务器主程安排给了我一个任务(其实是我在用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语言实现其网络库的功能。

原文地址:https://www.cnblogs.com/OctoptusLian/p/9570405.html

时间: 2024-11-04 09:09:16

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

答应我,别再写上千行的类了好吗

答应我,别再写上千行的类了好吗? 最近在对已有项目进行扩展的时候,发现要改动的一个类它长766行,开放了近40个public接口,我流着泪把它给改完了.为了防止这样的惨剧再次发生在我的身上,我觉得有必要写一篇博客来让广大程序猿同胞知道代码重构的重要性 如果你身边有一个类写上千行的猿,一定要把此文转给ta 为什么类不能过长? 类过长--读不通,扩展不通 读不通--直接用滚轮滚都得好几秒,就算是原作者,时间长了恐怕也难以理清整个类,更不用说是其他的读者 扩展不通--一个类有过多的接口,会让扩展这个类

关于阅读框架源码后的一些敢想

记得之前做毕业设计的时候看过status1的源码当时感觉挺简单的,不就是写几个xml配置文件然后在利用反射实例化成对象在执行相应的方法吗?当时以为自己好牛啊!以至于在学校做组合项目的时候自己自以为是的写了一个数据层的封装给组员使用,记得当时对外暴露的方法就是sql跟参数,庆幸的是组合项目完成后那个封装既然没出一点问题. 当自己现在再回过头去看status的源码的时候,感觉自己有些看不懂了.这两年也看了不少开源框架的源码像tomcat,heritrix,lucene,openfire,tigase

【干货】再上数据分页控件 ━ 更加灵活,更加实用-提供源码

再上数据分页控件-更加灵活,更加实用 关于数据分页的文章太多了,各有各的一套方案,但大多都很类似,要么使用存储过程,要么直接使用代码进行分页.各种方案分页的效率也不尽相同,我们不一定要找一个最高效的(根据实际的项目情况),找一个最合适的就OK了.下面我要谈的分页控件非常灵活,可以支持任意类型的数据库,同时可以支持存储过程或代码分页(会自动判断),也支持多表的分页,非常的方便.对于数据分页的相关文章,在我的博客中可以找到很多,下面我做一个简单的汇总,方便大家查阅. 1. 原创企业级控件库之大数据量

优化Recorder H5录音:可边录边转码上传服务器,支持微信提供Android IOS Hybrid App源码

目录 一.Recorder H5录音库的特性 (1)浏览器支持 (2)功能支持 二.使用预览截图 (1)移动端H5 (2)IOS Hybrid App (3)Android Hybrid App 三.应用场景 四.优化过程记录 (1)为什么要升级优化 (2)开始使用Web Worker加速转码 (3)剩下的问题 五.Hybrid App存在的意义 六.更多支持 Recorder H5 GitHub开源库随着支持功能的增多,音频转码处理效率渐渐的跟不上需求了,近期抽时间对音频转码部分进行了升级优化

全美上千金融 APP 游戏 网站 竞价网 BC平台遭大规模网络攻击 半个美国网络瘫痪

2016年10月21日,美国多家互联网公司遭到一系列大规模协同网络攻击.原因是域名服务器遭遇DDOS(分布式拒绝服务)攻击,从而导致许多网站宕机. 安全专家最终认为,这起事件主要来自于物联网设备.一款名为Mirai的恶意软件控制了这些设备,包括网络摄像头.DVR以及路由器等.通过恶意感染,这些物联网设备成为此次参与攻击网络中的肉鸡设备,并被用于实施大规模DDOS攻击.黑客利用这些在线设备持续访问网站,形成大量请求流量,致其瘫痪. 物联网(IOT)是在"互联网概念"的基础上,将用户端延伸

张书乐:谜一样的二次创作,跨不进千亿级游戏周边的大市场

由于<悟空传>的热映,又一轮关于对<西游记>的二次创作大讨论也随之而来.其中有个提问颇为让人深思:西游记IP经得起无限开发吗? 这其实是一个关于二次创作是否有天花板的老问题,而且不会有答案.或者说,有个经典案例还能证明,围绕超级IP.官方自营的二度创作,也可以是无限的,那就是漫威和DC两大漫画巨头的无限宇宙. 不同编号的宇宙里,超级英雄和反派的出身.关系乃至故事情节都可以是不同的,甚至还有直接正反角色对调位置的大逆转宇宙,有时候编剧尚觉得不过瘾,或想在人物不变的情况下,衍生出新系列

143行js顶部进度条最小插件-nanobar.js源码解析

网页顶部进度条插件的有四五种,基本原理就是动态地创建一个元素,然后通过设置它的width来实现动画效果,width增长到达指定位置时,将其去掉.来看看nanobar.js作者jacoborus是怎么做到的吧! /* http://nanobar.micronube.com/ || https://github.com/jacoborus/nanobar/ MIT LICENSE */ (function (root) { 'use strict' // container styles var

vue element-ui,上传文件加载进度条显示效果(使用定时器实现源码分享)

上传文件效果如图: 父组件相关代码 html <drag-upload ref='mychild' action="//接口相关地址" v-model="versionwareList" @submitUploadParent='formSubmit' @input='delUpload' :autoUpload="autoUpload" :visible="visible" :disabled="disabl

千行代码入门Python

这个是从网上找到的一份快速入门python的极简教程,大概一千行左右,个人觉得不错,特此收藏以备后用. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69