怎么样参与到ARG游戏玩家角色扮演中的多媒体互动游戏?

1972年6月5日,“为了这一代和将来的世世代代保护和改善环境”这一著名宣言响彻瑞典首都斯德哥尔摩。这是全球首次人类环境会议,会议上通过了著名的《人类环境宣言》及保护全球环境的“行动计划”,以应对工业革命以来全球范围内日益加剧的环境污染和生态破坏。

2021年,环境和生态保护再次汇聚了世界性的关注,尤其是“碳中和”成为了今年的一大热词。数据表明  年为有记录以来最暖的10年,全球气温升高引起的海平面上升、冰川消融、极端气象等问题日益凸显。为有效应对全球气候变暖的问题,世界各国均采取措施积极推进碳减排,中国也将提高国家自主贡献力度,力争于2030年前达到碳达峰,争取在2060年前实现碳中和。围绕这一目标,推进绿色低碳生产是大幅降低碳排放的重点,而在全社会形成节能低碳的生活风尚也是实现碳达峰、碳中和的关键环节。

近年来,游戏和游戏化在提升公众环保认知、倡导可持续消费行为的作用正在受到越来越多的关注。2019年9月联合国气候峰会上,联合国气候规划署发起了“玩游戏,救地球”(Playing for the Planet)联盟,希望和全世界游戏行业联手,鼓励更多玩家参与到环境保护的行动中,该联盟成员包括索尼、微软、育碧等世界级游戏公司。2021年3月2日,腾讯游戏旗下天美工作室群也应邀加入了“玩游戏,救地球”联盟,成为联盟成员中第一家来自中国的游戏研发工作室。

“游戏行业有能力触达地球上1/3的人口,拥有极高的影响力,吸引了全球数10亿人的目光。应对气候危机需要所有人的参与。”正如联合国环境规划署教育和青年部主管、“玩游戏,救地球”联盟发起人Sam Barratt先生所说,游戏具有触及每个国家、每个人群的真正潜力,如同一个互动引擎,驱动更多玩家共同应对环境挑战。

过去20年来,游戏和游戏化方式已被广泛应用于环保促进领域,涉及主题丰富多样,包括可持续发展教育、节能、改善空气质量、废物管理、节水等,但主要的类型可以归纳为两种。通过对一些环保类游戏进行了梳理,研究人员发现大多数游戏往往通过提供可持续发展问题相关知识,来帮助玩家熟悉某个主题。一类游戏侧重于引导玩家探究造成某种环境问题的因果关系,从而促进玩家态度和行为的改变;另一类则更侧重于激发玩家的创造力,思考解决方案。 

例如南佛罗里达大学开发的《冰川对冰山》(Glaciers versus Icebergs)[1]就为玩家提供了一种互动式发现学习环境。游戏中,玩家扮演一位考古学家,正在融化冰块以寻找隐藏在因纽特人村庄附近陆冰或水冰中的猛犸象遗骸。如果融化了太多的陆地冰(冰川),则会提高湖泊的水位,并淹没附近的一些房屋;但如果发现毛茸茸的猛犸象,则可以赚钱,玩家可以用这些钱将因纽特人的房屋搬到更高的地方。通过这样的方式,帮助玩家了解冰川融化与冰山融化对海平面的不同影响。

而联合国开发计划署Cap-Net和联合国环境署DHI(Cap-Net-UNDP and UNEP-DHI)开发的《水上共和国》(Aqua Republica)[2]则旨在激励玩家在虚拟环境中探索现实中的分水岭治理策略。游戏中,玩家扮演Aqua Republica规划委员会的成员。管理难点在于该流域地图根据行政区划被一分为二,而玩家只能在下游进行工业、农业或生态服务建造,AI则决定上游邻居的行动。游戏目标是提高收益,并且确保区域发展可持续化,因此要求玩家必须找到方法来应对分水岭管理中涉及的冲突和权衡取舍。

研究人员分别从传播学、教育学、心理学角度探究了在提升环保认知与行为的方面,游戏创造积极环境,激发个人内在动机,促使用户主动改变行为的优势。

