A downloadable extension for Windows and Android

Buy Now$2.99 USD or more

 NOTICE: Requires a registered license of GameMaker Studio 2.3 or higher

Display scalers: everyone needs one, and Xtend is the last one you'll ever need!

Xtend automatically and intelligently resizes your games and applications to fill any window or display, desktop or mobile, with pixel precision and no black bars. It's easy to use and comes pre-configured to suit most projects, while also offering deep customization and powerful camera functions for even the most challenging scaling needs.

Try a demo for HTML5 in your browser here!



How to use Xtend? Add it to your project. Done. Seriously.


Xtend supports multiple scaling modes for different needs. No matter your project, there's a mode for you! Such as:

  • Linear - For desktop-style applications that need 1:1 screen real estate
  • Aspect - For games and interactive applications that need to fill the screen while preserving a base play area
  • Axis - For horizontal or vertical splitscreen
  • Pixel - For retro art styles that demand pixel perfection at any shape and size

All modes also support DPI scaling for windowed applications, ensuring consistent physical size across any screen resolution and pixel density.


Xtend only runs when there's a change in viewport resolution. Your app's performance is uncompromised!


Still not enough? Xtend includes additional functions for managing multiple view cameras, all with their own scaling modes, and drawing regular content relative to display scale. It's the complete package!


Take a peek under the hood at any time with built-in debug statistics and hint boxes. You'll see exactly what's being scaled and how! Take it for a spin in the included demo, and learn more from detailed documentation!


Buy Now$2.99 USD or more

In order to download this extension you must purchase it at or above the minimum price of $2.99 USD. You will get access to the following files:

xtend-1.0.5.zip 24 MB

Download demo

xtend-1.0.5-demo-android.zip 16 MB
xtend-1.0.5-demo-win.zip 12 MB

Development log


Log in with itch.io to leave a comment.

(1 edit)

Hello, in my project I draw sprites and texts (eg: draw_text).  I would like to know if with xtend, I can make sure that my sprites and my texts always draw the same size, no matter the size of the screen, whether I am on android or on windows. If so, how can I do this.  I tried to configure xtend in aspect mode, but it draws my drawings smaller or larger when the screen size changes or when I am in landscape mode. (I draw them in size of pixel) Thank you for your reply

What you're describing is DPI scaling. Xtend has built-in features for this, but the results are targeted for usability rather than identically matching physical size between mobile and desktop displays (which usually isn't desirable). You may wish to use the Linear scaling method combined with DPI scaling for the closest match, and you can also use the window_get_dpi and window_set_dpi functions to customize results with your own code.

It is not at all clear how to set it up.
I have a game for android with a room size of 768x5000, a camera of 768x1550. When xtend is turned on, the whole vertical of the room is shown, more than 768px. The touch buttons have gone up, the xtend settings do not really affect anything. Help set up.


Xtend will automatically configure itself to work for most projects, but if yours requires special configuration, I would recommend checking the documentation in your project's Included Files area or online at docs.xgasoft.com/xtend

Especially make sure that the xtend.scale.view setting is set to the same viewport number as your camera is assigned to. Your camera resolution will be adopted as the base resolution, which may or may not be what you want. Consider how you want your game to scale on the lowest aspect ratio and the highest aspect ratio and set your viewport resolution accordingly.

I've purchased and installed this tool, because this is the first project I've ever done with GMS2.  My problem is that I set my first room size to 1600x1000 on day 1, and have built all of my rooms with that same room size.  My puzzle game doesn't have any viewports, so the resolution is just set by the room size (1600x1200).  That being said, many things looks pixelated when they shouldn't be, and everywhere I read about resolution, people are suggesting creating their rooms with small resolutions that can scale up easier, with either 4:3 or 16:9.  Right now when I installed Xtend and run my game, it runs in 1600x1200 and it's zoomed in.  When I resize the window, it snaps back to the original size, not allowing me to resize or go to full screen.

I'm not sure where I went wrong... I probably should have chosen a lower room size and something more standard like 16:9 aspect ratio, but my game isn't pixel art, so all my assets are quite large.  I was thinking about lowering the resolution to something like 800x600 and then scaling down all the assets, but then they look pixelated and not so nice.  Also, when I export my game to the web, it's also zoomed in and it doesn't scale in any way.  Do you have any tips for how to wrestle this under control?  Thanks

Xtend uses aspect ratio scaling by default, meaning at any window size, a central area will be preserved that renders the original viewport. You probably don't want the entire room to be that central area—the room should never be used to set resolution.

I would need to know more details about your setup to say for sure, but it sounds like with your game setup, the default Xtend config is hitting the limit of what it can do on your display, and compensating for it the best it can.

I would recommend setting up your own viewport in your room settings and then customizing xtend_config appropriately for your project. The documentation will walk you through each available setting, and can be found in your project's Included Files area or online at https://docs.xgasoft.com/xtend

Hi, I've read your documentation and still having a few issues.  My setup is very simple.. I've updated my first room's size to 1280x720 and scaled down/rearranged my assets accordingly so they still look sharp and well positioned.  I also have no viewports at all, so it's pretty basic.  

That being said, when I run my game and it opens up into 1280x720, and I double click to expand the window, it pops it back to the 1280x720 window size every single time.  It never allows itself to expand or shrink at all.  I've tried both `aspect` and `linear` modes in the xtend_config and they behave the same way.

I guess what I'm looking for is when I reduce or expand the window size, it should allow it to expanded and perhaps add black bars where necessary.  Or maybe that's the wrong thing to do?  I'm not sure what the best course of action is, but if someone's screen is under 1280x720 or if they have a 4K screen, not being able to resize the window is bad, isn't it?

(1 edit)

Xtend is designed to remove black bars by expanding content to fill the empty space. If you don't have any viewports, Xtend will create one, so be aware that at least one viewport does exist.

It definitely doesn't enforce the original window size, though... that would defeat the whole purpose. Is your project configured to allow resizing the window? (This setting must be applied in GameMaker itself, not Xtend.)

If you're unable to identify the problem, feel free to send me your project by email (contact@xgasoft.comso I can investigate and better advise.

Ok that is definitely strange then, because I removed Xtend from my project and then I am able to resize my game window normally.  When I re-imported Xtend to my project, it once again locks the resolution.  I'll send you a link to my project to your email.  Thanks again!

Hi, this looks really good for me because I'm having resolution issues with my game.  Does this work on the Mac version of GMS2 as well?  Thanks!

Xtend is universal—it will work on any platform!

Thanks for your interest!

Awesome, thanks!  I was only asking because of this line: "A downloadable extension for Windows and Android" but I was 95% sure after browsing your docs that this should be universal.

That would be because the free demo is compiled for Windows and Android—sorry for the confusion