一个人也能完成?手把手教你做一个横版动作游戏DEMO

2021-03-05 星期五
收听本文00:00
作者:江西恐龙(Dino) 腾讯互娱 游戏策划 原载于腾讯GWB游戏无界公众号
从行走逻辑上区分,横版动作游戏一般分为单线横版和纵深横版。从玩法上区分,还可以细分为格斗、射击、动作等。
横版动作游戏是一个非常经典的游戏类型,而且最近也有复兴之势。如果可以尝试着自己制作一款动作游戏的DEMO——对自己,可以学到更多游戏开发的知识,包括角色设计、关卡构成等等;对项目,可以一两周内就出一个简单的DEMO,方便给老板演示。
现在市面上有哪些现成的游戏开发软件可以使用呢?
2DFM
全称是“2D格斗游戏制作工具2nd”。它是由日本OUTBACK制作、EB发行的一款2D格斗游戏制作工具。利用这款软件玩家可以独立制作出属于自己的PC格斗游戏——比如中国台湾FK小组制作的《超级COSPLAY大战final02版》,以及本人制作的《东东不死传说》,都是用2DFM开发完成的。
AGM
全称为ActionGameMaker,同样由日本EB发行。拥有ACT,ARPG,STG等组件,使用这些组件就能制作出相应的PC、Xbox 360、PS3游戏,并且组件可以混合使用,例如可以做出地图上是ARPG,迷宫里是STG的游戏,可以说非常强悍。
OPENBOR
横版过关游戏开发软件。BOR软件的原名是《Beats of Rage》,名字有向SEGA的MD游戏《Streets of Rage》致敬的意思。开发者开源发布后改名为OPENBOR。它可以输出PC、安卓、PSP、XBOX等平台版本。上图是本人制作的横版DEMO。
接下来,让我们试试用OPENBOR来制作一款DEMO——
如果要制作横版过关游戏DEMO,我们先了解一下动作游戏的构成。通常一款横版动作游戏,包含了哪些元素?
《恐龙快打》的第一关可以拆解成这样:
所谓的关卡,其实就是一群角色在一个房间里打架的过程:
关卡的核心体验其实大同小异,这是另外一群角色在另外一个房间打架的过程。
说白了,这个就是一款动作游戏的基础框架:房间、人、打架。
那么我们接下来,针对这个房间,分解出一款DEMO需要用到的素材:
  1. 角色素材
  2. 场景素材
  3. UI素材
  4. 音频素材
OPENBOR这款软件没有操作界面,纯文件夹操作。并且资源全部为熟悉的GIF、WAV等资源。可以从网上下载到OPENBOR的最新版本,容量只有几M。
角色素材分为主角、杂兵、特效。这部分一是可以自己画,二是可以去网上找到一些资源。但是网上资源随意混搭会出现比例失调的情况,因此一定要规划好尺寸。
角色资源整理好以后,放到Chars里面的次级文件夹里,以本人这个DEMO为例:\data\chars\mukui文件夹里。
场景素材同理。要么自己画,要么先用网络资源。
场景资源的透视关系也是很重要的。经过对比发现最常用的角度一般是30度或者45度。60度比较少见了。
场景资源整理好以后,放到Bgs里面的次级文件夹里,以本人这个DEMO为例:\data\bgs\city文件夹里。
UI素材一般分为战斗UI和主菜单UI。OPENBOR自带了一套战斗UI资源,因此这个步骤可以缓一缓。等DEMO打磨得非常精美的时候,再替换成自己的UI也不迟。
音频素材一般包含了背景音乐、音效。整理好以后,放到\data\music文件夹里。
音频资源网络上可以轻易下载到,也可以暂时用OPENBOR自带的资源。背景音乐OPENBOR采用的是BOR或OGG格式。
音效方面,OPENBOR采用的是WAV格式。可以用GoldWave这个软件来切割。
音效音频整理好以后,放到\data\sounds文件夹里。
通常一款横版动作游戏包含的模块:
  1. 角色编辑器
  2. AI编辑器
  3. 场景编辑器
  4. 关卡编辑器
