Время: @time, @tick, @second
Тик, секунда, минута и миллисекунда — одно и то же время в четырёх видах. Выбирать приходится по задаче
Четыре переменные, и все показывают одно и то же — время с начала игры:
| Переменная | В чём | Через две секунды |
|---|---|---|
@tick |
в тиках, по 60 в секунду | 120 |
@second |
в секундах | 2 |
@minute |
в минутах | 0.033 |
@time |
в миллисекундах | 2000 |
Все дробные, все растут непрерывно: @second — это не «сколько целых секунд прошло»,
а честная дробь.
Таймер: «раз в две секунды» без wait
Заголовок раздела «Таймер: «раз в две секунды» без wait»jump 4 lessThan @second срокop add срок @second 2op add сработало сработало 1endop add холостых холостых 1Смысл простой: программа держит срок — момент, когда ей снова можно, — и всё
остальное время пролетает мимо. За десять секунд сработало доходит до пяти,
а холостых итераций набегает несколько сотен.
Это обычный способ отмерять время в mlog, и он лучше wait
там, где программа между делами должна продолжать работать: wait останавливает
её целиком, а срок — нет.
Часы, которые не сбрасываются
Заголовок раздела «Часы, которые не сбрасываются»Время идёт с начала игры, а не с запуска процессора: поставленный на десятой минуте
процессор увидит в @second шестьсот, а не ноль.
Отсюда привычка запоминать начало в переменной:
jump 3 notEqual начало 0set начало @secondop sub прошло @second началоТак считают своё время: от первой итерации, а не от начала карты.
Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.