GameMaker (2.3)

Pixel perfect scaling script

Custardy Stuff

You must be logged in to obtain assets


This is a very simple script that can be used to scale your games view port and camera view to fit the window size, or display size if your game is running full screen. Copy and paste from here or use the screenshot for the code:

var scale = argument0

var w = window_get_width() / scale; var h = window_get_height() / scale;

display_set_gui_size(w, h);

var cam = view_get_camera(0);

view_set_wport(0, w); view_set_hport(0, h);

camera_set_view_size(cam, view_wport[0], view_hport[0]);

// leave this part out if you don't use views to follow an object. camera_set_view_target(view_camera[0], player_obj); camera_set_view_border(view_camera[0], w/2, h/2);

surface_resize(application_surface, w, h);

Add this script to the room creation code or an objects creation code, as long as that object is created right at the beginning of the game. Your game will now scale correctly.

if you need dynamic resizing as shown in the video, put this code into an objects step event, and either make that object persistent or place that object in every room. You will also be able to swap from full screen to windowed mode with no problem either.

The only argument needed for the script is argument0, which sets the scale of the game view shown. A value of 1 as argment0 will display all sprites at 1:1 scale. A value of 1.5 will display 150% size, a value of 2 will display at 200% size and so on. It is best to stick with whole numbers, unless you are doubling or tripling your pixel art.

For example, a sprite of 1 x 1 pixel will be displayed correctly with scale values of 1, 2, 3 etc, but will be displayed distorted if 1.5, 2.3, 3.8 etc is used, as the single pixel will not be able scale in that way. Experiment with this value though, find the best number that works for what you're doing.

EDIT: WARNING! This script seems to not be working properly with GameMaker 2.3. Using this script will result in very 'lumpy' movement of your sprites.

EDIT mkII: I have updated the script to work properly with 2.3 now.

End User Licence Agreement (EULA).

Age Rating: 4+


GMS2 - Version 0.0.1. Published March 7, 2018

GMS2.3 - Version 0.0.2. Published August 31, 2020

Slight change to the script, taking into account changes that have happened within GameMaker. Also, I have taken the opportunity to fine tune it slightly, so it should work much better than before. As before, this script will change your games' resolution to best fit your screen or display size, so if you do not want your game to display differently on different quality displays this is probably not the script you are looking for.

Loading, please wait

Package contents

Loading, please wait

What is the issue?

Loading, please wait