Skip to main content

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

YellowAfterlife

1,949
Posts
5
Topics
3,072
Followers
35
Following
A member registered Oct 01, 2014 · View creator page →

Creator of

Recent community posts

I don’t have Unity installed right now, but that probably means that they decided to re-set the icon on their own.

You would need to add a window message hook that intercepts the attempts to change icon and passes your saved icons instead.

In the GameMaker/C++ version that looks like the following:

LRESULT window_command_proc_hook(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) {
	if (msg == WM_SETICON && window_icon_hook.enable) {
		HICON icon;
		switch (wp) {
			case ICON_SMALL:
				icon = window_icon_hook.icons[0];
				break;
			case ICON_BIG:
				icon = window_icon_hook.icons[1];
				break;
			default: icon = NULL;
		}
		if (icon != NULL) lp = (LPARAM)icon;
	}
	return CallWindowProc(window_icon_hook.base, hwnd, msg, wp, lp);
}
void window_icon_hook_ensure(HWND hwnd) {
	if (window_icon_hook.base == nullptr) {
		window_icon_hook.base = (WNDPROC)SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)window_command_proc_hook);
	}
}

As ever, all function signatures and typedefs can be taken from pinvoke.net

Released another update that downgrades the font library to the previous version

Pushed a fix for this one

But is that what the other two people were seeing..?

You can find the previous release on Wayback Machine but this isn’t very good at all - I guess the font library that I use either introduced a bug in the version I updated to (while the git version breaks kerning for some reason) or changed what you’re supposed to give it to get a color font.

The current version should be working on everything starting from GM2022/LTS and to the latest 2024.11.

Beta versions of GM are at your own risk - these tend to break (and then unbreak) random GML functions and it’s not always possible to make a workaround even if you figure out what did happen this time around.

For the most part I only have to update GMLive when there are breaking changes to project format or GML functions - for example, I’ll have to release a patch for whatever that’s going on for some people here soon.

That doesn’t work right now (technical complications), but you can call a live-coded function (located in a separate script) inside the constructor

As of yet I have not been able to reproduce this in neither Firefox nor the 4 different Chromium-based browsers that I have installed so I’m kind of at loss as to what this could be.

And if you open the previous version on Wayback Machine, does that work?

https://web.archive.org/web/20250126224026/https://yal.cc/r/20/pixelfont/

Hard to tell..? Is this with web version or downloadable one? And before you make a change, does the default font build and show up?

Ascent and Descent are in em units, not in pixels. There’s an overlay when you move your mouse over the input image showing ascent/descent.

I can’t tell what this glyph of yours is supposed to be, but you can try ascent=896, descent=128, linegap=0 (and adjust your Baseline Y to be, well, at the baseline).

Kind of looks like your font metrics (ascent/descent/pixel size) are fairly off, the latest version of the program should be warning you about this.

Types (such as for :type or @jsdoc types) in GMEdit are assumed to be global, which means no constructors in events / functions / other constructors.

You can use /// @hint to describe any types that GMEdit didn’t pick up automatically.

Long-term I would like to support more esoteric uses, but realistically most of the time that I spend on GMEdit is now used to fix endless YY format compatibility issues that each new IDE release introduces.

Check that the game directory contains display_mouse_lock_x64.dll;

display_mouse_lock returns whether it could lock the cursor - for example, you cannot lock the cursor when the game window does not have focus (so you might do this in a Step event).

The latest NT build was made with IDE v2024.11.0.179 Runtime v2024.11.0.227 and Steamworks 1.60, so probably the same as yours.

It is rather unlikely that Steamworks is at fault (unless the DLL file gets lost during packaging/upload), we are using this same DLL in Nuclear Throne betas (on the latest IDE + runtime versions).

I can definitely add something if there’s a way to retrieve this that does not involve me reverse-engineering the NVIDIA driver (pretty sure that all settings are stored in that multi-megabyte e nvdrsdb0.bin file) or setting up a brand new Win11 install in a VM to figure out what registry path the setting gets stored in (if at all).

Not for me…

Perhaps there is more to it? I’m also noticing that semi-transparent windows don’t work on your end

How do I change the controls I didn’t understand from the readme file

