Defold 游戏开发笔记 00

Defold 游戏开发笔记 00_第1张图片

简介

Defold 是一个以 Lua 为脚本语言的2D游戏引擎,最初是由两个游戏程序员为了打造自己心目中理想的引擎而开发出来。从一开始引擎小组就定下短周期更新、跨平台(PC/Mac/iOS/Android/HTML5)、小巧精干、速度快、方便小组开发等的目标。后来 King 看上了这个引擎并把它和整个开发小组都收入旗下,用它开发出 Blossom Blast Saga 等的游戏。

官方網站: www.defold.com

我最喜欢把 Defold 形容为2D精简版的 Unity ,对于一个由苹果电脑][+ 时代已经开始玩游戏的老司机来说,我最喜欢玩的还是2D游戏,想自己开发的也主要是2D游戏。

虽然 Unity 现在也越来越注重2D游戏的开发,但杀鸡焉用牛刀呢?打一开始我就不太喜欢这只集合太多功能于一身的大笨象,去年 King 把 Defold 免费推出市场后,我下载了玩了一下,很快就爱上了这个引擎,打算用它来写一些游戏。可惜一直忙这忙那,一年都过去了,居然什么也没搞出来⋯

什么事都是光说没用,行动最实际!那就开始搞些小游戏吧!一边写一边熟悉Defold,希望慢慢能用它开发出比较成熟的作品。


游戏: 太空侵略者

太空侵略者是最早期的游戏之一,玩法简单,写起来也简单。

Defold 游戏开发笔记 00_第2张图片
Box Shooter

自己用Flash 照着原版游戏的敌人和主角机胡乱画了一下就开始弄了,大家可以到这里试玩 HTML5 版,我会不断的更新完善:

hhk.itch.io/box-shooter

和 Unity 一样,Defold 也是基于组件开发范型为基础,它自带有不少方便编写游戏的组件, 在用到它们时,我会做做笔记,记录一下。


自带组件: Factory

一般来说,当游戏进行时有大量生成出来的物件,比如敌人或子弹,我们都会写一个管理的类来处理物件的生成,内存的占用和释放等等。

为了有好的运行速度,我们会在游戏开始前就会预先把一定数目的物件生成,放在一个池里,在游戏进行时不断循环利用这些物件而不是临时生成。

Defold 完全不用我们自己操心这件事,它有一个 Factory 的组件!我们只要在需要时,告诉相关的 Factory 把物件生成就好。而最贴心的是,Defold 所有的物件都是预先生成,可以随便在游戏进行中应用,等于引擎本身已经自动管理一个共用的池,当我们删除一个物件时,它只是被放回池里等之后再被循环使用,並不会触发内存的占用或释放,真是太方便了!

以下就是子弹的例子:在主角的 Game Object (.go) 里,我们看到有一个 bullet_factory,在 bullet_factory 的定义里,可以看到它要生成的物件是 bullet.go,也就是子弹。


Defold 游戏开发笔记 00_第3张图片
玩家物件

在玩家的脚本里,用以下这两句程序就可以生成子弹:

local f = "#bullet_factory"

local new_bullet = factory.create(f, pos)

当子弹出了屏幕或是撞到敌人,我们可以直接把子弹删除,就是这么方便:

go.delete()

先写到这里,有什么想写时再继续。

你可能感兴趣的:(Defold 游戏开发笔记 00)