Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

YellowAfterlife

2,167
Posts
5
Topics
3,534
Followers
38
Following
A member registered Oct 01, 2014 · View creator page →

Creator of

Recent community posts

Hello, I checked and I’m not seeing anything, which is only somewhat surprising considering the state of GM Marketplace.

Please send me an email with your purchase reference and I’ll generate you an itch key - GM MP uploads broke even before it has been sunset.

IIRC the specific case that’s weird is

function scr_some() {
    live_auto_call;
    static counter = 0;
    static a = function() { counter += 1 }
}

and then doing scr_some.a()

If you can reproduce this in a blank project, please email me a copy and I’ll have a peek

If you don’t want to do anything, I guess you can move the code to a different (non-static) script, but I can’t tell you from the information so far whether that’s actually what’s happening.

Passes the unit tests at the very least, but you’ll want to send me your purchase reference so that I can generate you an itch key - GM Marketplace closed down more than a year ago.

I think the most-known game to use Apollo is APICO, but ultimately people don’t usually report back to me - e.g. you can search for

apollo.dll site:steamdb.info

to see which games on Steam might be using it

(1 edit)

Hello, the changelog bit is for function name() : parent() constructor {}, while yours must be name = function() : parent() constructor {}, which are different things both in base GML and GMLive.

I’ll see about it, but generally constructors are a bit of a painful topic as many things can’t be replicated in current GML - e.g. constructor methods should be method(undefined, <script>) but the bound self-value is where I’m storing the metadata so that GMLive knows what we should be executing. It’ll likely be that GMLive will pretend to understand what you wanted there but stuff like

function some() {
    live_auto_call;
    var ctr = function() : parent() constructor { }
    return new ctr();
}

will not work, only

ctr = function() : parent() constructor {
    live_name = "some constructor";
    live_auto_call;
    ...
}

Hard to tell from that alone, but try removing the outer-most live_auto_call - we don’t have true closures so GMLive can’t re-create some of the behavior with static / Script.staticFunc().

There’s an “automatically reloaded changed files” setting in GM IDE preferences.

If that doesn’t do it, you can try editing the same file in an external editor - if that doesn’t change it either, might be a new GM bug. You can then try disabling Code Editor 2 in Preferences if that’s on.

(2 edits)

I could have sworn that I have fixed that back then, but perhaps something got lost as I was cleaning out GMS2.2-specific logic out of GMLive.

For now you can add

live_function_add("buffer_get_surface(buffer, surface, offset)", buffer_get_surface)

to the end of obj_gmlive‘s Create event as that topic author’s did.

(2 edits)

Don’t call your script the same as the enum, in recent GM versions this is ambiguous between QSlot<enum>.Mount<enum field> and QSlot<script>.Mount<static variable> and might break as more compiler logic is changed in GMRT.

If that’s not what it is, send me a sample project with the enum that breaks and I’ll have a look

I did catch that part, but where’s psMiningHit coming from? How is it defined

If your antivirus program complains about NTT-Assemble (which is somewhat fair, it patches an executable), you may compile it yourself from the source code.

However, if you own Nuclear Throne on Steam, a newer version of NTT is available on ntt_development branch and does not require a patcher.

I could use a slightly bigger example on what’s going on with emitters as you generate GML for these

Ah, this only shows up when using shader_set_live because GMLive needs to use GM’s HLSLCompiler.exe (which is in the runtime directory) but LTS2026 added another folder in ProgramData that GMLive-server doesn’t know about.

You’ll want to open the directory where gmlive-server is, open Command Prompt or PowerShell (shift-right-click on an empty spot) and do something like this

.\gmlive-server.exe --runtimePath C:\ProgramData\GameMakerStudio2-LTS2026\Cache\runtimes\runtime-2026.0.0.23

(replace the version number with your own if necessary)

First of all, don’t forget to switch Glyph Color to Color Font on the first tab.

The tool uses the fonthx library, which generates color fonts in embedded SVG format. On my devices:

  • Windows & Linux: color fonts show in Firefox (and Firefox-based browsers), but not in Chromium-based browsers
  • iOS: color fonts show in all browsers as it’s all Safari anyway

Check if the player object (obj_wrap_player) is visible per chance - obj_wrap_control is responsible for drawing it so it should not be drawing on its own.

Depends on the tool, sometimes just with trial and error - for example, if you look at the topic author’s screenshot, letter P is 7 pixels tall in the font but 54 pixels tall on the image, which comes out to 7.71 pixels per font pixel, and that’s not right at all.

You could do a live_constant_add in obj_gmlive’s Create event, like so

live_constant_add("PE_MiningDrill_Smoke", PE_MiningDrill_Smoke);

I’ll need to check if asset_ functions work for particle systems in latest GM.

Which program, which website? For Terrasavr, you may need to hard-refresh the page - it shows the version/date on the page

ID 4722 appears to be First Fractal, which is supposedly a predecessor of Zenith.

ID 226 is indeed a Lesser Restoration Potion, which has been phased out in 1.4.

