Unity 2D团队推出的2D Pixel Perfect资源包是专门针对2D美术推出的优化工具,目的是帮助创作者轻松制作各种比例下清晰锐利、兼容不同设备的像素艺术作品。SouthPAW Games团队在开发自家的首款像素游戏《Skul :The Hero Slayer》,就用到了许多Unity 2D工具来辅助制作精美的2D画面。
《Skul:The Hero Slayer》是一款2D rogue-lite(每次游玩都有不同)和动作平台游戏,以一位名为Skul的小骷髅守卫为主角,它将踏上征服冒险者们的旅程,打败帝国军来营救恶魔王。SouthPAW Games现有八名成员,由韩国全南国立大学的gamedev俱乐部成员于2017年创立。自Unity 3.0以来,工作室一直选择Unity作为开发工具,而《Skul》是他们的第一个像素游戏项目。团队从《星之卡比》和《洛克人》等经典游戏借鉴了许多内容,比如吃掉敌人来习得技能、Boss专属武器。在《Skul》中玩家可在快节奏战斗中切换成不同的角色,每个角色都带有一套独特的属性和技能。
团队计划在2021年上半年正式发布游戏。游戏目前在Steam上开放了抢先体验,并获得了非常积极的评价。截止至采访时,已有超过700,000名玩家将游戏列入了愿望单。
SouthPAW Games使用了最新的Unity 2019.4 LTS长期支持版来开发《Skul》,使用了通用渲染管线(URP)8.10来制作图像。功能包括在了URP的2D Renderer中,也可经由Package Manager安装到其它项目内。其带有的Pixel Perfect Camera组件可让像素在不同分辨率下仍保持清晰锐利,还可让对象的运动、旋转和缩放严格限制在像素网格中,并且会根据分辨率的变化自动运算出图像缩放。团队在初期就意识到,在制作像素图像时,一定要让游戏资源的分辨率保持一致。“开发准备时图像的参考分辨率实在太高,图像资源过于精细,并不符合我们的需求。导致我们不得不重新制作图像资源。” 最终,团队决定将整个游戏的像素分辨率设为32 PPU(每单位像素),即一个Tilemap网格包含32 x 32个像素,其中一个图块为游戏内一个距离单位。
游戏的参考分辨率为640 x 360像素,背景的最大高度设为了400像素。为了让图像在各个分辨率下都能保持清晰,团队在Game视图中测试了不同的显示分辨率,还在不同配置的PC上测试了游戏。
为了使分辨率修改的过程尽可能流畅,团队设定了一个粗略的参考比例来感受图像的形状和颜色表现,接着在概念艺术阶段(1)中分享、讨论各自的想法。在确定角色方案后再进入阶段(2),规划动画、绘制关键帧。
阶段(3)则开始制作原型、检测角色的动作和尺寸是否合适,然后再编写角色的能力和技能。在最后阶段(4)中,团队使用AnimationImporter插件将自制的Aseprite资源带入Unity。此外《Skul》独特的风格还由一些其他元素组成,比如角色的劈砍动作、敌人死亡时盔甲武器等物体的掉落方式,这些效果都在2D Physics的作用下变得更加逼真。总监兼动画师Sang-u Park(又名PAW)解释道:“我们称这些物体为'部件'”。每个部件的生成位置与精灵上的位置相同,在掉落时就像从身上掉落一样。玩家还可以攻击部件来击退敌人,每个部件都有自己的重量和旋转力,与现实世界一致。” 至于对象的旋转,团队有时会直接在Unity中旋转精灵,也会在每个旋转角上创建一个精灵、组合精灵生成序列动画。
“在每个角度上旋转精灵做出的逐帧动画质量确实会更高,但其制作成本也更高。每当要旋转某个精灵时,我们都要仔细考量角色所需的图像精度、重要程度,来决定采用哪种方法旋转。”
在《Skul》中,团队将世界中的图块分为Terrain(地形)、Terrain Foothold(地形落脚处)和Platform(平台)。玩家无法穿过Terrain、Terrain Foothold,后者只能作为站立平台;玩家可以穿过的是Platform,可以从低处跳到高出、或从高处跳到低处。团队还编写了一个脚本,让图块能继承tile类来确定自己的类型。
据PAW所说:“我们使用了Tile Palette来生成图块、辅助制作,还将Tilemap Collider 2D绑定到了单个Polygon Collider 2D上来优化碰撞体。”
使用 Sprite Atlas可以大大提高性能。起初,团队的优化重心都在绘制调用和内存消耗上。但他们不久便发现与其像挤海绵一样挤出一两帧的性能,不如把注意力放在游戏的趣味性上,顺带还能优化下项目结构、方便测试和开发。“作为一款2D游戏,《Skul》对系统的要求不高。性能在优化到一定水平后,游戏可以轻松地在智能手机上运行,” PAW说。
Physics 2D主要用于处理静态和动态对象之间的碰撞。而在视觉效果(如残骸效果)的动态碰撞中,Physics 2D在低精度设置下并不会直接影响游玩。对于那些精度要求高、直接影响游戏体验的元素(如玩家的动作),团队使用了2D Raycast和Collider投射等功能来计算游戏逻辑。
SouthPAW Games扩展了Unity编辑器,使团队无须更改代码便能编辑和使用大多数Unity功能。Unity Profiler在辨别CPU性能瓶颈方面起了重要作用,而Frame Debugger则用于检测图形绘制,团队可以根据工具所提供的信息来不断改进游戏。在这些资源优化的工作中,团队:
自团队的项目启动以来,Unity陆续发布了一些新2D工具。尽管无法使用这些新功能,但2D Sprite Shape、2D Lights和Sprite Tools仍让团队非常兴奋。“这些工具过于复杂,优化难度较大,光靠我们自己是没法应用到项目里的,而市面上又没有十分可靠的第三方工具。听说有些工具应用了Job System、优化水平很高。我们非常期待未来能用上这些实用的官方工具。” 作为2D游戏的粉丝,SouthPAW Games团队对Unity发布和更新的2D工具感到满意。团队还利用了2D工具的API开发了拓展程序,让美术师无需更改代码即可修改游戏。
另一个很方便的工具是预设(Preset)系统,用户可使用该功能加载预先设置好的配置资源,方便用统一的设定创建道具和角色。
SouthPAW Games在全球独立游戏开发竞赛(GIGDC)上首次展示了《Skul》,并荣获一等奖——Unity Clinic服务:Unity韩国派遣了一支团队前往光州,进行会诊式项目分析、向团队提供专业反馈。双方一起分析了项目的表现,《Skul》团队从Clinic小队上学到了许多性能分析的基础知识。