Layanan perpustakaan/manajemen koleksi game terpusat dengan fokus pada emulasi. Konfigurasikan sekali, mainkan di mana saja.
Peringatan
DALAM PERKEMBANGAN BERAT: Harapkan perubahan yang sering terjadi, perbarui instalasi Anda dengan hati-hati.
Retrom adalah layanan manajemen perpustakaan game terpusat yang memungkinkan Anda meng-host game Anda di satu perangkat, dan menghubungkan klien di perangkat lain dalam jumlah berapa pun untuk (membatalkan) instalasi/unduh dan kemudian meluncurkan game tersebut secara lokal.
Layar Beranda
Tampilan Permainan
Tip
Setelah instalasi, pastikan untuk membaca panduan Quickstart untuk memulai dan menjalankannya dengan cepat.
Peringatan
Retrom dirancang tanpa mempertimbangkan langkah-langkah keamanan khusus. Sangat disarankan agar Anda menjalankan Retrom di jaringan lokal saja kecuali Anda tahu apa yang Anda lakukan. Jika Anda ingin mengekspos Retrom ke internet, Anda harus melakukannya di belakang proxy terbalik dengan langkah-langkah keamanan yang tepat . Ini bukanlah fitur yang direncanakan untuk diterapkan di Retrom itu sendiri, karena ada banyak variabel yang perlu dipertimbangkan saat menghosting sesuatu dan tidak ada solusi yang cocok untuk semua.
Retrom saat ini mendukung perpustakaan dengan struktur berikut:
Setiap game harus diwakili oleh direktori yang berisi file game (bahkan untuk game/platform file tunggal). Setiap game juga harus dimuat dalam direktori yang mewakili platform tempat game tersebut dimainkan, dan direktori platform harus berada di root direktori library
Anda.
Contoh:
Asumsikan Anda memiliki permainan:
Untuk platform Game Guy dan gamenya:
Untuk platform Game Guy Maju. Perpustakaan Anda akan terlihat seperti ini:
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
Daripada setiap game diwakili oleh sebuah direktori, Anda mungkin memiliki perpustakaan di mana setiap game hanya berupa satu file di direktori platform masing-masing.
Contoh:
Asumsikan game dan platform yang sama seperti contoh di Game Multi-File. Perpustakaan Anda akan terlihat seperti ini:
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 menggunakan penyedia metadata untuk mengunduh metadata untuk game Anda. Saat ini, satu-satunya penyedia yang didukung adalah IGDB. Dukungan untuk lebih banyak penyedia direncanakan.
Untuk menggunakan penyedia metadata IGDB, Anda perlu membuat akun di situs web IGDB dan membuat aplikasi baru untuk mendapatkan ID klien dan rahasia Anda. Anda dapat melakukannya dengan mengikuti petunjuk di sini.
Catatan
Persyaratan
Server dikonfigurasi melalui file konfigurasi. Berikut ini contoh file konfigurasi:
Tip
Anda dapat mengganti db_url
dengan URL database Anda sendiri
Peringatan
path
di content_directories
harus menjadi jalur di dalam wadah . Jika Anda menggunakan Docker, Anda harus memasang direktori perpustakaan Anda ke jalur ini. Lihat bagian Docker untuk informasi lebih lanjut.
{
"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 "
}
}
Cara yang disarankan saat ini untuk menjalankan server adalah melalui Docker, idealnya dengan docker compose
.
Tip
Jika Anda belum familiar dengan Docker Compose, Anda dapat membaca dokumentasinya di sini.
Mari sesuaikan contoh config.json
di atas untuk container buruh pelabuhan kita, dan simpan di tempat yang aman. Dalam contoh ini, kami menganggapnya disimpan ke /home/minecraft_steve/config_dir/config.json
. Perhatikan bahwa kita memerlukan direktori config untuk dipasang ke dalam container, bukan hanya file itu sendiri.
Anggap saja kita memiliki perpustakaan di /home/minecraft_steve/library1/
dan di /home/minecraft_steve/library2/
.
Berikut ini contoh file konfigurasinya:
{
"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 "
}
}
Kemudian, contoh file docker-compose.yml
ini akan membantu Anda memulai:
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
Anda kemudian dapat menjalankan docker-compose up
di direktori yang berisi file docker-compose.yml
Anda untuk memulai layanan.
Klien web akan dapat diakses pada port 3000, dan layanan itu sendiri pada port 5101 -- yang dapat diakses oleh klien desktop mana pun.
Layanan Retrom juga tersedia melalui Cargo. Menginstal melalui kargo akan membangun biner di sistem Anda, jadi Anda perlu menginstal toolchain Rust.
Disarankan untuk menggunakan Rustup untuk menginstal Toolchain Rust. Anda juga perlu memastikan bahwa Anda memiliki beberapa dependensi yang terinstal di sistem Anda:
libssl-dev
(atau yang setara untuk sistem Anda)libpq-dev
(atau yang setara untuk sistem Anda) Peringatan
Anda tidak akan menemukan dukungan untuk dependensi ini dalam panduan ini, karena dependensi tersebut bersifat spesifik sistem. Silakan merujuk ke manajer paket sistem Anda atau internet untuk bantuan dalam menginstal dependensi ini. Jika Anda tidak tahu cara menginstal dependensi ini, Anda sebaiknya menggunakan metode Docker.
Jika prasyarat terpenuhi, Anda dapat menginstal Retrom melalui Cargo dengan perintah berikut:
cargo install retrom-service
Anda kemudian dapat menjalankan layanan dengan perintah berikut:
RETROM_CONFIG=/path/to/your/config.json retrom-service
Cukup buka halaman rilis dan unduh versi terbaru untuk platform Anda. Klien tersedia untuk Windows, MacOS (chip Intel dan seri M), dan Linux.
Terkadang, mungkin ada build debug yang ada dalam rilis. Biasanya Anda sebaiknya memilih build non-debug, kecuali Anda diperintahkan untuk menggunakan build debug oleh pengembang untuk tujuan debugging. Akan selalu ada versi non-debug dari setiap rilis tertentu, cukup cari file dengan nama yang sama tanpa akhiran -debug
.
Berikut ini dapat membantu Anda membedakan berbagai versi:
*-setup.exe
ditujukan untuk Windows (lebih memilih ini daripada versi .msi, kecuali Anda punya alasan kuat untuk tidak melakukannya)*.msi
ditujukan untuk Windows (lebih memilih versi .exe daripada ini)*-x64.dmg
ditujukan untuk MacOS pada chip Intel*-aarch64.dmg
ditujukan untuk MacOS pada chip seri M*-x64.AppImage
file untuk Linux*-x64.deb
file untuk Linux (distro berbasis Debian)*-x64.rpm
file untuk Linux (distro berbasis Red Hat) Peringatan
Gambar klien web sudah tidak digunakan lagi. Gunakan klien web yang dibundel dengan gambar layanan sebagai gantinya.