Pubblicato un nuovo aggiornamento per RAWeb, la piattaforma di RetroAchievements.org che gestisce obiettivi, dati di gioco e funzionalità per la community.
Si tratta di un’applicazione Laravel (TALL stack), che consente agli utenti di interagire con la piattaforma RetroAchievements per tracciare i progressi nei giochi e condividerli con altri membri della community.
Our latest site release is now live! Username change are here, hubs have been improved, and game suggestions now follow a more accurate algorithm. For all updates, check here!https://t.co/PZpKZtJAoz pic.twitter.com/MAPG1H7Fil
— RetroAchievements (@RetroCheevos) February 6, 2025
Questa nuova versione introduce diverse funzionalità e miglioramenti, tra cui il sistema di eventi aggiornato con ponderazione degli achievement, la nuova versione di Hubs 2.0, la migrazione della pagina dei messaggi a React e la possibilità per gli utenti di richiedere modifiche al nome utente.
Sono stati aggiunti nuovi shortcode, tra cui il tag [hub]
, e migliorate le pagine dei profili utente con la visibilità di tutti i ruoli e la cronologia dei nomi visualizzabili da ruoli privilegiati.
Sono stati risolti numerosi bug, come l’ottimizzazione delle query API per evitare rallentamenti, la prevenzione di eccezioni di memoria durante l’assegnazione retroattiva dei premi e la correzione di errori che potevano causare crash nelle pagine di gioco e nei profili utente.
Migliorata inoltre la gestione dei suggerimenti di gioco e la validazione dei destinatari nei messaggi privati, anche la gestione degli eventi per garantire che solo i manager possano visualizzare eventi futuri e prevenire la riattivazione accidentale di achievement declassati.
Dal lato della console di gestione, sono stati implementati nuovi strumenti per modificare direttamente gli achievement degli eventi, permettere al QA Team di creare obiettivi per eventi, aggiungere nuovi filtri per i giochi e migliorare i log di audit.
Sono stati aggiornati anche diversi endpoint API per escludere leaderboard nascoste e migliorare le query sui profili utente.
L’aggiornamento introduce anche modifiche ambientali, come l’ottimizzazione delle pipeline CI/CD, l’aggiornamento delle dipendenze Laravel, la configurazione di notifiche per i cambi di nome utente su Discord e il miglioramento delle statistiche globali con l’uso di dati denormalizzati.
Sono stati apportati ulteriori fix minori per risolvere problemi con la gestione degli award, il conteggio dei messaggi non letti e la gestione delle note per sviluppatori junior con nomi personalizzati.
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 2025.02.06
Nuove funzionalità
- Eventi: Consentita la ponderazione degli achievement degli eventi by @Jamiras in #3152
- Hubs: Rilascio della versione Hubs 2.0 by @wescopeland in #3065
- Messaggi: Migrazione della pagina dell’indice dei messaggi a React by @wescopeland in #3113 e #3140
- Impostazioni: Permette agli utenti di richiedere modifiche al nome utente by @wescopeland in #3071 and #3123
- Shortcode: Aggiunta dello shortcode
[hub]
by @wescopeland in #3084 - Profili utente: Rese visibili tutti i ruoli mostrabili by @wescopeland in #3139
- Profili utente: Aggiunta la cronologia dei nomi visualizzabile dai ruoli privilegiati by @wescopeland in #3144
Correzioni di bug
- Connect API: Rileva etichette alternative del core by @Jamiras in #3128
- Connect API: Ottimizzata una query estremamente lenta attivata dal caricamento di asset by @wescopeland in #3153
- Email: Corretta una vulnerabilità che esponeva i nomi utente stabili by @wescopeland in #3121
- Eventi: Evita la riattivazione di achievement per quelli declassati by @Jamiras in #3146
- Eventi: Consenti solo ai gestori degli eventi di visualizzare quelli futuri by @Jamiras in #3166
- Eventi: Previene l’errore di memoria insufficiente durante il riempimento degli award by @Jamiras in #3154
- Liste giochi: Dare sempre priorità ai giochi con data di rilascio quando si ordina per data di uscita by @bhimbho in #3127
- Suggerimenti di gioco: Esclusione degli eventi di giochi by @wescopeland in #3137
- Suggerimenti di gioco: Esclusione degli hub Meta e Misc by @wescopeland in #3131
- Tooltip giochi: Gestione corretta dei parametri nulli nella funzione
whereName()
by @wescopeland in #3142 - Giochi: Evita il crash della pagina quando l’utente è un admin by @wescopeland in #3158
- Giochi: Corretto un errore nella richiesta di impostazione dopo il cambio del nome utente by @wescopeland in #3151
- Messaggi: Utilizza il nome visualizzato per la convalida del destinatario by @wescopeland in #3172
- Impostazioni: Consenti agli utenti di inviare il modulo del profilo anche se hanno un solo ruolo visibile by @wescopeland in #3136
- Shortcode: Evita l’elaborazione eccessiva degli URL video nei tag
[url]
by @wescopeland in #3122 - Tooltip: Migliorata l’intelligenza del nome classe del cursore by @wescopeland in #3174
- Profili utente: Classifica correttamente gli eventi per sviluppatori convertiti by @Jamiras in #3145
- Profili utente: Mostra la classifica degli utenti seguiti quando è impostato un nome personalizzato by @wescopeland in #3150
- Utenti: Corretto l’errore 404 con set di utenti e pagine ticket eliminati by @wescopeland in #3129
Modifiche alla Console di gestione
- Set di Achievement: Corretto l’errore SQL durante l’aggiornamento dell’ordine di visualizzazione by @wescopeland in #3165
- Crediti Autore: Corretto l’errore SQL durante la reinserzione di un credito eliminato in precedenza by @wescopeland in #3173
- Eventi: Consentita la modifica diretta degli achievement di eventi senza fonte by @Jamiras in #3107
- Eventi: Consenti al QATeam di creare achievement per eventi by @Jamiras in #3117
- Eventi: Genera automaticamente un livello di completamento se non sono definiti livelli personalizzati by @Jamiras in #3115
- Eventi: Supporto per l’aggiunta di achievement aggiuntivi a un evento esistente by @Jamiras in #3161
- Giochi: Aggiunto un filtro per “Ha badge di achievement standard/riciclati” by @wescopeland in #3130
- Giochi: Aggiunte le azioni di collegamento/scollegamento di hub e giochi simili ai log di audit del gioco by #3167
- Giochi: Aggiunti filtri per i media by @wescopeland in #3125
- Giochi: Aggiunto il filtro “Ha RP dinamico” by @wescopeland in #3124
- Hub: Consenti ad alcuni ruoli di creare nuovi hub @wescopeland in #3126
Modifiche API
- API_GetGameLeaderboards: Non includere le classifiche nascoste in
Total
by @ioslife in #3157 - API_GetUserGameLeaderboards: Evita il crash in caso di classifiche eliminate by @wescopeland in #3180
- API_GetUserProfile: Consenti la ricerca di un utente tramite ULID by @wescopeland in #3141
Modifiche all’ambiente
- CI: Esegui attività in modo condizionale by @wescopeland in #3159
- CI: Utilizza controlli pre-push condizionali by @wescopeland in #3164
- CI: Utilizza la cache dei risultati di phpstan by @wescopeland in #3163
- Libreria Componenti: Aggiunto
<BaseSelectNative />
by @wescopeland in #3169 - Dipendenze: Aggiornato
laravel/pulse
dalla versione 1.2.4 alla 1.3.1 by @dependabot in #3133 - Dipendenze: Aggiornato
cross-spawn
alla versione 7.0.5 by @wescopeland in #3134 - Dipendenze: Aggiornato
vitest
alla versione 3.0.5 by @wescopeland in #3179 - Discord: Configurate notifiche per il canale
#name-change-log
by @wescopeland in #3143 - Liste Giochi: Supporto per la configurazione della dimensione predefinita della pagina by @wescopeland in #3120
- Statistiche Globali: Migliorato l’uso dei dati denormalizzati by @wescopeland in #3119
- Suggerimenti Giochi: Aggiunto un indice per ridurre i colli di bottiglia nei suggerimenti by @wescopeland in #3132
- Test: Velocizzato un test React estremamente lento by @wescopeland in #3160
Changelog 2025.02.06-B
- Correzione (SeparateAwards): Esclusione dei premi “beaten” by @wescopeland in #3182
- Correzione (Messaggi):
unreadMessageCount
dovrebbe tornare a 0 quando è nullo by @wescopeland in #3183 - Correzione (Code-Note): Consenti agli sviluppatori junior con nomi personalizzati di modificare le proprie note by @wescopeland in #3186
- Correzione (Utente): Invia il nome corretto a
request/user/update.php
by @wescopeland in #3187 - Correzione (SystemChip): Impedisce l’andare a capo delle parole by @wescopeland in #3188
- Correzione (GameSuggestionEngine): Escludi i sistemi non di gioco dalla query iniziale per “mastered/beaten” by @wescopeland in #3189
Download: Source code RAWeb 2025.02.06-B
Fonte: x.com