V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
mk3s
V2EX  ›  游戏开发

游戏里面的“线”或者“频道”对应的是什么

  •  
  •   mk3s · 3 天前 · 2004 次点击
    因为不是游戏开发者,所以问了一下 ai ,大概意思就是实例服务器,但感觉还是有点模凌两可,对此抛出一些个人的疑问:
    1. 在玩家数量不变的情况下,一个区开 10 条线和 100 条线,在资源上的消耗是否有不同
    2. 玩家在换“线”或者“频道”的过程中,实际上换的是什么
    3. 观察了一下手游,感觉千服轻轻松松,服务端的压力通常体现在哪
    中午休息的时候,产生的一些随想,不知道有没有游戏从业者可以解惑一下
    14 条回复    2025-04-06 18:52:32 +08:00
    librasolo
        1
    librasolo  
       3 天前
    同区不同线,是同一个 user 服,不同 server 服,
    实际换的是 server 服的地址吧
    感觉都是一台物理机启动多台虚拟 server
    wyntalgeer
        2
    wyntalgeer  
       3 天前
    数据在同一个实例上,server 在不同实例:两个人不同线虽然不能共玩,但数据是通的,只要你俩进同一个线路就可以共玩了
    paopjian
        3
    paopjian  
       3 天前
    感觉很多多服务器游戏是因为服务器编码水平不高, 还喜欢复用以前的代码, 一个服务器里一个人可以和多人产生交互, 人一多就会导致消息指数级增长, 通过服务器分线路分频道隔离人员.
    隔离水平足够, 聊天服务器和玩家地图服务器就可以隔离, 但是有的开发把 发言|移动|攻击|交互 全做成指令式, 那服务器不就扛不住了, 就像 12306 里全国人都坐一辆火车那就没几个人能买到票了, 但是多分几辆车就可以多个服务器分开处理了
    sunny352787
        4
    sunny352787  
       3 天前   ❤️ 2
    其实这是个历史问题,资源限制导致的设计。首先,一个游戏需要一定量的玩家同时在线才能构成一个比较好的游戏生态,比如一个游戏几个公会要想发动战争,总算下来大概 100 人,再加上游戏的散人玩家,那么一个游戏分区(玩家可以交互的基本范围)要支撑 1000 人同时在线。而一台服务器只能支撑 200 人同时在线( TCP 长连接),那为了维持生态的话,就需要至少 5 台服务器才能容纳这些人。而这五台服务器之间几乎不通讯,玩家的同步信息(位置方向、衣着行为等)只在同一台服务器内进行转发,如果你要想看到其他服务器的人,那就要手动切换服务器,这里的每个服务器就是“线”的概念。随着服务器性能越来越强,一台服务器支撑的人数越来越多,已经很少需要开多条线来支撑玩家了。
    qinxi
        5
    qinxi  
       3 天前
    现在都是运营需要, 对应的是收入. 多开服, 每个服的大哥充钱当第一, 然后合服. 大哥们竞争起来了. 接着充钱. 接着开新服, 合服. 就循环
    sunny352787
        6
    sunny352787  
       3 天前
    @qinxi 线和服还不是一个概念,服是一个玩家交互的逻辑范围,线是服下的分服务器,如果一个服是一个进程,一个线那就是一个线程,玩家去打的副本可以理解为协程(不太准确,凑合理解)
    lingcen000
        7
    lingcen000  
       3 天前
    有的游戏是一服对应多线,一线一个世界,环境资源独立刷新,其他同服数据都是互通的
    lscho
        8
    lscho  
       3 天前
    个人理解:

    线/频道解决的是客户端渲染压力,同线的人物、怪物资源渲染是独立的,如果同时在一个线渲染太多人物、资源等,用户体验会急剧下降
    服以前是解决服务端压力的,现在集群技术成熟,服已经是用来解决游戏生态的手段了。解决的是平均等级、平均战力,关卡进度等
    kyuuseiryuu
        9
    kyuuseiryuu  
       3 天前 via iPhone
    服:服务器
    线/频道: 进程
    clikes
        10
    clikes  
       3 天前   ❤️ 1
    从业者来了,分线主要解决几方面问题 1 ,服务器广播压 #3 有提到过,消息会指数级增长 2 , 客户端渲染压力 #8 有提到过 3 ,游戏体验问题,过多的玩家导致美术上没法看。 对于服务器来说一个小服在同一个进程上跑的,可能会有 1000+玩家,但是显示在客户端的话基本上没法看了,并且也会导致很多低端机型非常卡顿,那么这个时候我们会分线,在同一张地图下的玩家只有在相同分线下的才能互相见到,这是一个基于 前后端性能 + 策划美术需求 共同决定产生的东西,因为游戏开发玩家体验才是第一,不能只考虑到说服务器性能够就行了,有时候 1000 条消息服务器可以很快的处理完成,但是下发给一个客户端进行渲染可能会卡顿很久。
    skadi
        11
    skadi  
       3 天前
    mmo 就是场景服
    realpg
        12
    realpg  
       3 天前
    各家都有不同的定义
    最传统的定义 不是很正确 但是方便码农理解

    一个服 共用一套数据库 他们内部的唯一数据是互斥的
    一个线 是一个前端接口 一个 server-instance 他们最终连到同一个数据库

    而分散到不同游戏 一个线包含的共用要素是不一样的
    有的单纯是负载均衡用途 基本大部分隐藏线的概念给前端用户
    有些是共用一部分东西
    有些甚至限制线间互通

    有些互动的游戏在不同线上看不到其他非同线角色避免客户端渲染不了那么多其他玩家

    每个游戏本身 都基于自身的实际情况和互动性 对自己线的共享和不共享的东西有自家定义

    比如传统 mmorpg 游戏 举个上古的例子 经典的二十年前的传奇 这边搞着攻城守城战 总不能看不见不同线的其他玩家
    否则 1 线杀光了防守方 2 线守住了怎么算...
    yankebupt
        13
    yankebupt  
       2 天前
    instance 吧。
    如果一个 instance 百人在线,每个人都要发送这100个人的数据,100个人就是100倍,相当于10000份数据,还要处理他们之间的交互。
    如果是10个 instance ,平均每个只需处理10人交互,发送 10x10=100 份数据,10 个加起来才 1000 份数据,光带宽省到原来的10分之一……
    更别提游戏中的不同区域,实际上很可能都是不同的 instance ,因为之间很少有数据交互,只需发送同一个“线”的一些通知即可。
    jackOff
        14
    jackOff  
       7 小时 50 分钟前
    一个物理机启动多个游戏进程实例,所以有的跨区联机匹配其实就是局域网行为。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   934 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:42 · PVG 02:42 · LAX 11:42 · JFK 14:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.