Любой программист мечтает об идеальном дизайнере.
Идеальный дизайнер точно распишет все спецификации игры и механики. Распишет заранее все цифры, все расположения монстров и характеристики оружия и абилок,
и сам же напишет весь код, так что останется только перекопипастить.
Программист возьмёт эти инструкции, и на их основании сделает игру.
Однако дизайнеры не идеальны, и поэтому вместо того, чтобы делать игру, программисту приходится создавать следующие наборы инструментов и тулзов:
1) Инструментарий, который позволит дизайнеру менять характеристики игры.
2) Инструментарий, который позволит дизайнеру быстро и удобно тестировать билды.
3) Инструментарий, который позволит удобно визуализировать результаты тестов, ставить проверочные чекпойнты и собирать характеристики объектов на этих чекпойнтах.
4) Удобный, легко визуализируемый, быстрый и легко настраиваемый инструментарий для сбора статистики с игроков.
5) Во многих случаях так же систему, позволяющую группировать игроков и выдавать им разные версии игры и потом сравнивать их поведение.
Причём эта система инструментариев ещё должна быть достаточно гибкой, чтобы её можно было допиливать на ходу.
Причём разный функционал нередко нужен разным людям - инструменты для изменения баланса нужны дизайнеру, сбор статы - аналитику, дебаг - тестеру, а игра - игроку. И у них у всех разные потребности.
И кроме всего этого - так же следует сделать ещё и игру.