Creating a day/night cycle
Unifying the shading across many different world objects in our game gave us a very nice way of manipulating how the overall scene is actually represented. Many interesting effects are now possible, but we are going to focus on a rather simple yet effective one-lighting. The actual subtleties of the lighting subject will be covered in later chapters, but what we can do now is build a system that allows us to shade the world differently, based on the current time of the day, like so:
As you can tell, this effect can add a lot to a game and make it feel very dynamic. Let us take a look at how it can be implemented.
Updating the Map class
In order to accurately represent a day/night cycle, the game must keep a clock. Because it is relative to the world, the best place to keep track of this information is the Map
class:
class Map : ... { ... protected: ... float m_gameTime; float m_dayLength; };
For the sake of having dynamic...