从传播学与教育学的角度,游戏及游戏化方式为玩家提供了主动学习、亲身经验、真实模拟、实际应用和可衡量的结果,从而更能引发玩家对于现实问题的思考和行为的反思。[3]其一,相比于书籍、视频等被动学习的方式,游戏是一种“设计的体验”,使玩家可以在其中通过实验探究学习。玩家能够按照自己的节奏学习并做出明智的决定,而不是从阅读和传统讲座形式中吸收信息。其二,通过亲身经历,游戏给玩家提供了高度自主性和决策权,帮助玩家“进入”游戏设定的情景中,在情感层面上与角色、故事情节和环境建立联系。其三,游戏在虚拟环境中创设的真实模拟,帮助玩家了解不同因素带来的结果,以及采取的行动所引发的后果。其四,游戏可以模拟复杂的模型,例如可视化大气系统或水资源管理等动态变化的系统,游戏能够针对性地进行变量控制,从而可以让玩家动手操作。其五,游戏还可以跟踪玩家表现,例如对于环境问题的动机、态度、价值观,从而衡量玩家的学习效果。

从心理学的角度,White等人提出SHIFT模型阐释了游戏如何通过树立社会规范和行为训练帮助玩家养成环保行为习惯。[4]SHIFT模型认为,游戏能够帮助人们克服社会影响、培养良好习惯形成、切实改变行为方式。很多游戏都发布排行榜,积极开展团队活动,这些都是提高社会影响的手段。社会规范是一种有关人们当前行为和理想行为的信念,也是社会影响的组成要素之一。如果一款游戏或应用能够比较玩家的行为,并对表现出特定行为的玩家给予奖励,则此类游戏或应用就有可能将环保行为树立为社会规范。

习惯养成是SHIFT模型的另一个要素。玩家在游戏环境中练习环保行为,离开游戏后可能会继续重复该行为,从而将行为变成习惯。SHIFT模型认为,气候变化的影响并不会在短时间内显现,因此个人可能并没有立即改变行为的紧迫感。为解决这个问题,游戏和应用可以为玩家制定切实可行的环保目标,在玩家采取预期行为后给予奖励。

从效果来看,研究人员近期发表的多篇文献都表明,游戏化和应用极有希望在人类与气候变化等环境问题的对抗中发挥重要作用。例如数据表明,参与者在试玩四个月《节能游戏》(Powersaver Game)[5]和《少喝果汁》(Reduce Your Juice)[6]后,减少了日常生活中的能量消耗。有些研究生在玩过《工厂英雄》(Factory Heroes)后报告说,这款游戏加深了他们对可持续制造实践的了解。除了文献中这些小范围试点的游戏项目,本文也收录了20款近十年来制作精良的环保类游戏。

《塑料》是南加州大学(USC)的学生开发的免费游戏,开发团队认为游戏是激发环保行动的关键。这是一款叙事类拼图平台游戏,游戏中玩家将扮演诺亚,置身于充满塑料的世界,为了拯救世界需要做出各种各样的选择。这款游戏引导玩家思考我们扔掉的垃圾和我们回收的塑料,通过讲故事的艺术和玩家实时做出的互动,揭示我们如何看不到它的去向或它如何产生影响。

《光之城》是State of Play和 Noodlecake Studios开发的,一款完全由纸、卡片、微型灯和电机手工制作而成的解谜冒险游戏。游戏中几乎每个谜题都涉及使用可再生技术为某个地点供电,或者探索一种自给自足的形式,旨在提高玩家对可再生能源技术的认识,以及可持续发展的实践。

《蓝色之外》是一款单人叙事冒险游戏,玩家将通过深海探险家兼科学家 Mirai 的视角探索海洋的奥秘。Mirai的研究团队将使用突破性技术来观察、聆听所有海洋生物并与之互动。这款游戏由E-Line、BBC Studios、OceanX Media 和一些科学界领先的海洋专家精心打造,为玩家设计了一个令人回味的叙事和对一个未受破坏世界的超现实探索体验。Beyond Blue 还提供了一个游戏内百科全书,汇集了玩家在旅途中遇到的所有海洋生物。它包含屡获殊荣的纪录片《蓝色星球 II》中的见解和镜头,并鼓励玩家了解和反思令人难以置信的浩瀚海洋。

