首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Unity3D-游戏开发移动端网络游戏服务器架构

通过上图,我们可以看出,服务器之间的数据交换,该游戏服务器主要是由LoginServer,GateSever,GameServer,DBServer,CenterServer组成 负载均衡主要是通过,GateServer...完成的,就是说当玩家登陆的时候,GateServer会根据GameSever运行情况从里面找出一个相对空闲的GameServer分配给玩家。...GateServer与GameServer之间是多对多的关系。换句话说就是GateServer当掉只会影响局部GameServer中玩家的人数,不影响全局。...以上是中心服务器配置,那下面是GameServer服务器配置: ?...然后GateServer会发消息给GameServerGameServer会去DBServe查证,用户信息是否合法,整个流程就是这样子的。 服务器的架构一般都是这个样子。

2.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

全球同服架构设计

讲一下我用过的其中一种架构模型,也是公司按着bigworld架构设计的: 1.Gate:首先要有一个(多个)Gate(网关)服务器,负责客户端连接及消息转发到GameServer(游戏服)(选服逻辑),...保持客户端到服务端的连接 没有任何逻辑,只做消息加密和解密,以及客户端和服务器消息的转发(相当于两者之间的桥梁). 2.GameServer:GameServer是主要的游戏进程,提供游戏逻辑功能(采用单进程...4.GameManager:负责管理所有的GameServerGameServer之间消息转发,提供广播到所有Game的功能。...客户端连Gate,Gate连GameServerGameServer连DBManager,GameManager管理所有的GameServer并通知所有的Gate。...除了GameManager只有一个,理论上Gate,GameServer,DBManager都可以扩展到多个实例,你要实现全球唯一服,理论上就是扩展GameServer,那么怎么让他们看起来在一个服呢?

2.7K81

H2Engine服务器引擎介绍

但是就本人看来,大部分情况下连Memcache、Redis这种都不需要,直接GameServer缓存一下就行了(主要是处理下断线重连,手游闪断还是很频繁的),因为GameServer本身就是有状态的服务器...去掉了DBServer,H2引擎架构简化成了只有Gate和GameServer,这次真的简化到极限了。 ?    下面让我们来讨论N个GameServer应该放几台机器上的问题。...GameServer是主逻辑单线程的,如果一台机器上部署一个,那么cpu资源无法得到更好的利用。就本人经验而言,GameServer很少需要超过4个,为啥?...想想看,如果一个RPG游戏单服设计在线1万人,平均分配到每个进程也就是2500人,很轻松啊,当然如果人过多聚集在单个进程,那还有有可能单个GameServer成为瓶颈,这种情况多开GameServer也解决不了问题...以往经验来看,玩家会比较集中在热点地图,一般会某个或某两个GameServer相对会cpu较高。另外一个服务器角色Gate是io密集型的,所以和GameServer放到一个机器上,也是扛得住的。

1.5K80

游戏服务器h2engine架构优化和跨平台设计

H2engine为多进程架构,但是h2engine限定了采用伪分布式的设计,虽然gate和gameserver通过网络通信,但是限定了gate和gameserver在一台机器上。...虽然gate和gameserver放在不同机器上也可以通信,但是我们从现实运营的情况出发,很少运维会把gate和gameserver放不同机器上,一般有的时候一台机器上甚至有多个服。...采用伪分布式设计后,gameserver之间就可以利用共享内存了,全局的数据比如排行榜、行会、好友、组队等,这些模块都是分布式进程中最费时费力容易出错的,但是在h2engine里变得逻辑清晰,直接操作全局内存就可以了...Rpc模块进行了简化,其实rpc通信分三种,gate调用gameserver接口,gameserver调用gate接口,和gameservergameserver之间调用,发现没,所有架构内rpc都需要通过

71830

2 网络游戏服务器开发框架设计介绍

GameGate挂接n个GameServer服务到自身,此服务将所有注册到自身的GameServer信息发送给最终用户,提供用户选择具体的区或线路进行游戏(区和线路在不同的游戏设定中有不同的定义),在这里区的定义对应的是...GameGate,每一个GameGate可以表示物理或逻辑上的多个游戏分区,每个分区由至少一个GameServer组成; 线路定义为GameServer,每一个GameServer代表一条线路,线路之间互相不可见...透明通信由IMServer向目标GameServer转发请求,并进行处理;隐藏通信仅在当前GameServer进行处理,不会做跨越性操作。...此服务的作用是提供物理或逻辑不同位置的GameServer上的最终用户通讯的一个媒介,用户成功登陆GameServer时,会将自己的好友、公会信息注册到此服务上,当需要跨GameServer服务时,共IMServer...可以选择性的直接反馈最终用户或通过GameServer反馈。

4.3K33

一个人的服务器端

想让服务器之间的连接方式最简化,所以确定GameServer是中心,其他Server都连接并且只连接GameServer。...2.登陆GameServerGameServer读取DB数据。3.GameServer通知MapServer玩家登陆并且把DB数据给MapServer。...3.完成传送,改变玩家在GameServer上面注册的MapID。这个逻辑是异步的,任何环节都要处理异常,所有封包都走GameServer。...因为所有封包都会通过GameServerGameServer负责了太多的状态变量导致逻辑很不清晰,不把逻辑梳理清晰,肯定会引发重大问题。 于是有了第二次重构,重构的技术改动是: 改动1....GameServer拆分为RouterServer和GameServer,所有服务器都会连接RouterServer,GameServer只负责世界逻辑。 改动2.

48130

风云私服架设教程_风云端游

将服务器端解压缩到D:盘 D:\Sagasevr下有6个文件夹 1:database SQL数据库文件夹 2:LoginServer 帐号登陆管理器 3:WorldServer 服务器数据管理器 4:GameServer1...游戏数据管理器 4:GameServer2 游戏数据管理器 5:GameServer3 游戏数据管理器 6:GameServer4 游戏数据管理器 ———————————-database内有两个文件...GameServerNum 1 GS_ID IP ListenPort 1 127.0.0.1 2347 自己的IP地址 ★★★★★对外开放时改动这里★★★★★ 1 1 ———————————-GameServer1...———–主程序 GameServer.pdb———–不详 WarDebug.txt————-不详 setup.ini—————-配置文件 配置文件详解 WorldIP 127.0.0.1——-...按照LoginServer–WorldServer–GameServer1–GameServer2–GameServer3–GameServer4启动服务端程序 版权声明:本文内容由互联网用户自发贡献,

1.6K10

一种经典的网游服务器架构

4- 这也是一条本地TCP/IP连接,这条连接用来对连接到GameServer的客户端进行验证,以及获取角色数据信息,还有传回GameServer上角色的数据信息改变。...6- 这里的两条连接,想表达的意思是,UserServer和GameServer的Agent是可以互换使用的,也就是玩家进入组内之后,就不需要再切换Agent。...(毕竟连接次数少了,也降低了连不上服务器的出现几率) 在这个架构里面,GameServer实际上是一个游戏逻辑的综合体,里面可以再去扩展成几个不同的逻辑服务器,通过PublicServer进行公共数据交换...而且,它还是一个用户信息的验证服务器,GameServer需要通过它来进行客户端的合法性验证,以及获取玩家选择的角色数据信息。 采用这种架构的游戏,通常有以下表现。

1.6K40

这个点,在面试中答出来很加分!

想象中的游戏架构 也就是用户客户端直接连接游戏核心逻辑服务器,下面简称GameServerGameServer主要负责实现各种玩法逻辑。 这当然是能跑起来,实现也很简单。...如果让用户直连GameServer,那相当于把GameServer的ip暴露给了所有人。 不赚钱还好,一旦游戏赚钱,就会遇到各种攻击。 你猜《羊了个羊》最火的时候为啥老是崩溃?...所以很多时候不会让用户直连GameServer。 而是在前面加入一层网关层,下面简称gateway。类似这样。...假设有100个用户连 gateway,那 gateway 跟 GameServer 之间也会是100个连接吗? 当然不会,gateway 跟 GameServer 之间的连接数会远小于 100。...因为这 100 个用户不会一直需要收发消息,总有空闲的时候,完全可以让多个用户复用同一条连接,将数据打包一起发送给 GameServer,这样单个连接的利用率也高了,GameServer 也不再需要同时维持太多连接

41620

socket是并发安全的吗

想象中的游戏架构 也就是用户客户端直接连接游戏核心逻辑服务器,下面简称GameServerGameServer主要负责实现各种玩法逻辑。 这当然是能跑起来,实现也很简单。...如果让用户直连GameServer,那相当于把GameServer的ip暴露给了所有人。 不赚钱还好,一旦游戏赚钱,就会遇到各种攻击。 你猜《羊了个羊》最火的时候为啥老是崩溃?...实际的某些游戏架构 GameServer就躲在了gateway背后,用户只能得到gateway的IP。...假设有100个用户连gateway,那gateway跟GameServer之间也会是 100个连接吗? 当然不会,gateway跟GameServer之间的连接数会远小于100。...因为这100个用户不会一直需要收发消息,总有空闲的时候,完全可以让多个用户复用同一条连接,将数据打包一起发送给GameServer,这样单个连接的利用率也高了,GameServer 也不再需要同时维持太多连接

1.6K10

如何提高 Java 中锁的性能

例如下面这个例子,试图通过这种方法来建立一个在线扑克游戏服务器: class GameServer { public Map> tables = new...class GameServer { public Map> tables = new HashMap>();...玩家无论何时加入牌桌,先前的同步方法都会对整个GameServer实例加锁,进而会与那些同时试图离开牌桌的玩家产生竞争。将锁从方法声明移到方法体中会延迟锁的加载,进而降低了锁竞争的可能性。...缩小锁的作用范围 现在,当确信了需要保护的是数据而非程序后,我们应该确保我们只在必要的地方加锁——例如当上面的代码被重构之后: public class GameServer { public Map...例如,当采用ConcurrentHashMap来储存你的牌桌实例时,代码可能像下面这样: public class GameServer { public Map<String, List<Player

97210
领券