If you're following the tutorial, it's fine to do it the way the tutorial says.
Globals can be any variable type - ints and floats, or custom classes. It doesn't matter what type it is, the same guideline applies.
In general, unless the variable is const, it's frowned upon to have global variables. If it's a global const variable, then it's fine to have dozens or even hundreds of those (basically, that's an intermediary step to making many of those configuration variables data-driven, and others you want to keep fixed at compile-time).
Usually, there are a few non-const global variables that escape the axe though: Logging instances (to output log messages), for example. Things can certainly be over-engineered in the other direction as well, if you try to contort too hard to avoid globals but aren't yet sure how.
Singletons are also just global variables in disguise, so the same rules apply: Limit their use as much as possible, but two or three globals in a large project aren't uncommon. It's hard to learn good architectural practice, and global variables or singletons are most often (but not always) a bandaid to work around bad architectures - in my inexperienced opinion.