Gamemaker 是一个简洁的工具,它允许一些好的 RAD。不过它也有不少不足之处。其中之一是缺乏一个好的标准库。
确实,您有“ds_*”类型的成员,但这些成员非常缺乏。例如,优先级队列只是一种只读类型(它在进程中被销毁)。列表的排序功能使用了一种非常慢的方法。(虽然从未正式声明,但我怀疑它使用了冒泡排序)。而且链表根本没有内置方法。除此之外,简单的成员访问速度比它应该的要慢。
现在人们实际上可以用母语创造这些东西。但是它变得很慢(因为解释器很慢)。即编写快速排序/堆排序在许多情况下比内置排序慢。编写我自己的“链表”——为每个节点使用特殊对象——开销太大。(gamemaker 中的每个对象每一步都会做很多事情)。
所以现在我正在考虑为标准库编写一个 C++ 层。我希望添加一些额外的功能(哈希表和链表是主要目标)以及允许更好的算法。对于大多数问题,我已经知道如何解决它,除了 1 个大问题:
所有 C++ 库都使用“迭代器”来标识项目。Gamemaker 仅允许在 dll 之间传递双精度数(或 c 样式字符数组)。
我将如何规避这一点?不返回一个项目的索引是很愚蠢的,所以我必须找到一种方法将这些迭代器映射到双精度。
这有什么好主意?我是否最好简单地重写所有数据结构,以便保证迭代器具有 1 对 1 映射到双倍(或实际上是双倍 + 数据结构索引)?还是有更好的方法?
Ps 为什么游戏制作者标签还没有呢?