GMS2从零做游戏:小蜜蜂(一)

这个系列文章记录一下一款小游戏的开发经历,使用 GameMaker Studio2 这个2D开发工具。我本人也是新手,所以本文绝对适合新手。

目标

galaga.jpg

开发目标是复刻红白机经典游戏:小蜜蜂(Galaga),三十多年后,能重现这款经典游戏吗?开始吧~

准备

首先,因为是复刻,所以基本的游戏类型、机制、场景、美工都不需要考虑太多,主要精力放在如何实现上。因此首先需要熟悉一下开发工具: GameMaker Studio2 (以下简称GMS2)。参考以下文章:

第一天的目标:完成飞机的功能

素材准备

首先要准备飞机的图片,GMS2的图像编辑器已经进步很多,但我还是推荐用专门的工具来画,比如PhotoShop,或者我用的 Aseprite 。简单的画一个飞机的图像如下,大小在32x32像素。

plane.gif

新建项目

在GMS2里,一个游戏就是一个Project,如果你前面已经正确安装好,现在使用 CTRL_N 或菜单 file-new project,点击选择“Gamemaker Language”。这里不推荐使用拖放来完成,毕竟需要掌握GMS2的编程语言。

1-1.png

GMS2的节目非常直观易用,左侧是属性、中间是工作区、右侧是资源选择区。

下面介绍几个概念:

  • Sprite:精灵,也就是游戏中的图形,比如战机、敌人、分数等
  • Object:熟悉面向对象编程的同学,容易理解这个概念,对象可以理解成游戏里某个事物的最小集合,后面会慢慢理解
  • Scripts:脚本,编程语言放在这里
  • Room:游戏场景,GMS2可以创建多个房间,类似关卡

新建Sprite、Object、Room

如图1-1,在右侧 Resource 区域找到 Sprites,创建新的 Sprite。

点击import按钮,导入图片,并将精灵的名字修改成spr_plane,建议用规范的方式命名。

下面重复类似的操作,创建新对象,并重命名为 obj_plane。将这个对象的精灵选择成刚才创建的spr_plane,这样一个对象就有了图形。

最后在 Room 下面创建一个房间,重命名为 rm_game,修改大小为300x400像素。将上面创建的飞机对象拖入房间,第一个游戏场景就搭建完毕。如果没有错误,按下F5,游戏就能正常运行了。如下图:

1-2.png

本部分的步骤介绍的比较简略,新手熟悉一下应该不难。

给飞机添加移动动作

现在要给对象增加脚本,以实现基本的左右移动操作。

首先双击右侧资源列表里的 obj_plane,在对象窗口下方选择 Events - Add Event - Create,这里的含义是:给飞机这个对象添加一个事件,这个事件在此对象创建是触发。

1-3.png

如图,在Create 事件下面输入以下代码,这里的移动速度以后还可以调整:

hsp = 0;  //水平位移
walksp = 5;  //移动速度

然后重复刚才创建事件的步骤,选择 Events - Add Event - Step - Step。Step事件就像一个定时器,不停的检测对象的活动,因此适合用于控制对象的移动。加入如下代码:

key_left = keyboard_check(ord("A")); //方向左,A
key_right = keyboard_check(ord("D")); //方向右,D

var move = key_right - key_left; 
hsp = move * walksp;
x = x + hsp;

第二段代码的含义如下:方向左右的差值,等于移动量。移动量乘以移动速度,等于水平位移。飞机的水平位置,等于现在位置加上水平位移。

运行一下,飞机已经可以移动了。

最后我们加入一点控制代码,防止飞机移动出屏幕边缘。先补充一个知识,每一个精灵的图形都有一个原点,旋转是基于原点的,精灵的位置计算也基于原点。默认我们的飞机原点在图片的左上角,这里将它的原点改变到图片的中央:

1-4.png

这时,假设飞机在左边贴到窗口的左边,那么它的水平位置应该是16,因为窗口的原点是0,而飞机的一半是16像素。所以,给前面的 Step 事件添加一个判断,如下:

if x < 16 x = 16;
if x >284 x = 284;

小结

以上的部分,我们熟悉了GMS2的基本界面,了解了精灵、目标、脚本、房间的概念,并实现了飞机的左右移动,是不是离小蜜蜂近了一步呢?先到这里,下次,我们来实现飞机的射击功能。

20171019


参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容

  • 前面一节,我们实现了飞机的移动,下面继续: 第二天的目标:实现射击 素材准备 这次要画一个颗子弹,如下图: 图层的...
    老杜还在阅读 988评论 1 2
  • 上一节实现了飞机射击的效果,下面把敌人加进来。 创建敌人 小蜜蜂里的敌人是太空昆虫(?),所以先模仿原作画一个: ...
    老杜还在阅读 1,447评论 0 1
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,229评论 25 707
  • 前言 我选择开发一个游戏有很多原因。我觉得自己是“核心”玩家,过去的大部分时间我都花在玩游戏,自己制作、阅读和游戏...
    月影檀香阅读 11,739评论 1 27
  • 国庆之痛 秋意已深,秋意渐浓,这是多事之秋,也是病之萌芽,自以为是铁肚子,凉的...
    拙兰阅读 378评论 5 11