负责魔王城平安的小骷髅“Skul”,为了拯救被人类捉住的魔王,一个人独自对抗帝国军队开始冒险。

打开网易新闻 查看更多图片

人类成为对手、小兵变成“英雄”,这种反套路的设定让游戏在一开始就抓人眼球。《小骨:英雄杀手(Skul: The Hero Slayer)》(以下简称《Skul》)是由一支小团队,SouthPAW Games,做的 2D Rogue Lite 和动作平台游戏,虽然起点并不高,但是萌萌的小骷髅还是靠实力收割了一大波粉丝。

2019 年,《Skul》首次在全球独立游戏开发竞赛(GIGDC)上亮相,并荣获一等奖,同年拿下了韩国 BIC 2019 的大奖。2020年,《Skul》在 Steam 上开测,几周内便收获了 2,700+ 评论和 91% 的好评率。2021 年正式发布游戏,发布前超 70W 的玩家添加愿望单,截至目前,好评率达 93%

打开网易新闻 查看更多图片

SouthPAW Games 现有八名成员,由韩国全南国立大学的 gamedev 俱乐部成员于 2017 年创立。自 Unity 3.0 以来,工作室一直选择 Unity 作为开发工具,而《Skul》是他们的第一个像素游戏项目。

游戏总监兼动画师Sang-u Park(又名PAW)与四名程序、两名背景美术和一名角色组成了团队。

团队从《星之卡比》和《洛克人》等经典游戏借鉴了许多内容,比如吃掉敌人来习得技能、Boss 专属武器。最独树一帜的当属“换头”玩法,小骷髅将自己的头取下,戴上其他魔族的头颅,便能化身为拥有其他魔族能力的战士。

从“头”改变自己

除了让人上头的玩法,《Skul》的画面也十分可圈可点,虽然是像素风的游戏,但是画面却十分精致。

开局时,小骷髅置身空荡的魔王城中,背景里闪烁着几盏烛火,孤独凄凉的味儿立马就有了。

打开网易新闻 查看更多图片

在小骷髅释放的招式命中 BOSS 时,会有像素粒子飞溅的效果,让游戏的打击感加倍。

游戏开发的过程中,SouthPAW Games 用到了许多 Unity 2D 工具。我们采访到了游戏的主创团队,让他们给大家揭秘技术要点。

《Skul》用到了Unity的2D Tilemaps、2D Pixel Perfect和Sprite Atlas

用2D Pixel Perfect制作清晰锐利的图像

SouthPAW Games 使用了最新的Unity 2019.4 LTS来开发《Skul》,基于通用渲染管线(URP)8.10来制作图像。功能在 URP 的 2D Renderer 中,也可经由 Package Manager 安装到其它项目内。其带有的 Pixel Perfect Camera 组件可让像素在不同分辨率下仍保持清晰锐利,还可让对象的运动、旋转和缩放严格限制在像素网格中,并且会根据分辨率的变化自动运算出图像缩放。

团队在初期就意识到,在制作像素图像时,一定要让游戏资源的分辨率保持一致。“开发准备时图像的参考分辨率实在太高,图像资源过于精细,并不符合我们的需求。导致我们不得不重新制作图像资源。” 最终,团队决定将整个游戏的像素分辨率设为 32 PPU(每单位像素),即一个 Tilemap 网格包含 32 x 32 个像素,其中一个图块为游戏内一个距离单位。

Pixel Perfect Camera摄像机组件和GameObjects Sprite Renderer的创建

游戏的参考分辨率为 640 x 360 像素,背景的最大高度设为了 400 像素。为了让图像在各个分辨率下都能保持清晰,团队在 Game 视图中测试了不同的显示分辨率,还在不同配置的 PC 上测试了游戏。

打开网易新闻 查看更多图片

Pixel Perfect Camera可根据分辨率进行缩放,甚至可以通过整乘显示率,在现代显示器上实现复古风图像。在要实现全屏画面,则能由用户选择是留下屏幕黑边还是放大窗口图像。

为了使分辨率修改的过程尽可能流畅,团队设定了一个粗略的参考比例来感受图像的形状和颜色表现,接着在概念艺术阶段(1)中分享、讨论各自的想法。在确定角色方案后再进入阶段(2),规划动画、绘制关键帧。

阶段(3)则开始制作原型、检测角色的动作和尺寸是否合适,然后再编写角色的能力和技能。在最后阶段(4)中,团队使用 AnimationImporter 插件将自制的 Aseprite 资源带入 Unity。

此外《Skul》独特的风格还由一些其他元素组成,比如角色的劈砍动作、敌人死亡时盔甲武器等物体的掉落方式,这些效果都在 2D Physics 的作用下变得更加逼真。总监兼动画师 Sang-u Park(又名PAW)解释道:“我们称这些物体为'部件'”。

