我正构建自己的 GameMaker 简化版本,称之为 ArcadeMaker。它最初是为了娱乐目的而创建的个人项目,但我也想分享到目前为止的进展以及与 GameMaker 相比的设计选择。
整合开发环境(IDE)得到了老版 GameMaker 8 界面的灵感那些想回忆的人可能会记得。编程语言是由我自己编写的解释语言,引擎基于 MonoGame,后者应该能够在未来的某个时候支持主流桌面和모바일平臺以及 console。
该编程语言包含以下核心特性:函数、类、枚举以及特性。它与 GML 有着显著的不同,强调的是面向对象编程。虽然说,GML 也有其独特的设计目标,它同样可以很好地工作。然而,我一直讨厌的一个方面是它如何对待对象名称的实例。
作为第一次学习GML的人,我记得过去如何困惑不明。这是如何:
实例(obj_player).x = 100
然而,如果房间里只有一个实例,你也可以写:
obj_player.x = 100
虽然这可能是方便的,但我却认为是概念上有问题。类型和实例的区分应清晰一致。
如果你要用引擎访问类型本身的实例,用 ObjPlayer.i 即可(会抛出异常如果实例没有唯一)。
当你需要访问类型本身时,则一定要将其包含在角括号内:
if (placeMeeting(x, y, <ObjWall>))
{
speed = 0;
}
即使引擎最终达到我目标的阶段,它也不会竞争与专业的工具如现代 GameMaker 相比,并且这并不是目标。这个是本人在娱乐时开发的项目。然而,它仍然具有以下的小优势:
- 轻量级的快速 IDE ——GameMaker 8 的使用者可能会记得它的启动速度快、流畅度高以及占用内存的少量,因此我将重现这份体验。
- 单一文件项目 —— 生成一个项目会生成一个只有一个文件的单一包。你并不需要创建任何文件夹,也不需要对 assets 文件进行组织和打乱。此外,我的方法避免了很多无用的文件。
- 快速开始 —— 开始使用任何一个项目都可以快速开始,尽管你可能要命名和保存它。但是,如果你只是想快速尝试一下一个想法,然后就放弃那么,传统的结构会留下很多没使用到的文件。我的方式避免了它们。此外,我重现了 GameMaker 8 的启动速度快、流畅度高以及占用内存的少量。
一份我用它开发的 demo 游戏:
以下是更多的截图:
https://preview.redd.it/3c4adix4dsug1.png?width=1599&format=png&auto=webp&s=3ecb42ac109b519c772ae40b2d04fe69765fdcdf
https://preview.redd.it/4ho3oox4dsug1.png?width=1599&format=png&auto=webp&s=62f3b498e5b7945678122f9d2721eb43bf4d7a32
我想听听你的想法。
评论 (0)