-
Notifications
You must be signed in to change notification settings - Fork 1
Tutorial Widescreen and Scaling
Your project chooses its logical frame — and, optionally, how that frame breathes when the player resizes the window. Both live in presentation/version.json under one knob:
{
"viewport": {
"width": 256, "height": 144,
"policy": "bounded",
"max_width": 320, "max_height": 176
}
}width × height (multiples of 16, from 160×144 up to 640×360) is the frame your game is designed for: world constants, UI anchoring, and the link handshake all derive from it. 256×144 is exact 16:9 at the classic vertical extent; leave the knob out entirely and you get the classic 160×144.
Full-screen menus keep an authentic 160×144 canvas centered in the frame, with the margins darkened under modals — you never re-lay-out the UI for a wider game.
Without policy, the frame is fixed and the window integer-scales it. With policy: "bounded":
- the engine integer-scales the design frame to the window,
- then widens what is visible toward
floor(window / scale), up to yourmax_width/max_heightclamp (snapped even), - and letterboxes only the remainder.
Resize freely — pixels stay crisp and the world simply shows more or less of itself within your authored envelope.
A wider frame changes what the player sees, never how the game behaves: trainer sightlines, encounter ranges, and scripts are cell data, identical at every window size. Headless runs (tests, bots) always use the design frame, so automation is deterministic by construction.
An invalid frame (wrong multiple, out of range), an unknown policy, or a clamp smaller than the design frame refuses at boot naming the value.
Monworks: MIT code · CC0 samples · everything pictured is original content. The faithful Pokémon Red build derives from your own local pokered clone and is never distributed. Pokémon is © Nintendo/Creatures/GAME FREAK; this is an unaffiliated fan engineering project.
Play
Create
Tutorials
- Writing Text
- Battle Backdrops
- Colors and Palettes
- Display Filters and Shaders
- Widescreen and Scaling
- Quality-of-Life Knobs
- Overlays (Recipes)
- Abilities & Battle Hooks
- Modern Individuals
- Per-Individual Fields
- Field Effects
- The Modern Ruleset
- Per-Save Rulesets
- Six Stats
- The Clock
- Conditioned Bindings
- Day and Night
- Sprite Variants
- Overworld Spawns
- Language Packs
- Set-Piece Battles & Narration
- Run a Server
- Join a Server
Elsewhere