steam上有款游戏叫做Townscaper(译:城镇叠叠乐),这游戏生成的城镇很不错,也就一直都记得这游戏。
后来偶然发现一篇文章提到了这游戏生成城镇的算法(波函数坍缩算法),点进去一打开视频,那种“醍醐灌顶”的感觉瞬间就出来了。
这种处理“格子”之间的联系性,并生成、延伸“地图”的方式,立马就让我想到了把“剧情桥段”代入“格子”,把“剧情故事”代入地图。
我笃信,这完全可行。于是便开始思考,怎么把这个想法落到实处。
最开始我的思路是:剧情(应该)是可以划分维度并根据维度解构其基本元素的,只需要将剧情序列化,就能作为数据按这个所谓“波函数坍缩”的搜索算法生成更多内容。
然后我的思绪就直接略过了实际的设计,开始畅想游戏中的应用场景,一时间真是有点热血上头。
再等我回过头来,已经打算动手写个随机剧情生成器出来的时候,才发现一个可以说是“致命”的缺陷。
要动手写生成器,首先要做的就是想好如何将剧情序列化与反序列化,才可以进入工作流程的核心——实际应用这个算法。
然后我就卡壳了……(手动挠头.jpg)
早先曾出于整理个人数据(收藏的壁纸、观影与阅读记录、便签……等数据)的需要,曾寻找并设想过自己动写一个,可以很便捷crud的归档库,当时我就发现了一个解决不了的痛点:分类。
回想现有的任何具有标签或者分类的检索系统,可以说是每一家都不同,而且几乎没有大型的标签或者分类系统——唯一可以称之为大型的也就是知乎那种图书馆式的分类与标签系统。
那么像是知乎那样的图书馆式的分类系统,是采用了何种标准、如何建立的呢?答案是:完全人工。
其实已经出现了这么一门学科,对分类系统有所研究,叫做图书馆学。而这门学科中,有关图书归类的内容,叫做:图书分类法。(另外还有个目录学,但内容没差)
其中涉及分类系统的知识内容,一个词就能概括——“枚举”,也就是手动确立类别(建立标签),再手动将资源归类(贴上标签)。
这种基础,毫无自动化的可能。
最多能做的,也就是除开“建立标签”和“贴标签”,针对已经手动写好了的标签组织关系(标签图谱),将其(标签图谱)作为一种数据结构进行优化。
比如做成集合,然后在贴标签时实现:贴上“男人”,系统就能自动补全“人类”、“动物”、“生物”,并给出建议的标签:“胡子”、“热血”、“绅士”……。
到此已经没什么可说的了,一盆凉水浇头上。
原先的一次寻找趁手工具(归档库)的失败经验,回头再看,就成了:
失败一次地方,再回头,(对我来说)只能又失败一次。
相比“只能手动生成分类系统”这一点可以暴力(堆人力)解决的问题,更让我看清困难的是:
如果要在解构“剧情”的同时,维持“通用性”,即随机生成剧情想要不仅限于某一小范围的剧情类型,则必须要扩充大量的标签槽位。
在搜索时,每一个标签都是一个维度,每一个已呈现在游戏中的剧情内容都包含一份“标签大礼包”,加之剧情之间可以跨越空间、时间,可以串联无数人物,可能性空间是爆炸式增长。随机生成剧情,每想让剧情更“深情”一分,实现方案时,就更要让人“聪明绝顶”十分。
诚然,即便是MD5也让王小云博士给搞出了快速碰撞的办法,往死里优化或许总是能得到一个“足够用”的随机剧情生成器。
但我这种菜鸡,想想就够绝望了。
最后的碎碎念:
越来越深感技术上的无力,从最初头铁想着做个 有剧情、有趣味玩法、有风格特色、有创新 的完整的“小”游戏,到现在只打算弄个双人对战的真·小游戏。已经彻底是看清了自己的“无才”。
世上本无事,庸人自扰之。
我这种菜鸡也就搞搞小游戏玩一票了。估计以后再不会异想天开的去打算做什么“小”游戏了?
自动生成地图或是敌人,或是物件,可以大量的节省小开发团队的编辑工作量,同时又带来,变化更多的场景或是玩法。如果有人把这个功能做成 一个模块或是组件就好了。
@johnzuo305:我觉得“组件”是做不到的(如果你说的组件是指脚本式的那种组件),这东西的完全体应该是和粒子动画同一级别的“系统”