快速开始

本文将和你一起编写一个最简单的 Emuera 程序,来快速熟悉 Emuera 游戏的制作流程。

准备文件

为了能够开发一个最精简的游戏,你至少需要下载 Emuera 游戏引擎。

Emuera 项目地址:https://osdn.net/projects/emuera/

Emuera 官方下载地址:https://osdn.net/projects/emuera/releases/

下载好之后会有一个 zip 压缩文件,解压,并将其中的 exe 文件单独放置在一个空的文件夹中,这个空的文件夹就是我们的游戏根目录,我们用root来代表。

这样我们就获得了一个工程文件夹,其结构为:

root/
 └─ Emuera1824.exe
1
2

启动程序

如果我们直接启动exe,会得到一个消息框:

错误信息索引

csvフォルダが見つかりません

翻译:未找到 csv 文件夹。

新建一个名为CSV的文件夹后再启动,会弹出消息框:

错误信息索引

erbフォルダが見つかりません

翻译:未找到 erb 文件夹。

新建一个名为ERB的文件夹后再启动,此时程序正常运行。

我们注意到根目录下生成了一个名为emuera.config的配置文件。其中对 Emuera 游戏引擎进行了配置,若想了解更多引擎配置信息,请移步此处

程序正常启动后,这样我们根目录的结构就变为:

root/
 ├─ emuera.config
 ├─ Emuera1824.exe
 ├─ CSV/
 └─ ERB/
1
2
3
4
5

运行程序

运行后,程序的输出大致为:

Now Loading
--------------------
         ()

--------------------
[0] 最初からはじめる
[1] ロードしてはじめる
1
2
3
4
5
6
7

其中,最后两行是可以点击的,第一行是“新的开始”,第二行是“加载存档”。

我们点击“新的开始”,画面输出:

0
--------------------
関数の終端でエラーが発生しました:Emuera1824
関数"@EVENTFIRST"が見つかりません
※※※ログファイルをroot¥emuera.logに出力しました※※※
1
2
3
4
5

其中,第1行的0是代表我们的点击所对应的序号是0,这与我们键盘输入0并回车的效果是一样的。

最后三行为报错与提示信息,其大意为:

  • 函数的结尾发生了错误;
  • 没有找到@EVENTFIRST函数;
  • 日志已输出到根目录下的emuera.log文件中。

我们去根目录下打开emuera.log文件,发现其中记录了游戏引擎的全部输出。

现在我们来解决这个报错。不就是缺少@EventFirst吗?拿来吧你!

首先,在ERB/文件夹中新建一个名为Syetem.erb的文件;并输入以下代码:

该代码含有可期待的错误

@EventFirst
1

搞定!再运行,出现新的报错:

错误信息索引

予期しないスクリプト終端です

翻译:预期外的脚本结尾

在预想不到的地方遇到了脚本结尾?简单!预想不到我们就让你预想到:

修改System.erb

@EventFirst
  Quit
1
2

再运行,程序没有报错了,然而什么都没有,再点击一下就退出了。

……也算搞定!

现在让我们看看究竟发生了什么:

在第1行,是一个@EventFirst,这一行进行了一个定义函数操作。其中,第一个字符@是告诉游戏引擎这一行是定义函数语法的首行。

紧跟着的EventFirst函数名,也就是为我们定义的函数取一个名字,有了名字,我们以后就可以通过这个名字找到相对应的函数。若要了解更多关于定义函数的内容,请移步至此处

第2行有一个英文单词Quit,即退出。这是个可以单独使用的语句。跟在上一行定义函数的语句后面,代表新定义的函数的内容就是退出。若要了解更多关于 “退出”命令 的内容,请移步至此处

细心的你可能注意到了,在Quit前还有两个空格,这样,原本QuitQ是与上一行的@字符对齐的,现在却被挤到后面,和v字符对齐了。

有点奇怪,对吧?去掉这两个空格可以吗?

可以!(你可以去掉之后试试)

但! 这不太好~

想象一下:不久后的某一天,你已经是一个熟练的游戏开发者了,每天可以写一万行游戏脚本,但有一天你突然想在脚本的中间某个部分进行一些修改,你翻到脚本的中间,发现每一行都对齐得整整齐齐,你难以一眼就看出层层叠叠的代码逻辑中的从属关系,在这个时候,你也许会想,要是我在写的时候就把代码之间的从属关系用某种规律表现出来了,也许现在我就不用费力地每一行每一行地去分析了。

而合理地缩进(行前空格)就是一个成熟的处理方式!

也许我们不应该在初次见面的时候就聊起这个,但我始终相信,好的习惯从一开始就培养远比中途纠正要好得多~,关于更多脚本风格标准,请移步至 MCS 代码风格

完全理解了这两行脚本之后,我们联系前面的报错,可以简单地推理出,在点击“新的开始”按钮后,游戏引擎会寻找脚本中的名为EventFirst的函数,并执行它。

Hello World!

程序运行倒是没有错误了,但我们怎么才能用它做点什么呢?

我们就拿程序的入门:Hello World 来做实验吧。

修改System.erb

@EventFirst
  Print Hello World!
  Quit
1
2
3

保存文件后启动程序,看见程序正常输出:

Hello World!
1

搞定!

下一步

现在你已经拥有了一个最为精简的 Emuera 程序了!是不是很简单?

但要做成实际能玩的游戏,还有很多的工作要做,但在那之前,我们就已经有一些显而易见的事情亟待进行:

  • 标题一片空白;
  • 点击“加载游戏”还是会报错;
  • 程序什么事情都没做。

别急别急,罗马不是一日建成的!

让我们移步至教程,来为这个精简的小程序添砖加瓦!

Last Updated: 2021/9/30 上午5:06:17
Contributors: Miswanting