Um serviço centralizado de gerenciamento de biblioteca/coleção de jogos com foco na emulação. Configure uma vez, jogue em qualquer lugar.
Aviso
SOB DESENVOLVIMENTO PESADO: Espere mudanças significativas com frequência, atualize sua instalação com cuidado.
Retrom é um serviço centralizado de gerenciamento de biblioteca de jogos que permite hospedar seus jogos em um único dispositivo e conectar clientes em qualquer quantidade de outros dispositivos para (des)instalar/baixar e posteriormente iniciar esses jogos localmente.
Tela inicial
Visualização do jogo
Dica
Após a instalação, certifique-se de verificar o guia de início rápido para começar a trabalhar rapidamente.
Cuidado
Retrom foi projetado sem nenhuma medida de segurança específica em mente. É altamente recomendável que você execute o Retrom apenas em uma rede local, a menos que saiba o que está fazendo. Se desejar expor o Retrom à Internet, você deve fazê-lo por meio de um proxy reverso com medidas de segurança adequadas . Este não é um recurso planejado para ser implementado no próprio Retrom, pois há muitas variáveis a serem consideradas ao hospedar algo e não existe uma solução única para todos.
Retrom atualmente oferece suporte a bibliotecas com as seguintes estruturas:
Cada jogo deve ser representado por um diretório contendo os arquivos do jogo (mesmo para jogos/plataformas de arquivo único). Da mesma forma, cada jogo deve estar contido em um diretório que representa a plataforma em que é jogado, e os diretórios da plataforma devem estar na raiz do diretório da sua library
.
Exemplo:
Suponha que você tenha os jogos:
Para a plataforma Game Guy e os jogos:
Para a plataforma Game Guy Advance. Sua biblioteca deve ficar assim:
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
Em vez de cada jogo ser representado por um diretório, você pode ter uma biblioteca na qual cada jogo é simplesmente um único arquivo no respectivo diretório da plataforma.
Exemplo:
Suponha os mesmos jogos e plataformas do exemplo em Jogos com vários arquivos. Sua biblioteca deve ficar assim:
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 usa provedores de metadados para baixar metadados para seus jogos. Atualmente, o único provedor suportado é o IGDB. Está planejado suporte para mais provedores.
Para usar o provedor de metadados IGDB, você precisará criar uma conta no site do IGDB e criar um novo aplicativo para obter seu ID de cliente e segredo. Você pode fazer isso seguindo as instruções aqui.
Observação
Requisitos
O servidor é configurado por meio de um arquivo de configuração. Aqui está um exemplo de arquivo de configuração:
Dica
Você pode substituir o db_url
pelo URL do seu próprio banco de dados
Cuidado
O path
em content_directories
deve ser o caminho dentro do contêiner . Se você estiver usando o Docker, você deve montar os diretórios da sua biblioteca nesses caminhos. Consulte a seção Docker para obter mais informações.
{
"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 "
}
}
A maneira atualmente recomendada de executar o servidor é via Docker, de preferência com docker compose
.
Dica
Se você não está familiarizado com o Docker Compose, pode ler a documentação aqui.
Vamos ajustar o exemplo acima config.json
para nosso contêiner docker e salvá-lo em algum lugar seguro. Neste exemplo, assumiremos que ele foi salvo em /home/minecraft_steve/config_dir/config.json
. Observe que precisamos de um diretório de configuração para montar no contêiner, não apenas do arquivo em si.
Vamos supor também que temos bibliotecas em /home/minecraft_steve/library1/
e em /home/minecraft_steve/library2/
.
Aqui está o arquivo de configuração de exemplo:
{
"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 "
}
}
Então, este arquivo de exemplo docker-compose.yml
irá ajudá-lo a começar:
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
Você pode então executar docker-compose up
no diretório que contém seu arquivo docker-compose.yml
para iniciar o serviço.
O cliente web estará acessível na porta 3000 e o próprio serviço na porta 5101 – que pode ser acessado por qualquer cliente desktop.
O Serviço Retrom também está disponível via Cargo. A instalação via cargo construirá o binário em seu sistema, então você precisará ter o conjunto de ferramentas Rust instalado.
Sugere-se usar o Rustup para instalar o conjunto de ferramentas Rust. Você também precisará certificar-se de ter algumas dependências instaladas em seu sistema:
libssl-dev
(ou equivalente para o seu sistema)libpq-dev
(ou equivalente para o seu sistema) Cuidado
Você não encontrará suporte para essas dependências neste guia, pois elas são específicas do sistema. Consulte o gerenciador de pacotes do seu sistema ou a Internet para obter ajuda com a instalação dessas dependências. Se você não sabe como instalar essas dependências, você deve usar o método Docker.
Se os pré-requisitos forem atendidos, você pode instalar o Retrom via Cargo com o seguinte comando:
cargo install retrom-service
Você pode então executar o serviço com o seguinte comando:
RETROM_CONFIG=/path/to/your/config.json retrom-service
Basta acessar a página de lançamentos e baixar a versão mais recente para sua plataforma. O cliente está disponível para Windows, MacOS (chips da série Intel e M) e Linux.
Ocasionalmente, pode haver compilações de depuração presentes em uma versão. Geralmente, você deve preferir as compilações sem depuração, a menos que tenha sido instruído a usar uma compilação de depuração por um desenvolvedor para fins de depuração. Sempre haverá uma versão sem depuração de qualquer versão, basta procurar um arquivo com nome idêntico sem o sufixo -debug
.
O seguinte pode ajudá-lo a diferenciar entre as diferentes versões:
*-setup.exe
são para Windows (prefira isso à versão .msi, a menos que você tenha um bom motivo para não fazê-lo)*.msi
são para Windows (prefira a versão .exe)*-x64.dmg
arquivos são para MacOS em chips Intel*-aarch64.dmg
são para MacOS em chips da série M*-x64.AppImage
arquivos são para Linux*-x64.deb
arquivos são para Linux (distros baseadas em Debian)*-x64.rpm
são para Linux (distros baseadas em Red Hat) Aviso
A imagem do cliente web foi descontinuada. Em vez disso, use o cliente Web fornecido com a imagem de serviço.