How do I use "_G" in ROBLOX scripting?

Hi everyone,

I’m trying to understand how to use “_G” in my code. From what I’ve gathered, it seems to be a way to access global variables, but I’m not sure how to use it properly.

Could someone please explain to me what “_G” is and how it works in ROBLOX scripting?

Examples would be appreciated.

Thanks in advance for your help!

4 Likes

Just think of _G as a global ModuleScript but without having to require it.

1 Like

_G is effectively a metatable, or as others have said, a ModuleScript that you don’t need to require
It allows you to create a variable that can be accessed through ANY script. Think of string.sub(), where string is a metatable. You can access string from anywhere, you don’t need to define it
You can create one by doing

_G.variable1 = "this is an example, can be used in any script"
variable2 = "this can't be used in any script, only the script it's called in"
1 Like

Explain this way to a beginner. How would they understand?

I’m dead serious idk how to use it. :skull:
This is your explanation in my head:

_G

local Module= {}

return Module

I have 4 years of past experience, but it might also be because I’m from Sweden, even though I have advanced experience in English.

In the ROBLOX Lua environment, _G is a predefined global table that contains all the global variables, functions, and other values that are accessible throughout the game. You can use _G to access and manipulate these global values, as well as to define new global values.

For example, you might use _G like this:

_G.MyGlobalVariable = "Hello, world!"
print(_G.MyGlobalVariable)  -- prints "Hello, world!"

function _G.MyGlobalFunction()
  print("This is a global function!")
end

_G.MyGlobalFunction()  -- prints "This is a global function!"

You can also use _G to override or redefine existing global values. For example:

-- Override the print function with a custom version
function _G.print(message)
  game:GetService("StarterGui"):SetCore("SendNotification", {
    Title = "Notification";
    Text = message;
  })
end

print("This message will be displayed as a notification.")

Keep in mind that modifying global values can have unintended consequences, so it is generally a good idea to use global values sparingly and with caution.

2 Likes

You can use _G to store variables, for example:

Some script:
_G.randomNumber = 1

Different script:
print(_G.randomNumber)

Output:
1

2 Likes

Alright, you know how in every script, you have to be like

local hello = hello.Value
local hello2 = hello2.Value

like ain’t nobody got the time to write all that nonsense at the start of every single script.
ok in comes _G (he’s the real G)
he’s like “yo bro don’t be writing all that nonsense, just use me in place of local”

_G.hello = hello.Value
_G.hello2 = hello2.Value

and now you can use hello and hello2 everywhere. ain’t that wacky?
To use the variable in other scripts, you just take ur _G and you drop him where he needa be (before the name of the variable)

-- other script in ohio :skull:
print(_G.hello) --> whatever hello.Value is

EDIT: remember, only use _G between scripts of the same kind (i.e. localscript to localscript ,script to script)

For more advanced scripters: I don’t recommend using _G, in favour of single-script architecture. This is when you rely solely on as few Scripts and LocalScripts as possible, and have the main functions (normally written in OOP) stored in ModuleScripts.
If you’re not at this kind of level yet, don’t worry. _G can be real useful when you’re starting out and saves a lot of time.

20 Likes


bruh really.

5 Likes

Thanks, I’ll take a look into your example! :smiley:

1 Like

Yeah, he’s been doing this to every devforum thread he’s been posting in, its extremely frustrating for other devforum members and lots have encouraged him to stop but he’s too stubborn to stop, claiming he’s “helping people”. Also, ChatGPT has been wrong quite a lot of times as well.

2 Likes

_G is just a variable you can use in any script! It can be very useful in some cases. Here is an example!

Script 1

_G.Eggs = 8

Script 2

print(_G.Eggs)

Output for Script 2

8

Think of it as a variable you can always add to and access wherever you want.

4 Likes

Lol, this is kinda like my example above

1 Like

Please stop generating responses by OpenAI.

For an example. you might stop copying other answers by:

  1. Start with getting to know Lua.
  2. Read DevForum Rules.
  3. Boom!

Keep in mind that it’s not a good idea to copy other answers or use ChatGPT straight off copied from the internet. :skull:

8 Likes

That’s not even correct. You can literally run the code to see if it’s correct but you couldn’t even expend that much effort.

1 Like

Bruh, you serious right now?

It literally said like Players.Friends was a function and Player:GetIp() :sob:

1 Like

He copied it straight off from the website.

2 Likes

lmao bro ChatGPT is down in ohio rn :skull:

1 Like

Okay guys, let’s keep things on topic please :slightly_smiling_face:.

3 Likes

yes thank
we will do that :slight_smile:

akjdwad

charscharschars stupid chars rule

2 Likes

so do you understand _G? its an underused concept, and personally i think its pretty cool. you only really need to use it if you need to call it a ton of times in different scripts.

1 Like