Фэндом


Screeps - игра в реальном времени. Ход игрового времени, по сути своей, последовательность игровых "тиков" ("tick", или ходов, циклов) которые идут с момента запуска сервера. Номер текущего тика можно получить чтением свойства Game.time. Это глобальный счетчик, который увеличивается на протяжении всей игры.

Тики выполняются в бесконечном цикле в модуле main. Очень важно понимать, что этот цикл пошагово-мультиплеерный: каждый следующий тик (следующее значение Game.time) наступает только после полного выполнения команд модуля main каждого игрока.

Далее описан механизм исполнения тиков в условном разделении на начальный, средний и конечный этапы.

В начальной стадии тика есть некоторая игровая ситуация: различные игровые объекты с различными свойствами. Отметим, что любые изменения этих свойств, создание новых объектов и уничтожение старых произойдет только в начале следующего тика.

На среднем этапе тика выполняются команды модуля main (вместе с модулями, к которым он обращается). Модуль main взаимодействует в условиях неизменяемого игрового состояния, которое было в начале тика. Например, если выполнить команду creep.move(), а за ней (в том же тике) команду creep.attack(), то атака будет выполняться с начального положения крипа до перемещения, а свойства-координаты creep.pos.x / creep.pos.y примут новые значения только к следующему тику.

В конце тика, игровое состояние изменяется в соответствии с командами модулей main независимо друг от друга. Если происходят какие-либо конфликты – например, несколько крипов собираются переместиться в одну и ту же точку, или вы отдали противоречивые приказы – то эти конфликты разрешаются с предопределенными приоритетами. Другой пример: взаимная атака не приводит к конфликту, и оба крипа могут умереть одновременно.

Дополнительная информация:

  • Физически исполнение модуля main ограниченно числом доступных ресурсов процессора (CPU, свойство Game.cpuLimit).
  • Количество использованных в текущем тике ресурсов процессора можно узнать в свойстве Game.getUsedCpu.
  • Отношение между игровыми тиками (Game.time) и реальным временем во многом зависит от ёмкости серверов.
  • Весь глобальный контекст вместе со всеми переменными между тиками очищаются.
  • Консольные команды исполняются в рамках тика так, словно они были "дописаны" в конце модуля main.

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на Фэндоме

Случайная вики