Extension Aspect Ratio

Hello!

I post a small extension for simple, but sometimes necessary calculations of the aspect ratio of a rectangle. To a greater extent, it is convenient to use it to calculate the aspect ratio of your game on the user’s screen. There are functions without parameters that immediately use window sizes or monitor extensions for calculations.

Settings:

  • Width;
  • Height.

Functions:

  • Ratio (String Expression) - ratio value in the format “ratio_w, ratio_h”;
  • RatioWidth (Expression) - value of the ratio for the width of the rectangle;
  • RatioHeight (Expression) - value of the ratio for the height of the rectangle;
  • RatioGreatestCommonDivisor (Expression) - the value of the greatest common divisor for the sides;
  • RatioSceneWindow (String Expression, no parameters) - value of the ratio in the format “ratio_w, ratio_h” for the size of the game window;
  • RatioScreen (String Expression, no parameters) - the ratio value in the “ratio_w, ratio_h” format for expanding the monitor window.

For example, you will get the following results:
(1600, 900) = 16, 9;
(1440, 900) = 8, 5;
(1366, 768) = 683, 384;
(1280, 1024) = 5, 4;
(1280, 720) = 16, 9;
(1024, 768) = 4, 3.

The calculations themselves are simple:

// The binary Greatest Common Divisor calculator
var gcd = function (u, v) {
    if (u === v) return u;
    if (u === 0) return v;
    if (v === 0) return u;
    if (~u & 1)
        if (v & 1)
            return gcd(u >> 1, v);
        else
            return gcd(u >> 1, v >> 1) << 1;
    if (~v & 1) return gcd(u, v >> 1);
    if (u > v) return gcd((u - v) >> 1, v);
    return gcd((v - u) >> 1, u);
}

// Find the greatest divisor
var d = gcd(arg_width, arg_height);
// Result
Result = ([arg_width / d, arg_height / d]);

File extension: AspectRatio.json

5 Likes

Thanks, been looking for something like this. For reference, I’ve been having issues scaling a game I’m designing originally for iOS, (2208 X 1242) for computer at 1980 X 1080. I had to switch to PC only due to performance demands. Would the extension help? GDev’s original built in systems seem to leave black bars on either side while rescaling to PC dimensions.

This extension does not affect the scaling of the game in any way, it is just a calculation of the aspect ratio of the screen. You just get the result of the calculation.