See my comment below

And can is there a way to make the game fullscreen

Press Alt+Enter

Allegedly, you have a script called MouseInitialisation that calls native_cursor_reset on game start.

There’s not currently a good way for me to make sure that the extension initializes before any such uses, so don’t do that.

I think you’d be better off checking that the window has lost focus, but I’m not seeing anything about this in documentation so I’m not sure what you’re supposed to do with this.

I’m not seeing this on my end by adding this to “basics” example:

Do you perhaps have a frame limit forced on in GPU settings? That’s known to cause issues on NVIDIA drivers because the driver is unprepared to count frames in several windows.

(1 edit)

I suppose you can do this then (at the end of obj_gmlive’s Create event):

var _register = function(_type, _get_name) {
	var _ids = asset_get_ids(_type);
	for (var i = 0, n = array_length(_ids); i < n; i++) {
		var _id = _ids[i];
		var _name = _get_name(_id);
		live_constant_add(_name, _id);
	}
}
_register(asset_sprite, sprite_get_name);
_register(asset_sound, audio_get_name);
_register(asset_object, object_get_name);
_register(asset_room, room_get_name);

And I’ll fix this in the next release.

A little concerning though, isn’t it? There have not been gaps in asset IDs ever since GameMaker: Studio released, almost a decade and half ago.

As you might suspect, there’s a limited amount of help that I can offer with code that I cannot see and you did not write, more so when it’s using a version of the extension that can be outdated and/or broken.

And if you do show_debug_message(asset_get_ids(asset_object)), does the object show up in there?

Ah, I suppose your script runs before GMLive’s initialization? You could make it

if (!live_enabled) enemies_struct();

in the script and add

if (live_enabled) enemies_struct();

to the end of obj_gmlive’s Create.

Or rename the “GMLive” script to “__GMLive” so that it runs before the rest. Kind of silly but that’s the world we live in starting with last year’s updates.

This is not what happens in the example project so that would be something that you did, Pizza Tower did (search for gameframe_alpha), or decompiler bug if you are using a decompiled version of Pizza Tower without replacing the decompiled extension scripts by the actual ones from itch.

You might want to attach a screenshot of what’s happening (focused / unfocused) with what you consider to be the border highlighted because I don’t think we’re talking about the same thing

You should have a live_call in the enemies_struct! Won’t get changed otherwise

You can override gameframe_caption_draw_border to draw the border the way you like.

The default behaviour can be found in gameframe_caption_draw_border_default.

However, if you are using the default border sprite, it should already stay as it is (only the caption fades) so you might mean something else.

As can be seen in fontforge, your ascent/descent/pixel size are way off. Character grid shows an overlay for ascent/descent.

Like this, you can add it in the end of GMLive’s create event or anywhere else that executes after live_init

live_code_updated = function(_name, _display_name) {
	if (_name == "enemies_struct") enemies_struct();
}

Uploaded a fix - apparently you have to call SetCapture/ReleaseCapture for this to work correctly!

That is fixed by doing this change

If you do

for (var i = 0; object_exists(i); i++) {
	show_debug_message(object_get_name(i));
}

(or sprite_exists / sprite_get_name for sprites)

Does this show all of your objects/sprites, or does it stop before the one you’re trying to use?

Depends on what’s in the script!

If it’s just struct assignments that are done once on game start, you’d want to wrap them in a

function some_init() {
    global.a = { ... };
    ...
}
some_init();

because global script init is a little quirky to resolve from GML.

Then you can use live_code_updated to re-run the (updated) script when a new version is loaded.

That’s how you do it - Windows can’t scale cursors on its own.

Doesn’t seem to be as simple as that?

Send me a sample project if you can reproduce this in a new one

You could try compiling Apollo V2. It’s a single .so (instead of a wrapper referencing the Lua .so), which has been a common point of failure for V1.

I checked and as of Runtime v2024.11.0.227 GameMaker accepts Data URIs on its own, so the extension is no longer needed.

You can install the stable Steam version of GameMaker in Proton! I do that on SteamDeck.

The beta IDE is generally incapable of importing old projects/extensions - you’ll want to import in LTS version and then re-import that project/extension resource into Beta.