Учётная карточка сборки
Версия 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 — это строка версии, которую исходники несут сегодня. Прототип прошёл через три десятка с лишним задач; вот те части, с которыми встречается игрок.
Расписание сезона
Четырёхнедельный цикл лежит в сборке как данные. Титульный экран печатает фазу и оставшиеся дни, так что вернувшийся игрок узнаёт об изменениях до того, как нажмёт «Начать».
Уведомление об обновлении
Необязательная проверка при запуске, которая сообщает о существовании более новой сборки и ничего не скачивает. В этой версии не настроена и отключается.
Полосы здоровья и щита
Обе живут внутри собственной раскладки информационной панели, а не висят поверх неё, и щит выступает за полосу здоровья, чтобы никогда не перекрыть то число, от которого вы умираете.
Станции восстановления
Ремонтная установка и эмиттер щита, не больше одной на квартал, и внутри здания, если в квартале оно есть. Они не перезаряжаются, поэтому ни один угол города не стоит того, чтобы в нём отсиживаться.
Толпа, которая поспевает
Уйти от боя больше не значит опустошить мир: город подгружается вокруг вас, а толпа поддерживается впереди по ходу движения.
Перки в акте о происшествии
Отчёт в конце забега перечисляет перки, которые были при вас, рядом с наградой и причиной смерти, — так забег объясняет сам себя.
Ещё в этой версии, за кулисами: шлюз кандидатов теперь выносит вердикт по посчитанной работе, а не по измеренному времени, поэтому на медленной машине он тот же самый, а офлайновый пакетный генератор способен без присмотра прогнать сотню предложений через импорт и шлюз. Ни то, ни другое не входит в игру, которую вы запускаете; и то, и другое — причина, по которой кандидатам можно доверять в том, что они не расплавят вам частоту кадров.
Известные проблемы, названные до того, как вы их найдёте
- Рисованной графики нет. Персонажи и мир — примитивы с намеренно неверными пропорциями. Рендерер, который будет читать нарисованные вручную листы, существует и покрыт тестами; листов не существует.
- Ствол оружия торчит перед игроком. Это модель, а не ошибка прицеливания.
- Экстремальная плотность снарядов роняет кадры. Худший профиль — 256 самонаводящихся снарядов против 500 врагов — намерил около 62 мс на физический кадр на машине разработчика, что заметно выходит за бюджет в 16,7 мс для 60 Гц. Обычная толпа из 500 врагов на той же машине намерила около 12,5 мс. Это замеры при разработке на одном компьютере с Windows, а не обещание для вашего.
- Баланс не устоялся. Оружие, дефицит патронов и темп волн — всё это первые подходы. Стоит ли вообще переключать оружие — открытый вопрос.
- Фаза сезона доверяет системным часам. Переведите их вперёд — и неделя испытания откроется раньше. Это одиночная игра, в которой нечего выигрывать, а сервер, который такое предотвращает, стоил бы дороже самой проблемы.
- Испорченное расписание пропускается, а не роняет игру. Каталог сборки играбелен сам по себе, поэтому опечатка в дате не имеет права оставить вас без предложений перков.
Управление
| Действие | Ввод |
|---|---|
| Движение | WASD или стрелки |
| Прицеливание | Мышь |
| Огонь | Левая кнопка мыши |
| Рывок | Space — пока он длится, вас не задеть |
| Оружие | 1–4 или 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"
}
Что игра отвергает и почему разбор такой подозрительный: это единственный текст в игре, пришедший извне, и попадает он и на подпись в интерфейсе, и в руки системного обработчика ссылок — а это не браузер, а «сделай с этой строкой то, что делает эта машина».
version— только цифры и точки.download_urlобязан начинаться сhttps://, быть печатным ASCII и уложиться в ограниченную длину. Всё остальное отвергается, а не открывается.- Показываемые строки урезаются до одной ограниченной строки, потому что перевод строки в примечании к релизу — это бесплатная строка титульного экрана, размещённая тем, кто написал манифест.
- Ответ крупнее небольшого JSON-документа отбрасывается до разбора, а сам запрос сдаётся через несколько секунд.
Сборка 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 из того же рабочего каталога, а шлюз кандидатов — это скрипт, который можно натравить на любой ресурс-кандидат, прежде чем пускать его к испытанию.