如何让世界上的NPC们在玩家脑中留下记忆,是沙盒游戏的一大课题——如果只设计了交互行为和AI,而没有一定的人工剧情,NPC的行为轨迹终究还是会显得零散琐碎,一些较为复杂的经典作品桥段可能难以被演进出来;但若是选择靠大量堆砌固定剧情那就是与沙盒的思路背道而驰,无法呈现出涌现式的乐趣。
我希望在游历江湖时,有机会与NPC们发生一些“不那么日常”的故事,这个故事可能是鹬蚌相争渔翁得利,可能是被人抓走关入地牢发现神功,也可能是在寻宝的途中与群雄交锋......同时,除了玩家,NPC与NPC之间也会不断地进入到这些小剧本中:可能今天是张三在广东被李四追杀挂树被神雕救走,明天是王五在东北被赵六追杀跳崖落入泥潭捡到秘籍。
这类剧情的特征是:情节相对复杂难以被AI自发演进出来,但又没有严格的上下文要求——换言之就是对参演者不敏感,可以动态挑选演员。同时,剧本内还可能包含一些分支走向。
于是我做了一套动态剧本系统,基本实现了描述中的这种动态性。先在表格里描述好一个剧本里各演员应满足的条件(比如师徒恩怨的剧本里可能需要找一对师徒),系统会从满世界寻找满足筛选条件的的NPC塞进奇遇里;然后在ink中进行剧情文本和流程的配置,为每个选项描述其善恶等方面的性质,这样就可以看到NPC也可以在奇遇中面临选择并基于他们自身的立场和人际关系等因素来进行决策了。
写了个测试用的小剧本,ink配置:
运行时:
然后接下来的一段时间准备做做战斗部分转换下心情,于是开始重新梳理战斗数值方面的设计,最后暂时敲定了一版角色属性。等把各属性效果实装到战斗中之后,就可以着手开始做装备系统了。目标还是在POE的基础上做简化,降低理解成本和上手难度。
沙盒部分的设计+实现都是我之前没有接触过的,所以一路走下来觉得阻力还是挺大的,现在回到战斗数值的老本行,轻松多了,果然人就该活在舒适区啊( ´_ゝ`)。
上次更新还是五月底,六月的时候因为家里的一些事情中断了几周的开发,而在其后的几周里叠加上投资失利等杂七杂八的事情,精神状态一直不太好,开发效率很低,直到这两周才算基本恢复。除了外部事件因素外,因为沙盒部分依赖的工作比较繁多,见效比较慢,做下来始终见不到像样的游戏流程,有点缺乏成就感,也对开发造成了不小的阻力。
虽然之前就已经认识到,以这种一个人开局的情况,在拿出demo前别想吸引到愿意投入时间一起做的同伴,所以必须要自己独自挺到demo完成,但真正在做的时候还是会不时产生孤独感,尤其是在了解到自己看好的几个已公布项目的开发团队都是几个朋友组队开局时。
不过无论如何,现在状态已经恢复得差不多了,加上短期计划是先回去做一段时间见效快的战斗部分,所以接下来的路会相对好走一些。
需要手工撰写而不是靠AI演化出来的、拥有触发条件的、不那么日常、但又没有严格的上下文要求的故事,这几点和国外的一个叫作storylet的概念不谋而合。Storylet是互动小说作家Emily short提出的,她的博客上有不少讲storylet设计的文章,例如:https://emshort.blog/2019/11/29/storylets-you-want-them/
另外看到ink的时候我着实惊喜了一下,可能是我接触得少,但我感觉国内用这个来写剧本的开发者凤毛麟角
@icue:这位的博客我以前翻narrative相关资料时有逛到过,不过可惜那时候还没多少实际开发经验,接收到的大部分信息都没能吸收下来,现在倒是可以再回头去温习一下前人经验哈哈。
其实我并没有用到多少ink的独有特性,理论上我的这些内容配在Excel里也是可以的,反正都是自定义的解析流程。只不过我觉得在纯文本环境下的书写体验可能比在excel里好一些而已XD