站务联系

当我设计游戏服务器时,我在想些什么?(2)(2)

发布时间:2021-03-11   来源:网络整理    
字号:

接着是 nodejs 的部份,朴灵高手写的书的确不错,应该是我看见的讲解 nodejs 的书里最优秀的那一类,按照他的书跟nodejs官网的api文档,我开始写我的服务器了,按照我同学的告诫,我首先写一个单进程的服务器,而服务器最主要的部份就是网路了,所以我先用 nodejs 的 net.socket 写了一个tcp的服务器,这只用十几行代码,nodejs 的 api 设计的特别不错,而且文档写的也挺好,很快就理解了,而且我给 nodejs 提的 issue 很快还会得到回复,这期间我还发觉 nodejs 对于 tpc,不过那时发觉 nodejs 分家了还是小小怀疑了一下的,不过目前又合并了:)

一开始,我准备模仿 pomelo 的构架,把它的某些我不需要的东西剔除回去,不过之后我舍弃了,这件事情并不这么容易,我还是老老实实从一个简略的通讯开始写起,一开始我就想走多进程的路子,而且我觉得这只是应当的(但是今天我不这样觉得了),但是一开始并不这么好写,步子迈的大了,容易扯至蛋。XY又告诫我,还是从单进程开始设计比较好,我接受了他的意见,在这个 tcp 服务器的基础上逐渐的提高我觉得游戏所应当的内容,例如数据库插口、协议、网络。基本上数据库+网络+协议就是一个完整的服务器了,其他的游戏逻辑都是可以之后逐渐铺的,正好这个时侯客户端的开发也开始了,我就用 luasocket 写了一个简略的客户端网络库,拿来跟我的这个单进程的服务器进行通讯,终于,我的服务器跑上去了,代码极少,我控制的住,我觉得十分开心:

这个服务器只具有最基本的能力,和数据库才能通讯,使用 tcp 和客户端进行通讯,协议只是用的我自己设计的合同在通讯,这里不得不说一下游戏服务器,一开始我是准备用 protobuf 协议来通讯的,后来舍弃了,因为我发觉 protobuf 的 nodejs 绑定的库插口设计的特别繁复,很难用。而且我没有这么高的需求,于是就自己实现合同了,后来我才发觉,其实我完全可以用 json 格式就好,不过 lua 这边处理 json 还有各类问题,这个前面我也会提及,这只是我之前说过,想尝试一下客户端跟服务端使用不同语言的第一个代价。协议的解读要写两套,而且保证不出问题还是太困难的。

图说天下

  • 2页:
  • 上一页
  • 1
  • 2
  • 下一页
  • ×
    二维码生成