Перейти к публикации
Форум - ComputerCraft

Fingercomp's Playground

  • записей
    85
  • комментария
    323
  • просмотра
    216 844

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

Fingercomp

8 022 просмотра

Наткнулся на интересный эмулятор: 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/

  • Like 5


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


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



Была бы сеть еще. =)

Сеть есть — несколько эмуляторов запущенных могут общаться через "модем".

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


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

Спасибо Фингер за статью!
А то я давно искал такой эмулятор (я раньше слышал только про урезанный эмулятор CC на love2d).
Да конечно пришлось чуть-чуть попотеть чтобы поставить его (все-таки Арч это не Убунта :) ).

А в целом вроде запустился. Еще не пробовал что-то писать в нем и не проверял как сказал НЕО работу по сети.

 

Вот бы еще этот эмулятор портировали бы на андройд, и тогда вообще рай был бы :-D

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


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

Добавил в записульку инфу о том, как запустить два эмулятора параллельно без "накладываний" для работы модемов.

P. S. Модемы, к слову, проводные ;)

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


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

Не получается запустить с винды! Что я делаю не так?

 

gtrd607.png

 

>>Устанавливаем subversion и пишем make в директории с эмулятором для скачивания OpenOS.

И про это пожалуйста подробнее. Откуда брать subversion, что это такое и где писать make

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


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

И вообще, почему нельзя просто собрать все нужные файлы для запуска с винды и сложить их в один архив?

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


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

Обновил публикацию, поискав в интернете всякую фигню по этой теме. Проверить не могу, т. к. нет Винды.

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


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

Дошел до последнего файла. Куча логов, что то делает и грузит, но заканчивается вот этим:

patching file Makefile
gcc -O2 -Wall -fPIC -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wne                                 sted-externs -Wshadow -Wwrite-strings -pedantic -I/usr/local/include   -c -o src                                 /lfs.o src/lfs.c
make: gcc: Command not found
<builtin>: recipe for target 'src/lfs.o' failed
make: *** [src/lfs.o] Error 127
Failed to build luafilesystem


Я не знаю что делать :(

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


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

...

Крупно повезло.

Снова открой MSYS2 терминал из "Пуска" и пропиши это заклинание: pacman -S mingw-w64-i686-toolchain.

Затем открываешь MinGW Win32 Shell и выполняешь этот шаг снова.

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


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

Крупно повезло.

Снова открой MSYS2 терминал из "Пуска" и пропиши это заклинание: pacman -S mingw-w64-i686-toolchain.

Затем открываешь MinGW Win32 Shell и выполняешь этот шаг снова.

Сделал, но на .sh файле опять ошибка. А еще, он два раза мне какие то вопросы задавал непонятные, я просто два раза ENTER нажал, так как не понимаю что это значит.

:: Processing package changes...
(1/1) reinstalling mingw-w64-x86_64-lua            [#####################] 100%
mkdir: cannot create directory 'extras': File exists
fatal: destination path 'luafilesystem' already exists and is not an empty directory.
patching file Makefile
Reversed (or previously applied) patch detected!  Assume -R? [n]
Apply anyway? [n]
Skipping patch.
5 out of 5 hunks ignored -- saving rejects to file Makefile.rej
gcc -O2 -Wall -fPIC -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings -pedantic -I/usr/local/include   -c -o src/lfs.o src/lfs.c
src/lfs.c:1:0: warning: -fPIC ignored for target (all code is position independent)
 /*
 ^
src/lfs.c:63:17: fatal error: lua.h: No such file or directory
compilation terminated.
<builtin>: recipe for target 'src/lfs.o' failed
make: *** [src/lfs.o] Error 1
Failed to build luafilesystem

Прошу помощи, но, это какой то абсурд. Я уже накачал и установил полтора гига дребедени из каких то компиляторов, библиотек и утилит, что бы запустить программу размером с 1 мегобайт!

Неужели нельзя было просто закинуть пару .dll файлов вместе с эмулятором...

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


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

Эмулятор писал не я, а возможности у меня проверить установку из-под винды нет :(

Печально всё это.

Пока что могу только посоветовать попробовать прописать y на обоих вопросах.

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


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

y не помогает, всё равно ошибка...

Reversed (or previously applied) patch detected!  Assume -R? [n] y
gcc -O2 -Wall -fPIC -W -Waggregate-return -Wcast-align -Wmissing-prototypes -Wnested-externs -Wshadow -Wwrite-strings -pedantic -I/usr/local/include   -c -o src/lfs.o src/lfs.c
src/lfs.c:1:0: warning: -fPIC ignored for target (all code is position independent)
 /*
 ^
src/lfs.c:63:17: fatal error: lua.h: No such file or directory
compilation terminated.
<builtin>: recipe for target 'src/lfs.o' failed
make: *** [src/lfs.o] Error 1
Failed to build luafilesystem

Что ж, видимо придется ждать, пока кто то из нас, простых окнопользователей всё таки все эти действия выполнит и просто даст готовые библиотеки.

 

Я бы уже давно "матрицу" дописал, если бы эмулятор был.

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


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

...

Только сейчас заметил "lua.h".

Как в прошлый раз, выполнить команду pacman -S mingw-w64-lua

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


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

0OpCHtX.png

 

Я бы сам попробовал разобраться, но я даже не знаю что это за пакманы какие то, что значит -S и что такое mingw

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


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

Дошел до пункта:

Пишем pacman -S mingw-w64-i686-toolchain mingw-w64-lua

 Получаю ошибку "не найдена цель: mingw-w64-lua"

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


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

0OpCHtX.png

 

Я бы сам попробовал разобраться, но я даже не знаю что это за пакманы какие то, что значит -S и что такое mingw

mingw - это компилятор для С, С++, вроде как там еще есть языки.

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


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

Ох, как всё сложно...

Покопал сырцы. Луа должна сама собраться.

Что не так — я теперь даже не представляю.

 

P. S. Обновил шаг с установкой пакетов в записи.

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


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

Что не так — я теперь даже не представляю.

Судя по ошибке он не может найти lua.h

Я не понимаю, зачем компилировать луа самому, если его уже готовый можно скачать с оффсайта?

Может где то можно отключить это?

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


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

Судя по ошибке он не может найти lua.h

Я не понимаю, зачем компилировать луа самому, если его уже готовый можно скачать с оффсайта?

Может где то можно отключить это?

¯\(O.o)/¯

Можно найти папку, где находятся файлы эмулятора, и пихнуть в папку usr/include

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


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

 

 

  • Устанавливаем зависимости:
    • Lua 5.2
    • SDL2
  • Устанавливаем библиотеки:
    • luafilesystem
    • luautf8
    • luasocket
    • luasec
    • luaffi

А можно пояснить, как эти пункты выполнить. А то я их проехал как-то.

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


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

А можно пояснить, как эти пункты выполнить. А то я их проехал как-то.

На Windows скрипт сам всё поставит.

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


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

Ну что, неужели никто кроме меня и зеро не пытался установить на винду?

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


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

Ну что, неужели никто кроме меня и зеро не пытался установить на винду?

Пока могу посоветовать только снести MSYS и поставить заново.

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


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

Обновил запись по итогам заказа №13. Ещё раз спасибо @Strateg и @Krutoy за помощь!

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

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

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

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×