GUI
Now, when it comes to dealing with a few simple TextLabels and Boxes of a decent size, using scale tends to work fine. However, when it comes to dealing with perhaps smaller sizes for certain things, such as a TextLabel with a Y Offset [Or even X] of .001, then things start to get funky when it is viewed on different peoples screens.
For example, although everything on MY screen seemed to look great, my friend with a smaller monitor had this occur:
And with something as simple as this:
http://gyazo.com/95924b260944a31c3f75469c2a7be352
sometimes the small blue line seen will be touching the words or even intersecting it.
Attempted Methods
First off, using offset from the start is a bit silly since it can go past peoples screens if you set it too high. However, what I did was, I set the scale of the size and position of a frame, but made its descendants use offset. Although it looked a 'bit nicer', mostly everything was either out of the frame or smudged.
Second Off, I tried to take the scale of everything and multiply it by their parents AbsoluteSize and AbsolutePosition, and although I got the most closest to best results with this, it unfortunately wasn't still that accurate.
Third Off, I tried a combination of Scale and Offset but that didn't go neatly at all.
What I want to know
What I'd like to know: What is the best, most absolute way of making sure that every player sees a gui in the same manner no matter their monitor size?
EDIT:
I'm running this to try and set everything to offset based on the users screen size, but some of the things still come a bit off. Any way to make it better?
function convertObj(guiobject)
local par = guiobject.Parent
guiobject.Size = UDim2.new(0,guiobject.Size.X.Scale * par.AbsoluteSize.X,0, guiobject.Size.Y.Scale * par.AbsoluteSize.Y)
guiobject.Position = UDim2.new(0,guiobject.Position.X.Scale * par.AbsolutePosition.X,0,guiobject.Position.Y.Scale * par.AbsoluteSize.Y)
end
function b(loc)
for _,v in pairs(loc:GetChildren()) do
if v:IsA("GuiObject") then
convertObj(v)
b( v )
end
end
end
b(game.StarterGui.ScreenGui)
--yes I know it says startergui. I keep it like that for testing in Studio
EXAMPLE
Here is a .gif to show what I'm experiencing with smaller windows. http://gyazo.com/ddd0e2e751f68b3438ee26ff6ddeb244
Here is a .png of the GUI Hierarchy: http://gyazo.com/9cbcfb9193799cd13091d27e663784fd

2 comments
Why would you want to throw away scale? You should trust ROBLOX to position those objects. For instance, if a player resizes their window, the GUIs will then be sized wrong.
The reason I got rid of scale is due to the fact smaller windows were getting really crushed and squirmed together. I'll put an example in the edit