有些软件会把这几个模块都放置到同一个面板,例如2D格斗软件2DFM就是同一个页面。但从程序开发角度来说,这些模块都是独立模块。每一个模块的开发周期可能都要1周到数月。
OPENBOR的编辑采用纯TXT文本操作,用户可以很容易找到各个模块的位置。资源准备就绪,我们就开始来编辑关卡了。OPENBOR的角色编辑是这个样子的。
打开\data\chars\mukui下的角色TXT文本,可以看到很多可配参数——
  • name mukui
  • type player
  • health 300
  • speed 30
  • #被投掷的长、高
  • throw 8 6
  • #被投掷的伤害
  • throwdamage 50
  • #影子种类
  • gfxshadow 1
  • #跑的速度、跳高、跳长倍数、是否上下跑、跳跃着地后是否继续跑
  • running 60 7 1.4 1 0
  • #烟尘动画,在MISC里
  • dust dust3
  • #跳跃高度、速度、是否反向、重力
  • jumpheight 7
  • jumpspeed 30
  • jumpmove 0 0
  • antigravity -110
开发者只需要按照OPENBOR的标准ID字符来配置这些参数即可。由于功能繁多,有兴趣的同学可以自行阅读OPENBOR的开发说明文档。例如这是主角的普通直拳的一个配置——
  • #攻1
  • anim attack1
  • loop 0
  • delay 2
  • offset 225 360
  • bbox 173 153 105 212
  • frame data/chars/mukui/446.gif
  • frame data/chars/mukui/447.gif
  • delay 5
  • attack 268 193 98 51 10 0 0 0 10 50
  • dropv 6 3 0
  • frame data/chars/mukui/448.gif
  • attack 0
  • delay 3
  • frame data/chars/mukui/449.gif
  • frame data/chars/mukui/450.gif
简单地说,就是主角以不同的速度来播放了446-450整套序列帧图。并且在448号图的时候触发了攻击框。
大家有没有发现,这套编辑方法本质上就是GIF动画的编辑逻辑,只不过在合适的帧数里加入了攻击判断。
  • 角色编辑小诀窍1:打击感的由来
一套完整的打击感包括了以下几个基础因素:
  1. 音效
  2. 光效
  3. 打中人的瞬间,双方的抖动帧数
经过研究发现,不同的动作游戏其顿帧的时间不同。似乎动作游戏的顿帧时长都偏低,比格斗游戏还短。分析其原因,就是因为动作游戏频繁攻击,如果顿帧时间太长很容易视觉疲劳。
正常顿帧
正常顿帧
不正常顿帧
不正常顿帧
通常来讲,顿帧越长就意味着那一拳越带劲,打击感爆满。但是当一款游戏所有攻击的顿帧都很长的时候,就会显得非常无趣。就好比《黑客帝国》里整部电影都是子弹时间,或者某个宴席里所有菜都是烤乳猪,用户会非常腻烦……
因此建议大部分攻击,其顿帧都维持在6-12之间的某个数,部分超必杀或者必杀技的收尾一击时,可以把数值配大。这个顿帧的应用,不仅可以用在2D项目上,其实3D项目也是共通的。
  • 角色编辑小诀窍2:判定框的绘制
判定框分为受击框、攻击框、碰撞框,下图是受击框的一个范例。猜猜看哪种绘制方法是正确的,哪种是错误的?
下图左边是正确的绘制,不随主角呼吸而晃动。右边是错误的绘制,过于强调跟随身体,会严重影响高玩的攻击判断。
《拳皇》的受击框,在体形上相差不会很大。下蹲和跳跃姿态的时候甚至简化了一个框。
《街头霸王4》的判定框也采用类似做法,一切从简,以打击感的稳定为目标。
判定框的绘制肯定也不需要随角色胳膊的晃动来变化,没必要每张都画。如果某个动作,其身体摆动幅度不大,那么其受击框应该尽量只绘制一套。(OPENBOR的逻辑是某一个指令会通吃下面所有脚本行,除非遇到了下一个同样的指令。)
  • 角色编辑小诀窍3:动画帧数的调配
