Skip to content

Vovkiv/resolution_solution

Repository files navigation

Resolution Solution

Yet another scaling library. Currently in maintenance-only mode.


Resolution Solution was inspired by:

Other similar scaling libraries that you might want to look into:

Video demonstration

Basic setup

  1. Require library:
local rs = require("resolution_solution")
  1. Configure library:
rs.conf({game_width = 640, game_height = 480, scale_mode = 3})
  1. Make window resizable (optionally, but stongly advised):
rs.setMode(rs.game_width, rs.game_height, {resizable = true})
  1. Hook into love.resize:
love.resize = function(w, h)
  rs.resize()
end
  1. Draw something:

(In this example we used scissors, but there another way to achieve this. Read manual or check examples for more info.)

love.draw = function()
  rs.push()
    local old_x, old_y, old_w, old_h = love.graphics.getScissor()
    love.graphics.setScissor(rs.get_game_zone())
    love.graphics.setColor(1, 1, 1)
    
    love.graphics.print("Hello, world!", rs.game_width / 2, rs.game_height / 2)
    
    love.graphics.setScissor(old_x, old_y, old_w, old_h)
  rs.pop()
end

Manual, examples, demo

Selling points of this library

  • Library have 3 scale modes and you can switch between at any time:

    1. Aspect Scaling mode - scaling with preserved aspect.
    2. Stretching - stretch game to fill entire window.
    3. Pixel Perfect - will scale, using only integer scale factors and adds black bars if it can't. Must-have for pixel-art.
  • Library doesn't force you to use any specific way to scale your content, unlike some libraries. You can choose canvas, scissors, draw rectangles on top of game, shader, etc.

  • Library written with kikito's guide in mind, which resulted in very monkey-patchable library! No unreachable locals, no globals, nothing like that! Everything that library produces during calculations can be reached by simple accessing library table: rs.game_width, rs.scale_mode, rs.game_zone.x, etc.

  • Library has .pdf manual, that includes some illustrations, examples, explanations, tips and tricks.

  • Written with snake_case.

  • Library licensed under The Unlicense. Do whatever you want with it.

Games made using this library

By togfoxy:

By Gunroar:

If you made game/program using this library, fell free to ask via contacts to add your game in this list.

Announces

I will post announces when new update will be dropped here or will create new release here on GitHub.

Contacts

If you have any questions about this library, have ideas, etc, you can contact me via:

  1. Submit new issue.
  2. love forum.
  3. matrix.
  4. Email - [email protected]