You too can try changing static: to "static": as I’m not sure if anyone did as of yet
YellowAfterlife
Creator of
Recent community posts
g_VAR_window_set_topmost suggests that GM didn’t notice the function definition as such.
First, you should probably try clearing your code cache - YYC sometimes. I think adding/removing extensions now auto-clears cache so that could be why it helped.
The example projects have the extension copied to them so that shouldn’t be any different on average
This turned out to be two things:
- On GX/WebAssembly target, buffer_get_address gives not a byte array like HTML5 target does, but a… raw address inside the WASM memory blob, I think? I’ll get around to modifying the extension to support WASM sometime but not at this very moment
- On native platforms, if you’re calling both native_cursor_set and window_set_cursor, GM and the extension will fight over who gets to set the cursor, usually with less-predictable results.
You can have a peek at your own fonts and other fonts in FontForge to see what’s up - from a few random fonts I opened, it seems like the right edge is adjusted so that the glyphs “overhang” rather than adjusting the spacing between them.

If your spacing rules are simple enough that Spacing works for them, you can probably use a \[] range from your first glyph to your last glyph.
If anyone is willing to contribute an auto-kerning algorithm in Haxe or JavaScript that takes a pair of glyphs in some form (say, just Array<Array<Bool>>) and returns the kerning offset between them, I can put that in and as my gratitude implement some simple pixel plopping with a checkbox.
Another approach would be to make your own tool that outputs JSONs for Pixel Font Converter or its Batch Processor - anything that you can do in the UI also goes into the JSON file.
As you can probably suspect, this tool is generally pretty niche
Testing this,
Create
global.coop_players = [1, 2];
Draw
live_auto_call;
var _player = global.coop_players[view_current];
draw_text(305, 5, string(_player));
it works as normal after live-reloading.
I suppose starting with the obvious, are you on the latest version of GMLive? You can see it at the top of GMLive script.
That IDE version is a little old, but ultimately the error has seemingly nothing to do with GMLive - it’s the compiler deciding to rebuild a texture group and then failing to do so because the file’s busy (?)
Rebuild cache file C:\Users\tlome\AppData\Roaming\GameMakerStudio2\Cache\GMS2CACHE\Adventuren_EF3DEF1E_C78485E8\Adventureno3\Default\TextureGroups\_2048_131\Default.xml due to changed texture format
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.AggregateException: One or more errors occurred. (The process cannot access the file 'C:\Users\tlome\AppData\Roaming\GameMakerStudio2\Cache\GMS2CACHE\Adventuren_EF3DEF1E_C78485E8\Adventureno3\Default\TextureGroups\_2048_131\Default.xml' because it is being used by another process.)
you could try killing GMAssetCompiler and/or Runner.exe processes just in case the previous run gets stuck?
You can re-import the script from the YYMPS - it should have a bracket there
live_enum_add("flexpanel_position_type",{static:flexpanel_position_type.static,relative:flexpanel_position_type.relative,absolute:flexpanel_position_type.absolute})
I have no immediate explanation as to who could be stealing curly brackets from your file, but maybe it’ll stop if you make that a "static": instead of static:..?
My character file was
Calvuroth.plr, but the character name was something like “Calvuroth [i:1343]” (fire gauntlet ID). I was getting an error related to the file having a bad offset and assumed it was due to the item code. I changed it, but before testing it again I also cleared my cookies so I didn’t know what fixed it.
Doesn’t seem to be as simple as that so I’m assuming that you opened the character in 1.4.5.7 around that time but Terrasavr didn’t update yet.
The other issue I’ve encountered was that I swapped my character from mediumcore to softcore yesterday and when booting into the game a bunch of items were swapped with other items. I’m gonna test again with a few less variables to see if it’s consistent.
Edit: my loadouts are getting screwed up in the editor. I should have full tiki and bunch of summoner accessories here. my second loadout is working fine. I thought it would be because loadout 2 has the accessories set to share, but I checked the character and that’s not the case.
Screenshots of the equipment tab
Please email me the original PLR that gets read incorrectly / saved incorrectly and I’ll have a look when time permits
Hello, both work (see About & Contact) - Discord is slightly inconvenient since it only shows the last 100 conversations in DMs (why would anyone want this), but instant chat sure is nice
You can
- Put
live_name+live_callinside the method so that GMLive updates it - Temporarily copy the method assignment into the Step event so that it gets replaced with a new one
Yeah no, custom cursors are just wonky on Windows, especially only if some of your displays use HDR - with sufficiently poor luck you might observe the same when setting a custom .cur in System Settings.
I’m not sure if there’s anything that you can do on extension/WinAPI side - when you create a cursor, you only provide a RGBA8 bitmap, width, and height - there’s nothing for HDR.
Ah, if you mean creating a character from scratch in Terrasavr - that’s quirkier as it doesn’t necessarily fill it out like the game does. Creating a blank character in Terraria and loading it will work fine.
Maybe I’ll just make it load a PLR at startup in the next version, but that requires a little reworking.
Your sprite isn’t marked as “use for 3d” / “separate texture page”, so it gets packed with other graphics into a larger texture.
When you have just this one sprite and nothing else, it fills the whole texture page and all is well.
GMLive references the particle functions in a few spots so GM adds the default particle textures to your texture page and you get this.
Added a slightly more proper solution for this to 1.0.79a - enums from fnames are now exposed automatically, and if you need something that doesn’t get picked up out of box, you can now do things like
live_enum_add("flexpanel_wrap", {
no_wrap: flexpanel_wrap.no_wrap,
wrap: flexpanel_wrap.wrap,
reverse: flexpanel_wrap.reverse,
});
















































































