`
vanadiumlin
  • 浏览: 493929 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一个不分服的游戏服务器设计问题?

 
阅读更多
一个不分服的游戏服务器设计问题?
最近自己想设计一个游戏,类似coc或者海盗骑兵,玩家不用选择服务器。
游戏主要需求:
整个游戏世界有很多村落组成,村落里是若干玩家(比如上线10人)组成,若干村落组成国家。
战斗包括整个村落和村落打,及玩家和玩家打,还有玩家和系统设定的npc打,玩家之间可以相互组队去打副本。
所有玩家之间都可以加好友,聊天,组队聊天,世界聊天等。
游戏中没有场景的概念,不是mmorpg。
玩家之间的战斗可以在双方同时在线下进行,不像海盗骑兵只能打离线玩家。

由于玩家可能比较多,单服的架构不合适,要做到较强的扩展(不需要理论上的无限扩展)。设计上玩家上线是1000万,同时在线是10w。
语言可以先不考虑(本人熟悉java,nodejs以及lua也可以考虑)


其实没有你想的那么难,现在日本的大多数手游都不分服了(对玩家而言),国内迟早也是这个趋势。因为手游的用户行为不适合做强在线交互,所以不分服在玩法设计上能提供很大的空间。

那么具体怎么做?具体的你得自己去研究。我说一个大致的思路。

实现上其实是分布式的服务器,不分布计算的话就谈不上可扩展性了。当然结构搭好了,要不要扩展完全可以根据产品的实际运营情况来定
那么既然游戏服务器是分布式的话,怎么让玩家感觉不分服呢?很简单,入口是唯一的就可以了。这个唯一的意思可以是唯一的登录服务器,也可以是唯一的游戏服务器连接机制。
那么既然玩家散落在各个游戏服务器里面,怎么能够让他们象在一个世界里那样产生交互呢?这个是实现里面比较难的地方。在规模有限的情况下,只要保持有一个高效的数据持久层通信机制(在小规模下 redis 就够了)就可以解决90% 的问题。当规模上去了以后,可以考虑 阿里云 或者 腾讯云提供的服务。


需求层面先要确定的一个事情,
是否需要显示地图版面资源占用情况,这个涉及到全局数据,如果存在,对于版面的信息更新频度问题,如果说存在,那么显然一个全局服务器可能不太好适应,如果没有,一切都好解决。
1.设计是否靠谱,需要测试你的各类服务器对于承载是否能够达到预期。全局服务器不可忽视的一个问题就是广播消息,拿你的聊天服来说,如果说,全服共用一个聊天服,考虑下在用户同时在线峰值时消息转发会带来多大的压力,虽然消息转发的逻辑处理简单,承载也高,但是更多是些无意义的需求,所以还是基于有效需求做一些划分,比如以国家为基础单位加载至聊天服,保证国家内成员处于同一聊天服。
2.当你的所有服务器组都处于内网之中时,服务器组的通信的效率基本上不需要担心。
3. 建议还是添加网关服,用于管理客户端连接,而你的游戏服,可以看做是业务逻辑计算结点,世界服就是一个中心服务器,管理一些状态,不做过多的逻辑计算。至于玩家对网关的选择,先让玩家请求网关负载均衡服(可以是一个web页面),然后告之玩家可连接的网关,至于分配方式粗略的可以直接基于网关的承载(如果你的业务逻辑计算结点所有数据都是从数据中心拉取)。通信消耗,游戏的类型及需求决定了游戏不是需要高响应的,同时手游通信环境的影响,这点内网通信消耗我觉得还是能够容忍的。
4.同3所说,世界服不做过多的逻辑,减少单点故障可能性,国家之类的,根据具体情况分析了,尽量是放在逻辑计算结点上来进行。始终会存在不可抗因素,所以单点故障的可能性始终存在,如果真的需要,那么粗略的考虑就是做主从,主服务器挂了,立马转接到从服务器。
5.基本上是这样,已修改数据定时回写。玩家离线不清除,主要解决在大量玩家重复上下线操作的问题。
6.资源争夺这里麻烦最多,最好的办法是任何会改变共享资源的操作都为同步操作,这样保证数据不会出现问题,我记得COC里面好像是不能攻击在线玩家,这样就从根源上解决了问题,如果需求执意要对在线玩家也可做操作,那么只好把操作理清楚了根据情况做限制。

=================================================================


可以统一出口网关,用LVS做TCP端口均衡负载,这样可以扩展足够多的接口服务器去满足在线人数需求。(技术人员少的话可以直接用青云、阿里云的均衡负载服务)

一些热数据或者经常更改的数据,例如你说的“我战胜了玩家A,我会抢他资源”:全部写入redis集群,定期将redis数据同步到数据库中。为了避免单点可以在架构和后台服务编写上“标记服务某个用户的reds服务器”并记录到数据库中,并且做到可用脚本热切换。
分享到:
评论

相关推荐

    网游服务器架构和设计

    对服务器开发的细节给予了详细的方法描述,不停留在简单的文字上,而是描述一个真正实用的网游服务器开发需要注意哪些问题,需要怎么去解决这些问题,整个游戏需要哪些元素,如场景服,网关,公共服,数据库缓存,桥...

    跨服与跨区的设计.ppt

    上海C++游戏服务器群 2014.11.9 沙龙讲义。 自我介绍 -------- 巨人网络 万王之王3 冒牌天神 ZTJ 金庆的专栏 跨区的概念 跨区的作用?人气 互动 单区限时开放,跨区全天开放。 设计理念 多服架构 各服作用 各个...

    一个主要用于游戏服务器的开发框架

    Minotaur 是一个用于服务端开发的支持库,其中采用了大量泛型设计,主要被用于游戏服务器开发,但由于拥有大量通用的功能,也常被用于 WEB 开发。这是支持快速搭建多功能游戏服务器及 HTTP 服务器的 Golang 服务端...

    棋牌游戏开发系统架构和服务器架构设计

    一,棋牌类服务器的特点 1,棋牌类不分区不分服 2,房间模式 3,每个房间的操作必须是顺序性 二,需要解决的技术点 1,数据共享 2,如何进入房间 3,保证房间操作的顺序性 三,系统架构 。。。。。。

    适用于网络游戏服务器无锁异步化事件驱动架构设计的 java netty 网络编程框架

    适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景; 通过 ioGame 你可以很容易的搭建出一个集群无中心节点、集群自动化、分布式的网络服务器。包体小、启动快、内存占用少、更加的节约、无需配置文件...

    基于PHP的socket游戏服务器设计与实现

    近年来网页游戏、手机游戏快速发展,对游戏服务端提出新的要求:架构简单、配置灵活,同时可支持快速开发。文中提出一种架构:服务器底层通讯...此外,以该架构的游戏服务器已在两款网页游戏开服上百组,性能测试稳定。

    Unity对接网狐服务器.pdf

    下面说说这三者之间的关系: 中心服务器:是登录服务器和所有游戏服务器的服务器,也就是 说, 在服务器层面上, 登录服务器和游戏服务器的角色是一个客户端。 中心服务器启动后,各个游戏服务器再启动。这个过程中...

    服务器监控及性能优化.pptx

    一次交换收到的 消息到处理线程 写比读要频繁 分成读写锁 一次交换到写线 程批次写入 不频繁操作, 注意锁定时间 游戏服务器的线程处理 服务器监控及性能优化全文共27页,当前为第17页。 MMO服务器常用的优化手段 ...

    阿里云全球同服手游解决方案

    游戏架构设计问题,不同类型的游戏如何设计和部署游戏接入层、逻辑层和数据层。 网络延迟问题,如何让不同国家玩家都能快速顺畅地接入游戏、进行公平PK。 数据读写问题,如何高效读写数据并保持必要的数据一致性。 ...

    韩式服装网店发布系统源码下载

    strSQLServerName = "127.0.0.1" '服务器名称或地址,本机不需要修改 strSQLDBUserName = "sa" '数据库帐号,如是sa不用修改,如是新建的,或者空间上的填写相应密码 strSQLDBPassword = "123456" '数据库密码,把SA...

    云服务器(4).doc

    目前的通用服务器设计标准为:35 进风温度。IT 设备的优化工作,直接导致了数据中心空调温度标准的改变。ASHRAE(美国暖通空调协 会)在其数据中心标准中发布了2008版本和2011版本;在2008年版本中,数据中心的温 度...

    golang项目如何上线部署到Linu服务器(方法详解)

    Go作为Google2009年推出的语言,其被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它...

    mcorelibforge:一个易于使用的 minecraft 服务器插件管理器和库

    您可以轻松地在服务器和客户端之间创建连接,只需一个命令即可创建块和项目,并为您的服务器使用类似 bukkit 的插件。插件库是如何工作的? MCoreForge 可以为您的服务器创建插件。 您可以创建 GUI 框架、方块、...

    火星加速器 V4[1].3.2 无限试用版

    在游戏服务器与玩家之间建立一个高速通道,在软件层面解决网络的延迟和堵塞问题,在服务器之间建立智能高速的内部通道,有效的降低游戏延迟,提高游戏质量,不管你处理理哪个节点,你的速度都可以不卡,一样可以顺畅...

    MMOG服务器容灾方法小结.pdf

    好 在通过一系列预定方案的实施和不断优化, 虽然开服期间也出现过各种宕机问题, 但是也可以说很好地顶住了这段时间的压力。 这里就抛砖引玉地总结一些我们用 到或是想到的 MMOG 服务器容灾方法。 天刀的服务器采用...

    毕业设计论文范文源码-slg-server:erlang游戏服务器框架

    本项目是为小服设计的slg游戏服务器框架,主要包含以下四个组件: slg_proto:处理网络连接,数据的序列化,加密解密处理. slg_csv:游戏中常常有gd配置文件,slg_csv提供配置文件到ets表的直接映射,便于编程访问. slg...

    服务器管理规划方案.doc

    服 务 器 管 理 规 划 方 案 随着公司电脑的数量增多和网络带宽的增加,一方面公司职员办公效率得到改善,另 一方面也给公司带来更高的网络使用危险性、复杂性和混乱。 网络对办公环境造成的危害主要表现为: 1) 为...

    基于 jQuery 的 Web 源程序在线评测系统的设计与实现

    Windows 操作系统病毒横行,游戏众多,这些都不利于服务器的管理和安全。再次, 从并发性能、安全性、稳定性及操作系统体系结构成熟度而言,Windows 操作系统都 不是在线评测系统的首选。这一点从世界众多 IT 巨头在...

    UsbEAm Hosts Editor v3.47.zip

    当前支持列表: 游戏内相关: Steamcn论坛 绝地求生 缓解卡loading Steam链接信息插件 黑色沙漠(TW)游戏更新 Steam下载 最终幻想14(国际版)游戏更新 Steam商店/社区 MOBIUS最终幻想(Steam)游戏更新 Steam游戏图片/视频...

Global site tag (gtag.js) - Google Analytics