(Я припускаю, що питання зроблено з точки зору кодового дизайну / архітектури, а не ігрового дизайну, хоча відповідь принаймні певною мірою стосується обох.)
Як уже було сказано, вам потрібно і те, і інше. Як перепроектування, так і недоозначення потоку / структури коду може спричинити проблеми. Важко сказати, що таке правильний баланс, але, як правило, я вважаю, що мені потрібно мати хоча б розпливчасте уявлення про те, як решта коду з'єднається з тим, що я програмую на даний момент, і подумати про можливі проблеми, інакше я схильний "кодувати себе в глухий кут" - потрапляю в ситуацію, коли я усвідомлюю: "добре, тепер завдяки тому, як я вирішив цю проблему, я створив нову проблему, яка вирішила все моє попереднє рішення (або навіть більше, в гірших випадках" ) марний ».
Взагалі, на мою думку, ви можете приблизно оцінити, чи маєте ви правильний баланс, думаючи про сценарії "що робити", як у "що робити, якщо я пізніше (коли все буде повністю реалізовано в аналогічній парадигмі, яку я зараз використовую) дізнаюся ця частина A повинна працювати трохи інакше, що означатиме, що я повинен повністю переробити частину B, яка підключається до неї, щоб змінити? ". Якщо архітектурна зміна однієї частини не вимагає від вас змінити більше однієї або двох інших частин, і зміни не каскадуються (тобто, у свою чергу, ви повинні змінити також наступні частини, що з'єднують частину B, а потім частини, що з'єднуються з їх і т. д.), кодекс розподіляється порівняно непогано.
Але насправді це те, що ви відчуєте після отримання певного досвіду. Частково тому всі дають пораду gamedevs спочатку кодувати щось відоме і просте (Breakout / Tetris / Snake) і робити це повністю, з усіма меню, звуками, ефектами, усім, щоб зробити його повністю закінченою грою - краще накручувати менший проект, і його виконання (добре чи погано) точно допоможе вам відчути, наскільки далеко впливають різні архітектурні рішення.