前导知识-从超级玛丽看游戏制作基本要素

前言

本篇是《躲避砖块小游戏》系列教程的第三篇,前两篇已经发布,分别是 Micro:bit 模拟传球小程序Micro:bit 重力控制水平仪,今天我们将以一个大家小时候都非常熟悉的游戏(暴露年龄的时候到了)–超级玛丽为例,分析一下制作一个简单小游戏所用到的基本概念,文末有彩蛋呦。

一款游戏涉及到的概念有:

  • 场景

  • 精灵

  • 动画

  • 关卡

  • 事件

  • 碰撞检测

  • 胜利失败条件

  • 记分系统

下面我们一一来分析

场景

游戏的场景指的是游戏里人物所处的环境,包括了天空,海洋,云朵,树木等等,它会随着主角的位置不同而变化,比如超级玛丽里面,就有不同的场景,有白天,有黑夜,有海洋,这些不同的场景形成了不同的视觉效果,同时也带来了不同的玩法,比如在白天的场景里,主角可以奔跑跳跃,而到了海洋里,主角就可以游来游去

前导知识-从超级玛丽看游戏制作基本要素

前导知识-从超级玛丽看游戏制作基本要素

后面移动的蓝天白云,小山坡共同构成了游戏场景。

精灵

精灵是游戏里面的重要元素,我们可以把它理解为一个可以进行操作的图片,它可以移动,可以变形,可以有各种各样的属性,比如超级玛丽里面的主角就是一个精灵,可以奔跑跳跃游泳踩乌龟吃蘑菇顶金币钻管道,除了主角之外,路上爬的乌龟蘑菇,天上飞的炮弹,水里游的章鱼,甚至一个砖块,钱币箱子,水管都可以看作是一个精灵,每个精灵都有自己不同的属性,属性也分为很多种。

  • 对于主角来说,属性是当前的位置,是大人还是小人还是子弹人,是否存活等

  • 对于敌人(乌龟蘑菇)来说,属性是当前的位置,有没有被主角踩到,龟壳是否翻转,是否存活等

  • 对于一块砖头来说,属性是有没有被主角顶到

  • 对于钱币箱子来说,属性是有没有被主角顶空,还有多少钱币可以顶

  • 对于旗子来说,属性是有没有被主角踩到

可以发现,除了主角以外的精灵,基本上都是为了主角而存在的,或者给主角提供增益属性,或者为了阻碍主角让它死翘翘

前导知识-从超级玛丽看游戏制作基本要素

动画

这个很好理解,游戏里必不可少的就是动画了,它是让游戏变得形象生动的根本原因,从一个砖块被顶掉,到主角跑动,到主角碰到乌龟死亡,都少不了动画的存在

前导知识-从超级玛丽看游戏制作基本要素

关卡

小时候最高兴的就是把一个游戏打通关了,而这个通关的关,就指的是关卡,超级玛丽是一个典型的过关游戏,一共有8关,每个大关有4个小关,每个关卡由不同的场景构成,有白天黑夜大海洋,还有隐藏关卡,可以上天入地跳关,但是现在的很多游戏越来越弱化关卡的概念了,比如很多的沙盒游戏都是开放世界,基本不存在关卡让你去一个个突破

前导知识-从超级玛丽看游戏制作基本要素

事件

事件我们前面的教程里已经涉及到了,事件代表一件事情发生了,比如按下手柄上的左键,主角就向左移动,按下B键,主角就跳跃,事件是玩家和主角交互的纽带,玩家通过手柄发出各种各样的事件来控制主角进行游戏,同时游戏里也有各种各样的事件,比如主角头顶了一块砖头,那这块砖头就掉落,或者长出一颗升天树,主角跳起来踩死了一只乌龟,那么乌龟就变成龟壳翻过来等等,正是因为各种各样事件,连接起了主角和各种敌人或道具之间的互动。

碰撞检测(选择了解)

这部分作为选择了解的内容,如果不是很理解可以跳过,制作 micro:bit 小游戏这点不是必须的,micro:bit 提供了现成的碰撞检测模块,我们直接用就可以了。碰撞检测是游戏实现里一个非常重要的部分,它是许多事件的基础,比如主角头顶砖块这个事件,我们怎么判断主角的头碰到了砖块呢?或者怎么判断主角踩到了乌龟呢?这就需要用到碰撞检测了。

