# Globals In Games

This topic is 5019 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Greetings Up until now I have made a "Globals Namespace" where I would just stick all my globlas in. When I needed them I would just go Globals::some_var. Is this right or is there some better way to manage globals in a game. Thanks.

##### Share on other sites
Collecting a bunch of unrelated variables into one place doesn't make them more organized. Collecting global variables all into one place doesn't make them less global. Generally, a global variable should go into the module that it controls or is controlled by (if such a module exists).

##### Share on other sites
Quote:
 Original post by JohnBoltonCollecting a bunch of unrelated variables into one place doesn't make them more organized. Collecting global variables all into one place doesn't make them less global. Generally, a global variable should go into the module that it controls or is controlled by (if such a module exists).

I just want to add that having all the globals in a single namespace may limit namespace polution. But JohnBolton is right: this do not change anything about globals :)

Some people may want to add all their global into a single file - the major reason, as they say, is to avoid redundancy. It do not work. With time and file groth, it do not avoid redundancy and is make things harder to read. The solution I finnaly used for embedded C code is to define my vars at the beggining of my C files, with some prefixes:
static int s_my_var_name; /* <-- static, local to the current file */int g_module_my_var_name; /* ^-- global, defined in module.c and declared in module.h */

HTH,

##### Share on other sites
Typically, your global vars would be declared in the name space (or file) to which they relate.

So for example, extern CGameEngine* g_gameEngine would be declared in the file that defines the CGameEngine class, and defined in the file that defines the class.

Thats how I do it, and how the majority of people I know do it (but I do admit, I dont know every programmer in the world!)

The method of declaring all your globals in one place, while it might seem tidy, is quite difficult to follow. It doesnt make sense, to me, to have a list of _unrelated_ globals listed in a seperate file.

There might be a case of declaring the global in the main header file, but that again could be changed, as the code would need access to the file declaring the class, so again, why not put it in there?

Just my point of view... Hope it helps
Spree

##### Share on other sites
Hi!

We're working on a game engine now where there's no single global variable:) Even engine object is not global, so you could potentially create 2 or more engine objects at the time and it would work.

If you really need some globals, then try to minimize them to stuff like: engine object, main window etc.

Cheers!

##### Share on other sites
But it is easier to have for example boolean variables that affect the run-time of the engine to have at one place, since you dont have to track them down into constructors of relevant class. This way you dont search within 5 files, but just one.

For example, I want to start the engine with following stuff on/off:
Rendering Grid : Off
Rendering Enemies : ON
Vertex Decompression : ON
Decompression Type : 02
Sound Init : ON
Music : Off
Imagine I had to search through constructors of all these different classes and set relevant variables there! It would take me ages and I might also forget the last item i wanted to change! This way the setup is done in 5 seconds and I always clearly see the startup parameters correctly.

Its easier this way than editing some txt file, which is inconvenient inside Visual C++ IDE. True, some things is better to have in TXT file, but what if you dont want other users of your game to have the same level of control as you have over the run of game ? Then, such organized place of seemingly unrelated variables is a better alternative.
Then again, it all depends on your needs.

• 37
• 12
• 10
• 10
• 9
• ### Forum Statistics

• Total Topics
631362
• Total Posts
2999571
×

## Important Information

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!