Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics


A member registered Oct 01, 2014 · View creator page →

Creator of

Recent community posts

Executing game events on error would be possible by simply doing a check on the end of the step and calling game_end - I tested a bit, and legacy-format errors (such as show_error, which will still fire Game End event) simply order the window to close itself and set a global flag so that you don't get any more error windows. I imagine that newer errors had been changed to quit instantly because you may not want to run any further code (including Game End) if the game state is potentially broken

I'm not sure if that would be possible, as that requires to figure out raw memory address of script_execute at runtime (assuming that it's a function at all) while having exactly zero information about it's structure or whereabouts.

However, it is not required to check for queued errors at the end of the step - you can check whenever, such as immediately after you do something that might have caused an error. Some people even made "try" / "catch" macros for GMS2 to store/check the current number of queued errors

I'll take a look but not entirely sure what's up - TJSON is specifically written with UTF-8 support, and would successfully display non-English names in Nuclear Throne.

If this is not as simple as tj_encode-ing a string and then tj_decode-ing it back to find it messed up, please provide a sample snippet that breaks it.

Hm, alright, try now - I uploaded a new build

If this is happens every time, can you open resources/app/main.js, uncomment the "mainWindow.webContents.openDevTools()" line, run it again, and send me what error it's throwing up on startup (as that's the only way you can get no startup page)? That would appear in Console tab

If opening a youtube video in background magically fixes this, it's your system's power settings causing it to cripple CPU frequency because NT[T] doesn't look busy enough.

Yeah okay, it's fixed for the next release. 40 minutes of hooking up peripherals (and figuring out why mac mini doesn't pair with the keyboard anymore) for a 10-minute fix

For simple setup,

  • Make a room as per documentation
  • Assign live_blank_room / live_blank_object in obj_gmlive's Create
  • Assign live_room_updated there as well, use the example script (which does room_goto_live)
  • Do room_set_live for room(s) of interest there too
  • At this point, when running the game with server connected, modifying and saving room will cause the game to transit to it's updated version

The program is pretty stable, having been originally made for use with higher-profile contract projects (Nuclear Throne, Rivals of Aether, Nidhogg) and still used this way. GMEdit also has an option of making a backup whenever a file is saved, making it less likely to corrupt anything than GameMaker itself. However, using version control is still a good thing for your sanity.

As for improved version, I continue to accept donations for an indefinitely large amount of hours that were already put into it, but, as we already know from Parakeet's example, it is very hard to sell GM users a better code editor - even if you put in extra months of work to have a semi-decent room editor and code analysis tools. Otherwise I'd probably take the risk of working on it for some months full-time to build a more or less complete IDE.

You'll need to tweak it as per this topic

I keep meaning to update this example a little, but I have a lot of things to do

what secrets worlds

Fixed for the next version

(1 edit)