Studio开发的一款横向卷轴无尽跑酷游戏,玩家可以帮助 Maya 收集水和其他收藏品,以及躲避敌人。通过收集水,玩家可以解锁 Maya 故事中的新章节,Maya需要学习新技能,这样她就可以更快地收集水并更好地保护它。这个游戏突出了缺水对印度贫民窟和农村地区女童教育的影响。跑酷过程中,玩家会获得有关水资源短缺、当今如何使用水资源以及如何在日常生活中保护水资源的更多信息。此外,游戏网站上还为教师提供了一份 4-6 年级课程计划供免费下载。

《世界的命运》是Red Redemption开发的一款回合制策略游戏,每一回合代表5年。该游戏具有一系列戏剧性的场景,这些场景基于未来 200 年的最新科学。玩家必须在保护地球资源和气候与不断增长的世界人口需求之间进行平衡——更多的人口意味着需要更多的食物、电力和生活空间。《世界的命运》模拟了一个气候危机中的星球,玩家必须学习如何管理舆论、应对全球变暖、平衡工业发展和维持人类发展指数。

联手开发的《绿色空间》这款社交媒体游戏,通过废物管理来促进环保和可持续发展。在过去的 300 年里,人类一直在将垃圾送入银河系,无意散落在周围的行星上。垃圾清理绿色太空军团的太空看门人被派往外太空清理行星,让它们重新适合居住。玩家需要通过社交网络互动以获得火箭燃料、积分、能量和经验值。《绿色空间》鼓励玩家在游戏中与他们的 Facebook 好友互动,作为对积极的环境行动和影响的协作努力的一部分。此外,Rocket Owl 和 WeForest还启动了Play2Plant项目,当玩家在游戏中到达某些里程碑时,游戏团队则会在现实中植树来匹配玩家的努力。

平台:iOS、安卓、网页

Visuals 开发的一款科学模拟游戏,讲述了气候变化对南极冰盖的影响。玩家负责控制冰盖的大小,以便企鹅到达目的地。该项目结合了实地考察和计算机建模,以研究该地区大气、海洋和冰盖变化之间的关系。科学家们使用基于计算机的冰盖模拟模型来了解冰的行为并预测未来的行为。《流冰》由自然环境研究委员会(NERC)资助,作为一个项目的一部分,该项目旨在调查南极洲威德尔海地区近期可能发生的情况以及可能对全球海平面产生的影响。

《拯救犀牛》是Hello There和Perfect World基金会推出的一款手机游戏。游戏中,玩家可以扮演犀牛或大象,试图逃离偷猎者;帮助南非军队阻止偷猎者在非洲广阔的平原上杀死犀牛。犀牛因其角而被猎杀,这些角在黑市上以高价出售。《拯救犀牛》旨在提高人们对犀牛可怕处境的认识,并为基金会的物种保护工作筹集资金。

Theory联合推出的一款回合制策略网络游戏,可帮助玩家了解中央海岸的开发和可持续供水系统的维护。游戏发生在澳大利亚中部海岸,随着社区的发展,对清洁饮用水的需求也在增加,玩家负责建造新的基础设施以满足不断增长的需求。《处理水问题》模拟了中央海岸不断增长的人口面临的水资源管理现实生活挑战。该游戏将成为教授第 3 和第 4 阶段(5-6 和 7-8 年级)学生的科学和地理教师的辅助教学资源。

Games 和国家公园管理局(NPF)开发的一款无尽的跑酷街机游戏,旨在激励玩家在美国所有 50 个州的 400 个国家公园、纪念碑和历史遗迹中提供志愿服务。作为庆祝 2016 年国家公园管理局百年纪念活动的一部分,《拯救公园》旨在鼓励新一代公园爱好者积极参与,为子孙后代保护这些重要的自然和历史资源。为了提供更多资源,玩家每下载一次 Save

