CoreGui has no flexibility
Trying to manipulate specific parts of the roblox CoreGui just isn’t possible. The only tool that roblox currently provides for manipulating CoreGui is StarterGui:SetCoreGuiEnabled, which only allows you to enable and disable a select few core Guis and do very little to change specific things about them. It is clear that giving developers access to read or edit CoreGui’s descendants is not a good idea, as malicious developers could take advantage of or gain personal information about users, but this is no excuse to keep all of the GUIs locked up there, for all devs forbidden to access. Roblox needs to move all non-sensitive (PlayerList, Leaderstats, Topbar, Backpack, Chat, Health, etc.) GUIs from CoreGui into StarterGui or PlayerGui where they can be worked on by developers.
Scenario
An example of how little we are able to do currently with CoreGui would be the following scenario. If you were trying to disable the PlayerList, you would just do `game.StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)` and it would be easily gone. Great, now you’ve disabled PlayerList only for you to realize that the LeaderStats Gui also disappeared with it! Since there is no separate function for the leaderstats gui, you are now forced to make your own leaderstats GUI. You are unable to use the roblox one easily provided since you can’t access CoreGui in the slightest. If this wasn’t bad enough, after making your leaderstats gui you realized that the player’s username and account age are on the top right of the screen and in the way of your gui. Since you can’t edit the CoreGui and move these out of the way, you have to work around this and not put your leaderstats in the top right corner. This leads to a lot of extra work for what seemed like a small change, which can be very frustrating for lots of developers.The above example clearly shows how restrictive it is to work with CoreGui, and how it can prevent developers from making even small changes. The restrictions placed show how a simple change such as disabling the PlayerList can lead to a plethora of issues and extra work to actually have the desired outcome.
Problems while developing
In most cases, like shown above, it is impossible to get the desired outcome because of these restrictions. Within reason, developers should not feel that they are being held back by roblox. I find myself constantly being forced to work around CoreGui, and I feel that this should be changed to allow developers to further customize and work freely in their games. It is very frustrating sometimes when I can’t design my game how I want because roblox hasn’t given us the proper features or permissions to do so.
There is literally nothing that you can do with the little amount of versatility roblox provides with CoreGui, and it’s why for almost all games the core gui looks the exact same and there is no variety. If roblox were to move non-sensitive Guis to StarterGui, there would be a lot more things we could do with it. This change would allow many more unique interfaces to be made for roblox games and really allow them to create their games how they want.
Downsides?
A common argument I’ve seen against this change is as follows:
- Roblox Staff would be expected to keep all the names and hierarchies similar between Roblox versions. If they expose these guis, you as a developer would find it to be unexpected when some instance is suddenly in a different place or has a different name.
I understand the point of this argument, but how is this different from anything else in Roblox? Adding certain Guis to the list of things roblox has to keep organized for developers doesn’t seem like a high cost for the amount of capabilities it will provide for games in the future. Along with this change, it would be expected for roblox to keep changes subtle or notify us of big changes to the Guis, which isn’t any different from what they do now with other parts of the game.
Conclusion
Roblox needs to provide developers with the proper tools to change these Guis instead of being forced to work around them. If roblox doesn’t want to move these Guis to a place where they are able to be edited, they at least need to provide us with way more tools to manipulate the Guis located inside CoreGui. Simply only being able to fully enable or fully disable a select few Guis barely gives us any options and that needs to be changed to accomidate how developers want to design their games.