英雄远征Erlang源码分析(13)-总结 附上可执行的服务端和客户端代码

本文总结了Erlang编写的MMORPG游戏服务端源码,涵盖了心跳包系统、定时器管理和随机数生成。通过分析,阐述了心跳包在保持客户端连接中的作用,定时器服务如何启动和执行任务,以及如何利用Erlang生成随机数。此外,还提供了简陋客户端模拟程序的链接,用于观察登录和游戏流程。源码已在百度云分享,感兴趣的读者可以继续研究和完善。
摘要由CSDN通过智能技术生成

总结:其实也没有什么好总结的......英雄远征这套源码虽然说体积并不大,麻雀虽小五脏俱全,对于MMORPG网游的一些基本系统都有完备的实现,虽然实现方法不一定是最好的。除去场景,战斗,组队,任务等那些我文章中有提到的系统,源码中还有像是帮派,邮件,坐骑,宠物,排行榜相关的模块,有兴趣的同学可以自己去看看。

游戏中还有几个比较重要的系统,感觉还是要提一下:

1.心跳包系统:客户端会以指定时间间隔循坏给服务器发送消息(此处是协议10006),保持和服务器的连接,如果超出了时间,服务器就会关闭和客户端的连接(看过《三体》的同学应该都知道,就是“摇篮系统”)。游戏内的心跳包超时时间和超时次数在sd_reader.erl中定义,作为接收tcp连接的超时参数。

2.定时器系统:源码中有专门的一个文件夹timer,用于存放需要执行定时任务的代码。服务器启动的时候调用timer_frame:start_link()启动后天定时服务管理进程(是一个gen_fsm),定时检查需要执行定时任务的模块。

3.随机数生成系统:关于erlang伪随机的说明,可以参考这篇文章:https://www.cnblogs.com/unqiang/p/4180748.html
所以我们需要一个能返回随机种子的进程。服务器启动的时候调用mod_rand:start_link()启动随机数种子返回进程,当需要生成随机数的时候,使用该进程返回的种子。

其余的还有很多细节值得研究,由于精力有限就不深入下去了。

这份代码到我手上的时候已经不知道经过了多少人的手了,既然是游戏总会想去玩一下......根据源码的sql文件配置完数据库后,游戏服务器是能运行起来的,但没有配套的客户端,对于游戏中相关功能的实现总少了直观的理解。

个人用Erlang编写了一个简陋的客户端模拟程序(之前没发现源码里就有模拟客户端的代码,发现之后看了下,感觉协议也不太对的上......),可以完成平台登录,创建角色,进入游戏的操作,用来观察玩家登录的完整过程足够了。服务端也做了相应的修改,为了方便进行程序的调试(主要是添加了shell内方便热更的方法),两份代码打包后上传百度云,如果有感兴趣的同学对其继续完善,甚至能还原游戏内大部分的功能的话,请务必通知我去玩一下。

百度云地址:链接:https://pan.baidu.com/s/1_M4ddOFgACd

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值