主题:文化意识和环境教育

《永不孤单》是Upper One Games和E-Line Media推出的一款平台游戏,玩家扮演年轻的伊努皮亚克女孩 Nuna 和她的北极狐。故事围绕着调查Nuna 村庄肆虐的暴风雪来源并恢复自然的平衡而展开。与传统的平台游戏需要克服障碍和打败敌人不同,Never Alone 的叙事以口头故事的形式讲述。奖励玩家具有收藏价值的伊努皮亚克长老、讲故事者和社区成员分享的视频片段故事。该游戏是与阿拉斯加原住民社区合作打造的,它深入探讨了阿拉斯加伊努皮亚克人与周围世界的内在关系。 

主题:气候变化和气候小说

《未来海岸》是哥伦比亚大学和美国国家科学基金会推出的一款平行实境游戏(ARG),给玩家提供了一种协作叙事实验,探索气候变化的影响,并让玩家有机会以独特的方式与观众进行讨论。玩家通过拨打 FutureCoast 热线并留下语音邮件,然后将其添加到网站,其他玩家就可以在该网站上收听语音邮件并将其拼接成他们自己的版本,从而编织一个合作气候小说。《未来海岸》让真实的个体分享他们对气候变化的想法、担忧和预测,鼓励了普通人面对世界气候变化的现实。

Games开发的一款移动益智游戏,玩家可以在解决消消乐谜题时了解野生动物和科学事实。玩家可以在游戏中探索不同的生态系统和营养区,并通过完成捕食者和猎物之间的匹配来促进生态系统蓬勃发展。玩家可以了解动物食物链、动物种群的活力以及环境的其他变化如何影响动物种群。通过熟悉而有趣的游戏形式,玩家可以更好地了解南美洲热带雨林和太平洋水域的动植物之间的关系。

主题:海洋污染和气候变化

Az 的移动街机游戏。游戏充满了对抗和幽默,旨在推动实现社会和环境目标。玩家必须将绝望的珊瑚从塑料污染和过度捕捞的危险中拯救出来,游戏宣传海洋健康意识,激励玩家积极为环境保护做出贡献。并且,旨在通过游戏中的碳吸收计量仪来提高人们对气候变化不利影响的认识。与 Carbon Neutral 合作,Bleached

主题:冲突解决和自然资源管理

Games开发的一款在线多人生存游戏,玩家必须使用来自令人难以置信的反应性生态系统的资源建立文明,而玩家采取的任何行动都会影响世界上的一切。游戏允许玩家与游戏世界及其他玩家彼此互动,它促使玩家在荒野中重新制定可持续的生活方式。玩家必须关心均衡营养,需要控制自然资源的收集,否则会对环境造成负面伤害或破坏。《生态》由美国国家科学基金会和教育部共同资助,已有超过25万名玩家参与其中。与其他生存类游戏不同,Eco 没有任何玩家之间或怪物之间的战斗,玩家角色也不会死亡,而是鼓励玩家与其他玩家积极合作,共同创造可持续的文明。

Digital 和联合国教科文组织圣雄甘地和平教育研究所(MGIEP)合作的一款受联合国可持续发展目标启发的基于研究的叙事视频游戏。玩家将在肯尼亚、挪威、巴西、印度和中国与五位年轻英雄相遇,与他们一起解决全球性问题——例如疾病、森林砍伐、干旱和污染。2014 年,联合国教科文组织圣雄甘地和平教育研究所(MGIEP)发起了首届国际游戏挑战赛,邀请有关促进和平、可持续发展的游戏提案。 2015 年 10 月,经过国际知名评审团的严格指导,《拯救世界》入选。

