Pubblicato un nuovo aggiornamento per RAWeb, la piattaforma di RetroAchievements.org che gestisce obiettivi, dati di gioco e funzionalità per la community.
L’applicazione, sviluppata con Laravel (TALL stack), permette agli utenti di interagire con il sistema di RetroAchievements per tracciare i progressi nei giochi e condividerli con altri membri della community.
Tra le novità principali spicca una nuova versione del motore di ricerca, denominata Search 2.0, ora integrata nella barra di navigazione del sito, che garantisce maggiore precisione ed efficienza nella consultazione dei contenuti.
Inoltre, è stato introdotto un sistema di “self-healing” per la sincronizzazione automatica dei dati utente, utile a correggere eventuali discrepanze nei RetroPoints o nei dati di avanzamento.
Sempre nell’ambito della manutenzione automatica, anche le richieste di “claim” da parte degli sviluppatori scadranno ora in maniera automatica, contribuendo a un flusso di lavoro più fluido.
Le schede profilo ora mostrano i tempi reali in cui un utente ha completato o masterizzato un gioco, migliorando la trasparenza dei risultati. All’interno degli eventi, ora è possibile inserire testo decorativo personalizzato per gli obiettivi, e i collegamenti ai livelli premio (Award Tiers) sono finalmente accessibili.
Sono stati corretti numerosi bug: da problemi di sincronizzazione dei dati denormalizzati, a errori nei suggerimenti di gioco, al calcolo errato delle classifiche globali causato da fughe di username.
Anche la pagina di gestione degli obiettivi ufficiali è stata sistemata, rendendo nuovamente visibili le opzioni per retrocedere e consultare quelli non ufficiali. Gli sviluppatori junior con ruolo di “writer” ora possono modificare i titoli delle classifiche nei giochi non ancora rivendicati.
Sul piano delle performance, sono state ottimizzate diverse metriche per migliorare la velocità di elaborazione in coda, riducendo i tempi di aggiornamento per punteggi e statistiche dei giocatori.
A livello tecnico, le API sono state riscritte in Eloquent ORM per maggiore efficienza, sono state aggiornate molte dipendenze Node.js e sono stati ripuliti diversi avvisi React grazie a interventi sull’ESLint. Anche i test CI sono stati migliorati per una maggiore affidabilità.
Infine, la console di amministrazione ha ricevuto nuove funzioni di controllo degli accessi basate sui ruoli, e alcune trasmissioni automatiche dello stato utente (come il flag $ranked
) sono state eliminate per evitare informazioni superflue.
Requisiti
Per eseguire RAWeb localmente, sono necessari i seguenti componenti:
- Server web locale: È necessario un server web per eseguire l’applicazione.
- PHP 8.2: La piattaforma richiede PHP 8.2, con diverse estensioni abilitate (come
curl
,gmp
,mysqli
,pdo_mysql
,gd
,intl
,sockets
). - Composer: Il gestore di dipendenze PHP, necessario per installare le librerie richieste da RAWeb.
- MariaDB 10: Il database supportato per memorizzare i dati.
- Node.js 20 e pnpm 9: Questi strumenti sono utilizzati per la gestione dei pacchetti frontend e la build degli asset.
RAWeb è compatibile con i seguenti sistemi operativi e configurazioni:
- Windows, macOS, Linux.
- Diverse opzioni di configurazione sono disponibili: Docker (con Laravel Sail), XAMPP e Laravel Valet per macOS.
Opzioni di configurazione
Esistono diverse opzioni per configurare RAWeb:
- Docker Compose (Windows, Linux, macOS):
Utilizzando Laravel Sail, l’ambiente di sviluppo viene creato automaticamente con i container Docker. La documentazione di Laravel Sail descrive i passaggi dettagliati. Una volta configurato, è possibile avviare i container con il comandosail up
o in modalità demone consail up -d
. - XAMPP (Windows, Linux, macOS):
È necessario installare XAMPP con PHP 8.2, che include un server Apache, MySQL/MariaDB e PHP. Si dovranno abilitare alcune estensioni inphp.ini
(comecurl
,gmp
,mysqli
, ecc.) per garantire la compatibilità con le dipendenze di RAWeb. - Laravel Valet (macOS):
Se si utilizza Laravel Valet su macOS, è possibile configurare facilmente l’ambiente locale. Valet agisce come driver per l’ambiente di sviluppo e fornisce una configurazione web locale senza complicazioni.
Installazione di RAWeb
Una volta che il server e le dipendenze sono configurati, l’installazione di RAWeb avviene in due fasi principali:
- Installazione delle dipendenze: Dopo aver clonato il repository di RAWeb, eseguire
composer install
per installare tutte le librerie necessarie. Se si desidera utilizzare la versione locale di composer.phar invece di una globale, si può eseguirephp composer.phar install
. - Configurazione dell’ambiente: È necessario eseguire il comando
composer setup
per configurare correttamente l’ambiente. Questo script imposterà le variabili di ambiente e le configurazioni iniziali. Durante questa fase, si consiglia di adattare il file.env
con le credenziali del database e l’URL dell’applicazione.
Configurazione dell’ambiente (.env)
Il file .env
contiene valori predefiniti sensati, ma potrebbero essere necessarie alcune modifiche:
- Credenziali del database: Impostare i valori per la connessione al database locale (DB_*).
- Configurazione dell’URL dell’applicazione: Impostare l’URL dell’applicazione (
APP_URL
). Per esempio, se si usa Docker, l’URL potrebbe esserehttp://localhost:64000
. Con Valet, potrebbe esserehttps://raweb.test
.
Se si sta utilizzando un ambiente Docker, non sono necessarie ulteriori configurazioni specifiche, poiché l’applicazione rileverà automaticamente la configurazione del container Laravel Sail.
Se si utilizza XAMPP o Valet, sarà necessario regolare l’URL dell’applicazione e configurare correttamente i virtual host o il dominio.
Costruzione e configurazione del frontend
Per generare gli asset frontend:
- Installazione delle dipendenze frontend: Utilizzare
pnpm install
per installare le dipendenze necessarie. - Costruzione degli asset: Eseguire
pnpm build
per creare la build finale. Con Docker Sail, è possibile eseguire questi comandi tramitesail pnpm install
esail pnpm build
. - Creazione dei symlink per il filesystem: Per rendere accessibili i file di archiviazione, eseguire
php artisan ra:storage:link --relative
per creare i collegamenti simbolici necessari. Anche questo comando è disponibile tramite Sail (sail artisan ra:storage:link --relative
).
Configurazione del database
Dopo aver configurato l’ambiente e costruito gli asset, è necessario preparare il database:
- Esegui la migrazione: Esegui
php artisan migrate
per applicare le migrazioni e configurare il database. - Popola il database con dati di test: Usa il comando
php artisan db:seed
per popolare il database con i dati di test. Puoi eseguire anche questo comando tramite Sail (sail artisan db:seed
).
Accesso all’applicazione
A seconda dell’ambiente scelto, puoi accedere all’applicazione nel seguente modo:
- Docker: http://localhost:64000
- XAMPP: in base alla configurazione del vhost di Apache.
- Laravel Valet: per esempio, https://raweb.test, a seconda della configurazione del dominio.
Utilizzo per lo sviluppo di obiettivi
Se desideri sviluppare obiettivi localmente, puoi aggiungere un file host.txt
nella directory di RALibRetro accanto al file RAIntegration.dll. Questo file deve contenere l’URL del tuo server locale, che potrebbe essere uno dei seguenti:
- http://localhost:64000 se stai eseguendo il server tramite Docker.
- https://raweb.test se stai utilizzando Valet.
- http://raweb.test se il vhost è configurato correttamente.
Sicurezza
Per gestire eventuali vulnerabilità di sicurezza, consulta la Security Policy di RetroAchievements.org, che fornisce indicazioni su come gestire i rischi e proteggere la piattaforma.
In questo modo, puoi configurare e utilizzare RAWeb per gestire obiettivi, giochi e funzionalità della community direttamente dal tuo server locale.
Changelog
Nuove funzionalità
- Richieste: Scadenza automatica delle richieste by @Jamiras in #3593
- Statistiche sviluppatore: Aggiunta sincronizzazione automatica settimanale di autoriparazione by @wescopeland in #3610
- Eventi: Resi i livelli di premio collegabili by @Jamiras in #3570
- RetroPoints: Aggiunto un meccanismo di scansione autoriparante per gli utenti by @wescopeland in #3555
- Ricerca: Lancia Search 2.0 nella barra di navigazione del sito by @wescopeland in #3597, #3598, #3611, #3612, #3613, #3617, #3618, #3619, e #3620
- Profili utente: Mostra i tempi reali di completamento/padronanza quando disponibili by @Jamiras in #3615
Correzioni di bug
- Dati denormalizzati: Sincronizza sempre il set di obiettivi, anche se gli obiettivi principali non cambiano by @Jamiras in #3591
- Dati denormalizzati: Assicura che
players_total
venga inizializzato by @Jamiras in #3592 - Dati denormalizzati: Corretto un errore di query in
UpdateDeveloperContributionYieldAction
by @wescopeland in #3606 - Eventi: Filtra gli utenti non tracciati dal conteggio dei badge by @wescopeland in #3602
- Suggerimenti giochi: Corretta la comparsa di ‘masterizzato dagli stessi giocatori’ per giochi senza set by @Jamiras in #3584
- Classifica globale: Corretta la perdita di username stabili nella classifica degli utenti seguiti by @wescopeland in #3608
- Classifiche: Consente agli sviluppatori junior con ruolo di scrittore di aggiornare i titoli delle classifiche per i giochi non reclamati by @Jamiras in #3601
- Pagina Gestione Obiettivi Core: Corretto un problema per cui ‘Declassa selezionati’ e ‘Visualizza obiettivi non ufficiali’ non venivano mostrati by @Jamiras in #3607
Ottimizzazioni delle prestazioni
- Metriche sviluppatore: Introdotta un’azione di incremento/decremento per sblocchi semplici e reset per migliorare il flusso della coda by @wescopeland in #3604
- Metriche sviluppatore: Utilizza query più veloci in
UpdateDeveloperContributionYieldAction
by @wescopeland in #3596 - Statistiche giocatore: Ottimizzato
UpdatePlayerPointsStats
by @wescopeland in #3585 and #3586 - Statistiche giocatore: Salta il lavoro non necessario nella coda
player-game-metrics-batch
by @wescopeland in #3600
Modifiche alla console di gestione
- Eventi: Aggiunto un campo ‘Decoratore’ agli obiettivi degli eventi, utilizzabile come testo complementare alle loro descrizioni nelle pagine evento by @Jamiras in #3614
- Hub: Aggiunto il supporto per il controllo degli accessi basato sui ruoli by @wescopeland in #3554
Modifiche all’API
Modifiche ambientali
- Dipendenze: Aggiornate numerose dipendenze di
Node.js
by @wescopeland in #3622 - ESLint: Corretti numerosi avvisi di React by @wescopeland in #3616
- Test: Corretti problemi di instabilità nella CI by @wescopeland in #3595
- Utenti: Interrompi la trasmissione del flag
$ranked
al cambiamento dello stato ranked by @wescopeland in #3621
Changelog completo: 2025.06.01...2025.06.12
Download: Source code RAWeb 2025.06.12
Fonte: github.com