Централизованная служба управления библиотекой/коллекцией игр с упором на эмуляцию. Настройте один раз, играйте где угодно.
Предупреждение
В ТЯЖЕЛОЙ РАЗРАБОТКЕ: ожидайте частых критических изменений, обновляйте установку с осторожностью.
Retrom — это централизованная служба управления игровой библиотекой, которая позволяет вам размещать свои игры на одном устройстве и подключать клиенты на любом количестве других устройств для (удаления) установки/загрузки и последующего запуска указанных игр локально.
Главный экран
Просмотр игры
Кончик
После установки обязательно ознакомьтесь с руководством по быстрому запуску, чтобы быстро приступить к работе.
Осторожность
Retrom разработан без учета каких-либо конкретных мер безопасности. Настоятельно рекомендуется запускать Retrom только в локальной сети, если вы не знаете, что делаете. Если вы хотите предоставить Retrom доступ к Интернету, вам следует сделать это через обратный прокси-сервер с соответствующими мерами безопасности . Эту функцию не планируется реализовать в самом Retrom, поскольку при размещении чего-либо необходимо учитывать множество переменных, и не существует универсального решения.
В настоящее время Retrom поддерживает библиотеки со следующими структурами:
Каждая игра должна быть представлена каталогом, содержащим файлы игры (даже для однофайловых игр/платформ). Каждая игра также должна содержаться в каталоге, представляющем платформу, на которой в нее играют, а каталоги платформы должны находиться в корне каталога вашей library
.
Пример:
Предположим, у вас есть игры:
Для платформы Game Guy и игр:
Для платформы Game Guy Advance. Ваша библиотека должна выглядеть так:
library/
game_guy/
plumber_dude/
plumber_dude.gg
plumber_dude_2/
plumber_dude_2_part_1.gg
plumber_dude_2_part_2.gg
game_guy_advance/
plumber_dude_world/
plumber_dude_world.gga
plumber_dude_and_plumber_dudes_brother/
plumber_dude_and_plumber_dudes_brother.gga
Вместо того, чтобы каждая игра была представлена в виде каталога, у вас может быть библиотека, в которой каждая игра представляет собой простой файл в соответствующем каталоге платформы.
Пример:
Предположим, те же игры и платформы, что и в примере «Многофайловые игры». Ваша библиотека должна выглядеть так:
library/
game_guy/
plumber_dude.gg
plumber_dude_2.gg
game_guy_advance/
plumber_dude_world.gga
plumber_dude_and_plumber_dudes_brother.gga
Retrom использует поставщиков метаданных для загрузки метаданных для ваших игр. В настоящее время единственным поддерживаемым поставщиком является IGDB. Планируется поддержка большего количества поставщиков.
Чтобы использовать поставщика метаданных IGDB, вам необходимо создать учетную запись на веб-сайте IGDB и создать новое приложение, чтобы получить идентификатор и секрет вашего клиента. Вы можете сделать это, следуя инструкциям здесь.
Примечание
Требования
Сервер настраивается через файл конфигурации. Вот пример файла конфигурации:
Кончик
Вы можете заменить db_url
URL-адресом своей собственной базы данных.
Осторожность
path
в content_directories
должен быть путем внутри контейнера . Если вы используете Docker, вам следует смонтировать каталоги вашей библиотеки по этим путям. Дополнительную информацию см. в разделе Docker.
{
"connection" : {
"port" : 5101 ,
"db_url" : " postgres://minecraft_steve:super_secret_password@retrom-db/retrom "
},
"content_directories" : [
{
"path" : " path/to/my/library/ " ,
"storage_type" : " MultiFileGame "
},
{
"path" : " path/to/my/library/with/single_file_games/ " ,
"storage_type" : " SingleFileGame "
}
],
"igdb" : {
"client_secret" : " super_secret_client_secret!!!1 " ,
"client_id" : " my_IGDB_ID_1234 "
}
}
В настоящее время рекомендуемый способ запуска сервера — через Docker, в идеале — с помощью docker compose
.
Кончик
Если вы не знакомы с Docker Compose, вы можете прочитать документацию здесь.
Давайте изменим приведенный выше пример config.json
для нашего докер-контейнера и сохраним его в безопасном месте. В этом примере мы предполагаем, что он сохранен в /home/minecraft_steve/config_dir/config.json
. Обратите внимание, что нам нужен каталог конфигурации для монтирования в контейнер, а не только сам файл.
Предположим также, что у нас есть библиотеки в /home/minecraft_steve/library1/
и в /home/minecraft_steve/library2/
.
Вот пример файла конфигурации:
{
"connection" : {
"port" : 5101 ,
"db_url" : " postgres://minecraft_steve:super_secret_password@retrom-db/retrom "
},
"content_directories" : [
{
"path" : " /library1 " ,
"storage_type" : " MultiFileGame "
},
{
"path" : " /library2 " ,
"storage_type" : " SingleFileGame "
}
],
"igdb" : {
"client_secret" : " super_secret_client_secret!!!1 " ,
"client_id" : " my_IGDB_ID_1234 "
}
}
Затем этот пример файла docker-compose.yml
поможет вам начать:
services :
retrom :
image : ghcr.io/jmberesford/retrom-service:latest
ports :
- 5101:5101
- 3000:3000 # to access the web client
volumes :
- /home/minecraft_steve/config_dir:/config/ # directory containing your config file
- /home/minecraft_steve/library1:/library1 # directory containing your first library
- /home/minecraft_steve/library2:/library2 # directory containing your second library
# OPTIONAL: spin up a postgres container to use as the database, if you
# don't have one already.
#
# read the docs here: https://hub.docker.com/_/postgres
retrom-db :
container_name : retrom-db
hostname : retrom-db # this should match the db_url in your config file
image : postgres:16
restart : unless-stopped
volumes :
# to store the DB data on the host, change this path to any directory you like
- /home/minecraft_steve/retrom_data/:/var/lib/postgresql/data
environment :
POSTGRES_USER : minecraft_steve # db user, used to connect to the db, should match the db_user in your config file
POSTGRES_PASSWORD : super_secret_password # db password for above user, should match the db_password in your config file
POSTGRES_DB : retrom # db name, should match the db_name in your config file
Затем вы можете запустить docker-compose up
в каталоге, содержащем файл docker-compose.yml
чтобы запустить службу.
Веб-клиент будет доступен через порт 3000, а сама служба — через порт 5101, к которому могут получить доступ любые клиенты для настольных компьютеров.
Услуга Retrom также доступна через Cargo. При установке через Cargo двоичный файл будет собран в вашей системе, поэтому вам потребуется установить набор инструментов Rust.
Для установки набора инструментов Rust предлагается использовать Rustup. Вам также необходимо убедиться, что в вашей системе установлены некоторые зависимости:
libssl-dev
(или эквивалент для вашей системы)libpq-dev
(или эквивалент для вашей системы) Осторожность
В этом руководстве вы не найдете поддержки этих зависимостей, поскольку они зависят от системы. Пожалуйста, обратитесь к менеджеру пакетов вашей системы или в Интернет за помощью в установке этих зависимостей. Если вы не знаете, как установить эти зависимости, вместо этого вам следует использовать метод Docker.
Если предварительные условия соблюдены, вы можете установить Retrom через Cargo с помощью следующей команды:
cargo install retrom-service
Затем вы можете запустить службу с помощью следующей команды:
RETROM_CONFIG=/path/to/your/config.json retrom-service
Просто зайдите на страницу релизов и загрузите последнюю версию для вашей платформы. Клиент доступен для Windows, MacOS (чипы Intel и серии M) и Linux.
Иногда в выпуске могут присутствовать отладочные сборки. Обычно вам следует предпочитать неотладочные сборки, если только разработчик не проинструктировал вас использовать отладочную сборку для целей отладки. Всегда будет неотладочная версия любого выпуска, просто найдите файл с таким же именем без суффикса -debug
.
Следующее может помочь вам различать разные версии:
*-setup.exe
предназначены для Windows (предпочитайте эту версию версии .msi, если у вас нет веских причин не делать этого)*.msi
предназначены для Windows (предпочитайте версию .exe).*-x64.dmg
файлы предназначены для MacOS на чипах Intel.*-aarch64.dmg
файлы предназначены для MacOS на чипах серии M.*-x64.AppImage
файлы предназначены для Linux.*-x64.deb
файлы предназначены для Linux (дистрибутивы на основе Debian).*-x64.rpm
файлы предназначены для Linux (дистрибутивы на базе Red Hat). Предупреждение
Изображение веб-клиента устарело. Вместо этого используйте веб-клиент, включенный в образ службы.