Що я роблю приблизно так:
У мене є спрямована ациклічна структура даних графіків , яка по суті є лише купою вузлів, які вказують один на одного. Кожен вузол представляє ігрову систему. наприклад, інтерфейс користувача, світ, введення, візуалізація. І кожен вузол вказує на інші вузли, що надходять до нього або після нього. Після того, як всі вузли знаходяться на місці, їх легко вирівняти в простий список. Налаштування цього DAG - це перше, що я роблю під час запуску гри. Кожен раз, коли я хочу додати нову систему, скажімо, AI, я можу просто сказати написати цей код, а потім розповісти моїй грі від чого вона залежить і від чого вона повинна залежати.
Мій основний цикл гри йде після цього і просто запускає кожну систему в порядку. Спочатку обробляється вхід, потім оновлення світу, потім інші речі ... користувацький інтерфейс підходить до кінця, а візуалізація - остання. Коли гра починається вперше, немає ні світу, ні фізики, ні штучного інтелекту, тому ці кроки по суті пропускаються, і відображається лише заголовок екрана. Коли ви запускаєте гру належним чином, інтерфейс користувача надсилає повідомлення світовій системі, щоб увімкнути, і він просто подбає про себе. Управління ігровим станом означає лише включення та вимкнення різних систем. Кожна система має власний набір інформації про стан, яка обробляється більш-менш незалежно від усіх інших (Це не зовсімДійсно, багато систем діють на одному і тому ж наборі даних - наприклад, система користувальницького інтерфейсу захоплює дані зі світу для відображення інформації, наприклад. Системі AI також потрібно переглядати та надсилати повідомлення суб’єктам у світі).