7 followers 0 articles/week
【从零开始学Skynet】高级篇(一):Protobuf数据传输

Protobuf是谷歌发布的一套协议格式,它规定了一系列的编码和解 码方法,比如对于数字,它要求根据数字的大小选择存储空间,小于等于15的数字只用1个字节来表示,大于15的数用2个字节表示,以此类推,这样要求可以尽可能地节省空间。Protobuf协议的一大特点是编码后的数据量很小,可以节省网络带宽。上图展示了用pbc模块处理Protobuf协议的流程。我们需要先编写描述文件,描述文件有它特定的格式,再用名为protoc的软件将它转换成.pb格式的文件;最后使用pbc库提供的方法实现编码解码。

Fri May 12, 2023 20:54
【从零开始学Skynet】实战篇《球球大作战》(十五):项目问题和改进

服务端只需做校验,这样就把计算量转移到了客户端(后面会介绍不同做法的优劣之处)。稳定运行的前提是所有Skynet节点都能稳定运行, 且各个节点能维持稳定的网络通信,因此所有节点应当部署在同一局域网。匹配时应尽量匹配到同节点的场景服务,只有在某些特殊玩法中才匹配到跨节点的场景服务。之间,玩家充值了,因为已经保存了数据,所以更新的金额不会被再次保存)。之间偶尔发送心跳协议,若检测到客户端连接已断开,则请求下线。状态,下线请求不会被执行,除非再次登录踢下线,否则agent。消息,分别用于保存数据和退出服务。

Tue Apr 18, 2023 14:09
【从零开始学Skynet】实战篇《球球大作战》(十四):agent跨服务器版

至此,我们已完成了《球球大作战》的绝大部分功能,只剩下完 善agent,让它和scene服务联动了。1、多个模块一般而言,代理服务会承载很多系统,比如邮件、成就等,此处涉及的代码较多,容易混乱,需划分模块。之前实现的service模块能让服务带有分模块的潜力。新建用于处理agent的战斗逻辑,只需在init.lua中引入(require)新增的文件,即可使用新文件提供的功能,如果后续开发邮件、成就等系统,同样要新建一个文件,每个文件处理一项功能。

Tue Apr 18, 2023 04:46
【从零开始学Skynet】实战篇《球球大作战》(十三):场景代码设计(下)

它会遍历所有的球和食物,并根据两点间距离公式(见下图)判断小球是否和食物发生了碰撞。如果发生碰撞,即视为吞下食物,服务端会广播eat。《球球大作战》是一款服务端运算的游戏,一般会使用主循环程序结构,让服务端处理战斗逻辑。本篇的场景服务代码更多的是为了演示如何使用框架, 没有很多性能考究。要加快执行,只能给很短的间隔时间。秒)执行一次循环,在循环中会处理食物生成、位置更新等功能。开启一个协程,协程的代码位于匿名函数中。0.2减去执行时间,如下左图所示,图中。,因此它只需遍历场景中的所有球,根据。

Mon Apr 17, 2023 13:10
【从零开始学Skynet】实战篇《球球大作战》(十二):场景代码设计(上)

场景服务会处理绝大部分的游戏逻辑。新建,开始编写相关代码。

Mon Apr 17, 2023 12:07
【从零开始学Skynet】实战篇《球球大作战》(十一):战斗场景设计

现在的服务端框架有支撑数万玩家的能力,且支持横向拓展(即 增加物理机数量),理论上具有无上限的负载能力。下面以《球球大 作战》为例,说明怎样使用这套框架。1、战斗流程玩家登录后,玩家可以做些非战斗操作(仿照work示例,可以实现 成就、背包、邮件、好友等功能),如下图所示:当点击开始比赛按钮时,客户端会发生“进入战斗的协议。战斗流程如下图所示:服务端会开启很多服务,每个服务处理一场战斗。收到进入战斗的协议后,agent会随机选择一个战斗服务。进入战斗后,会与某个scene服关联。

Mon Apr 17, 2023 10:00

Build your own newsfeed

Ready to give it a go?
Start a 14-day trial, no credit card required.

Create account