引言
随着《月白》上线,终于有时间能回顾一下过往,不然时间一久,恐怕再难想起自己曾经做了什么。预计会水三篇总结,第一篇聚焦于美术方面。
事情可以追溯到2017年,一名即将大学毕业的青年,在校学了一些unity基础,想要开发游戏,但不知道可以做什么。工作了一年后,有了一个大致的轮廓和想法,想要做像素风的动作游戏,原因是,一直很喜欢动作游戏,但是苦于动作游戏太难太血腥,如果有轻松唯美的动作游戏就好了。在动画《风灵玉秀》拜年祭单品,电影《环太平洋》这两部作品中,人和人之间的切磋是一种对话,而非胜负与厮杀,这是我想表达的初衷。
然后,一个美术编程双小白,开始了一边上班一边业余开发之路。当时的自己可能也没想到,这个通关时长不足二十分钟的游戏,居然需要耗费四年之久的时光。
(《月白》游戏封面)
走过的弯路
2020年初决定了月白二人的外观,采用了低分辨率的像素风。然后开始看武术类书籍如《武术》,各类古典舞视频,大约花了一个月时间整理动作草图卡片,之后又花了两个月时间将草图输入电脑,使用的软件是Aseprite。
当时犯的一个错误是,将动作录入电脑的时候,采用了连续剪影的方式,以为可以增加效率,但反而不直观,增加了重复劳动。
→ 解决方法:概念图不要用剪影而用实际角色,早期阶段不必画完整动画,只须画关键帧。
(图例:低效的概念图)
更好的动画制作流程
在继续收集动作参考的同时,慢慢摸索出了一套适用于绘制双人动作的工作流程,其中也参考了业内成熟的动画制作经验,推荐《原动画基础教程-动画人的生存手册》这本书。
1. 收集参考原型
a) 记录原型出处。收集素材时,如果是书籍的话记录下页码,如果是视频的话,记录下几分几秒。
b) 将双人的动作对应记录。比如扫堂腿对后跳,旋风腿对下腰。
(图例:记录可用动作的书籍页码)
(图例:将双人动作一一对应在表格中)
2. 建立素材库
将上述内容绘制在一个大画布中,一个动作只需一个画面,所有的动作都能一眼看到。不要记录成序列帧的形式,会失去全局视野。这个时候不用管动作能不能用,记录尽可能多的动作。
(图例:素材库-“准备区”)
(图例:素材库-“舞台区”)
(图例:打印出来也是不错的选择)
3. 故事板
在积累完素材后,就可以进入关卡设计阶段。每个关卡新建一个文件,筛选合适的动作进行排列组合,找到合适的节奏和变化。
(图例:第一关的早期故事板)
4. 绘制完整动画
确定完关卡内的动作组合后,就可以对每一组动作进行细化,具体过程:
a) 关键帧动画。这一步在故事板环节基本完成。
b) 补全过渡帧。此阶段像素可以不完美,主要看动作连贯。注意帧和帧之间要以“弧线”连接,不要出现“折线”的情况,无论是弹球还是人体,都是遵循着弧线运动的。
c) 动作润色,添加特效。注意经常左右翻转画布查看动作合理度。
(图例:绘制扫堂腿动画的流程)
总结完经验后,觉得这一切好像是顺理成章的。可在当时每一步都走的非常艰难,第一次将画的东西导入Unity中查看效果的时候,动作软绵无力,连招合不起来,完全看不下去。其中还有一个重要的问题没有解决,就是动作的节奏感和打击感。
动作游戏的出招节奏
我记录了动作游戏中一些常见的前摇、弹反和后摇时长。在记录各家动作后,发现即使是同一个游戏,不同性格的角色的攻击节奏也是截然不同的,较快动作的前摇可能只有5帧左右(24帧/秒),较慢动作的前摇可以超过一秒。而弹反时间,或者说给到玩家的反应时间,普通难度下的《死亡细胞》大约是半秒,《只狼》则大约在1/5秒或者更少,曾经看到过一篇文章说当反应区间小于1/6秒时,游戏就会变得非常困难。我在反复测试后最终是选择了5-6帧的前摇时长和2-3帧的反应区间(12帧/秒)。是一个总体来说不会太困难但也略有挑战的区间。
(图例:记录各家游戏的前摇和后摇时长)
动作游戏的打击感
1. 防御成功的动作幅度一定要大
因为《月白》中没有敌人被击飞飙血这样冲击视觉的反馈,所以防御成功动作本身一定要有差异,否则玩家很难意识到成功或者失败。参考《怪物猎人》,大多数时候,不管玩家如何输出,古龙都是岿然不动的,除非其倒下,一般不会有明显的受伤效果,真正给到玩家反馈的,是按键成功时,人物本身帅气的演出。
(图例:动作幅度、位移、特效、音效可以加强反馈)
2. 避免脚底打滑,移动必须干脆利落。
在绘图软件中,所有的动作都是原地不动的,位移由程序每帧赋值,精确到每一帧都有固定的位移量。具体的数值,只能通过反复调试获得,有些时候,一个简单的后退也可以调上半天的时间。
3. 特效与音效必不可少
特效方面推荐saint11像素宝典(风农翻译):https://indienova.com/indie-game-development/saint11-pixel-art-tutorial-1/
场景绘制
再简单记录一下场景绘制的过程,主要就是先找参考,绘制草图,调整布局,最后细化。关于游戏中的花草,我参考了《芥子园画传》这套书。
(图例:第三关场景制作流程)
直到2022年五月底的时候,第一关的动作调试差不多告一段落。两年来,大部分时候把素材合进Unity的结果都不甚理想,直到这一次终于实现了没有bug的稳定演出以及较为自然的人物左右互换,添加完背景音乐后,第一次有一点,打动我。接下了一年多的时间,就是重复上述的流程,将第二关和第三关的动作打磨出来。直到2024年初,经过反反复复的迭代,美术部分终于告一段落。
一些小白的总结
* 避免一开始打磨动作细节上花费大量时间,先确定整体动作风格、关键动作、连招节奏。
* 动画的动线是一条弧线,把握住这一点,画面就不容易跳。
最后贴一下游戏链接,有时间的话会再记录一下编程的部分。
啊啊啊啊啊啊啊啊好棒啊我也喜欢做这种拆招的,但是想想工作量就太大了你太厉害了!!!有机会要不要一起做游戏!(开始胡乱发出组队邀请
@sdjdasha:谢谢你的邀请!确实是美术工作量巨大以至于最近想先休息一阵[捂脸]……但还是非常谢谢!
好精彩的内容,好凝练的表现!(总是会因为在nova上意想不到的时候看到好内容而兴奋)
最近由 π 修改于:2024-04-16 22:02:36关于素材库Aseprite那段,看到提到“绘制到大画布”,因为无法从上文直接看出之前你用没用到spriteSheet导出功能,遂以防万一提一句:我这里当时想到的是,可以用内置的这个功能比较方便导出类似的效果的(同时兼顾资产整洁)
操作上可以是“左右俩小人分绘于不同图层,画面中间标记好基准点(以便偶尔调整站位,变体观察;但导出时可围绕基准点统一化位置,实现高效利用)
而且spriteSheet导出模式还可以split Layer,可以把两个图层导在不同的两排里(不过以前版本似乎并没有这个功能?)这样就可以一定程度上兼顾双人动作对比和基本资产管理了...
顺带一提就是你自己一个人solo的个人作品其实也可以不必要用工作室风格的名字吧?说出来仅作为反馈,个人感觉用平时主要代表自己的名称/艺术家名其实气质上更贴合这类作品,也能挺好传达关于作品气质的信息(记得有个GDC还专门讨论过这个相关话题来着...)
@π:感谢你详细的留言和建议。
导出这块文中省略了,基本上是你说的,两人绘制于同一文件的不同图层,然后标tag,分图层导出。(不过我没有用spriteSheet,而是单张图片,这个和我代码写法有关。)
游戏做完后发现2021.3之后的unity可以和asprite关联,画完保存后不用导出,unity直接读取刷新,非常神奇。
基准点这个也很对,我一般是在另一个文件里看移动的效果,然后在导出的文件中调整到原位,这一步其实挺花时间的,因为人物带移动的招式非常多。
工作室名这块的话,主要是觉得直接放个人名字有点不习惯,不过你说的是有道理的。
@月白工作室:studio系命名主要特点是会少些人情味+会有对体量的刻板预估。上面说的GDC找到了是这个:《Put Your Name on Your Game, a Talk by Bennett Foddy and Zach Gage》
最近由 π 修改于:2024-04-17 12:00:49https://www.youtube.com/watch?v=N4UFC0y1tY0
SpriteSheet在Unity里可以用内置的Slice功能基于固定Size快速的裁开(比如每个图格固定64x64)(而且我看你绘制方式估计也是固定图格思路的,毕竟有基准点的存在嘛)
不过,你不说我都不知道它俩现在也能联动了,那看来能多省一步了!神奇(就是不知道如果有多余的图层在ase文件里,unity这边是不是也能很容易的排除掉识别)(回头我也想试试这个新功能去)
@π:https://www.bilibili.com/video/BV1fw41167bm/ 这个视频有简单讲unity和aseprite同步,不过少说了一个重要的点,就是同步进来的animator controller是只读不可更改的,一改就会报错。如果想要修改,就要在inspector面板中按export animation assets,勾选animator controller。总之还是有点小坑的,但可以试试看,和原来流程比较一下哪个方便。
@月白工作室:很有意思! (大略看了下,感觉比我一开始想象的要灵活呢!)感谢指路+关键信息补足(似乎是很隐蔽但又很有用的操作!)
最近由 π 修改于:2024-04-17 22:23:02