Studios推出的遗传生存游戏,是一款结合了模拟和生存元素的回合制策略游戏。玩家可以根据真实的遗传学塑造动物物种,而让自己的物种在各种困难中存活,例如掠食者、气候变化和疾病传播,这取决于玩家的决策。在Niche中,向玩家介绍了遗传学的科学机制:显性-隐性遗传、共显性遗传等。游戏还具有种群遗传学的五个支柱:遗传漂变、遗传流动、突变、自然选择和性选择。所有游戏中的知识都与游戏机制交织在一起,创造了边玩边学的效果。

世界野生动物基金会(WWF)的 WWF Free Rivers 是一款增强现实游戏,让玩家能够在舒适的家中观察五种不同的河流栖息地并与之互动。游戏旨在教授生态系统如何依赖健康、流动的河流。玩家沉浸在喜马拉雅山脉、南美草原和东南亚三角洲的模拟环境中。WWF Free Rivers 向玩家介绍筑坝等行为如何通过与居住在其中的人和野生动物的互动来影响河流流量和健康。该游戏提供了一种深度互动的叙事体验,使用最新的沉浸式技术将环境学习带到玩家手中。

Games合作推出的类银河战士恶魔城风格的生存游戏,外星人 Morphy坠毁在一个未知的星球上,需要寻找失踪的船员。旨在向玩家传授动物适应的基础知识,玩家必须面对一系列具有挑战性的平台障碍,这些障碍只能通过扫描具有特定环境特征的动物来克服。然后可以将扫描的特征添加到 Morphy 的能力中,帮助玩家更好地驾驭当前的环境。游戏通过实验和探索,教会玩家如何使用不同动物的生存特征和技能。从而帮助玩家了解特定的野生动物行为和策略,以及动物如何在现实世界中应用这些特征。

世界野生动物基金会(WWF)的 WWF Free Rivers 是一款增强现实游戏,让玩家能够在舒适的家中观察五种不同的河流栖息地并与之互动。游戏旨在教授生态系统如何依赖健康、流动的河流。玩家沉浸在喜马拉雅山脉、南美草原和东南亚三角洲的模拟环境中。WWF Free Rivers 向玩家介绍筑坝等行为如何通过与居住在其中的人和野生动物的互动来影响河流流量和健康。该游戏提供了一种深度互动的叙事体验,使用最新的沉浸式技术将环境学习带到玩家手中。

来源: 腾讯互娱社会价值研究微信公众号

  以上内容版权均属广东新快报社所有(注明其他来源的内容除外),任何媒体、网站或个人未经本报协议授权不得转载、链接、转贴或以其他方式复制发布/发表。协议授权转载联系:(020)。

}

在讲述万人同屏的技术问题前。一定要先回答一个问题,游戏中万人同屏究竟有什么意义?但这并不是一个问题而是三个问题他们分别是。

1,显卡绘制1万个高质量模型有什么意义?

2,游戏服务器承载1万个玩家互动有什么意义?

3,在客户端或单机中1万个高智能的游戏角色有什么意义?

显卡绘制1万个高质量模型的意义无需多说了。人的眼睛有多挑剔,对显卡性能的要求就有多高。高性能显卡为什么卖的比低性能的贵。用过苹果的人绝对不会再去用诺基亚。一场宏大绚丽的场景可以产生一半的游戏内容。所以好的游戏对显卡性能的追求就像吊丝对女神的向往。

游戏服务器承载1万个玩家互动的意义。玩家的互动是网游的灵魂。游戏的内容总会有被玩尽的时候。一个游戏能存活20年依靠的就是玩家的互动。互动产生的乐趣才是无穷无尽的。人和人之间的斗争才是无穷无尽的。这就是为什么围棋被玩了几千年的原因。在几十个人的战场里玩家被裹挟着只能冲锋!冲锋!再冲锋!但在几百个人的战场里,决定胜负的可能只是偷得一把大门钥匙。

在客户端或单机中1万个高智能游戏角色的意义。网络还是单机游戏不一定都是千篇一律的场景。在随机地图中来一次玩家独特的大冒险。参与到两个部落之间旷日持久的大混战中。让每个玩家拥有自己独特的经历。只有数量庞大的沙盒游戏才能做到。

