(Presumo que a pergunta seja feita do ponto de vista do design de código / arquitetura, não do design de jogos, embora a resposta, pelo menos até certo ponto, se aplique a ambos.)
Como já foi dito, você precisa de ambos e precisa equilibrá-lo. A superexposição e a subexposição do fluxo / estrutura do código podem causar problemas. É difícil dizer qual é o equilíbrio certo, mas geralmente acho que preciso ter pelo menos uma vaga idéia de como o restante do código se juntará ao que estou programando no momento e pensar em possíveis problemas, caso contrário, eu tendem a "me codificar para um beco sem saída" - entrar em uma situação em que percebo "ok", agora, graças à forma como resolvi esse problema, criei um novo problema que processou toda a minha solução anterior (ou até mais, nos piores casos) ) Fútil".
Geralmente, na minha opinião, você pode julgar grosseiramente se tem o equilíbrio certo pensando nos cenários "e se" como em "e se eu depois" (quando tudo estiver totalmente implementado no paradigma semelhante ao que estou usando agora) essa parte A precisa funcionar de maneira um pouco diferente, o que significa que eu tenho que refazer completamente a parte B que se conecta a ela para acomodar as alterações? ". Se as alterações arquiteturais em uma parte não exigirem que você altere mais de uma ou duas outras partes, e as alterações não ocorrerão em cascata (o que significa que, por sua vez, você deverá alterar também as próximas partes que se conectam à parte B e, em seguida, as partes que se conectam a etc.), o código é compartimentado de maneira relativamente boa.
Mas, na verdade, é algo que você sentirá depois de ganhar alguma experiência. Isso é parcialmente porque todos dão conselhos aos iniciantes para codificar primeiro algo conhecido e fácil (Breakout / Tetris / Snake) e fazê-lo completamente, com todos os menus, sons, efeitos, tudo para torná-lo um jogo completo - é melhor estragar um projeto menor, e fazê-lo (seja de uma maneira boa ou ruim) ajudará exatamente você a ter uma idéia de quão longe os efeitos de várias decisões arquiteturais se estendem.