Here the constructor GameError() takes no parameters and has two initializers, for the two member variables errorCode and message, whereas the body of the constructor is just empty. Member variable errorCode is initialized to gameErrorNS::FATAL_ERROR, and message is initialized to "Undefined Error in game.".
Initialization lists are required to specify the parameters to be passed to the constructors of "nested" objects. And to initialize const member variables. They may be used to initialize "primitive" member variables too.
GameError()
This is the default (meaning, 0-arg) constructor.
throw()
This is an outdated syntax for specifying that the function does not throw any exceptions. The old behavior was that if an exception was being thrown and got to this point, std::unexpected would be called, which calls std::terminate.
See: https://en.cppreference.com/w/cpp/language/except_spec