跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 3D 游戏的万人同屏技术详解(2)
未分類
2 9 月 2020

3D 游戏的万人同屏技术详解(2)

3D 游戏的万人同屏技术详解(2)

資深大佬 : gantleman 34

全文地址
https://zhuanlan.zhihu.com/p/195059458

在<使用 redis 实现 5 万人同服的’相位技术’>中我介绍了基于九宫格和相位技术的空间管理技术。这里我们也要借鉴游戏服务器中“服务”的概念。可能有些同学没有接触过游戏服务器,对服务的概念不是很熟悉。服务可以看做是一个独立的线程环境。这个线程监听着一个消息队列。其它的服务可以发送消息给他。这种方式在服务器开发中的 go 语言,erlang 语言,skynet 框架中被广泛应用。消息队列保证了服务所创建的数据是私有并且多线程安全的,只能通过消息通讯的方式进行修改。服务的概念为多线程下使用数据的安全问题提供了保护。通过消息通讯建立了在多线程下的秩序。但这种方式在客户端使用的并不多。各种服务的框架也都是在服务器端使用的多。

客户端使用多线程开发管理 1 万多个线程将会是一场噩梦。而管理 1 万多个服务对技术水平要求也还是比较高的。针对客户端没有多线程的服务框架问题,我开发了 pelagia 框架。借用“服务”的概念来管理客户端多线程。通过内嵌 kv 数据库和预判以及服务私有数据的概念彻底消灭多线程死锁和依赖的问题。因为只有解决多线程的安全问题。才能进一步思考如何优化通信和计算以及存储的平衡问题。安全问题不解决所有的优化问题就会是空中阁。

全文地址
https://zhuanlan.zhihu.com/p/195059458

大佬有話說 (29)

  • 資深大佬 : lychs1998

    但万人同屏的难点难道不是在人物 /角色模型高速&高质量渲染上么……

  • 主 資深大佬 : gantleman

    @lychs1998 我在详解(1)做了解释 https://zhuanlan.zhihu.com/p/195065464
    就像通关一样,渲染只是瓶颈的第一关,并且大多数公司在第一关就挂了。

  • 資深大佬 : across

    @lychs1998
    我自己没做过。但是记得超大数量的,都是同类型的重复渲染,unity 以前也出过类似教程,比如 GPUInstance 相关的:
    https://blog.csdn.net/leonwei/article/details/73274808

  • 資深大佬 : murmur

    我也不知道万人同屏的场景是啥,现在 mmorpg 一般一个服务器跑到死也才八千一万人,玩的时候同屏 200 人以上优化差一点的游戏就 gg 了,当年魔兽世界冬拥湖都没扛住渲染压力

  • 資深大佬 : pabupa

    Earth online?

  • 資深大佬 : learningman

    @pabupa Earth Online 万人同屏也不多见。。。

  • 資深大佬 : dogfeet

    游戏中的这种场景,一般都是不用 redis 的。如果考虑支持在线数高,还是偏向于数据直接放在场景服务的内存中。

  • 主 資深大佬 : gantleman

    @dogfeet 现在用 redis 很多了,毕竟谁也不敢说自己写的缓存服务器比 redis 强。场景服务器是第二代服务器的概念,魔兽十年前就已经是相位技术的第三代了。

  • 資深大佬 : chihiro2014

    @lychs1998 渲染这种其实放本地,倒也不算啥。难点其实在于其他人的实时状态和网络带宽利用上面

  • 資深大佬 : murmur

    @gantleman 恰恰相反,魔兽是通过相位技术打散玩家,减少负载的,以前练级就测试过,同一个服务器,同一个工会的人,在一个图升级,一些人是看不到另一些人的,都被送到其他位面了

  • 資深大佬 : sola97

    GPU 吃不消

  • 主 資深大佬 : gantleman

    @murmur 我在另一篇文章介绍了服务器如何使用 redis 实现位面技术。https://zhuanlan.zhihu.com/p/166347236 。这里介绍的是并行技术如何应用到客户端实现万人同屏。例如使用万人同屏实现单机游戏如骑马砍杀或刺客信条。

  • 主 資深大佬 : gantleman

    @sola97 万人同屏由 3 个问题组成,我在详解(1)做了解释 https://zhuanlan.zhihu.com/p/195065464 。渲染能力是这 3 个方面限制的一种。网络游戏的服务器和单机游戏的 AI 处理也都限制了万人同屏技术。

  • 資深大佬 : onionKnight888

    @murmur 大灾变之后吧

  • 資深大佬 : oneoy

    单机 5w 人? 我写的后端目前单机 8k 人在线没问题 服务器配置 4h8g

  • 主 資深大佬 : gantleman

    @oneoy mmorpg 能做到 8k 人已经棒棒的了。魔兽没使用相位技术前只能做到 2 千到 3 千人。国内普通水平在 5 百到 1 千人。

  • 資深大佬 : luckyrayyy

    永恒之塔有 4 ~ 6k 人同地图军团战的场景,但是也不会出现在一个屏幕吧……而且客户端早就爆了,把所有人的模型给去掉,施法特效去掉才勉强能玩。

  • 資深大佬 : yanguangs

    @onionKnight888 WLK 引入的,联机的时候就能很明显的看出来,做完主线的人跟没做完的人相互看不到.

  • 主 資深大佬 : gantleman

    @luckyrayyy 同步一万个玩家的数据需要多方面的硬件支撑,目前百兆光纤的速度是 10M 每秒。10M 除以 1 万就是 10 来个字节了。同步一万个玩家的数据对带宽,显卡,服务器都是挑战。

  • 資深大佬 : 993651481

    万人同屏 = 暂时办不到

  • 資深大佬 : Mac

    百人同屏就能卡成 PPT

  • 資深大佬 : sola97

    我玩的 VR 社交游戏,头显单眼 1660×1440,玩家每人平均 3 万面,30 人同屏就掉到十几帧了,啥时候能做到刀剑神域那样?

  • 資深大佬 : sola97

    @sola97 分辨率 1600×1440

  • 資深大佬 : weizhen199

    只渲染血条都能卡死.jpg

  • 主 資深大佬 : gantleman

    @weizhen199
    @sola97
    @993651481
    @Mac

    有次听制作人说他调研玩家,对 5 千人以上的团战非常感兴趣。我还不太相信,万人同屏的概念都出来这么久了,大家对这个热情还这么高。

  • 資深大佬 : undef404

    不懂就问, 万人同屏感觉主要压力在客户端这边. 服务器这边万人在线和万人同屏有啥区别么?

  • 資深大佬 : yangbonis

    站在一万人的广场上也不会每一个人的动作都在意啊

  • 主 資深大佬 : gantleman

    @yangbonis 你这个问题非常好啊。站在 1 万人的广场上有两个含义,你可以和其他 1 万人做交互,你也可以选择不和其他人做交互。你有选择互动的权利。在屏幕上画 1 万个假人,这些不能互动的假人,你就没有权利去交互了。对于游戏策划的意义就更多了,没有交互的权利那么这个假人就是个贴图,对策划来说意义非常有限。可以交互,可以选择性的交互,这样的互动就可以设计出无穷的玩法。

  • 主 資深大佬 : gantleman

    @undef404 就网络游戏来说,万人同屏的压力从客户端渲染开始,网络,服务器硬件,集群硬件,ai 软件。这整个链条任何一点出现瓶颈,最终反映到玩家面前的都是客户端卡顿。所以我们会有错觉万人同屏都是客户端的锅。这个锅又黑又大,都丢给客户端哪真是太委屈了。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具