A downloadable extension

Download NowName your own price

This fancy extension addresses a quirk where GameMaker games cease to update while the window is being dragged around or resized.

The issue is Windows-specific behaviour - unless you run game logic and rendering on separate threads, system's dragging/resizing logic overtakes anything else and no other code executes until that's done.

The approach this extension takes is best called "a delightful hack" - the DLL starts up an simple helper program, into the window of which the game's window is then inserted as a child window.

This has the game window continue to run while the window is being manipulated, as well as allowing to enable/disable the window frame, allowing to also use it for borderless fullscreen.

The extension also includes it's own versions of Window Commands functions.

Documentation coming soon. Till then, see the included object for examples and disable standard border in Global Game Settings - Windows - Graphics.

Published Dec 13, 2017
StatusReleased
CategoryAssets
Rating
(2)
AuthorYellowAfterlife
Made withGameMaker: Studio
TagsGameMaker

Download

Download NowName your own price

Click download now to get access to the following files:

window_frame.gmez 57 kB
window_frame.gmz 64 kB

Development log

Comments

Log in with itch.io to leave a comment.

1) Yes, I see an example from the Window Commands, but I think that this extensions minimizes the window in the Windows Taskbar, and not in the System Tray. Am I mistaken?

2) Let is the question yet. By default, window_set_fullscreen in GMS2 opens a window on the main monitor, or am i mistaken?

Ah, sorry. I didn't pay enough attention to your first message.

  1. It'd take an entirely different system to minimize to tray instead.
    If you are able to pay for that (rough estimate is $100..$150 depending on features), that could be implemented into this or a separate extension.
    (if you are wondering, this extension similarly exists only because someone sponsored the development and was fine with it being made publicly available)
  2. Conventional (DirectX) fullscreen rolls up on the monitor that it was initialized for, so usually the primary one.
    It's usually possible to move the game window between screens via Win+Shift+Left/Right, but I'm not sure if you could cheat it by pressing those keys via keyboard_key_press.
    If window_set_rect has any effect in fullscreen (or you are fine with borderless fullscreen), I could modify my other extension to return screen XYWH per monitor index.

I understand! =) I do not have free money for my non-commercial projects. Maybe later, maybe never, but definitely not now... In other words, I'm a beggar! =) I was just curious about your plans to change this extension. Thanks for answers.

Very nice idea of such an extension. Thank you! Little questions: 1) Is it planned to make to minimize window in system tray? 2) Is it planned to make to fullscreen mode on the monitor on which window is located? Thanks for answers.

1. See the example from Window Commands extension, this one has the same-styled functions.
2. Disabling border (see the example attached) would allow you to call window_set_fullscreen as usual.

Very often this blocks the steam overlay from launching with tab-shift. Otherwise works like a charm.

When using this together with Window Commands for GameMaker you get an error:
Maybe include the Freeze feature into Windows Commands?

Compile Extensions...Error : duplicate script name found window_command_hook in extension window_frame in file window_frame.gml
Error : duplicate script name found window_command_unhook in extension window_frame in file window_frame.gml
Error : duplicate script name found window_command_run in extension window_frame in file window_frame.gml
Error : duplicate script name found window_command_get_active in extension window_frame in file window_frame.gml
Error : duplicate script name found window_command_set_active in extension window_frame in file window_frame.gml

(1 edit)

As the description states, this extension includes it's own versions of all of Window Commands functions as they had to be reimplemented in a different way (the window being in an external process and all). You would remove Window Commands when switching to this extension.

ahh. Sorry. I should read more :-)

gr8 work again mah dood