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