最近去了一趟南宁马山县。攀岩一周,身体很累,心里很舒服。这周除了爬石头,什么都没想,脑子全部放空了。
“一款好游戏,胜过两款伟大游戏”…… 这世上最容易做的就是“多”,如果我们不小心,就可能会把三四款游戏都塞进一个游戏里。有时候,决定什么内容不该加到游戏里,比决定什么内容该加进入更加总要。—— 《席德梅尔的回忆录》
这几天,读了本书《席德梅尔的回忆录》:《文明》是在陪产假中诞生的,它一开始更像是《铁路大亨》的延续,一个全球规模的《模拟城市》,一个实时模拟游戏。它开发了很久都没有找到正确的方向,一度项目被搁置。而重新继续这个项目后,经过了搁置期的思考,才试着将其改为回合制游戏。
席德还有款失败的作品《恐龙游戏》,他从 1991 年开始鼓捣这款游戏的原型,到 2000 年第 6 届 E3 展后彻底放弃。一开始几个版本像是恐龙版文明,核心玩法是基因衍化,但随机基因突变并不好玩;其后简化了复杂的规则,却变得很无聊。“好像不是你在玩计算机,而是计算机在玩你。如果游戏要一下子表达太多东西,那简化游戏设计会有帮助;但如果你在一款回合制游戏上投入了足够多的时间,你就会希望能够控制所有有趣的决策”。
回合制走不通,游戏原型转为了即时制。席德之前就有一款成功的即时制游戏《葛底斯堡战役》。但这个《恐龙争霸》却因为恐龙题材难以嫁接足够多的远程武器以至于无法平衡。
然后,这款恐龙游戏又演化成了口袋妖怪,或是更接近恐龙万智牌。平平无奇的“借鉴”让这款游戏毫无新意。卡牌形式很好玩,但是“这些卡牌的互动方式与《万智牌》太像了。如果你能加入自己的想法,那借鉴一点创意是可以的,但我从来不觉得恐龙游戏有足够多的新元素可自证清白。”席德忍受不了这一点,最终彻底放弃了这个项目。
当我重新拾起自己项目的思路,我觉得我希望它还是一款以策略(而非成长)为主的游戏。我希望单局游戏时间不长,而玩家会面对多种有意义的选择,没有最优解,而是在风险收益间权衡,为长期做规划,同时应对短期挑战(控制损失在可接受范围内)。游戏会有很多随机元素,随机意味着不确定行,玩家一定程度上是在做风险管理。这让想到《Rogue's Tale》,虽然从 steam 评价上看是毁誉参半,但我非常喜欢它。
如果投骰子产生的随机数难以把握,靠自己构筑卡组,以抽卡形式来控制随机性或许更容易接受一些。我很喜欢桌面游戏《Dominion》,所以第一次看到卡牌构筑形式的《杀戮尖塔》时就立刻爱不释手。我想可以考虑一下这种形式的策略游戏。在 steam 上用关键词搜索时,看见了《星际孤儿》。正好,它也是一款以太空船为主题的生存游戏。玩了一百多个小时后,我觉得非常对我的胃口。它也是一款卡牌构筑游戏。steam 评价不算太好,但我不赞同多数差评的意见:它其实不是一款看脸的游戏,虽然看起来系统会刷出一些难解的事件、商店里买不到需要的牌,但这恰恰是玩家需要做“风险管理”的部分。会玩之后,默认难度其实非常简单。真正的难度是从第四级难度开始,需要精心策划每张出牌。
它绝对不是又一个“杀戮尖塔”,其创新点在于“需要玩家持续规划几个回合出牌次序和组合”。而把规划周期拖长看,随机性的影响是微不足道的。玩家要做的是留足备用方案应对不同的可能,并用各种手段消除随机性增加确定性。同时,某个时候不打某一张牌这个决策的重要性就提升了。这在杀戮尖塔类游戏中是比较少见的。
我很喜欢这个游戏策略性带来的感觉,当然,我也不想换个皮再做一个,更不是再来一个杀戮尖塔。只是想到用卡牌形式来玩游戏比较有趣。
初步的想法是设计一些足够简单的卡片,用卡片组合的方式来触发游戏中的行动。把卡片分成几类:房间卡、行动卡、物品卡、船员卡。大致对应地点、行动主体、行动对象和动作。打出一串卡片来完成各种操作。例如,在空房间安装一台机器,需要指定位置的房间卡,安装这个行动,需要的机器卡;而机器则是通过(装有生产机器的)房间卡,操作行动,蓝图和材料卡片可以创造出机器卡放入卡组……
而系统扮演的是一个不对称规则的对手,由设计者实现设计好一个个情景的卡组,洗乱后以机械规则一次打出。玩家就可以看到系统发出的陨石、磁暴等等危机以卡片形式打出。
在游玩过程中,玩家还是在指挥着船员在太空船上进行建造、科研、制造、休整、战斗这些工作,只不过以打牌的形式表达。因为行动被拆解为简单元素,类似 RTS 那样点选一个单位,选择行动及其目标被拆解为多张卡片;每张卡片只有一些基本元素,但组合能表达的行动会很丰富,这样卡组不用太大,避免了巨量卡片组成的卡组不可控,而抽卡机制又保留了一些随机因素。多张卡片的组合使得玩家需要规则几个回合的操作:保留哪张,丢掉哪些,筹齐想要做的事情。
卡牌形式的一个优势是可以先做一套实体卡来试试玩法。现在有《Tabletop Simulator 》这样的神器,根本不需要剪刀和画笔。
btw, 似乎卡牌游戏用不到 3d 场景。接下来我还想找个时间好好为 Ant 实现一套 2D 管线,或者直接从里面抽出需要的代码来,重新做一个简单的 2D 引擎。