local dimtable = { design = { width = 1080, height = 1920 }, screen = { width = nil, height = nil }, view = { width = nil, height = nil }, ratio = { landscapeUW = 21 / 9, landscapeWide = 16 / 9, landscapeStd = 4 / 3, portrait = 9 / 16 } } dimtable.screen.width, dimtable.screen.height = game.GetResolution() local function transformToDesignSpace() gfx.Translate((dimtable.screen.width - dimtable.view.width) / 2, 0); gfx.Scale(dimtable.view.width / dimtable.design.width, dimtable.view.height / dimtable.design.height); gfx.Scissor(0, 0, dimtable.design.width, dimtable.design.height); end local function updateResolution(ratio) if not ratio then ratio = dimtable.ratio.portrait end local screenWidth, screenHeight = game.GetResolution() if screenWidth ~= dimtable.screen.width or screenHeight ~= dimtable.screen.height then dimtable.screen.width, dimtable.screen.height = screenWidth, screenHeight dimtable.view.width, dimtable.view.height = ratio * dimtable.screen.height, dimtable.screen.height end end -- return by reference trickery: local t = dimtable t.transformToDesignSpace = transformToDesignSpace t.updateResolution = updateResolution return t