OC-Wasm: архитектура WebAssembly для OpenComputers
Мод OpenComputers давно стал стандартом для тех, кто хочет программировать внутри Minecraft. Но Lua — не единственный язык, на котором можно писать софт для виртуальных компьютеров. Дополнение OC-Wasm добавляет поддержку WebAssembly, открывая дверь в мир Rust, Zig, C и десятков других компилируемых языков. Если вы искали OC-Wasm для Minecraft, чтобы выйти за рамки привычного скриптинга, — вы по адресу.
Что такое OC-Wasm и зачем он нужен
OC-Wasm — это не самостоятельный мод, а архитектура процессора для OpenComputers. Он не добавляет новых блоков или предметов: вы используете те же стандартные компоненты, что и для Lua-компьютеров. Главное отличие — возможность выполнять скомпилированные .wasm-файлы прямо на виртуальном CPU. Это значит, что тяжёлые вычисления, асинхронные задачи и сложные алгоритмы можно реализовать на производительных языках, а не только на Lua.
WebAssembly-окружение в OC-Wasm изолировано и безопасно, как и полагается песочнице. При этом сохраняется полный доступ к компонентам OpenComputers: GPU, файловой системе, редстоуну, сетевым картам и даже машинам из Immersive Engineering, если установлены соответствующие обёртки. Для мододелов и просто увлечённых игроков это настоящий прорыв.
Как установить и начать работу
Прежде чем скачать OC-Wasm, убедитесь, что у вас уже стоит OpenComputers на Minecraft 1.12.2 или более новой версии (мод работает на Forge). Само дополнение распространяется в виде JAR-файла, который нужно поместить в папку mods. Никаких дополнительных загрузчиков не требуется — OC-Wasm подхватывается OpenComputers автоматически.
Если вы пользуетесь лаунчером foxygame.net, то установка OC-Wasm превращается в один клик — достаточно найти дополнение в каталоге и нажать «Установить». Лаунчер сам проверит совместимость версий и пропишет всё в нужную сборку, избавляя от ручного копирования файлов.
После установки пора собрать компьютер. Возьмите стандартный процессор (CPU) или APU из OpenComputers, держите его в руке и нажмите Shift+ПКМ. Появится меню выбора архитектуры — точно такое же, как при переключении между Lua 5.2 и 5.3. В списке вы увидите WebAssembly. Выберите его, и процессор начнёт исполнять wasm-код.
Каждому компьютеру нужен BIOS. Если ваша программа крошечная (≤4 КиБ), её можно записать прямо на EEPROM и использовать как BIOS. Но обычно код крупнее, поэтому понадобится загрузчик. OC-Wasm-BIOS — это специальная прошивка, которая при старте ищет файл /init.wasm на диске и запускает его. Готового крафта для такого BIOS нет, поэтому его нужно скачать на уже работающий Lua-компьютер и прошить на EEPROM. Проще всего выполнить команду:
wget https://gitlab.com/api/v4/projects/27476164/jobs/artifacts/main/raw/packed.wasm?job=Compile -O bios.wasm && flash bios.wasm OC-Wasm-BIOS
После этого BIOS готов. Теперь создайте своё приложение. Компилируйте .wasm-файл любыми привычными инструментами, назовите его init.wasm и поместите в корень жёсткого диска или дискеты. Сделать это можно несколькими способами: загрузить файл по сети через wget на промежуточный компьютер, а затем перенести диск в целевую машину; или напрямую скопировать файл в директорию сохранения Minecraft (тогда в конфиге OpenComputers стоит выставить bufferChanges: false). Когда всё готово, просто вставьте диск и включите компьютер — он загрузит вашу программу.
В лаунчере foxygame.net OC-Wasm всегда поддерживается в актуальной версии, а автообновление избавляет от ручной возни с файлами при выходе новых билдов. Это особенно удобно, если вы часто экспериментируете с разными языками и библиотеками.
Программирование на Rust и Zig
Одно из главных преимуществ OC-Wasm — богатая экосистема крейтов для Rust. Разработчики подготовили несколько библиотек, которые делают написание программ удобным и безопасным:
- OC-Wasm-Sys — низкоуровневые FFI-привязки, фундамент для всех остальных крейтов.
- OC-Wasm-Safe — безопасные обёртки над Sys, обеспечивающие корректную работу с памятью и дескрипторами, а также мьютексы для системных вызовов.
- OC-Wasm-Futures — асинхронные футуры, позволяющие писать код с
async/await. - OC-Wasm-Cassette — простой способ запустить асинхронную
fn mainчерез рантайм Cassette. - OC-Wasm-OpenComputers — высокоуровневые обёртки для стандартных компонентов: редстоун, файловая система, GPU и другие.
- OC-Wasm-Immersive — обёртки для машин из Immersive Engineering и Immersive Technology.
На момент написания статьи OC-Wasm-OpenComputers ещё не завершён, а обёрток для других модов, взаимодействующих с OpenComputers через адаптер, мало. Но сообщество активно принимает пул-реквесты, так что вы можете внести свой вклад.
Для любителей Zig участница сообщества AmandaC начала разработку репозитория с библиотекой и примерами. Это открывает путь к системному программированию с минимальным рантаймом прямо в Minecraft.
Технические детали и совместимость
OC-Wasm работает на Minecraft 1.12.2 и выше, используя стандартный Forge. Существует также порт от DCNick3 для версии 1.7.10 — если вы играете на старой сборке, ищите его отдельно. Внутреннее устройство архитектуры подробно описано в OC-Wasm Javadoc: там можно узнать, как реализована песочница, обработка прерываний и взаимодействие с компонентами. Если вы пишете на языке, для которого ещё нет готовых библиотек, эта документация станет отправной точкой.
Важно помнить, что WebAssembly-компьютеры используют ту же систему компонентов, что и Lua-машины. Вы можете подключать мониторы, клавиатуры, дисководы, сетевые карты — всё работает прозрачно. Единственное отличие — формат исполняемого файла и способ загрузки.
Заключение
OC-Wasm стирает границы между виртуальным миром Minecraft и серьёзной разработкой. Вы больше не привязаны к Lua — берите Rust, Zig, C++ или любой язык, компилирующийся в WebAssembly, и создавайте продвинутые программы для своих компьютеров. Установка проста, а возможности огромны. Попробуйте скачать OC-Wasm уже сегодня и откройте для себя программирование в Minecraft с новой стороны.