角色的动作是由图片组成的,每一张图片的停留时间将决定了动画的快慢与否,流畅与否。
通常一个动作包含了“发招,攻击,收招”三个阶段。也有些玩家习惯称之为“前摇、攻击、后摇”。
制作统一的受击图,可以节约编辑工作。要知道SNK公司是做了十几年的格斗游戏,在手感这一块是顶尖的代表。因此虚心学习SNK公司的动画帧数数据是非常有必要的。
下图是《拳皇98》的帧数表,可以适当参考:
那么我们这个角色的第一拳,参数就参考一下金家潘,先这么设置吧。
这里并非叫大家照着金家潘的手感来制作这个角色,而是通过一种低学习成本来尽早学会编辑角色。事实上当游戏完成后,自己完全可以微调各种参数。如果要自己去原创尝试,数值该怎么填?8、9、10?10、20、30?对于一个没有动作游戏编辑经验的策划来说,凭感觉去调整参数说不定会适得其反,效果越调越差。
特效和音效方面,OPENBOR默认播放的是flash.txt和flash.wav,图像资源位置在\data\chars\misc。
  • name Flash
  • type none
  • shadow 0
  • toflip 1
  • alpha 1
  • anim idle
  • loop 0
  • delay 2
  • offset 160 160
  • quakeframe 0 3 3
  • frame data/chars/misc/flash1_01.gif
  • frame data/chars/misc/flash1_02.gif
  • frame data/chars/misc/flash1_03.gif
  • frame data/chars/misc/flash1_04.gif
  • frame data/chars/misc/flash1_05.gif
  • frame data/chars/misc/flash1_06.gif
  • frame data/chars/misc/flash1_07.gif
  • frame data/chars/misc/flash1_08.gif
  • frame data/chars/misc/flash1_09.gif
当需要在某个特定的招式弃用特殊的特效和音效时,则在相应的attack里面配置新的特效。
关卡方面,打开\data\levels下的关卡TXT文本,可以看到很多可配参数。
  • # Street
  • music data/music/01_Go_Straight.bor
  • bossmusic data/music/menu.bor
  • # Load images
  • background data/bgs/city/city_back.gif
  • panel data/bgs/city/city_road.gif
  • frontpanel data/bgs/city/city_front.gif
  • order a
  • light 0 -128
  • at 0
  • direction both
  • #notime 1
  • #settime 0
  • #gravity -10
  • spawn Hamburger
  • coords 700 440
  • at 0
  • spawn Gold
  • coords 400 390
  • at 0
基本就就是列出了关卡所需的背景音乐、前后景需要的场景资源,下雨的特效、以及电话亭物件、敌兵的摆放坐标。
关卡的清版逻辑很简单,有一个wait的字符,表示当前字符以前的敌兵必须全部杀死,才可以解开锁定的区域。
时间关系,笔者不再罗列出所有脚本的功能用途。不过OPENBOR这款开源软件比较好的地方在于:所有功能都是用类似脚本的方式写入,网上可以很轻松的找到DEMO范例用来学习。
我们来回顾一下一款动作游戏的DEMO,它是由哪些东西构成的。
积少成多,小关卡可以组成大关卡,大关卡可以组成大章节。
关卡就像是一枚螺丝钉,它的最终服务对象是游戏的各大核心系统。
制作DEMO的过程中,大家将学到哪些功能是必须的,哪些是可有可无的。
OPENBOR演示
OPENBOR演示
当这些知识运用到我们工作中时,就会大大节约策划、美术、程序之间的沟通成本,也会加深你对于游戏制作的理解。
谢谢阅读!

I

原文地址:点击此处查看原文