为了方便解释,我们可以把主角和蘑菇都想像成两个矩形,

  • 屏幕左上方为 坐标原点,水平方向为 x 轴,垂直方向为 y 轴,x 轴向右为正,即越往右 x 的值越大,y 轴往下为正,即越往下 y 值越大,

  • 主角的矩形宽为 w1,高为 h1,主角所在的矩形(称为 主角矩形,下同) 左上角坐标为 (x1, y1),

  • 蘑菇所在的矩形(称为 蘑菇矩形,下同)宽为 w1,高为 h2,左上角坐标为 (x2,y2)

前导知识-从超级玛丽看游戏制作基本要素

那么怎么计算两个矩形碰撞了呢?原理就是看两个矩形有没有重叠的部分,两个矩形可能出现以下几种情况(只考虑碰撞的情况):

前导知识-从超级玛丽看游戏制作基本要素

图片来源:https://github.com/JChehe/blog/issues/8

具体算法如下:

  1. x1 < x2 + w2 && x1 + w1 > x2

  2. && y1 < y2 + h2 && y1 + h1 > y2

解释一下:

我们可以把 x1 看作 主角矩形 的左边线,把 x1 + w1 看作 主角矩形 的右边线,x2 看作 蘑菇矩形 的左边线,x2 + w2 看作 蘑菇矩形 的右边线,y1 看作 主角矩形 的 上边线,y1 + h1 看作 主角矩形 的下边线,y2 看作 蘑菇矩形 的上边线,y2 + h2 看作蘑菇矩形 的下边线,因此得到:

  1. x1<x2+w2 的意思就是 主角矩形 的 左边线 在 蘑菇矩形 右边线 的 左边

  2. x1+w1>x2 的意思就是 主角矩形 的 右边线 在 蘑菇矩形 左边线 的 右边

  3. y1<y2+h2 的意思就是 主角矩形 的 上边线 在 蘑菇矩形 下边线 的 上边

  4. y1+h1>y2 的意思就是 主角矩形 的 下边线 在 蘑菇矩形 上边线 的 下边

前导知识-从超级玛丽看游戏制作基本要素

注意这 4 个条件是并列关系,即需要同时满足,不满足其中的任何一条都不能表明两个矩形碰撞,不管主角矩形在蘑菇矩形的上下左右哪个方向,这个条件都适用,大家可以对照上面的图案里所示的 8 种情况自己体会一下。

胜利失败条件

胜利失败条件决定了游戏何时结束,游戏胜利结束,意味着过关啦,游戏失败结束,意味着 Game Over,对于超级玛丽来说,每一关的胜利条件基本一致,都是到达大本营升起小旗旗(关底是打倒大魔王)

前导知识-从超级玛丽看游戏制作基本要素

而失败条件有许多种,比如碰到乌龟蘑菇炮弹章鱼等死亡,或者掉到坑里摔死,或者未在倒计时结束前到达大本营也会失败

前导知识-从超级玛丽看游戏制作基本要素

记分系统

最后来说说记分系统,它是游戏过程的一种统计手段,玩家进行不同的操作,可以获得不同的分数,比如顶金币可以加分,过关可以加分,踩死敌人可以加分,过关胜利剩余的时间也会换算成分数,记分系统是一种反馈系统,可以让玩家直观的看到自己在游戏里的表现,分数越高代表在游戏里的表现越好,并且能够激励玩家追求更高的分数,像很多街机游戏都有分数排行榜,包括现在很多网游里面的名人榜等,都是类似的设计,为的就是激发玩家心中的那一点点虚荣心理,为了追求更高的分数(排名)而在游戏里花费更多的时间。

总结

这篇教程总结了一下实现一款游戏的基本要素,包括场景,精灵,动画,关卡,玩家与角色或者角色与道具之间要用到事件来进行连接,而碰撞检测是事件的基础,另外游戏也需要记分系统来给玩家直观的反馈自己在游戏里的表现。我们也需要考虑一款游戏它的胜利和失败条件分别是什么,这样才能让游戏正常退出,不会无限循环下去,当然也有例外,比如跑酷游戏基本上是无限设计,为了让玩家追求更高的分数,而可以让玩家只要不失败就可以一直玩下去,所以跑酷游戏设计了很多让玩家失败的因素,而没有明确的胜利条件。

彩蛋:

原文始发于微信公众号( 暴王不暴燥 ):前导知识-从超级玛丽看游戏制作基本要素

打赏

猜你喜欢

博主开通了微信公众号,欢迎关注啦

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.