На мой скромный взгляд богобоязненного С# разработчика, лучше пилить игру. И по мере разработки отделять части движка от игры.
Как пример.
https://github.com/JordanCpp/Commune
Общие части движка отделяю во внешнюю либу.
Это движок
https://github.com/JordanCpp/Commune/tree/master/Source/Engine
Вот примеры игр на нем.
https://github.com/JordanCpp/Commune/tree/master/Source/Disciples
https://github.com/JordanCpp/Commune/tree/master/Source/Fallout
Это больше экспериментаторство.
Тема в архиве.