Відповідь на власне запитання (чи повинен цикл гри міститися в окремому потоці):
Причина, яку люди часто рекомендують використовувати окремий потік, полягає в тому, що вони не хочуть, щоб велика обробка перешкоджала інтерактивності інтерфейсу користувача. Ви єдиний, хто може сказати, чи потрібна окрема нитка для вашої гри. Це повністю залежить від двигуна та основи, якщо головний цикл гри у вашому теперішньому дизайні може перешкоджати часу реакції інтерфейсу користувача. Ви думаєте, що ви зазвичай припускаєте, що це не буде (у невеликих проектах), якщо у вас немає підстав думати інакше.
Ще одна причина збереження коду в окремих потоках - це збереження коду модульним і простим. Наявність двох непов'язаних фрагментів коду, змішаних разом, часто може призвести до того, що код стане менш читабельним та підтримуваним у довгостроковій перспективі.
Чи потрібно цикл ігор запускати на власній окремій нитці? Можливо. Якщо виникає проблема з часом відповіді або кодом, і вам потрібні кілька елементів інтерфейсу, щоб відповісти незалежно від важкої обробки або ви просто хочете розбити код на конкретні завдання, які виникають одночасно з дизайнерських причин, тоді перейдіть з ним. Однак це вважається передовою практикою програмування.
Простий, але, можливо, не чудовий приклад для ілюстрації - це гра з двома гравцями. Ви можете запустити два екземпляри класу, який обробляє введення користувача та перетворює зміни в екземплярі символів гравця.
Деякі рамки заохочують / вимагають від вас використовувати та базуватись на подіях / перериваннях систем, як ActionScript3.0. У такому випадку код циклу зазвичай йде на OnEnterFrame
подію чи щось подібне, що відбувається 20 - 60 або 120 разів за секунду.
Відповідь на оригінальне запитання (чи потрібен мені основний цикл):
Це все зводиться до лічильника програми . Якщо ви створюєте гру, яка запускатиме більше заздалегідь визначеної кількості часу і не генерує код у процесі, вам потрібно буде ласка просити ПК, щоб він повторив деякі інструкції, які він уже обробив, і що, можливо, зміниться в тим часом - стан (значення, що зберігаються в ігрових об'єктах та глобальних).
Оскільки ви знаєте, що вам потрібно буде повторити інструкції, існує кілька способів виконати це завдання та постійно обробляти одні й ті ж інструкції. Усі ці методи передбачають переміщення лічильника програми назад до відповідної інструкції. Найпоширеніші оператори управління потоком, які призводять до повторення коду, називаються циклами, інше - це goto
твердження, яке рідко використовується в сучасному коді і має подібний ефект у цьому випадку (абсолютно не стосується вас).
Отже, щоб відповісти на ваше попереднє запитання, чи потрібна вам петля? Так ти зробиш.