Я виступлю з цим, сказавши, що я не виглядав величезної кількості джерел ігор і не будував багато на шляху ігор.
Але, намагаючись застосувати практику кодування «корпоративних підприємств» у веб-додатках, дивлячись на вихідний код гри серйозно болить мені голова: «Яка ця логіка перегляду працює з бізнес-логікою? Для цього потрібен рефакторинг ... так це робить, рефактор, рефакторр "
Це хвилює мене, коли я збираюся розпочати ігровий проект, і я не впевнений, чи намагатиметься mvc / tdd процес розробки перешкодити нам чи допомогти нам, оскільки я не бачу багатьох ігрових прикладів, які використовують це або сильно підштовхують до кращих архітектурних практик у громаді.
Далі наводиться витяг із чудової статті про прототипування ігор , хоча мені здалося, саме таке ставлення, як здається, використовують багато розробників ігор при написанні виробничого коду гри:
Помилка №4: Створення системи, а не гри
... якщо ви коли-небудь опинитесь, що працюєте над чимось, що безпосередньо не рухається вашим вперед, зупиніться прямо там. Як програмісти, ми схильні намагатися узагальнити наш код, зробити його елегантним та вміти впоратися з будь-якою ситуацією. Ми виявляємо, що свербіж страшенно важко не подряпати, але нам потрібно навчитися. Мені знадобилося багато років, щоб зрозуміти, що справа не в коді, а в грі, яку ти зрештою відправляєш.
Не пишіть елегантну ігрову компонентну систему, повністю пропустіть редактор та ввімкніть стан у код, уникайте керованих даними даних, самоаналізу, божевільності XML та просто кодуйте прокляту річ.
... Просто виведіть речі на екран якомога швидше.
І ніколи, ніколи, не використовуйте аргумент «якщо ми займемо трохи зайвого часу і зробимо це правильно, ми можемо використовувати його повторно в грі». ВСЕ.
це тому, що ігри (в основному) зорово орієнтовані, тому є сенс, що код буде значно зважений у поле зору, тому будь-які переваги від переміщення матеріалів на моделі / контролери досить мінімальні, так навіщо турбуватися?
Я чув аргумент, що MVC представляє накладні показники продуктивності, але мені здається, що це передчасна оптимізація, і що перед тим, як турбуватись про накладні витрати MVC, слід вирішити більш важливі проблеми щодо продуктивності (наприклад, конвеєрний конвеєр, алгоритми AI, структура даних обхід тощо).
Те саме, що стосується TDD. Я не часто бачу ігри, в яких використовуються тестові кейси, але, можливо, це пов'язано з вищезазначеними проблемами дизайну (змішаний вигляд / бізнес) і тим, що важко перевірити візуальні компоненти або компоненти, які покладаються на імовірні результати (наприклад, працюють в рамках фізичного моделювання ).
Можливо, я просто дивлюся на неправильний вихідний код, але чому ми не бачимо більше таких практик «підприємств», що застосовуються в ігровому дизайні? Чи справді ігри настільки різні за своїми вимогами, чи це питання людей / культури (тобто розробники ігор походять з іншого походження та, отже, мають різні звички кодування)?