名为怪物的游戏——《星之魔女》FC小游戏移植(END)

前言

真的完结啦!!!

演示地址:前往B站观看

下载地址:百度网盘

提取码:gq8c

场景搭建

基本场景

导入场景素材,然后搭建游戏基础场景。

游戏场景

场景滚动

玩家向前奔跑时,当玩家跑到屏幕的中线位置,背景就会开始跟随滚动。

多重卷轴

多重卷轴的原理是利用多个背景层移动速度不一致让玩家存在视觉的偏差。

使用多重卷轴可以让背景更有立体感。

场景限制

跑到极限位置时,背景不再滚动,并且玩家无法继续向前。

而玩家跑到屏幕左侧时,也无法往回跑。

视野跟随

场景中的摄像机默认是静止的,当玩家向前走时,摄像机应该也跟着走。

这样才能让主角一直保持在视野里。

摄像机的移动是有规律的。

当玩家没有超过屏幕水平中线位置时摄像机不会移动,这样可以让玩家不会超过屏幕中线的位置。

距离屏幕右侧有一段比较大的安全距离,可以让玩家有足够的判断时间躲避袭来的敌人或者子弹。

技术问题

实际上视野跟随实现起来很简单,但是因为我一开始设计失误,把所有的图片都当做 UI 了。

UI 无法跟随摄像机移动,但是可以解决图片缩放问题。

所以制作的过程快了很多,不过现在要让视野跟随玩家移动就比较麻烦了。

摄像机跟随

虽然无法通过平移摄像机的方式来改变视野,但是反过来可以让 UI 移动,让视野中心一直处于摄像机中间。

只不过这样移动是把整个游戏的场景进行平移,在性能上远不如移动摄像机。

所幸小游戏只有一关而且流程不长,所以可以通过这种方法实现视野跟随。

游戏场景

玩家控制的角色永远都在红色方块的区域,而玩家移动时,背景也跟着相对移动。

所以视觉上就会变成玩家在向前奔跑的效果。(请回顾高中物理:相对运动)

QQ20210521-175501.jpg

总的关卡场景由 4 个屏幕组成,最终要留一个屏幕的距离,每一个屏幕的宽度为 1280 像素。

背景滚动示意图:

QQ20210521-181226.jpg

阻挡玩家前进/后退

为了避免玩家可以回头或者继续向前走离开屏幕范围,在场景看不见的位置设置两道“空气墙”(白色区域)阻挡玩家行走。

QQ20210521-175947.jpg

玩家走到左侧边缘或者右侧边缘的时候,就会被空气墙挡住了。

销毁物体/敌人/子弹

由于游戏场景的道具、敌人、子弹会占用内存并且还会处于一直计算的状态(占用 CPU)。

对于飞出屏幕之外的子弹以及离开屏幕的道具、敌人应该将其销毁,从而释放内存。

QQ20210521-182310.jpg

当前场景中有一个看不见的检测区域,当游戏中的物体进入/离开时,就会触发碰撞监听。

当物体进入的时候,触发激活状态;当物体离开的时候就销毁。

激活状态对敌人的设定非常有用,只有敌人进入玩家视野的时候才让敌人开始行动,否则就是静止状态。

关卡设计

在玩别人制作的游戏时,总觉得玩起来没有违和感。

但如果自己来设计关卡的话,总觉得各种怪怪的。

因为只有一关,所以关卡就设计的比较简单,跑图然后进入 BOSS 战,结束。

小插曲:unity 中的 transform.position 获取的是世界坐标,而 transform.localPosition 才是相对于父节点的坐标,如果直接用世界坐标会出现敌人跟着场景运动(即运动的叠加,例如一个人站在高速行驶的火车上向前跑或者回头跑)所以应该只在相对于父节点的位置进行运动

激活敌人

场景中的敌人在进入视野前不应该能够自由移动。

