- a random number generator. You may have your own system (rather than rand() or some other standard library) and presumably you don't want to instantiate such an object in each routine that needs one. If you did, you'd need to seed it with something different on each occasion. Which leads me to...
- the time. You'll probably use a system routine to get the real world time but what about the current in-game time?
- pseudo-constant values that you read in from a config file, or which a designer might tweak during play - if you store them in one large dictionary of values, that probably has to have global visibility - but if you instead were able to inject the values directly into the subsystems that needed them, you could avoid that, at the cost of the reader/parser needing access to all the separate systems. What is best?
What are your thoughts on globally visible utility classes and variables, and where do you draw the line between convenience and low coupling?