问题标签 [game-maker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
13192 浏览

game-maker - 游戏制作语言新行

我正在编写一个 GML 脚本,想知道如何在下一行显示一条消息:

前任。

输出:

0 投票
5 回答
801 浏览

scripting - 游戏制作语言计算适当的平均值

这是我的代码:

现在,如果我输入数字 1 和 2,然后输入 -99 来打破循环,我得到的平均值是 1。我想得到实数,而不是整数。有什么帮助吗?

0 投票
1 回答
796 浏览

c++ - 制作一个包装器 dll 让游戏制作者处理 C++ 标准库

Gamemaker 是一个简洁的工具,它允许一些好的 RAD。不过它也有不少不足之处。其中之一是缺乏一个好的标准库。
确实,您有“ds_*”类型的成员,但这些成员非常缺乏。例如,优先级队列只是一种只读类型(它在进程中被销毁)。列表的排序功能使用了一种非常慢的方法。(虽然从未正式声明,但我怀疑它使用了冒泡排序)。而且链表根本没有内置方法。除此之外,简单的成员访问速度比它应该的要慢。

现在人们实际上可以用母语创造这些东西。但是它变得很慢(因为解释器很慢)。即编写快速排序/堆排序在许多情况下比内置排序慢。编写我自己的“链表”——为每个节点使用特殊对象——开销太大。(gamemaker 中的每个对象每一步都会做很多事情)。

所以现在我正在考虑为标准库编写一个 C++ 层。我希望添加一些额外的功能(哈希表和链表是主要目标)以及允许更好的算法。对于大多数问题,我已经知道如何解决它,除了 1 个大问题:

所有 C++ 库都使用“迭代器”来标识项目。Gamemaker 仅允许在 dll 之间传递双精度数(或 c 样式字符数组)。
我将如何规避这一点?不返回一个项目的索引是很愚蠢的,所以我必须找到一种方法将这些迭代器映射到双精度。

这有什么好主意?我是否最好简单地重写所有数据结构,以便保证迭代器具有 1 对 1 映射到双倍(或实际上是双倍 + 数据结构索引)?还是有更好的方法?

Ps 为什么游戏制作者标签还没有呢?

0 投票
4 回答
5555 浏览

game-maker - 游戏制作者无法识别变量

尝试在 GameMaker8 Pro 中为 MMO 风格的游戏设置目标数组,我在玩家角色的创建事件中有此代码,该代码运行良好,并且一直运行良好:

然后在玩家角色的 step 事件中运行此代码:

返回此错误消息:

即使我在敌人的创建事件中有这个:

而且我一直使用这种语法:

帮助?任何想法为什么 Game Maker 无法识别该变量?

0 投票
3 回答
3872 浏览

c++ - 无法将项目添加到 Win32 列表框控件

背景故事:我正在为流行的游戏开发套件 Game Maker 创建一个扩展。扩展是向内置脚本语言添加新功能的 DLL,但它是用 C 或 Pascal 或其他语言编写的。通常,它用于允许游戏使用外部库。

就我而言,我正在添加 FMOD 支持。这无关紧要。相关的是,出于调试目的,我还添加了一个在运行时显示的对话框,它显示了我的库的内部状态。我需要有关此窗口的帮助。在今天(.NET WinForms 4eva)之前,我实际上完全没有做过原始的 Win32 表单编程,所以我可能正在做一些非常无能为力的事情。

反正。我有一个列表框,我想在列表框中添加一些东西,但是当我尝试添加它们时,它失败了。我的代码:

DebugDialog是一个包装窗口的简单类,让我从外部操作它。基本上,在其他时候,我会这样做:

然后当我执行并做一些有趣的事情时,我会这样做:

loadedSound中,我向列表框发送一条消息,说“嘿,这是一个项目。继续添加。”,它不会返回错误。但是,它也不会向框中添加任何内容。每次我调用它时它都会返回 0。根据文档,0 表示它添加了一个项目,其索引为 0。但是,该项目不存在。

我有一个关于为什么它不起作用的理论。我无法控制 Game Maker 运行的消息泵,所以如果它正在做任何时髦的事情,我不知道,也无法更改它。也就是说,关于对话框的所有其他内容都有效,包括移动它、单击我的关闭按钮以及用鼠标在列表框中绘制选取框。

有人,请告诉我我做错了什么:(

编辑:有人问到FMODGM_Sound结构,所以这里是:

没有什么特别花哨的。

0 投票
1 回答
662 浏览

dll - 为什么在没有 -static 的情况下编译时,mingw 编译的 Game Maker 扩展在退出时会崩溃?

我用 mingw 4.5.0 编译了一个 DLL 并将其用作 Game Maker 8.0 扩展。Game Maker 动态加载 dll。一切似乎都可以正常工作(调用 dll 函数并提供正确的返回值),但是当我关闭 Game Maker 时会弹出一个对话框:“Microsoft Visual C++ 运行时库”,“此应用程序已请求运行时以不寻常的方式终止。 " 之后,该过程继续在后台徘徊几秒钟,然后消失。

当没有实际调用 dll 的任何函数时,也会发生这种情况。没有DllMain,并且所有静态/全局变量都是基本数据类型或std::string(当我删除 std::strings 时也会发生这种情况)。

dll 与 zlib 和 libpng 静态链接。当我将 -static 传递给链接器(我假设)也静态链接运行时时,问题似乎消失了。但是,这大大增加了我的 DLL 的大小,在我了解发生了什么之前,它充其量只是一种解决方法。

关于可能是什么原因的任何想法?

更新:实际上,似乎只有在 Game Maker 中加载了两个扩展时才会出现问题:一个带有与 -static 链接的 dll,而另一个没有。在没有 -static 的情况下链接两者会使问题消失。但是,我仍然不明白这个问题,因为 dll 从不直接交互或共享数据结构。

更新 2:我最近发现这可能与 Game Maker 本身的奇怪行为有关。加载 DLL 时似乎没有正确初始化全局变量,如果全局对象试图释放它们不拥有的内存,这可能会导致卸载时崩溃。这意味着 -static 只是一个随机因素,它改变了与全局变量关联的未初始化内存的值。

更新 3:修改了上述内容以包含有关 Game Maker 扩展的信息,因为这可能与更新 2 相关。

0 投票
3 回答
4924 浏览

c++ - 如何将资源嵌入到单个可执行文件中?

如果您曾经使用过 Game Maker 工具,那就有点像这样了。我希望能够获取我所有的声音、图像和其他类似的东西,并将它们嵌入到单个 C++ 可执行文件中。Game Maker 将有一个内置编辑器,并将图像嵌入到 .gmk 文件中,当您打开它时,它会读取图像并在游戏中显示它们。我认为他将图像保存为不是图像,而是作为纯数据存储在 .gmk 文件中,并由编辑器或某些解释器写入 .exe 进行解释。我将如何制作类似的东西?

0 投票
2 回答
1833 浏览

c++ - C++ 中类似 GameMaker 的功能

当我年轻的时候,我经常使用一个叫做 Game Maker 的工具。我开始学习编程。我现在远远超出了这个范围,但回过头来看,它的一些功能和设计非常有趣。我想知道 - 我将如何使用 C++ 实现类似于此工具的功能?我想知道:

  • 对象/类

Game Maker 有一个您将创建的“对象”列表,它们本质上只是从同一个基类派生的不同类(我现在将其称为 GameObject)和一个名为“instance_create”的系统函数,该函数将采用对象类型作为参数。在 c++ 中,这看起来像这样(虽然语法上非常不正确):

我将如何实施呢?

  • 系统变量/函数

Game Maker 拥有可以从任何地方访问的系统变量和函数。时期。任何地方。我在考虑全局变量,但我知道这是糟糕的设计。我在想拥有一个全局类,并将变量/函数设为静态,但是它们不能被改变。我该怎么做?

  • 变量

Game Maker 只有一种数据类型——var。它可以是一个字符串、一个整数、一个小数,任何东西。并且有系统函数可以在它们之间进行转换。

最后,如何在某种脚本中定义对象类型?比如,如果我想添加一种新类型的对象,创建一个新脚本?我不认为 C++ 可以在运行时创建对象类型,那么我该怎么做呢?

0 投票
1 回答
1728 浏览

ruby - Game Maker 的 GML 和 RPG Maker XP RGSS 的文本文件保护

我一直在从事 2 个项目,一个在 Game Maker 8 中制作的程序和一个在 RPG Maker XP 中制作的 RPG,我想做的一件事是让 RPG Maker XP 读取由 Game Maker 制作的“分数文件” ,乐谱文件本身只是一个基本的文本文件,Game Maker Program 和 RPG Maker XP Game 都会读取它来收集数据。

我面临的问题是,如果有人要在记事本之类的文本编辑器中打开此乐谱文件,他们可能会更改数据并“作弊”,所以我一直在尝试做的是加密文件,以便乍一看,它是不可读,让 Game Maker 和 RPG Maker XP 解密文件,从中提取所有数据,然后加密

但是我遇到了一个障碍,我在 Game Maker 中使用的 .dll 似乎以不同的方式加密/解密乐谱文件,我通过创建 2 个相同的 .txt 文件来测试 .dll,其中包含相同的文本,然后加密这两个程序,内容完全不同,这意味着如果我尝试在 RPG Maker XP 中解密在 Game Maker 中加密的文件,它将失败

我尝试过其他 .dll,但它们似乎无法在 RPG Maker XP 中工作,据我了解,RGSS 是 Ruby 的一个类,这意味着任何可以在 Ruby 中工作的代码都应该在 RPG Maker XP 以及 Ruby 和 Game 之间工作Maker 的 GML,C 是 2 可以使用 .dll 的通用语言

所以这就是我要问的,是否有任何.dll、脚本、代码等。我可以使用它来保护我的文本文件中的数据不被 Game Maker 和 RPG Maker XP 之外的编辑

特洛伊“记忆-X”记忆

PS:如果有一种方法也可以在 .php 程序中工作,那也很好,但如果不能,我可以解决这个问题

0 投票
1 回答
493 浏览

game-maker - 制作 2d 边缘褪色的云

嗨,对不起,如果我误解了在这里问这个问题。我正在与游戏制造商合作,最近我遇到了一些我无法解决的问题。我有一块云精灵,我有几个悬崖,玩家可以在上面行走。我想以一种方式显示悬崖上的云,它们只渲染我将要说的那些部分(悬崖的开始和结束),接下来的主要问题是云何时到达其在 x 向量中的起始位置的末端它会变成一块难看的切片,因为没有任何东西可以使那部分褪色。我做了第一部分,但因为褪色我做不到。

我知道这有点难挖掘,但对那些家伙感到抱歉。如果你不能得到我提到的我可以放一张图片。简而言之,我想要一个技巧来对切片部分产生淡入淡出效果。 切好的部分