• A real settings menu
• Modular scripts - Like Node.JS ( https://nodejs.org/api/modules.html ), this would make third-party-libraries actually feasible. Maybe this could live alongside a package manager (or just workshop dependencies).
• Better support for binary modules, the current interface is really limiting (you can’t create vectors, angles, players, any userdata really without hacks) and is also flawed when it comes to coroutines as old verisons of gmod were
• If you’re using Lua still, don’t give people access to the registry/debug library - it just lets people screw the game over and forces use of the odd method of securing userdata that gmod has. The correct way to keep userdata secure is to remove access to the registry, remove access to the debug table and to use luaL_checkudata and force people to use FindMetaTable.
• If you’re using a Source Engine still: No, or extremely limited with a whitelist, console command access. Most console commands in the engine just weren’t made to be secure, that’s why in other games there’s no ways (Valve tries at least) for the server to execute many of them. Servers shouldn’t be able to touch a user’s configuration at all.
• Document everything. Creating an API from scratch gives you the chance to just document every method you add as you add it. Some functions currently in Garry’s Mod were either completely forgotten about or added as quick hacks to perform a single purpose and never documented.
• Real support for HTML panels. Awesomium is a joke, maybe that’s because it’s bad software or maybe just because it hasn’t been implemented properly. Either way, developers should be able to utilise how amazing HTML renderers tend to be at rendering text. One of the greatest reasons people liked the idea of Awesomium being added was to possibly use it for some sort of UI in-game, but you can’t even render transparent HTML panels properly.
• If you’re using Lua still, a cooler way to handle ENT/SWEP base classes could perhaps be to make each file loaded have an implicit “BaseClass” local variable. After the script has been loaded, this could be populated based on the ENT.Base/SWEP.Base variables.
I try not to use the C-Syntax that has been added to gmod, but I have made a couple of small changes myself that I think are pretty cool: https://gist.github.com/wiox/8b50cf0fb562d83bb620 (I’d definitely use these sort of changes as well as bitwise operators)
If you want to change the Syntax a lot, that’d be pretty awesome. Just make it go one way or the other, no need to go all PHP and have multiple operators such as “and” and “&&”. Just do one.
If the language isn’t going to be Lua, but something else. It needs real support and documentation.