万人同屏技术与其说是一种技术,不如说是对游戏上限的突破。除非你的游戏完全由剧情组成。否则绚丽的视角,复杂的互动,高随机的可玩性。都是在从技术角度极大扩展了游戏的内容。给了游戏更高更广的设计空间。技术上限的提高代表着更多的可能。也代表着你会做出一款特别的游戏。

3D游戏的万人同屏是非常古老的话题。从网游的传奇,永恒之塔到单机的战争模拟器,骑马砍杀,刺客信条。是什么限制了3D游戏的万人同屏。为什么万人同屏很难做。问题出在哪?怎么去解决?要实现3D游戏的万人同屏,就必须解决以下2个问题。

第一个问题,万人同屏受限于显卡的渲染能力。

第二个问题,万人同屏受限于对1万个人的逻辑处理能力。

哪么我们先来看第一个问题。什么是显卡的渲染能力呢?我们知道3D环境下最小绘制面积单位是三角面。显卡以每秒60次的频率将这些三角面投影到2D平面。而CPU同样需要以每秒60次的频率将要显示的数据准备好。并提交给显卡进行处理。

我刚巧有一台10年前的笔记本。也就是和永恒之塔同时代的笔记本。这台笔记本的渲染能力是以每秒60次的频率绘制2万个三角面。2万个三角面是什么概念呢?一个游戏角色大概要500到1千个三角面。哪么2万个三角面可以绘制40个左右的玩家。而游戏里最基本的正方形需要12个三角面。如果使用这台笔记本玩万人同屏的游戏。哪么你只能看1万个三角形在蓝色背景下奔跑。或者看见1666个正方形在蓝色背景下奔跑。

R7-4800U内置的显卡里可以每秒60次的频率绘制500到1000万个三角形。勉强可以实现1万个游戏角色在蓝色背景下狂奔。在显卡性能允许范围内万人同屏是质量和数量的选择。万人同屏相当于把显卡性能平分1万份。这样每份的质量肯定会比较差。而在10年前把显卡性能平分1万份,就只能保证1万个三角形的同屏。在10年前只有高端显卡可以在质量和数量上满足万人同屏。所以万人同屏的技术在10年前只有少数高端玩家可以体验。而随着硬件技术的发展,显卡性能的显著提升。今天就是CPU的内置显卡也能在满足一定程度的万人同屏。

既然现在的硬件条件已经有很大的改善,为什么能够做到万人同屏的游戏还哪么少呢?

这主要是3个方面的问题。

第一个原因是虽然硬件性能不断提升,玩家对画质的要求也在不断提升。在质量和数量的比较下,策划选择了游戏质量。在游戏中技术是对策划和美术的基本支持。游戏选择质量还是数量都是策划对游戏玩法的设定。无论策划做出那种选择都能够实现是公司技术实力的体现。技术给了策划更多的选择,就意味着策划有更大的舞台,能够做出更内容更丰富的游戏。

第二个原因是网络游戏服务器的“相位技术”并不普及,只被魔兽和EVE等少数厂家垄断。导致网络游戏的承载人数非常有限,大多数游戏公司的技术只能满足5百到1千人左右的水平。受到服务器技术水平的限制,导致网络游戏的客户端无法实现万人同屏。

第三个原因是单机技术水平不足。单机游戏显然并不受到服务器处理能力的限制。显卡能力也可以得到充分释放。但要满足万人同屏需要每秒钟处理60亿条以上的游戏数据。普通的游戏厂商没有这个技术实力。

