Учётная карточка сборки

Версия 0.3.0

Один портативный исполняемый файл с упакованными внутрь данными игры. Ни установщика, ни лаунчера, ни аккаунта, ни фоновой службы.

Файл
/downloads/ChaosLab-0.3.0-windows-x64.zip
Содержимое
ChaosLab.exe, данные игры встроены в исполняемый файл
Цель
Windows 10/11, 64 бита (x86-64)
Движок
Godot 4.7.1 stable, рендерер GL Compatibility
Установка
Не требуется. Распакуйте архив и запустите файл
Удаление
Удалите папку, а если нужно начисто — и файл настроек
Подпись
Отсутствует — SmartScreen предупредит
Сеть
В этой версии сервер не настроен, поэтому запросов она не делает

Ни размер файла, ни контрольная сумма здесь не публикуются: публиковать хеш, который эта страница не может проверить, — украшательство. Если по ссылке на загрузку открывается страница «не найдено», архив этой версии ещё не выложен.

Почему Windows на неё ругается

Исполняемый файл не подписан сертификатом разработчика, поэтому SmartScreen пишет неизвестный издатель. Выберите Подробнее, затем Выполнить в любом случае. Это предупреждение честное — оно говорит, что никто не заплатил за то, чтобы привязать к этому файлу удостоверение личности, — и будет появляться, пока сертификата нет. Это же причина, по которой в игре нет автообновления: неподписанный исполняемый файл, который скачивает и подменяет исполняемые файлы, ведёт себя ровно как зловред, а антивирусы классифицируют по поведению.

Что вошло в эту версию

0.3.0 — это строка версии, которую исходники несут сегодня. Прототип прошёл через три десятка с лишним задач; вот те части, с которыми встречается игрок.

Расписание сезона

Четырёхнедельный цикл лежит в сборке как данные. Титульный экран печатает фазу и оставшиеся дни, так что вернувшийся игрок узнаёт об изменениях до того, как нажмёт «Начать».

Уведомление об обновлении

Необязательная проверка при запуске, которая сообщает о существовании более новой сборки и ничего не скачивает. В этой версии не настроена и отключается.

Полосы здоровья и щита

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

Станции восстановления

Ремонтная установка и эмиттер щита, не больше одной на квартал, и внутри здания, если в квартале оно есть. Они не перезаряжаются, поэтому ни один угол города не стоит того, чтобы в нём отсиживаться.

Толпа, которая поспевает

Уйти от боя больше не значит опустошить мир: город подгружается вокруг вас, а толпа поддерживается впереди по ходу движения.

Перки в акте о происшествии

Отчёт в конце забега перечисляет перки, которые были при вас, рядом с наградой и причиной смерти, — так забег объясняет сам себя.

Ещё в этой версии, за кулисами: шлюз кандидатов теперь выносит вердикт по посчитанной работе, а не по измеренному времени, поэтому на медленной машине он тот же самый, а офлайновый пакетный генератор способен без присмотра прогнать сотню предложений через импорт и шлюз. Ни то, ни другое не входит в игру, которую вы запускаете; и то, и другое — причина, по которой кандидатам можно доверять в том, что они не расплавят вам частоту кадров.

Известные проблемы, названные до того, как вы их найдёте

Управление

Клавиатура и мышь. Схема передвижения выбирается на титульном экране.
ДействиеВвод
ДвижениеWASD или стрелки
ПрицеливаниеМышь
ОгоньЛевая кнопка мыши
РывокSpace — пока он длится, вас не задеть
Оружие14 или Q по кругу
ПаузаEsc
ЯзыкF2 — английский и русский, переключаются прямо в забеге
ДиагностикаF3 — кадры, снаряды, отказы
ЗвукM

Что она пишет и что отправляет

Игра пишет один файл настроек и больше ничего:

%APPDATA%\Godot\app_userdata\Chaos Lab\settings.cfg

В нём хранятся ваш язык, ваша схема передвижения и разрешение на проверку обновлений. Ни телеметрии, ни сборщика отчётов о падениях, ни идентификатора, ни аккаунта. Чтобы отказаться от проверки обновлений навсегда, добавьте в этот файл:

[updates]
check_enabled=false

Проверка — это один GET статического JSON-файла при запуске. Он не несёт ни строки запроса, ни сведений о вас; сервер узнал бы, что некий адрес забрал файл, — что ему в любом случае сообщила бы ссылка на загрузку. Проверка никогда не задерживает титульный экран, а неудача проходит молча, потому что отсутствие сети — это нормальное состояние машины, а не ошибка.

Манифест обновлений — /updates/latest.json

Эндпоинт, который читает игра. Это статический файл с описанием самой свежей сборки; игра реагирует, только если версия в нём выше её собственной, и только тем, что показывает кнопку, открывающую ссылку в вашем браузере.

{
  "version": "0.3.0",
  "season_name": "Season 1 — Health and Safety Review",
  "notes": "Three gated Season 1 candidates ship in this build.",
  "download_url": "https://chaoslabgame.ru/downloads/ChaosLab-0.3.0-windows-x64.zip"
}

Что игра отвергает и почему разбор такой подозрительный: это единственный текст в игре, пришедший извне, и попадает он и на подпись в интерфейсе, и в руки системного обработчика ссылок — а это не браузер, а «сделай с этой строкой то, что делает эта машина».

Сборка 0.3.0 смотрит на https://chaoslab.invalid/updates/latest.json — заведомо неразрешимый адрес, — чтобы ненастроенная возможность была именно инертной, а не просто безуспешной. Опубликовать сезон — значит выложить этот файл; откатить сезон — значит выложить предыдущий.

Собрать самостоятельно

Проект — это проект Godot 4.7.1. При установленных подходящих шаблонах экспорта сборка под Windows делается одной командой из корня репозитория, а пресет встраивает данные проекта в один портативный исполняемый файл:

godot --headless --path . --export-release "Windows Desktop" builds/windows/ChaosLab.exe

Автоматический набор тестов запускается headless из того же рабочего каталога, а шлюз кандидатов — это скрипт, который можно натравить на любой ресурс-кандидат, прежде чем пускать его к испытанию.