Перейти к содержимому

Fingercomp's Playground

  • записей
    85
  • комментариев
    407
  • просмотра
    225 843

Ставим эмулятор OpenComputers

Fingercomp

12 454 просмотра

Наткнулся на интересный эмулятор: https://git.io/vOJaq Написан на Lua. Эмулирует OpenComputers. В этой записи небольшой я расскажу немного о том, как варить пельмени использовать этот эмулятор.
x1RA1uN.png
Использовать его так же, как и OpenOS!



Установка:
Linux


Далее нас потребуется версионированный luarocks. Т.е., под Lua 5.2 либы в одной директории, под 5.3 — в другой, ну и так далее. На Арче и Маках ничего сложного:
Arch

pacman -S lua52 luarocks5.2 lua52-filesystem lua52-sec lua52-socket


Затем переходим к пункту Luarocks.
Mac

brew install luabrew install sdl2


Затем переходим к пункту Luarocks.

 


Ubuntu
А вот тут уже чуть сложнее. По дефолту луарокс из репы швыряет всё в одну кучу, и потому нужно скомпилировать самому. Ничего особо сложного. Качаем пакет отсюда, распаковываем (tar xvf <имя файла>) и переходим в директорию. Зтем пишем:

./configure --lua-version=5.2 --lua-suffix=5.2 --versioned-rocks-dirmake buildsudo checkinstall


Можно sudo make install, но я лично так не делаю, так как команда выше создаёт пакет сразу, а мейк-инстолл — тупо копирует.
После этого — идём к Luarocks.

 


Luarocks
И, наконец, устанавливаем библиотеки через luarocks-5.2:

  • luarocks-5.2 install luafilesystem
  • luarocks-5.2 install luautf8
  • luarocks-5.2 install luasocket
  • luarocks-5.2 install luasec
  • luarocks-5.2 install --server=http://luarocks.org/dev luaffi[il]


Если вы не страдаете ненавистью к SVN, устанавливаем [il]subversion и пишем make в директории с эмулятором для скачивания OpenOS.
Иначе же открываем https://github.com/MightyPirates/OpenComputers и сами скачиваем src/main/resources/assets/opencomputers/loot в src/loot, src/main/resources/assets/opencomputers/lua в src/lua и src/main/resources/assets/opencomputers/unifont.hex в папку src/ эмулятора.

 


Windows
Бинарники: x32 / x64.
Если же хочется самим скомпилировать:

  • Устанавливаем MSYS2, запускаем.
  • Пишем update-core.
  • Закрываем окно и открываем снова.
  • Обновляем остальное командой pacman -Su.
  • Пишем pacman -S mingw-w64-i686-toolchain.
  • Закрываем и в "Пуске" ищем MinGW Win32 Shell или MinGW Win64 Shell, в зависимости от разрядности системы. Открываем именно его.
  • В терминале переходим в папку с эмулятором и пишем ./msys_setup_ocemu.sh. Это сделает всё, что нужно.

 


Запуск:

  • Чаще всего достаточно просто запустить lua5.2 boot.lua в директории src/. Это живенько запустит эмулятор с последней OpenOS.
  • Можно указать путь для эмулируемой машины в аргументе: lua5.2 boot.lua ~/my/machine.
  • BIOS машины хранится в $HOME/.ocemu или %APPDATA%\.ocemu, в зависимости от ОС. Можно изменить его код.
  • Запустите emucfg в OpenOS — это конфигуратор эмулятора. Можно выбрать компоненты: [insert] для его добавления, [Delete] для удаления.
  • Если запустить несколько сессий эмулятора, можно даже "общаться" между ними через эмулированные модемы.




Сетевые соединения между эмуляторами (модемы)i
Крутая штука. Так как ещё ни в одном эмуляторе не было модемов, надо акцентировать внимание на этом обязательно.
  1. Создаём две директории для эмулируемых машин (у меня: ~/.ocemu/machines/m1 и ~/.ocemu/machines/m2).
  2. В каждую из них копируем файл ~/.ocemu/ocemu.cfg.
  3. Открываем первый файл и меняем все адреса в настройке "components". Это необходимо для того чтобы эмулятор считал, что это два разных компьютера.
  4. Открываем второй файл и тоже меняем адреса. Достаточно сделать так, что бы они были не такие же, как в первой машине. Можно даже настройку по умолчанию оставить.
  5. Запускаем два эмулятора: ./boot.lua ~/.ocemu/machines/m1 & ./boot.lua ~/.ocemu/machines/m2 & (надо запустить их, очевидно, параллельно).
  6. И всё, теперь компьютеры могут общаться друг с другом!


WYIPy0T.png

 



 

OpenOS 1.6
И в бонус записи — предварительный обзор ключевых изменений OpenOS.

  • PIPING. По стандартам. Я не буду объяснять смысл термина, предлагаю просто прописать cat /init.lua | head --lines=25. С grep это тоже работает.
  • Стооооп. Новые программы: head, grep, touch — похожее на Лялеховские программы. Не забывайте про man: man grep. Спасает и помогает. Ещё проги: sleep (спит указанное время), source (считать файл и выполнить каждую строку как команду OpenOS).
  • Тонны изменений в term, pipes, guid, transforms — в библиотеках OpenOS. Терминал теперь только для одного экрана, мультиэкранность хотят сделать отдельной библиотекой.
  • И множество изменений в логике программ, ключах, аргументах.

 


l9TAyPu.png

 

Огромное спасибо @Krutoy и @Strateg за помощь в установке на Windows.
Если встретились с проблемой при установке на Win, посетите этот топик: http://computercraft.ru/topic/1512-%E2%9C%94-zakaz%E2%84%96-013-vypolneno-binarniki-emuliatora-ocemu-na-windows/

  • Нравится 5


34 комментария


Рекомендуемые комментарии



Так ты вообще не предлагай пользователям x64 винды что то делать. Пусть 4 мегабайта скачают с яндекса. Или вообще на github'е сделать форк и залить все нужные либы.

Скачал @ Запустил

А вот если траблы, пусть откроют спойлер и попробуют всё сами собрать по твоему гайду.

Забыл про либы >_> Ща дополню.

Поделиться комментарием


Ссылка на комментарий

Так ты вообще не предлагай пользователям x64 винды что то делать. Пусть 4 мегабайта скачают с яндекса. Или вообще на github'е сделать форк и залить все нужные либы.

Скачал @ Запустил

А вот если траблы, пусть откроют спойлер и попробуют всё сами собрать по твоему гайду.

Готово, обновил, ссылка помещена. :)

Поделиться комментарием


Ссылка на комментарий

А как сделать экран третьего уровня?

В файле OCEmu/src/component/screen_sdl2.lua пропиши после первой строки

maxwidth = 160
maxheight = 50

Поделиться комментарием


Ссылка на комментарий

catmanultop@bruhmoment MSYS ~
$ update-core
bash: update-core: команда не найдена

catmanultop@bruhmoment MSYS ~
$ pacman -Su
:: Starting core system upgrade...
 делать больше нечего
:: Запускается полное обновление системы...
 делать больше нечего

catmanultop@bruhmoment MSYS ~
$ pacman -S mingw-w64-i686-toolchain.
ошибка: не найдена цель: mingw-w64-i686-toolchain.

catmanultop@bruhmoment MSYS ~
$
 

Поделиться комментарием


Ссылка на комментарий

Гость
Добавить комментарий...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...