稍后我们来详细了解第三个原因。先简单的说下第二个。网络游戏的特点就是所有数据的处理都在服务器完成。一个是为了能够同步给其他的玩家,也是为了数据的安全。整个处理过程是玩家通过键盘鼠标生成请求命令并发往服务器。服务器接到命令后处理相关数据,并生成返回消息发给玩家和相关的玩家。玩家客户端接到命令后通过3D引擎设置相关数据,并显示到屏幕上。例如玩家移动的消息。键盘控制玩家角色向前移动,这个消息发送给服务器后,服务器记录移动数据,并将数据转发给周围的玩家。这样周围的玩家才能看这个玩家在移动。所以网络游戏中客户端功能被分为了三大部分。第一接收键盘鼠标的输入。第二网络发送并接收服务器数据。第三根据返回数据调用相应的资源并显示在屏幕。哪么能否万人同屏就受到两个条件的制约。第一个是显卡能否按游戏要求的品质显示出足够数量的对象。第二个服务器能否支持足够多的玩家在线。

我们通过前面对渲染的介绍可以知道。显卡降低游戏品质哪怕是只显示1万个三角形。也是可以实现万人同屏的。所以今天的游戏引擎和显卡性能都不是制约网络游戏中万人同屏技术的关键。只要游戏服务器能够支撑足够多的玩家就可以实现客户端的万人同屏。在上一篇文章中,我介绍了游戏服务器《使用redis实现5万人同服的“相位技术”》的文章。有兴趣的同学可以去了解下。

下面我要重点介绍单机3D游戏如何实现万人同屏。下面默认的语言环境是使用go语言。包括go语言中消息队列和服务的概念,不熟悉的同学也不用着急,下一篇文章中我会来解读示例代码。

前面我介绍了渲染并不是制约万人同屏的关键。在单机环境下制约万人同屏技术的是对游戏数据处理的能力。顾名思义万人同屏是指1万个游戏角色在屏幕中移动。如果仅仅是移动非常的容易我写了示例test_move给同学们参考。

技术困难的是在移动的过程中要不断处理各种逻辑。例如攻击附近的对象,跟随的对象,技能的触发,任务的触发,物品的拾取,攻击伤害,血量的扣减等等。这就要求游戏角色能够感知周围的其他游戏角色。显然万人同屏的另一个意义就是这1万个游戏角色要拥挤在很小的地图空间。又要感知周围游戏角色的状态进行逻辑判断。极端情况下就意味着每帧,也就是每秒60次对周围1万个角色的状态进行过滤。哪么在极端情况下,意味着1万个角色以每秒60次的频率对其他1万个角色状态进行过滤。也就是每秒钟要进行60亿次的数据筛选。假设我们所有数据处理都是在map类型中完成了。对map类型进行10万次插入需要/surparallel//surparallel/unity_example_of_pelagia/tree/master/3D_Ten_Thousand

这里我使用unity实现了一个万人同屏的示例。准确的说应该是1万个正方形同屏的示例。万人同屏的渲染优化已经很成熟了。远处用贴图,削减材质等等。这里就不再展开讨论。示例代码主要展示了在服务模式下,如果开发1万个人同屏的AI。如何通过服务模式充分发挥CPU并行的优势。

创建服务先要通过json文件定义服务及其使用的数据。通过3drpg2.json定义了所要使用的服务。他们是manager负责管理配置和消息路由功能。role的角色管理服务。space负责空间管理的服务。test为通过控制台调用测试所需要的入口。

其中dbPath为数据库文件的保存路径。core为设定的cpu核数也就是在pelagia中线程池分配的数量。maxTableWeight为每个文件表的宽度。pelagia中表是数据的基本单位,每个表都有自己的设定宽度。如果想让表独享文件就把表的宽的设高,这样在一个文件就只能容纳一个表。宽度是一个参数和实际文件长度无关。luaLibPath为lua虚拟机的路径。logLevel为错误输出的等级为1到5。logOutput为错误输出的方式分别为打印到屏幕print和输出到文件的file。

manager就是典型的全局单例服务,在单例服务中可以使用数据库表。在manager中被写入的数据库表global,global_str,space要单独声明,如果是读取的表不需用声明。这里也定义了入口的类型为lua脚本,已经文件和函数。这里也有一个宽度,表示在线程中的宽度。所有的服务都会依据宽度被平均分配到线程池中的线程中。如果一个服务非常宽例如999,哪么他就可能会独占一个线程。我们看到global表中也有一个宽度的设定,这个设定和文件宽度设定相对应。如果设置的较大就会有独占文件的可能。