也就是说,默认情况下应该让敌人处于“静止”状态,只有进入玩家的视野才“激活”它们。

做法十分简单,原理与让子弹消失一样。

区域检测器

区域检测器不仅可以用来让离开区域的子弹消失,同样可以检测进入区域的怪物。

只要怪物进入区域就自动触发激活状态的回调即可。

屏幕外的敌人处于不动的状态,进入区域之后才变为激活。

不仅可以节约 CPU 的开销,也可以避免敌人乱蹦乱跳打乱关卡节奏。

因为是全局的设置,所以最开始抽取的 MiniGame_Enemy 作为敌人的父类方法就可以直接“一键修改”了。

这就是抽取出父类的好处,后面加入新功能可以节约很多时间。

教学关卡

游戏开始时,前面有一小段“教学关卡”。

QQ20210514-190224.jpg

因为以前的 FC 游戏都是手柄操作的,所以不需要提示按键。

玩家可以靠自己尝试了解到每一个键的作用。

为了让玩家知道基本操作,这是游戏中仅有的一次提示。

前方设置三个樱桃,即使玩家想要跳过也一定会碰到。

让玩家知道吃到这个东西可以加分。

接下来右方有一根水管限制玩家继续移动,玩家需要跳过水管或者站在水管上面。

接着刚好会飘来一只幽灵,让玩家第一次接触战斗。

教学关键这样就结束了。

(这个水管的形状以及放置的位置就是致敬以前玩的马里奥 FC 游戏,毕竟 FC 游戏是我们的启蒙)

BOSS 及关卡流程

此处省略一万个字……

本来是打算边写制作过程记录下来的,结果是边修 BUG,边测试……

因为最开始设计失误导致全部游戏对象都采用了 UI,接着为了让摄像机跟随就要挪动整个游戏场景;

挪动整个游戏场景意味着地图上的怪物也会跟着挪动,因此需要重新修改怪物的行动方式……

“将错就错”反而需要花费更多的时间来弥补前面的失误,重新修改的过程心态都快爆炸了。

如同网上的段子一样,修好了一个 BUG,就会出现另一个新的 BUG,所以那天一整个下午都沉浸在修 BUG 的恐惧。

所幸还是坚持改完了,剩下一些操作体验的问题以后有时间再修改。

“以后再改”的潜台词就是“不打算改了”——兔(ge)子(zi)语录

游戏剧情

为了弥补原来没有设剧情的遗憾,重置版增加了结局。

(实际上跟哑剧差不多)

玩家操控女主角将布偶 BOSS 打出真身,然后返回城里。

返途中,场景出现的怪物会为布偶“送别”,直到快要靠近城里的时候依依不舍的离开。

最后,女主角将布偶交还给小女孩,剧情结束。

另外本结局将解锁 CG 一枚。

素材问题

由于我们两个人都没有制作音乐的能力,所以我们决定直接使用公开版权的音乐素材。

游戏是 FC 时代的风格,因此采用 8-Bit 的背景音乐。

最终选择的是魔王の魂提供的免费版权的素材。

魔王の魂:https://maou.audio/

在小游戏最后场景将以滚动文字的方式注明版权出处。

演示效果

最终完成版:https://www.bilibili.com/video/BV1Bf4y1h7RE/

(已投稿至 B 站)

后言

中间断更了几天(在摸鱼)

在闲鱼淘了一个二手的 3DSLL,用来纪念当初逝去的青春~~~

这几天又沉迷在宝可梦大探险,虽然游戏很坑,但是抵挡不住对宝可梦的热情,结果还是沦陷了,ε=(´ο`*)))唉!

网易游戏一直都在挑战我的忍耐力,看看这个宝可梦游戏我能坚持多久。

但我发誓以后再也不玩网易的游戏了。

文章作者: 火烧兔子
文章链接: http://huotuyouxi.com/2021/05/30/monster-game-10/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 火兔游戏工作室