You can add the following lines to TerrariaResearchTracker.cfg:

omit #226 Lesser Restoration Potion
omit #4722 First Fractal?

Pretty good news if those are the only two items I missed?

The offline version of Classic downloads and stores the online version for offline use - you can pick View ➜ Force Reload to have it reload everything.

(1 edit)

To answer your question more directly, GMEdit only picks up function and variable definitions in Create events as it is good practice and spares me of having to make some decisions (e.g. what if you re-define a function with different arguments/types in different events).

If you are 100% sure of your actions, you may use the @init JSDoc tag to assert that variable and function definitions should be picked up in the event as if they were in Create.

If you want a function that’s only used in an event, you can define it as var example_2 = function() {}.

If you want a function that’s not only used in an event, you should probably put it in Create as a function will only be assigned to an instance variable once that event runs, and will be re-assigned each time it runs.

If you are trying to split up a big Create event, consider #region or @interface + @implements JSDocs.

(1 edit)

That I wouldn’t know, achievements are strange - e.g. the fishing achievement counts globally, not per character.

Disappearing items are most likely the ones that have been removed between game versions - the game cleans them out of your inventory (and perhaps the research list) on load.

I’ll look into building a Linux demo next time I’ll be doing something with Linux, but I can tell you right away that this is likely not the extension you’re looking for - it’s for confining the cursor to an area (Windows, via ClipCursor) or the game window (Linux, via XGrabPointer) respectively. It does not provide you mouse movement deltas because those aren’t part of these APIs.

For deltas you’d want window_mouse_set_locked, and if that doesn’t work, you’d want to file a bug report for GM - XWAYLAND doesn’t implement some of the functions so applications may need separate X11/Wayland implementations for input.

I replied to a comment a couple weeks ago - things are slightly better at this time and I am very slowly getting through my numerous overlooked projects.

Find this bit in gameframe script:

if (gameframe_isMaximized_hx) gameframe_restore(); else gameframe_maximize();

and add if (gameframe_can_resize) {} around it.

Though that was not my intent, I replicated the Windows quirk where window being resize-able and window being maximize-able are two separate properties.

That’s just how GM:S reports errors originating from Room Creation Code, e.g. put show_error("!",1) in Room Creation Code of a brand new project and it’ll say


___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of PreCreate Event
for object obj_test:

!
 at gml_Room_rm_test_Create (line 2) - show_error("!",1)
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Room_rm_test_Create (line 2)

where obj_test is the object on the top of your resource tree.

I’ve not gotten around to looking at your project yet

V2 doesn’t do anything particular and is usable

V3 is usable in LTS but otherwise may require tweaking

But also you could be using CatSpeak/GMLSpeak unless you want Lua specifically

Pushed that to git - GMEdit has some support for Markdown (I write most of my blog posts in GMEdit!) but Notes are as of yet using the .txt extension for files so they wouldn’t auto-detect as such.

The highlighter supports the basics - bold, italic, links, HTML comments (<!-- text -->), and code blocks with highlighting (supported options are gml, glsl, hlsl, haxe).

  • Blackouts are now shorter because it’s spring, civil power consumption is lower, and I guess it’s generally less beneficial to target power infrastructure. Seems to be mostly water supply and railroad that have it bad these days
  • Random blackouts still happen due to repairs or local accidents
  • That’s a slightly existential question so let’s just say that it’s taking me a while to get to any given thing because the list of personal projects in need of updates is now so long that it’s hard to realistically prioritize them

See the topic immediately below yours

Hard to tell, just loaded my test project in IDE v2024.14.4.221 Steam / Runtime v2024.14.4.265 and the window seems to maximize fine, be it through the function or clicking the button.

Should probably elaborate on that

Would need your font PNG+JSON to tell you more, but note that there’s a checkbox for specifying what counts for filled pixels. If your space has pixels right in the top-left corner, you may deceive the “auto” option.

Are you perhaps ds_map_destroy-ing your async_load map somewhere? I can’t think of a reason why that could go missing.

GM is in charge of destryoing async maps, you don’t have to.

Yup! As shown above - the example font has it as the top-left glyph

It’s because instead of

return func(...);

it has to do something like

with (ctx._other) {
    with (ctx._self) {
        return func(...);
    }
}

And there are a couple edge cases where doing with (<id of a freshly destroyed instance>) will not do anything, so you don’t always want your with chain.

This isn’t mentioned in the live documentation, but signature argument can have prefixes indicating self/other use, like this

live_function_add(":instance_destroy(?id, ?perform)", my_func);
live_function_add("::event_perform(?type, ?numb)", my_func);

Macros in “live” files are a little cursed in general because at best these can only affect “live” files that have been reloaded after changing them, and even that requires a good bit of legwork (as seen here)

I’ll see about this specific case for the next update

If you loaded molesarge.race.gml, it will be

/gml ultra_set("molesarge", 1, true)

The extension should be restoring GUI size to what it was before, but you can do so yourself after gameframe_draw by calling display_set_gui_size.