FuzzyDisplayTools
- Addon for Godot Engine 3.1 and 3.2
- Display tools, mostly for 2D games, especially good for pixel art.
- Includes an improved Camera2D and a convenient singleton with automatic viewport resizing.
Features:
FuzzyViewportScaler - Singleton:
- Automatically resizes the main viewport, calculated from base window size in ProjectSettings.
- Support for stretch, keep aspect and integer scaling.
- Pixel perfect mode is also possible, for the purist!
FuzzyCamera2D
- No jittering.
- No 1-frame lag/delay, like default camera ( If used properly ).
- Virtual size support, automatically zooms in to get the specified resolution.
FuzzyViewportContainer and FuzzyViewport:
- Utility scripts, to automatically resize UI viewport when needed (after FuzzyViewportScaler updates scale).
- Updates ViewportContainer shrink automatically.
Initial Setup:
ProjectSettings required settings:
- "display/window/stretch/mode" = "viewport"
- "display/window/stretch/aspect" = "ignore"
ProjectSettings recommended settings:
- "display/window/dpi/allow_hidpi" = true
- Strongly recommended because we get pixel distortions if users don't have integer scaling in the OS (125, 150, 175, 250% scaling etc.).
- "display/window/size/width" = 320 / 640 etc.
- "display/window/size/height" = 180 / 360 etc.
- Some low resolution with 16/9 aspect ratio values is recommended, for modern monitors.
- "rendering/quality/dynamic_fonts/use_oversampling" = false
- Removes annoying warnings from the Debugger, when resizing window.
How to use:
FuzzyViewportScaler - Singleton:
- Should be added automatically in AutoLoad, when the Addon is activated.
- Customize the custom values in ProjectSettings:
- "display/fuzzy_display_tools/scale_mode" (enum)
- "display/fuzzy_display_tools/pixel_perfect" (bool)
FuzzyCamera2D:
- Using virtual size is strongly recommended. Set it to same values (or 50% / 25% etc.) as window size in ProjectSettings, to get the best results.
- Especially useful if not using pixel perfect mode.
- Use zoom_f (float) parameter instead of regular zoom (Vector2). Adjusting regular zoom values does nothing.
- Create a camera follow target node, and set from editor or script.
- Put the camera last in the scene tree, because it should process after the follow target node. This fixes the 1 frame lag/delay from default camera.
FuzzyViewportContainer and FuzzyViewport:
- Depends on FuzzyViewportScaler singleton!
- Add a CanvasLayer node to your scene.
- Add a FuzzyViewportContainer as a child of CanvasLayer.
- Add a FuzzyViewport as a child of FuzzyViewportContainer.
- Strongly recommended to set the size to the same as window size in ProjectSettings.
- Add an instanced UI scene as a child of FuzzyViewport. This is necessary because you cannot edit a scene inside a custom Viewport.