Эта страница — набор полезных «постоянно используемых» утилит: RNG, форматирование, время и несколько основных подсистем, которые встречаются в большинстве игр.
Для случайности используется явный u64 seed. Передавайте seed по ref чтобы он обновлялся.
rng:u64=rng_seed_time();// или детерминированно для каждой сущности:// rng: u64 = rng_seed(entity.id);// Значения диапазона включительныroll:=rng_range_int(refrng,1,10);chance:=rng_range_float(refrng,0,1);
Если вам нужно детерминированное поведение в геймплее, держите RNG под контролем сервера. Не определяйте важные исходы только на клиенте.
Если вам нужен аргумент рядом со знаком процента (или рядом с другим аргументом), используйте %0 в качестве псевдонима для %:
Для округления десятичных чисел используйте format_float:
Логирование
Логирование следует тем же правилам форматирования:
Время
SFX
Важные длинные звуки воспроизводите только на сервере (Game.is_server()), иначе рассинхронизация предсказания может привести к двойному воспроизведению (музыка, звук смерти и т. д.).
Быстрый старт с экономикой (валюты)
Валюты экономики — это для каждого игрока отдельно и автоматически сохраняются.