So this was because you are loading an Instances_1 layer from room0 (where it is at depth 100) into rm_test, which has an Instances_1 layer at depth 500000, thus causing them to be added to that existing layer. In other words, if you need the added layer to be at a specific depth (that's inconsistent with target room), you would have to name it differently in the to-be-imported room.

I'm not actually sure what's the right way to handle this - if I let GMRoomPack create layer(s) with the same names as existing layers in the target room (but at different depths), you could get any of the same-named ones when asking for a layer by name, which would make a far bigger mess.

Uploaded a new version that fixes packer issues though

Someone reported this before but I'm not really sure what's up as I did not touch copying/pasting at all - that's handled by the code editor component.

Some questions:

  • Does copying/pasting work fine in GMLive.js?
  • Does copying/pasting work in Ace demo?
  • Does Windows/Linux style Ctrl+C/Ctrl+V work instead?

Copying/pasting from context menu uses a native clipboard API and I could probably make this use that too, but weird that it breaks at all

Hey, I'm getting to this shortly. It's one of those months when everything is on fire

Perhaps NTT-Assemble is telling you why it's failing to generate an executable.

If it's something about assets, you probably have a broken lying around and need to get rid of it

The author posted a copy in response to someone asking;

Generally you would ask on Discord

Hello, you can find my email on about page. One other person reported a similar error, but I've yet to find time to make the mod log relevant debug information to make desync files useful for figuring out the actual cause

If you are running with live_enabled=1 but without gmlive-server connected, scripts would not be initialized by default.

You can fix this by initializing like this:

live_init(1.0, "", "");
for (var i = 0; script_exists(i); i++) {
    var s = script_get_name(i);
    gml_func_add(s + "(...)", i);
global.g_live_request_url = undefined;

I should probably make this default in case it can't connect to server

Also, depending on what you desire, I have recently published a smaller-scale interpreter that can be customized for scripting.

Well, I originally had it cap at 60, then someone said that they have a 144hz monitor so I bumped the cap to 144 and never thought of it again I take it that you have a 240hz monitor?

For base game: YYTextureView

For NTT, simple: /loadsprite (see FAQ)

For NTT, advanced: sprite_replace, skin mods

Thanks! It is indeed "a bit" of DLL magic; I added a small explanation to FAQ.

If you mean whether you can apply the mod without owning the game, that's a no - it's missing >90% of game assets.

If you mean whether you can apply the mod to a copy from Twitch store or whatever, probably yes, but you'll need to throw in any steam_api.dll in there so that it can happily fail to load and let you run the mod executable.

What I mean is - let's suppose you have room A with an instances layer and a background layer, and room B with a tiles layer and a background layer. Both instances layer in room A and tiles layer in room B will have the same depth, so loading room B into room A will mix the tiles into the instance layer (which is what you seem to be seeing). If you are confident that you aren't mixing things into the same layer/depth, please send me a sample project where this happens and I'll take a look.

Command-line argument thing is an oversight on my part, I'll upload a new version the next few days. If you need it sooner, send me an email from your purchase email, and I'll email you the updated packer executable alone

Drag and drop import definitely still works. Are you dropping it onto workspace area (rather than onto resource tree, an editor, etc.)? IIRC there was a bug where some users couldn't drag and drop anything onto GMS2, but I thought that was fixed

I think your issue might be that you have same-purpose layers automatically assigned to different depths in different rooms, and do not have layers match between rooms either. You can view/override layer depths in layer properties.

That shouldn't be an issue unless GMS2 Mac runtime can't read HTTP responses past some specific length.

I'll see if I can reproduce this or anything - maybe that's a bug or I need a custom script to replace http_get...

Try now, should be fixed (had to explicitly make GM not consume the Cmd+V keyboard shortcut)

Have you clicked the game embed to give it focus first?

If it's on a small enough project, could you email me it? Someone had a similar issue few months ago but it was only on one specific project and it worked for them perfectly on Windows, so they gave up figuring out what could be strange about it.

There's a weapon maker mod that gives you code for a customized gun.

For mutations you'll usually have to learn some coding and/or ask around unless it's something very basic

Loading up: see if you have a leftover file in game directory and remove it if so

Custom content: a document called NTT-Scripting is included in the download and covers the matters in depth. Also see the tutorial.

You double-click the NTT-Assemble executable that you extracted with the rest of the files to the game directory

Then you press the recommended key, on your keyboard

Yes? (you could try and report back if there's an error)

I still vaguely intend to do Mac & Linux support for this, but can't really promise any timeframe, as pricing a niche extension at $1 was an incredibly naive decision, and thus I made a grand total of $22 over two years time.

It's the directory where nuclearthrone.exe resides (together will all other game files)

(1 edit)

I just uploaded a fix for that - IIRC that was when you had layers that are initially invisible, and the server would omit the property in JSON to save space, but then the extension didn't check if it's "undefined" rather than true/false

Are you sure that you need a video tutorial for this

Well that bundle ran for a week in 2015, so you might be a little late with that.

I've not been following SCB news much so I can't tell you if it ever popped up anywhere else.

However, SCB is not a very complicated game, so you might find one or other open-source example of such genre?

Yeah, so with a single room exported, you would just feed that to room_pack_load_map, without picking a random value from it.

In that case I'd suggest to ask on Discord ( as I have slightly limited number of guesses on this subject