因为花了一周维护《躁动桌面》的新版本,所以真正留给JAM的时间只有2周(8.5~8.18)。其间打了多次退堂鼓,包括但不限于:怀疑自己能否按时完成、担心做出来的东西并不好玩,或者是懒得再开新项目。最后下定决心的原因是加群后感受到大家的参赛激情,感觉又回到当初跑半马的场景,虽然累得半死,虽然成绩年年垫底,但是一旦报名了,就会被大家的热情裹挟着,忍不住继续迈出下一步直到终点。 首先是没想好做什么,很多事情都是边想边做,光是主题就从汽车追逐战换成飞行游戏,如果是和陌生小伙伴组队的话少不了争吵。另外也想挑战一下自己的极限,补全缺漏的技能,于是啥也别想,埋头单干!
网络上关于海鸥/鸟的梗图早已闻名世界,不少人借海鸥之口发泄情绪,利用它们作为主角可以避免文化差异导致的同理心缺失(更重要是不用写长又臭还没人看的人物传记)。
简单分析一下码头上争抢人类食物的海鸥,它们有着能自由飞行的翅膀,这可是人类梦寐以求的超能力,然而它们终其一生为了生活而奔波,靠翻腾前人的垃圾活着(谁不是呢)。是他们没有把能力用到更好的地方吗,还是说薯条已经是它们已知的最优目标?换个角度,海鸥已经找到自己终生的目标,并且每天都在为此与人类斗智斗勇,是不是事情变得热血起来了?
当然,本文无意瞎扯这些虚无缥缈的人生意义,只是单纯聚焦海鸥努力挣取薯条的故事,希望让玩家以海鸥的视角进入游戏世界。也许海鸥并不在乎人类丢在海浪或山顶上的垃圾,它们只是知道有一种黄色的长条状食物香脆可口,通常被一个红色纸盒包裹着,虽然在垃圾堆里偶尔能翻找出一两根这些食物,但是它们要不因为吸水过多而软掉,要不就是过期变质。真正新鲜的食物通常都被人类牢牢抓着,唯一能抢夺食物的方法就是先转移他们的注意力,往他们头上拉一泡史就是个安全有效的选择。
海鸥只要负责拉史就好了,而人类要考虑的事就多了,它们是故意还是不小心的?
角色定下了,接下来就是设计场景。既然关键词是“码头”,那么海洋、岛屿跟沙滩这三种元素必不可少。另外因为海鸥的机动性较强,还需要为其提供足够充裕的可活动范围,以及尽量减少导致视觉疲劳的重复元素。看到这里,小伙伴们可能会提出疑问:这TM不就是要整《塞尔达:旷野之息》或《我的世界》的大地形生成吗?!这么大的事怎么可能在短时间内搞出来!更别说只靠一个毫无艺术细胞的程序员!
但为了达到心中的预期,有时就得逼自己一把,先挖个坑,相信明天的自己会想办法填上。在后面的“开发流程”模块有相关介绍,这里先按下不表。
前期积累的素材及插件发挥了很大作用,没有这些准备,绝对无法在短时间内完成这款游戏。说几个项目中比较重要的资源:
InputSystem:跨平台输入系统。之前花了一周维护的《躁动桌面》,其实主要是研究这个插件,并且深入了解手柄。正好这次需要用上手柄,所以很快完成了输入处理,避免了不少坑。 Unity-Free-Flight:我在找开源的飞行控制器库时花费了大量时间,一直没有找到符合要求的实现,最终只能基于这个10年前的项目进行魔改,原作者的基本功能都已经做好,因此升级没有遇到大问题。当然,后面有时间还是需要手搓一个完整版。
在短时间其实很难整理出有序的文档,更别说像我这种思绪乱飞的人,经常会冒出一些奇怪的想法。个人的习惯是趁着想法还新鲜,赶紧用趁手的工具记下来(比如文件传输助手),然后后续在空闲时间将每一条想法按照类型进行归类到正规笔记软件中(比如XX云笔记):
需要明确的是,该文档的读者是自己,一定要能及时准确地记录你最新的决定:
你这一生最好玩的单机游戏是什么?施主,这个问题要问你自己
它们的剧情真的引人入胜吗?其实都是旧瓶装新酒,黑白两道互相厮杀,或者是遇到更强的外敌后临时结盟。画面就更不用提了,让新时代小孩看了直犯恶心。
那么是什么让一款单机游戏长盛不衰?我认为战斗爽快,或者是让人意难平的游戏,就足够称得上是好游戏。它们也许画面简陋,但是给玩家留下了充足的情感代入。在游玩时,你会发现开发者努力让游戏变得有趣,利用有限的性能实现无限的可能。我甚至能体会到他们勇刚投资商,只为了在里面偷塞几个喜闻乐见的彩蛋的窃喜心情。他们实在是太懂玩家了。
“站在玩家的角度考虑”,将是本游戏的第一开发守则。
繁杂的UI元素反而会分散用户注意力。少即是多,确保同一时刻仅显示必要的元素。
当然,缺少操作提示也会让新手懵逼,这是本游戏的缺漏。因为来不及做新手引导,只能麻烦各位先看一下操作文档再回来玩游戏。
在这个游戏中,你将不会看到任何跟分数相关的数值,因为这不是一只海鸥在乎的。海鸥只会想着飞行,觅食,还有活着。
不要尝试给它计分,因为它只是一只自由且饥饿的海鸥。
不要高估每个人的学习热情,如果一下子冒出一大堆奇形怪状的设定,大脑的第一反应是抗拒甚至弃游。
为了减少用户的学习成本,游戏尽量按照真实世界进行模拟,比如:
基于地形的等高线,每个区域都会有符合现实的物体生成:海中漂浮有人类的垃圾,沙滩中有人类的残留食物,山上会有各类人造物及人类活动的轨迹。
海鸥的最高飞行速度与现实一致,高速撞击物体/水面时会晕厥,海鸥发出叫声时会引起附近的人类注意。
物体、晕厥状态的海鸥掉进水里会有漂浮效果
人类在首次被鸟史击中是蒙蔽状态,如果被连续击中则会恶心、暴怒或发出威胁(目前还未做远程攻击系统,所以游戏中的人类只有无能狂怒)
另外奇葩的操作键位也会让形成肌肉记忆的老司机们吐槽,所以游戏中的常用操作键尽量按照射击游戏的习惯进行设计。
部分游戏会基于各种考虑,给玩家设置限制,比如增加空气墙或体力条。但是我觉得游戏应该越少限制越好,玩家可能只是想尽情撒野,不该剥夺他们应有的乐趣。
在一般游戏中,角色晕厥并出现布娃娃状态(即角色肢体受物理引擎影响)时,玩家唯一能做的就是狂按按键唤醒。在调试的时候,我就在想,为什么布娃娃状态不能拉史模拟失禁?为什么不能进入子弹时间,观看其出丑瞬间?于是我决定把限制都去掉,让用户在任何状态都可以调用这两种功能:
我经常纠结海鸥的攻击手段是否太少,要不要给它加上往正前方发射的武器(比如爪子上绑一把镭射枪),或者是加上后视镜以便看到背面的实景,最后还是决定保留原状。海鸥自身已经具备常人难以企及的超能力,比如超级视野,超级消化(对应游戏中的随吃随拉),或者是超级反应(对应子弹时间技能),光是这些能力都能大作文章。如果给它再加上镭射眼或热追踪弹,最终只会变成又一款换皮空战游戏。
我希望玩家体验一个纯粹的海鸥模拟器,靠自身的能力而不是科技解决问题。
生存模式:翻找残羹冷饭,熏晕人类,还有战胜自己的手残操作。
巨人岛模式:生存模式青春版,让人类更大更容易着色。
天堂模式:有吃不完的食物,也没有讨厌的人类。不再被饥饿鞭策前行,终于可以单纯为了欣赏这原本就美好的世界而飞行。
曾经的我在遇到“零成本实现无限大地形生成”这种奇葩需求都是直接放弃,幸好在多年的工作经验中,遇到过无数神奇的甲方,明白了慌乱和摆烂毫无意义,真正需要做的是把需求细分为多个小问题,并逐个攻破:
地形生成:首先排除手绘地形,因为不管准备多少素材,总会有用完的一天。经过多方搜索,终于找到了一个免费的程序化生成插件《MapMagic 2》,能够定制山的形状和范围,以及自定义地形贴图的铺贴规则,用来做海岛正合适。当然免费版也阉割了部分功能,比如不支持混合地形,所以山的形状基本大同小异,只能等后续有盈利再入手付费版支持作者。地形之所以统一设计为海岛,除了能突出海面的宽广,还能给每个区域的边界留下足够的缓冲区。比如当用户离开海岛A后,该海岛上的资源就会陆续挪到下一个新海岛上(有点《楚门的世界》的感觉了),避免用户因为看到眼前物体瞬间消失而误以为是bug。
通过查看版本管理软件的Log,得出每项任务的完成时间段如下:
8.5~8.11:完成程序化地形、水面系统和海鸥行为模块
8.12~8.13:完成随机生成系统
8.14~8.16:完成UI、跨设备输入及拉史逻辑
8.17~8.18:完善人物行为、增加食物特性、增加游戏模式、增加截图功能、修复打包后出现的bug、在群里吐槽Unity
开发途中并非一帆风顺,很多问题会在忙中添乱。比如倒数第二天凌晨打包后发现贴花特性(用于最重要的沾史效果)用不了,当时火就上来了,一夜都没睡好。幸好第二天使用新办法临时解决,不然两周的努力都打水漂。在这里建议各位在引入新特性时,要提前打包进行测试。
《海上钢琴师》中的主角为什么宁史不肯下船?那是因为岸上全TM都是Unity的BUG!
虽然一人干活能掌控全局,但是就跟游戏多开一样,时间及资源都从自己身上抠,一旦分配不好就会造成崩溃。不巧的是,干活时脑子里就跟《头脑特工队》一样分散出多个人格,而且每个都很闹腾:
理性:玩法和框架是基础,场景随便搭个简模就好了呀,美术以后迭代不迟。
感性:这么low的画面让我怎么工作!我不听我不管我就要!你一天不搭个绚丽的场景,我就闹!啊啊啊啊啊!
懒惰:这不还有一周吗?该睡觉了~睡醒才有精神干活。
完美:你怎么敢睡?还有一堆想法没验证,躺下也是辗转反侧想着这件事,还不如忍一下先把这活干完!
愤怒:画面真丑!玩法真无聊!
总而言之,理性告诉我需要及时跑通整个流程,但是感性担心最后的效果不符合预期,完美人格要求每件事都必须做到最好,而懒惰和愤怒人格只管拖后腿。在他们的不断撕扯下,我一时不知道先开展哪一项工作,经常出现事情做了一半就得更换优先级照顾另一个人格的情况。
先把画面搭建出来,让最吵闹的感性人格闭嘴。基于更优的画面,我逐渐想到了更多玩法;
将该游戏作为重要项目看待,确保资源严格按照规范摆放,代码整洁,画面持续优化。愤怒和完美人格无话可说,项目也因此得到了良好的维护;
正如龟仙人所说:好好吃饭,好好睡觉,好好玩耍,好好学习。作息并不会因为参加GameJam而缩减,而我也在休息时想通了更多游戏细节。终于懒惰人格也妥协了;
理性人格是我最后需要考虑的,因为他一直是我最坚定的后盾,最能理解为什么把他放在最后。
因为游戏玩法比较恶搞(本人在开发调试过程中经常笑得岔气),初见者可能会误以为这是个纯粹整活的游戏。剧情虽然不是本游戏的核心,但我希望后续能够填充更多充实的内容,增加玩家跟海鸥的同理心。
有一次,我在海上茫无目的地飞行,听着静谧悲伤的钢琴背景曲,心中突然涌现出一种无比悲伤的设定——在这个世界里,只剩下主角这一只海鸥,即便码头上堆满了薯条,也没有第二只海鸥跟它争抢;再美味的食物,也失去了带回巢穴喂养幼雏的意义 。如果玩家能体会到这种感觉,也许就会理解周星驰说的那句:“我一直拍的都是悲剧,只是你们看起来是喜剧”。
将这设定代入到游戏中,你会发现,只要不拉史,它就是一只忧郁的海鸥。
首先是游戏难度设置的问题。为了照顾新手,玩家轻易就能吃太饱,体会不了海鸥生存的艰辛。后续考虑是否通过多种途径消耗储粮值,让玩家体会一下野外过冬的震撼。
虽说是个人开发的项目,但其实也得到了很多人无意中的帮助,如无私的开源作者,以及乐于分享圈内知识的游戏开发者。本次游戏也借鉴了不少《塞尔达旷野之息》的设定,以及设计界前辈的用户设计理论。正因为珠玉在前,给后来人指明了道路,才让我有了前行的信心。
此外,感谢工作多年来经手的近百个狗史项目,给我提供了宝贵的应对经验及足够的怨气制作这款游戏。
我只是做了款自己爱玩的游戏,希望刚好能遇到同样爱玩的你。
评论区
共 3 条评论热门最新