开放世界游戏的事件设计思考
2022/12/27 4:24:09
本文主要是介绍开放世界游戏的事件设计思考,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
大概我自己都时常不记得我本身是个策划,毕竟很多有能力的人都去了大公司,我们这种地方的人就需要身兼数职。大概能用在深入和研究策划设计上的时间,只有程序和美术的1/10不到吧,有点愧对自己的本职工作。
PS:近几年的代码能力真的长进很多,从一开始炜哥给我C++服务器我拿着教程都有点懵杯跑不起来,到现在拿个高级语言看个几天就能开始写东西了。甚至说美术能力都比以前长进了不少,开始理解二次元的画法了。策划其实更是需要大量积累、大量思考才能输出的领域,要更加油才行啊。
周末了,就抽点时间,把这段时间关于随机事件的思考好好总结一下。
为什么需要随机事件
万事皆有因。之所以会在这段时间都思考这个东西,是因为现在人员紧缺,但是战舰的设计规模摆在这里,如果砍掉随机事件这个特色的东西,将失去一个重要特色,甚至说游戏本身都不完整了。
好吧,上面说的是我不能放弃随机事件设计的原因。但是不能解释为什么一开始选择了随机事件。显然对于2个人做游戏,就又回到了刚才说到的困境。项目之初我就意识到我们在内容填充上可能存在数量的短板,但是如果内容过少、或补充太慢,游戏肯定是缺乏生命力的。那么这个时候随机事件也同样是一个不错的解决方案。通过各种条件组合到一起的事件(或者也可以称为任务),在有限的时间和素材中,提供了更多可能性。
所以,在项目设计之初,我就十分肯定的采用了大量 Roguelike
元素,不论是 随机性、非线性、还是 复杂性 ,从角色、地图、事件、奖励、全局因素等各方面着手,期待在可控的时间和精力里,创造出一个能让玩家沉浸其中的世界。(当然,很尴尬的是,最后非常不可控 😅 )
其实有这个设计理念并不是一天两天了,也不是一年两年,而是从我还是个少年开始的。因为25年前那个中学生的我,在那个年代接触了一个近两年特别火的游戏设计思路—— 开放世界 。
什么是开放世界
现在提到开放世界,网游玩家第一个想到的多半是《原神》,主机玩家第一个想到的多半是《塞尔达传说:旷野之息》。其实咱们重庆的本土企业也很热衷于开放世界的,举例就交给诸位看客了😁。而属于我那个年代第一个称得上开放世界的游戏,恐怕得要给《辐射》了。
在前两者推动下,开放世界的概念在当下很多游戏里又被提起,或真或假,或多或少。那到底怎样才算开放世界?
借由知乎的一个名问题我们可以窥见一斑 - 《一个开放世界游戏必须具备哪些东西才能算开放世界游戏?》 。
其中,以下两点是我认为十分重要的内容:
第一、开放世界最基本的要素是玩家在游戏里从某个地点A到某个地点B的移动,其路径应该是不固定的。或者说,对任何一个从某A点移动到某B点的行为,有无数条路线。
第二、开放世界游戏通常会尝试在游戏内按照一些规则建立起一个虚拟的世界。这个世界当中除了玩家角色外,NPC会有他们自己的活动。玩家按照游戏内规则与NPC互动时,NPC会按照规则给出反馈。在理想状况下,游戏内世界可以独立于玩家行为自行运转。
之所以提出来,是因为这两点体现了与传统游戏区别开的决定性因素——非线性设计。
线性故事的优势在于易于设计,叙事清晰,目的明确,也很好烘托剧情和氛围。但这些都是由玩家自身的叙事权利和被动代入为代价的,也就是说,玩家并不是因为自己想要做这件事而做,而是游戏告诉他只能这样做才行。
非线性设计之所以美妙,在于玩家与游戏互动的同时,投入了更多的情感和思考,也就是我们常说的代入感、沉浸感。这种感觉凭借语言是难以准确表达的,就像是你只有身处 《头号玩家》 的世界才能感受到一样。
然而非线性设计也不是完美的存在,无论是 信息不透明、目标不明确、剧情不连贯、还是 逻辑不自洽,任意一点都可以让玩家感到索然无味,毫无游戏动力。
实际上,非线性设计难度极大,以至于我在从业10多年来,自己还没有真正意义上实现过类似的设计。毕竟做设计不难,但是做好设计很难。
所以,我一直以来在思考的,就是如何在这个框框里把非线性设计的优势尽可能的呈现出来,同时,还不会有太多的重复劳动。
随机事件的设计思路
回想起来,其实对于开放世界、非线性设计理解的历程,也基本上就是非线性设计思路的深入程度。干脆就顺着这个思路来思考随机事件的设计。
分支
这个应该是最简单的非线性设计了,或者说某种程度上,它应该算是线性设计的变种而已。通过设置不同的选项,得到不同的结果,从而导致另一个事件的发生。
但是假如我们不局限于单向进程,让B任务可以去修改已经完成的A任务的结果,或者说,完成了C任务,就可以再去完成A任务,从而重新选择。这样就开始向非线性设计迈近了一步。
而这确实也是我的项目设计中随机事件的雏形。这个设计有一个后几种设计没有的天然优势,就是可以最大限度维持主线剧情的存在感,叙事依然很清晰。
网络
分支有了,那么是不是可以再进一步。A任务不再是独立的A任务,而是和B、C、D一起组成任务组I。这样的设计,将可能性变得更多,例如 “给任务组I穿插进一些零散的小任务”, “让任务组I和任务组II的选择直接触发E任务”。
这是第二版的设计思路,也是目前正在使用的。事实上,这个设计在测试中已经引起了同事和合作伙伴的好评。它在部分削弱了主线剧情的情况下,提升了游戏世界的代入感,似乎这个虚拟世界真的会发生一些意料之外的事情。
事实上,在这个阶段,我才把 任务系统
改称为 随机事件系统
的。
那为什么不按这个设计继续做下去?因为这个设计量也很大,而且任务之间的穿插很考究合理性,继续往后大量设计,极有可能造成无可挽回的逻辑错误、叙事漏洞。
全局
这个设计与前两个其实并不冲突,它是在这个事件之外设置了一系列玩家不可见的值,通过玩家完成事件所做的一些操作,转化为值的变化,从而引起单个事件或者事件组的变化,甚至可以产生新的事件和结果。
其实已经有相当多的游戏都使用了这个设计,宅如《心跳回忆》,硬如《克苏鲁的呼唤》(常说的SAN值就来自于这里)。也许它本身其实并不是 线性设计 与 非线性设计 的分界线,但是它在 非线性设计 中是可以大放异彩的。
在我的设计中本来是有少量这类全局变量存在的,但实操过程中发现其实很难控制,特别是对于一款没有具体结局的中大型网络游戏,设计的不好就意味着它可有可无,鸡肋一般的存在。因此目前已经废弃。
沙盒
好吧,这下来到了真正意义上的非线性设计了。在这个设计下面,如果能跳出游戏本身来看,主线剧情看起来其实更像是被硬加进去。因为在这种方式中,设计重点变成了用户如何与NPC、环境来进行交互。换句话说,玩家与它们交互时,它们应该展现出什么样的特点,在什么样的情况下,提供什么样的任务、什么样的选项。
是的,你其实完全可以把这种设计用程序思维表达出来,那就是 面向对象
。
在这个设计中,玩家有足够的自由度,玩家有机会通过行动、思考、表达来书写自己的“异世界故事”。
但是想象一下,假如你迷失在一个这样的世界中不知道该做什么,不知道可以做什么,甚至你做的事情在这个世界里也没有什么影响力,没有情节、没有故事……嗯,这简直是一场世纪灾难。
如果是一个有结局的游戏,那么沙盒游戏多多少少都还维持住自己的游戏性。但是对于一款开放式网游来说,如果不硬加入一条主线剧情,基本上就是应了 沙盒设计 里的 “沙” 字,真是一盘散沙。
这也是我一开始并没有选择这个方向的理由。既要设计众多的交互因子(属性和内容等等一大堆配置),又要设计一条主线剧情,这个设计量实在不是我等小民可以承受的。或者说我一个人可以承受的。
GPT?强化学习?
那么,我所寻找的出路在哪里?其实方向已经有了,那就是将游戏交互全面规则化、属性化。
在这个前提下,主线的实现也变成了规则,通过制定世界的规则、阵营的规则、环境的规则,来实现主线的推进。
如何实现?
之前的思路是GPT通过规则来理解世界结构和局部情况,从来构建剧情大纲,确定详细目标(这块表现得并不好)。然后设定各种障碍和目标后,通过强化学习,最终将生成好的特定事件,落实到各个随机生成的有特定属性的NPC或者地点上。
现在正尝试把一些本来期望用AI来实现的内容(特别是剧情大纲),转由传统的代码逻辑实现。
但是具体怎么做?一方面可能是想保密吧,但是另一方面来说,我本来也还在验证阶段,还真的就是只有四个字可说,“无可奉告” 😋 。期待可以早点实现早点面市吧,我们自己也等得太久了。
[2022年12月25日原始发布于本作者博客]
👇点击“阅读原文”可恢复文章内所有链接哦!
阅读原文:https://www.gsgundam.com/2022/2022-12-25-z02-game-open-world-event-design/
这篇关于开放世界游戏的事件设计思考的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器