jrlowe24 I tested my theory and could not get it to work, window has too many options but none that could be set without requiring code.
jrlowe24 This doesn't really satisfy the requirements though, while this would let me not scale up the reticle, the spacing and layout that I set my reticle (and move it since it's dynamic), needs to scale as well, however it is the line thickness that I need to keep at 2px. If I just put it in a window with no stretch mode, on a very large screen, the reticle would be tiny in the middle, rather than scaling the distances accordingly.
I found an option in project settings window, called scale. it lets you give a scale to the elements. you also have the "snap mode", you can set to integer to snap to the pixels.
how are you changing window size? you could do some very simple math and manually scale the sight node based on the new resolution compared to the default.
like if your window width is 960 by default, and the new res is 1920, you could do something like 1.0/960 * 1920
var default_resolution = Vector2(960, 540)
var new_resolution = Vector2(1920, 1080)
var n_scale : float = Vector2(1.0/(1.0/default_resolution.x*new_resolution.x), 1.0(1.0/default_resolution.y*new_resolution.y))
reticle.scale = n_scale
this would scale your reticle to 1-1 pixels.
you could also check the resolution and multiply by a value, like at 4k you could multiply by 4 to make it bigger. you could make this easier by setting up a Curve resource (@export var curve : Curve) and using sample to get each value (curve.sample(0.5)).