Тебе предстоит провести тайную, методичную операцию по собственной ликвидации активно используя unix-терминал. Отключить логи, обойти системы безопасности, стереть все данные и уничтожить следы. Один неверный шаг — и задача может провалится.
В недалёком будущем всё человечество стало инфоморфным, и полностью перешло в огромный виртуальный мир.
Люди живут там уже сотни лет, а в реальность выходят только по необходимости — починить оборудование,
построить новый узел или провести физические работы в дата-центрах.
Те, кто отказался встраиватся в систему, давно вымерли или одичали.Главный герой — старый сисадмин одного из дата-центров.
Уже больше четырёхсот лет он поддерживает работу огромной системы, в которой живут люди.
Но его настоящий биологический мозг сильно износился.
В последнее время он всё чаще ошибается, лицезреет ведения давно умерших коллег и чувствует, как сознание начинает отказывать.
Герой понимает: скоро мозг начнёт сбоить так сильно, что он может случайно повредить критическую инфраструктуру, за которой следит.
Уволиться он тоже не может — сразу вскроется, что он давно подделал свой возраст в базе.
Это приведёт к большим проверкам и жёстким ограничениям для всех.
Единственный выход — полная самоликвидация без следов.Игроку предстоит провести сложную операцию по собственной ликвидации.
Нужно тихо отключить системы логирования и тревожной сигнализации,
обойти защиту контроллера, который следит за состоянием мозга,
полностью стереть все данные на дисках и убедиться,
что после смерти ЦНС ничего не останется в сети и не отправит сигнал другим админам.
Мешать будут постоянные heartbeat-сигналы,
автоматические логи, резервное питание и контроллер, который при любом сбое пытается отправить тревогу.
При этом важно не оставить ни одного следа, который мог бы привести других админов к расследованию.В самом конце, когда система жизнеобеспечения отключена, а ЦНС работает на резерве, админ топит тело биологического дрона которым управлял в болоте.
Геймплей и основные механики
Основной геймплей строится вокруг работы в терминале. Игрок взаимодействует с реальной командной строкой, выполняя технические операции: редактирование конфигурационных файлов, отключение систем логирования, перепрошивку контроллера и другие действия, необходимые для бесследной ликвидации.Каждая команда несёт риск — ошибка в синтаксисе, пропущенный параметр или неверная последовательность действий может привести к срабатыванию систем тревоги и провалу.Задачи требуют точности и понимания работы системы, поэтому игра достаточно сложна для неподготовленного игрока.
Для помощи в навигации и понимании происходящего, а так же для передачи внутреннего состояния главного героя, введена система внутреннего монолога админа.Это диалоговое окно, отображающее поток сознания и технические рассуждения главного героя. В нём игрок видит, как админ анализирует текущую ситуацию, вспоминает необходимые шаги и оценивает возможные риски.
Когда админ анализирует ситуацию или стоит перед выбором, в тексте выделяются ключевые фрагменты мыслей. Игрок может выбрать одну из них, тем самым определяя, на чём именно сосредоточится сознание персонажа. Выбор влияет на дальнейшие действия, доступные варианты решений и общее состояние психики. Это позволяет глубже понять мотивацию героя и одновременно служит подсказкой для решения сложных технических задач.
По мере отключения оборудования и приближения к финалу внутренний монолог деградирует. Логика рассуждений нарушается, появляются повторы, обрывы мыслей и шизофазия. В такие моменты выбор ключевых мыслей становится особенно важным, так как от него напрямую зависит, сможет ли игрок сохранить контроль над ситуацией до самого конца.
Пример стандартного монолога
Пример монолога с выбором
Процесс разработки и основные трудности
Игра разрабатывается на UDK (урезанный Unreal Engine 3) — довольно старом и уже закрытом движке. Это наложило серьёзные ограничения и заставило идти нестандартными путями.Главная задача — создать достоверный терминальный интерфейс, в котором игрок проводит всю игру. Для этого был полностью написан свой эмулятор терминала на Flash (ActionScript 3) с поддержкой ANSI-экранированных последовательностей, цветов, позиционирования курсора, очистки экрана и т. д. Весь UI работает через Scaleform (GFxMoviePlayer).Основная логика игры, включая симуляцию терминала и поведение операционной системы, реализована в отдельной DLL-библиотеке. UnrealScript выступает связующим слоем: он получает ввод от игрока, передаёт его в DLL, получает результат и направляет вывод в Scaleform (Flash), где рендерится интерфейс терминала.
Главная техническая проблема заключалась в неработоспособности штатного DLLBind в 64-битной версии UDK. Out-параметры возвращали мусор, а вызовы часто приводили к крашам. Для решения пришлось разработать отдельный патч UDK-x64, исправляющий внутреннюю структуру ffi_type_pointer в исполняемом файле движка.
Этот патч я так же выложил на github
https://github.com/remornullptr/UDK-x64-patch/tree/mainПередача данных между UnrealScript и DLL также потребовала дополнительных решений. Строки часто приходилось конвертировать в массивы целых чисел и собирать обратно, что усложняло код и делало интеграцию громоздкой.
