Ответ на актуальный вопрос (должен ли игровой цикл быть в отдельной теме):
Причина, по которой люди часто рекомендуют использовать отдельный поток, заключается в том, что они не хотят, чтобы тяжелая обработка мешала интерактивности пользовательского интерфейса. Вы единственный, кто может сказать, нужна ли отдельная тема для вашей игры. От движка и фреймворка полностью зависит, может ли основной игровой цикл в вашем нынешнем дизайне влиять на время отклика пользовательского интерфейса. Думаю, вы обычно предполагаете, что это не будет (в небольших проектах), если у вас нет причин думать иначе.
Другая причина хранить код в отдельных потоках - это сохранять код модульным и простым. Смешивание двух не связанных между собой частей кода часто может привести к тому, что код станет менее читаемым и поддерживаемым в долгосрочной перспективе.
Должен ли игровой цикл выполняться в отдельном потоке? Возможно. Если есть проблема со временем отклика или кодом, и вам нужно ответить на несколько элементов пользовательского интерфейса, независимо от интенсивной обработки, или вы просто хотите разбить код на конкретные задачи, которые выполняются одновременно по соображениям проектирования, то используйте его. Тем не менее, это считается передовой практикой программирования.
Простой, но, возможно, не лучший пример для иллюстрации - игра для двух игроков. Возможно, вы захотите запустить два экземпляра класса, который обрабатывает ввод пользователя и преобразует изменения состояния в экземпляре персонажа игрока.
Некоторые фреймворки поощряют / требуют от вас использовать систему, основанную на событиях / прерываниях, как ActionScript3.0. В этом случае код цикла обычно переходит к OnEnterFrame
событию или чему-то подобному, что происходит 20 - 60 или 120 раз в секунду.
Ответ на оригинальный вопрос (нужен ли основной цикл):
Все сводится к счетчику программ . Если вы создаете игру, которая будет работать дольше заданного промежутка времени и не будет генерировать код в процессе работы, вам нужно будет попросить компьютер вашего пользователя повторить некоторые инструкции, которые он уже обработал, и что, возможно, изменится в Тем временем это состояние (значения хранятся в объектах и глобалах игры).
Поскольку вы знаете, что вам нужно будет повторять инструкции, есть несколько способов выполнить эту задачу и постоянно обрабатывать одни и те же инструкции. Все эти методы включают перемещение счетчика программы обратно к текущей соответствующей инструкции. Наиболее распространенные операторы потока управления, которые вызывают повторение кода, называются циклами, другой - goto
оператор, который редко используется в современном коде и имеет подобный эффект в этом случае (совершенно не относится к вам).
Итак, чтобы ответить на ваш предыдущий вопрос, вам нужен цикл? Да, вы делаете.