1. вот эти вот gameDay gameMonth и всё такое лучше бы вынести в отдельную структуру/класс GameDate
2. Если в игровой дате используется такой-же календарь, как и с реальными датами, то System.DateTime должен подойти и не надо городить свои велосипеды.
2.1. Над DateTime можно сделать небольшую обёртку, чтобы сделать его мутабельным и отбросить часовой пояс и время.
3. Если нужна очень сложная работа с датами, то можно посмотреть на
NodaTime