这一段是关于role服务的定义。在role服务中没有使用任何表。这个服务就是上面我所讲到的多例服务并且无共享数据。意味着每次调用服务都会被随机分配到线程池中任意线程中运行。这个类型的服务可以读取数据库中的数据但不能写入数据。space的定义和role是一样的,空间服务接受role服务提交的空间数据并提供查询。

开发客户端的服务和服务器的服务完全不同。服务器的服务可以使用分布式的方式进行扩展。并且用户的行为是多变且无法预测的。客户端的通信也是需要cpu处理,并且随着服务的增加导致成本高昂。最开始我考虑像服务器一样为每个用户创建一个服务。这样用户之间有了数据隔离并且功能相对简单。但1万个用户服务同时活动造成了通信风暴。主要包括用户心跳和空间数据的更新。这迫使我开始优化服务之间的通信。

首先是在每个线程创建了用户服务,并将用户随机分配到这些服务上。然后统一处理一个服务中所有用户的心跳信息。这样减少心跳通信的发送。

RemoteCallWithMaxCore会在每个线程执行一次初始化服务。然后通过随机的方式将角色分配到角色服务上。空间服务也是采用类似的方式。

--随机分配到一个role服务

角色服务包括服务的初始化,创建角色,心跳三个功能。通过创建orderid的方式来使用服务的私有数据。每次返回服务后通过pelagia.OrderID();可以重新获得。

角色的具体功能处理是由roleproc完成的。

创建角色功能为角色随机分配一个空间服务。并生成移动的路径,包括开始位置,结束位置,开始时间。然后将移动的路径发往空间服务和3D引擎。3D就可以驱动角色开始移动。空间服务可以根据移动数据更新九宫格数据。

在角色服务内每次心跳都会计算最新的位置。用于判断移动是否已经结束。如果结束就重新生成目的位置。

角色服务最重要的功能是在每次心跳时从空间服务获取周围角色的信息。拿到周围角色信息后才能开始各种的逻辑计算。因为我们有多个空间服务。所以每次要从多个空间服务获取信息。整合在一起后才是角色完整的周围信息。每次获得空间服务信息的处理公式为

用户数量*空间服务数量*帧数*(json的加解码等操作的时间)

如果不对获取行为进行限制,假设有4个空间服务,1万人每秒60帧,就会有240万次的查询这样会导致服务之间的通信风暴。

--随机发起查询周围玩家进行逻辑处理

对于周围角色的数据查询可以有很多种优化操作。例如只有在释放特定技能时查询一定数量的角色,随机返回一个角色等等。这样都可以限制通信风暴的产生。

通过调整定时器参数可以设定刷新的帧率。日志输出的等级以及移动的速度。

使用服务替代多线程开发对于客户端是全新的概念。虽然在服务器领域这个概念已经相当的成熟。相对于多线程的方式,服务的线程池,消息通讯,私有数据,内嵌kv数据库有效的隔离了多线程的不确定性。优化服务的通信可以有效的降低cpu的使用率。增加服务的缓存也可以降低cpu的使用率。这些新的优化手段使万人同屏的开发扫清了障碍。

我垂涎3D游戏的万人同屏技术很久了。2009年的韩国网游《永恒之塔》让万人同屏技术第一次出现在公众视野。那年我刚入游戏行当不久。还在摆弄2百多人就卡爆了2D手游服务器。第一次看到满屏幕玩家的视频,我只能用震惊来形容。在国外骑马砍杀,刺客信条等等万人同屏的游戏已经大量普及。国内对于万人同屏的技术资料依然非常稀缺。一方面这些技术都是顶尖的技术,只存在于部分的公司和开发人员手中。另一方面这些技术也都是在探索阶段,本身也是对软件能力上限的探索。希望这两篇浅析万人同屏的文章和示例能够对你有所启发。

来源知乎专栏:分布式系统学说

}

我要回帖

更多关于 arg游戏是什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信