栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

常用游戏服务架构(tcp/ws,golang技术栈) 篇一

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

常用游戏服务架构(tcp/ws,golang技术栈) 篇一

本文是概述同步技术,主要为架构和框架选型。

用户互相有强交互,实时性要求较高,服务端需要主动推送消息。我们选择tcp/ws等协议作为基础网络荷载。

基本上所有的游戏类型都可以选用这个架构。

优势:

主动推送,低延迟。强交互。(业务决定)

劣势:

社区相对不活跃。现成的稳定的技术栈基本都是C/C++。根据业务的特殊性,也较难有一个通用的框架。

具体游戏同步方法又可以分为,帧同步和状态同步。

以下先根据具体游戏类型,我们选择不同的同步模型:

帧同步:

安全性要求相对不高(外挂,作弊等)。网络稳定性要求相对高,抗延迟能力相对差。物理引擎使用较少,甚至没有。单局用户数量少(同步的消息少)

比如王者荣耀,贪吃蛇,格斗游戏,星际争霸等。

简单模型可以选择lockstep(一人卡顿大家全卡)。 

目前更加常用的是乐观帧,服务器跑帧,客户端指令能跟到哪一帧就在哪一帧生效。 

状态同步:

一般同步玩家的位置方向速度,服务器计算玩家状态发送客户端进行播放。

比如屁股,吃鸡,lol,WOW等。

具体游戏服务器架构,我们可以简单分为房间类型,和大地图类型。

房间类型服务:

阶段一:日活几万,玩法不多较为单一。可以用单游戏服结构。

 登录建议拆分出来。可能有不同渠道玩家登录,wx,qq,appleid等。

阶段二:玩法稳定,日活更高,不断的迭代新的玩法。

 此时可以用代理服作为一个中间层,保存玩家状态。

阶段三: 日活更高,单个服务无法承载。

 通过passport来分配不同的agent,做负载均衡。

gamemanager分配不同game,做负载。

完备:

 

再加上需要的log,db等

可选基础框架:

GitHub - name5566/leaf: A game server framework in Go (golang)A game server framework in Go (golang). Contribute to name5566/leaf development by creating an account on GitHub.https://github.com/name5566/leaf

GitHub - davyxu/cellnet: High performance, simple, extensible golang open source network libraryHigh performance, simple, extensible golang open source network library - GitHub - davyxu/cellnet: High performance, simple, extensible golang open source network libraryhttps://github.com/davyxu/cellnet

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/905734.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号