前言
实习工作快一年了, 对于Unity引擎有一些了解. 最新的版本不知道2D体验怎么样, 但旧一些的版本明显是3D为主, 2D体验不是很好. 个人业余要做点小游戏的话, 2D还是用专门的2D引擎好一点, 盯上了Gamemaker. 浏览各种游戏引擎的时候评论区都是有捧有踩的, 真假难分, 还是亲身体验一下再说.
使用steam的desktop版, 当然网上的盗版能搜一大堆. 每次启动需要验证帐号还是挺烦的, 离线时不知道怎么才能运行
Gamemaker的学习方式主要有官网文档\youtube视频\indienova等
这里跟随一本书 来学习, 这本书是介绍使用GML语言创建游戏项目的入门书
书中使用的资源可以在 https://github.com/Apress/practical-gamemaker-studio 下载
介绍
跟随书中介绍, 可以创建一个点击物体的游戏(类似打地鼠)
...... GMS2和书中用的GMS的界面布局还是区别挺大的

创建一个新项目后, 界面右侧列出了资源类型, 第一感觉GMS更像一个游戏引擎+游戏框架的结合体
2D游戏的一些基本概念
- sprite 用于在游戏中显示图形
- room 游戏行为的容器(场景), 负责渲染\处理用户输入\播放音效等
- sound 很明显, 声音
- font 游戏中用到的字体.这里并不是一个独立的ttf等字体文件, 而是读取字体中的轮廓自动排版生成的texture
- object 应该和unity的gameobject类似
obj_start_game 开始按钮的处理
跟随书中步骤创建了这些游戏资源, obj_start_game
的create
事件代码:
ini_open("savedata.ini");
global.highscore = ini_read_real("score", "highscore", 0);
ini_close();
score = 0;
lives = 5;
可以看出GML语言的一些函数明显是高度封装比较适合制作游戏的...但这种设计到了大型项目中真的靠谱吗???
另外, 在输代码的时候, 在函数名没写完之前, 没有代码提示...惊了
left released
(左键松开)事件代码:
room_goto(room_game)
这里的room_game
是创建的room资源, 这里已经可以直接当变量名使用了
draw
事件
draw_self(); //draws sprite assigned to this object
draw_set_font(font_hud); //set font
draw_set_halign(fa_center); //set horizontal alignment for drawn text
draw_set_colour(c_black); //sets drawing colour as black
draw_text(250,280, "Highscore: "+ string(global.highscore)); //draw Highscore: plus value of global.highscore
画sprite, 画最高分, draw相关函数只能在draw事件中用
这种GUI的设计方式...简直鬼才啊...
不过在GMS2中看到了一个draw gui
事件, GMS2的ui实现方法之后再确定
游戏退出按钮的代码也很简单
game_end();
习惯了unity的GUI实现我好想吐槽啊...程序员还是更喜欢直接写代码而不是拖拖拽拽的
obj_target 怪物的创建
create
事件
x=irandom_range(100,700); //sets x position at random between 100 & 700
y=irandom_range(100,300); //sets y position at random between 100 & 300
timer=100-score; //set timer as 100 less score - so it gets faster
if timer<=5 timer=5; //check if less than 5, set as 5 if it is
alarm[0]=timer;
直接用x
和y
变量来表示位置的模式...惊了...
alarm 0
事件
audio_play_sound(snd_you_are_dead,1,false);//plays a sound
lives-=1; //reduce lives
instance_create(50,50,obj_target); // create a target
instance_destroy(); //destroy self
播放声音,扣玩家一滴血,创建一个新敌人并销毁自己