这个项目是一个2D游戏引擎(使用MonoGame后端),它受到GameMaker 8的启发。它包含自己的IDE(使用WinForms构建)以及我自己编写的解释型编程语言。

这个语言—毫无疑问,这个项目中最大的挑战—是一个简单的动态类型语言。开始时,我对如何构建这样的东西完全没有任何知识。甚至当我开始时,我都不知道我正在编写一个解释器;最初我把它称为编译器。这个项目是个人挑战,我想通过自己解决问题,而不使用任何资源或教程。我的思维方式基本上是:“我需要编写一个软件,它可以读取一个包含代码的文本文件,并按照文本文件的指示进行操作。”

奇迹般地,我成功了。在开始时,空循环计数到1M需要7秒。经过大量的性能优化和重建系统的部分后,同一台机器现在可以在2-3秒内运行一个30M的循环。性能提升非常显著。

这个语言本身有些不寻常,我想分享一个我非常喜欢的小特性:循环计数器。

foreach item in ['a', 'b', 'c'] : counter c
{
   println(c + ": " + item)
} 
// 输出: 
// 0: a 
// 1: b 
// 2: c

并不是一个复杂的特性,但却非常有用。

这是一个YouTube视频,展示了我使用引擎构建一个小游戏的过程

欢迎任何反馈。