音乐游戏《Bouncing Music 》Alpha版上线
近期个人独立开发的音乐游戏 《Bouncing Music 》的 alpha 版今天正式上线了。
《Bouncing Music 》是一款物理音乐游戏。通过巧妙地放置板块,利用小球撞击来产生乐音,玩家由此创造意料之外的旋律,体验互动式的音乐作曲。
【基础功能演示 - 可绘制三类基础板块】
自由绘制模式下探索的是图形到音乐的转化。而游戏内的 “Midi 预测模式”。则可以将音乐转化为图形。通过自动读取 midi 音乐文件的音频信息,结合物理预测功能的辅助,可以创建并设计一系列基于钢琴曲的可视化作品。如果好奇单纯通过放置板块可以产生怎样复杂度的音乐,下面视频可以给出答案
【Chopin - Waltz Opus 64, No. 2 in C♯ Minor 可视化】
接下来会详细介绍游戏当前的功能以及做一个阶段性的开发回顾,分享一些思考与心得。而感兴趣的朋友可以按文末说明获取体验版。
开发历程
游戏的雏形完成于今年的 7 月中,部分灵感启发自 DoodleChaos 做的一系列音乐可视化视频。
DoodleChaos 可视化作品
DoodleChaos (Mark)的音乐可视化作品相信有不少朋友都看过,非常精彩。作者使用的是一款叫 lineRider 的物理游戏制作的(网页版:https://www.linerider.com/)。游戏本身与音乐无关的,但 DoodleChaos 却把它作为一个创作工具,根据自己对音乐的理解,再手绘出路径,最终让小人骑行的动画完美契合曲子节奏以及情绪起伏。
之前做一些生成实验时,就有不少音画类的,但很少直接用到物理类的算法。于是想尝试刚体碰撞来做音乐触发会产生怎样的结果。因此有了 Test 466.
Test 466(第一版 demo)
为了让视觉元素在一定程度能反映音乐信息。就将板块长短来表示音高。越短的板块音调越高,反之越低。因此板块间的远近也就对应触发时间间隔。
完成 demo 后,有了更多后续灵感。于是隐约萌生了将它做成一款完整游戏的想法。
个人深知开发一款达到一定完成度的游戏是不容易的。著名的独立游戏开发者 Jonathan Blow 在07年的一个演讲上谈到一些参考数字: 想尝试开发独立游戏的人有 95% 都没法最终完成。剩余的 5%里,有 95% 的人都没能做出一款优秀的游戏。
个人也在思考怎样的开发模式更适合自己。由于之前有用 Unity 做 Generative Art 的积累,程序和美术都有一定基础。恰好具备独立制作一款游戏的条件。
独立开发的优势是可以做到轻装上阵,能省去因分工而产生的沟通环节,在原型阶段的制作是比较高效的。也能避免团队合作过程中的一些极端情况出现,如资金链断裂,或成员理念不一而导致制作半路夭折等。
而劣势自然是个人力量终究有限,很难做到方方面面都完美。要做出眼前一亮的作品更多只能更着力于创意和玩法设计,要有丰富内容也需要投入更多时间。
(Jonathan Blow 的代表作之一《时空幻境Braid》。游戏流程为4到6小时,程序美术各一人,制作周期为3.5年 )
因为是第一次开发游戏,比起做不好,对能否完成更担忧一些。不难想象开发过程中很容易会遇到一种情况:游戏的想法没当初设想的有趣,或者冒出其他“更好”的游戏创意,弃坑开发新东西去了。
所以后续自己的做法,是先围绕原始概念做更多的深挖,思考有哪些拓展可能性的同时,也顺面了解自己的深层动机够不够强烈。做成游戏的想法是逐渐明确的。不是最初就能做决定。
回过头来,比较庆幸选择的方向是一直相当感兴趣的。而创作的源头从一个问题出发。
“图形的美感与音乐的美感之间有多少共性,是否存在某种数字模式能描述这种相通关系。如果绘制形式有漂亮的疏密关系,生成的音乐会更悦耳吗。或反过来,悦耳的音乐映射出的图形形式是否更具美感?”
当然,目前不能确定最终能否设计出一个好的游戏模式去体现这个思考,但至少了解自己对这个 Why 足够强烈。
后面为了保持开发激情。有通过社交媒体将迭代过程展示出来,以此获得持续反馈。有个人或团队会选择相对封闭的模式,不展现过多内容,沉寂数月或数年,以保证发布时的新鲜感或避免创意被抄袭。但权衡利弊,还是觉得前者更合适自己,先把构想做出来更为重要。
目前断断续续用了大约 5 个月,做了 7 个左右的 Test 迭代到前面视频展示的游戏功能。
迭代过程
在第一个 Test466 雏形完成后,第一个想试验的功能就是物理轨迹预测。让每个板块绘制后能自动预测小球的弹跳轨迹。若有玩家想绘制特定旋律,这样能减少大量试错。经过了一番调研,使用了 Unity 中的 Physics.Simulate 来实现 ,这样就无需手算小球与板块碰撞的角度,速度加速度等
接下来有了一些有关界面的小创意。为了贯彻物理特性,也设计了一些交互。重命名存档删除字体时,文字会下落,还有部分界面物体点击会有小彩蛋。
Test 471 Test 474
Test 476
添加了钢琴功能。设计了琴键生成和消失的动画。对于想画出准确音调的玩家,可以给出参考。选中钢琴上特定琴键,之后绘制的板块都会发这个音。
前面都属于自由绘制模式。但如果要让一个没有乐理基础的玩家做旋律感强的音乐还是太难了。所以有了Midi 预测功能,能自动根据下个音符触发的时机来自动计算落点,绘制时也会直接画出对应音高,唯一要考虑的只是板块类型以及摆放角度 。
这里有不少设计和技术上的难点。
对于复杂的钢琴曲,会出现同一时刻发多个音的情况。由于小球每次碰撞只能发一个音。所以想到的解决方法是让小球碰撞到特定板块,就会在 z 方向自动分裂,这样下次碰撞到层叠的板块就能发出和弦音。
而技术层面,Unity 的物理系统大体是 determinism。相同输入有相同的输出。但实际测试某些特殊的碰撞情况很容易导致 Bug。类似蝴蝶效应,初始的条件发生轻微变化,(中途某个板块发生轻微的旋转),就会导致后续所有板块都无法触发
Test 478
这个实验耗时较长,但最终结果还算不错。只是目前这个发音设计还有很多优化空间,凭空冒出新小球还是有点违背视觉上的统一性
Test 480
新增了拱形板块。设计的初衷是为了增加轨迹变化的丰富度。如果一直只有碰撞反弹,视觉上会挺单调。所以拱形的出现可以产生一些滑动动画,不同颜色会有不同的加速强度。
Test 483
添加了绳索来点缀,为后面一些弦乐器的触发做一些技术铺垫。
Test 485
添加了可被击飞的柱形板块类型。丰富发音方式。由于占位比较小,通过密集的摆法也能触发和弦。
至此,底层的基础功能已经完成。在这个过程中间也会做一些不直接相关的生成练习来放松,避免思路僵化。部分则会有意进行一些相关模块的积累,希望能在未来整合到游戏中。如光线追踪的试验,建筑墙体的生成等,方便小球可以在一个更错落的墙面空间上进行弹跳。
Test 475(材质与光线追踪测试)
Test 484(墙体生成)
最后,为了玩家更易上手。后续就做了一些声音和 UI 等的优化和设计工作。右键可以修改板块的触发音色。
增加可视化的图标,提示文字,提示界面,快捷键
多语言版本设置等
不足与未来的设计规划
* 游戏玩法的深化
目前是把所有能用的功能都开放出来。所以看上去有点像个画板/工具软件。后续会尝试加入更多能带来游戏性的设计。如增加闯关模式来做引导,待玩家熟悉基本操作再解锁更多功能。
* 可视化形式的深化
当前的映射关系做得比较浅层。只是很粗略地将单个音符的信息呈现出来。并没有考虑更高层级的关联。希望可以随着游戏的深化。在里面体现自己的思考。
* 音效设计的深化
对于一款音乐游戏而言。音色的选择,音频的处理还是非常关键。时间关系,只能先完成自己擅长的视觉和程序部分。音效的设计目前投入的时间非常有限。
当前发声用了合成器发声和采样音频发声两种形式。如鼓点类的音效用了采样音色。后面可以支持扩展。未来会支持 midi 输出和输入,如果有使用 ableton 编曲经验的。可以用这款游戏结合外部更强大的音色库来做一些实验性的实时音乐
Alpha版获取方式
为了倾听到有价值的反馈,形式上希望做一些筛选。Alpha 版是非免费的。
目前想到比较灵活的方式,是通过点击文章下方的“喜欢作者”。若喜欢以上的分享内容同时希望体验游戏,可以赞赏 8 元或以上。
我会在后台发送游戏的下载链接以及微信交流群的邀请(可选)。
希望有更多互动的朋友,欢迎进入交流群。建立群的目的,除了获得游戏设计的反馈,也希望多与对独立游戏或游戏开发感兴趣的同好交流。你可以看到游戏的打磨过程,反馈意见也会帮助我改善游戏的设计。
游戏离自己想象的最佳状态仍有非常大的距离,当内容达到自己认可的发布标准,会正式上线 Steam。在正式版发布前,申请玩家可以持续获得 Alpha 版的更新内容。视前期的参与人数,正式版会考虑以免费或 steam 优惠码的形式回馈第一批种子玩家。
注意事项
* 游戏当前只有 PC 版(window 系统)。由于部分特效与物理预测会相对占用运算资源,对显卡和 cpu 有一定要求的。目前测试1050以上的显卡能畅玩所有功能
* 公众号只能在后台手动回复,因而下载链接的回复非即时(一般不超过两天)。遇到问题如无法下载或回复不及时的情况,可联系邮箱 ziyangwen@gmail.com)
* 不出意外这将是个小范围的测试,有特殊情况不排除后续会关闭Alpha版申请。有任何变更请留意文章下方的置顶评论
最后
感谢前期所有帮忙测试并给予反馈的朋友。无论意见好坏,都帮助游戏离完成更进了一步:)