(Supongo que la pregunta se hace desde el punto de vista del diseño del código / arquitectura, no desde el punto de vista del diseño del juego, aunque la respuesta al menos en cierto grado se aplica a ambos).
Como ya se dijo, necesita ambos, y necesita equilibrarlo. Tanto el diseño excesivo como el diseño insuficiente de su flujo / estructura de código pueden causar problemas. Es difícil decir cuál es el equilibrio correcto, pero en general encuentro que necesito tener al menos una vaga idea de cómo el resto del código se unirá con lo que estoy programando en este momento, y pensar en posibles problemas, de lo contrario, tiendo a "codificarme en un callejón sin salida": me meto en una situación en la que me doy cuenta de "está bien, ahora gracias a cómo resolví este problema, creé un nuevo problema que dio toda mi solución anterior (o incluso más, en el peor de los casos) ) inútil ".
En general, en mi opinión, puede juzgar aproximadamente si tiene el equilibrio correcto al pensar en escenarios de "qué pasaría si" como en "qué pasaría si luego (cuando todo esté completamente implementado en el paradigma similar al que estoy usando ahora) descubra que la parte A debe funcionar de manera ligeramente diferente, lo que significa que tengo que volver a trabajar por completo la parte B que se conecta con ella para acomodar los cambios ". Si el cambio arquitectónico en una parte no requiere que cambie más de una o dos partes, y los cambios no caen en cascada (lo que significa que a su vez debe cambiar también las siguientes partes que se conectan a la parte B, y luego las partes que se conectan a ellos, etc.), el código está compartimentado de una manera relativamente buena.
Pero realmente, esto es algo por lo que te sentirás después de ganar algo de experiencia. Esta es en parte la razón por la que todos dan consejos al principio del juego para codificar primero algo conocido y fácil (Breakout / Tetris / Snake) y hacerlo completamente, con todos los menús, sonidos, efectos, todo para que el juego esté completamente terminado: es mejor arruinar un proyecto más pequeño, y hacerlo (ya sea de manera buena o mala) lo ayudará exactamente a tener una idea de cuán lejos abarcan los efectos de varias decisiones arquitectónicas.