Screen Resizer

Screen Resizer

Minimal Defold extension + Lua module to resize the game view and show a menu
of preset sizes.

Setup

You can use ScreenResizer in your own project by adding this project as Defold library dependencies.
Open your game.project file and in the dependencies field under project add:

https://github.com/d954mas/defold-screen-resizer/archive/master.zip

The GUI script expects a right mouse button binding:

mouse_trigger {
  input: MOUSE_BUTTON_RIGHT
  action: "mouse_button_right"
}

Files

  • screen_resizer/screen_resizer/src/screen_resizer.cpp native extension
  • screen_resizer/screen_resizer.gui_script sample GUI usage
  • screen_resizer/resizer.lua Lua helper module

Usage Simple

add screen_resizer.go to your main.collection
by default it will show a menu with 6 preset sizes

Usage Custom

local RESIZER = require "screen_resizer.resizer"

RESIZER:add_size(960, 540, "16:9 960x540", 1)
RESIZER:add_size(540, 960, "9:16 540x960", 1)

-- Optional logging
RESIZER.logs = true

-- Show menu and apply selection
local _, _, _, h = screen_resizer.get_view_size()
RESIZER:show_menu(x, h - y)

API: resizer.lua

  • resizer:add_size(w, h, tag, scale)
    Adds a size preset. tag is the menu label. scale defaults to 1.
  • resizer:set_size_by_idx(idx)
    Applies the size preset by index (from show_menu) and respects scale.
  • resizer:show_menu(x, y)
    Builds and shows the menu, returns selected index (0 if none).
  • resizer.logs
    When true, logs size changes. Defaults to true.

API: screen_resizer (native)

  • screen_resizer.menu_begin()
    Start building a menu.
  • screen_resizer.menu_label(id, enabled, text)
    Add a menu item.
  • screen_resizer.menu_finish()
    Finalize the menu.
  • screen_resizer.menu_show(x, y)
    Show the menu at screen position, returns selected id (0 if none).
  • screen_resizer.set_view_size(x, y, w, h)
    Set view size; passing nil for x or y centers the view.
  • screen_resizer.get_view_size()
    Returns x, y, w, h in screen coordinates.
10 Likes