每个部件的生成位置与精灵上的位置相同,在掉落时就像从身上掉落一样。玩家还可以攻击部件来击退敌人,每个部件都有自己的重量和旋转力,与现实世界一致。” 至于对象的旋转,团队有时会直接在 Unity 中旋转精灵,也会在每个旋转角上创建一个精灵、组合精灵生成序列动画。

“在每个角度上旋转精灵做出的逐帧动画质量确实会更高,但其制作成本也更高。每当要旋转某个精灵时,我们都要仔细考量角色所需的图像精度、重要程度,来决定采用哪种方法旋转。”

使用2D Tilemap Editor设计关卡

在《Skul》中,团队将世界中的图块分为Terrain(地形)、Terrain Foothold(地形落脚处)和 Platform(平台)。玩家无法穿过 Terrain、Terrain Foothold,后者只能作为站立平台;玩家可以穿过的是 Platform,可以从低处跳到高处、或从高处跳到低处。团队还编写了一个脚本,让图块能继承 tile 类来确定自己的类型。

据 PAW 所说:“我们使用了 Tile Palette 来生成图块、辅助制作,还将 Tilemap Collider 2D 绑定到了单个 Polygon Collider 2D 上来优化碰撞体。”

Tile Palette允许团队直观地制作地图,同时保留对API的完全控制,还优化了碰撞体。

游戏性能、运行效率等方面的开发技巧

01精灵图集

使用 Sprite Atlas 可以大大提高性能。起初,团队的优化重心都在绘制调用和内存消耗上。但他们不久便发现与其像挤海绵一样挤出一两帧的性能,不如把注意力放在游戏的趣味性上,顺带还能优化下项目结构、方便测试和开发。“作为一款 2D 游戏,《Skul》对系统的要求不高。性能在优化到一定水平后,游戏可以轻松地在智能手机上运行,” PAW 说。

动画精灵的四周留有充足的空白区域,图集的中枢点位于中心,这样可以轻松定位每一帧的位置、形成动画。

02Physics 2D

Physics 2D 主要用于处理静态和动态对象之间的碰撞。而在视觉效果(如残骸效果)的动态碰撞中,Physics 2D 在低精度设置下并不会直接影响游玩。对于那些精度要求高、直接影响游戏体验的元素(如玩家的动作),团队使用了 2D Raycast 和 Collider 投射等功能来计算游戏逻辑。

03其它技巧

SouthPAW Games 扩展了 Unity 编辑器,使团队无须更改代码便能编辑和使用大多数 Unity 功能。Unity Profiler在辨别 CPU 性能瓶颈方面起了重要作用,而Frame Debugger则用于检测图形绘制,团队可以根据工具所提供的信息来不断改进游戏。在这些资源优化的工作中,团队将视觉效果划分成了较小的部分,不同的部分混合可产出不同的输出更改了像素的尺寸、角度和颜色等属性,充当全新的效果使用了 URP 和 2D Renderer 中的默认着色器,并剔除了未使用的功能。

04其他 2D 工具和自定义扩展

自团队的项目启动以来,Unity 陆续发布了一些新 2D 工具。尽管无法使用这些新功能,但 2D Sprite Shape、2D Lights 和 Sprite Tools 仍让团队非常兴奋。“这些工具过于复杂,优化难度较大,光靠我们自己是没法应用到项目里的,而市面上又没有十分可靠的第三方工具。听说有些工具应用了 Job System、优化水平很高。我们非常期待未来能用上这些实用的官方工具。” 作为 2D 游戏的粉丝,SouthPAW Games 团队对 Unity 发布和更新的 2D 工具感到满意。团队还利用了 2D 工具的 API 开发了拓展程序,让美术师无需更改代码即可修改游戏。

另一个很方便的工具是预设(Preset)系统,用户可使用该功能加载预先设置好的配置资源,方便用统一的设定创建道具和角色。

团队建立了项目文件夹的快捷方式、节省了许多时间。他们建立了一个武器创建系统,可创建自带相关数据的新预制件,以及一个在玩家位置掉落物品的系统。

专业评审铸就专业成就

SouthPAW Games 在全球独立游戏开发竞赛(GIGDC)上首次展示了《Skul》,并荣获一等奖——Unity 企业技术支持服务:Unity 韩国派遣了一支团队前往光州,进行会诊式项目分析、向团队提供专业反馈。双方一起分析了项目的表现,《Skul》团队从 Unity 专家团队上学到了许多性能分析的基础知识。

对于 SouthPAW Games 来说,《Skul》的发布只是一个里程碑。他们将继续倾听玩家的意见、不断更新游戏,直到做出理想中的《Skul》。

* 文中部分配图来源于网络