Finally, it bothers me that at some zoom levels (particularly 3, which is what I want to use), the default window height is slightly too small to fit a 160-tall level. To be precise, zoom 3 makes the window default to 960 x 540. Since the skillbar is 120px tall (I think?), that leaves 420 for the level and it needs 480.
What the default window size should be is, of course, subjective. The formula currently used is:
> Start with a zoom factor of [Screen width / 320] or [Screen height / 180], rounded down, whichever is less.
> If the user's default in-game zoom is less than this, set the zoom factor to that instead
> If the zoom factor is less than 1 (low-res) or less than 2 (hi-res), set it to the respective value
> Set the window's ClientWidth to 320 x the zoom factor
> If the user uses the full-width skill panel, and the window width is less than 416px (low-res) or 832px (hi-res), set it to that
> Set the window's ClientHeight such that the width to height ratio is 16:9
ClientWidth and ClientHeight refer to the actual
content area of the window; ie: excluding the title bar and borders.
It's obviously not possible to have an ideal window size for every level. 160px tall is particularly common for historical reasons, but there's no actual
engine-based reason why it would have special status. 320px tall and 416px wide are significant due to being the widths of the skill panel; 16:9 is significant as the internal aspect ratio of menu screens.
Ultimately, I don't feel that "some levels are not an exact fit" is a particularly strong reason to adjust the algorithm, and that it would be impossible to have a default size that keeps everyone happy. Those who use windowed mode and do not like the default size are, of course, free to resize it - and if NL is ignoring / changing your custom sizing (other than enforcing a sensible range; ie: must be enough space for skill panel + at least some view of the level), report this as a bug. I could also consider, in a future update, providing input boxes in the settings menu so that you can directly type in a window size, rather than having to edit the settings INI file in order to be precise.
Although something weird is going on, because I went into settings and changed my window to 960 x 600, but that leaves a little grey bar at the top of the level; I thought it would fit exactly.
I explained this in Discord already, but I'll put it here too for reference - unless you're using the compact panel, this is not unusual at all. Unzoomed, the skill panel is 40px tall; and I'm assuming you're still talking about the same level, in particular, that it's 160px tall. For a 960x600 window, the full-width skill panel can only zoom to 2x due to the width (832px when zoomed 2x; it would need 1248 to zoom 3x). Therefore, its height is 80px. This leaves 520px - your description + expected defaults lead me to believe this is a 3x zoom, which for a 160px tall level, would be 480px. This leaves 40px of empty space. If you want to fill the window exactly, either (a) widen it to 1248px, if you want to keep the
height as-is; (b) shorten it to 560px tall, if you want to keep the
width as-is; or (c) switch to the compact panel, if you want to keep
both as-is.
Also, I suggest that regardless of what ends up being the default, if the user configures their window to be taller than the default then on the main menu, preview and postview screens, the background should tile rather than leaving black space.
I am open to this idea, but it would be for V12.11 or V12.12 at this stage. Feel free to make a suggestion topic.
With this, I believe all outstanding matters are closed, and will now work on putting together a stable release.