Event sourcing consists in storing all changes that happened to an application as a sequence of events instead of only storing the current state of the application. The sum of all events is the current application state.
This code is the complete example to explain what is event sourcing pattern in this blog post (coming soon).
The original Game aggregate is available on this branch and its event-sourced one is available on the main branch.