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






Фотография
* * * * * 2 голосов

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

Написано Fingercomp , в OpenComputers, Tutorials 04 Март 2016 · 7 529 просмотров

OC эмулятор OpenComputers

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

Далее нас потребуется версионированный luarocks. Т.е., под Lua 5.2 либы в одной директории, под 5.3 — в другой, ну и так далее. На Арче и Маках ничего сложного:
Arch
pacman -S lua52 luarocks5.2 lua52-filesystem lua52-sec lua52-socket
Затем переходим к пункту Luarocks.
Mac
brew install lua
brew install sdl2
Затем переходим к пункту Luarocks.

 

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

./configure --lua-version=5.2 --lua-suffix=5.2 --versioned-rocks-dirmake build
sudo 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
Если вы не страдаете ненавистью к SVN, устанавливаем subversion и пишем make в директории с эмулятором для скачивания OpenOS.
Иначе же открываем https://github.com/M...s/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
Крутая штука. Так как ещё ни в одном эмуляторе не было модемов, надо акцентировать внимание на этом обязательно.
  • Создаём две директории для эмулируемых машин (у меня: ~/.ocemu/machines/m1 и ~/.ocemu/machines/m2).
  • В каждую из них копируем файл ~/.ocemu/ocemu.cfg.
  • Открываем первый файл и меняем все адреса в настройке "components". Это необходимо для того чтобы эмулятор считал, что это два разных компьютера.
  • Открываем второй файл и тоже меняем адреса. Достаточно сделать так, что бы они были не такие же, как в первой машине. Можно даже настройку по умолчанию оставить.
  • Запускаем два эмулятора: ./boot.lua ~/.ocemu/machines/m1 & ./boot.lua ~/.ocemu/machines/m2 & (надо запустить их, очевидно, параллельно).
  • И всё, теперь компьютеры могут общаться друг с другом!
Изображение

 

 

 

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

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

 

Изображение

 

Огромное спасибо Krutoy и Strateg за помощь в установке на Windows.
Если встретились с проблемой при установке на Win, посетите этот топик: http://computercraft...emu-na-windows/



  • SDV, Programist135, LeshaInc и 2 другим это нравится



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

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

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

Спасибо Фингер за статью!
А то я давно искал такой эмулятор (я раньше слышал только про урезанный эмулятор 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 за помощь!

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

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

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

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

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

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

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

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

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

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

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

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

Скачал, распаковал, запустил - работает! Ставлю пятёрочку:)

Фотография
Laine_prikol
07 мар 2017 14:10

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

Фотография
AndySingularity
04 май 2017 18:18

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

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

maxwidth = 160
maxheight = 50

Обратные ссылки на эту запись [ URL обратной ссылки ]

Обратных ссылок на эту запись нет

0 посетителей

0 пользователей, 0 гостей, 0 анонимных

Лицензия

Новые комментарии