Pagina 1 di 67

Sito web Arcade Database

Inviato: 09/01/2015, 22:32
da motoschifo
Introduzione del 21 febbraio 2016
Questo thread descrive la creazione del sito Arcade Database, iniziata a gennaio 2015 e per il momento ancora in forte crescita 8-)
Da quel giorno le cose sono cambiate parecchio ed ora c'è una sezione interamente dedicata al progetto (anzi ai progetti, visto che qui si fa riferimento solo al sito web).
Pubblicherò tutti gli aggiornamenti degni di nota mentre le richieste e i dubbi andranno riportate in un thread sempre di questa sezione.

Messaggio dal 9 gennaio 2015
L'idea è ottenere informazioni su un gioco e seguire le evoluzioni nel tempo, senza però impazzire con gli aggiornamenti.
Inizierò dal Mame, che è uno degli emulatori più completi e precisi in quanto a documentazione, per poi proseguire anche su altre piattaforme.

Fino ad oggi seguivo alcuni siti, specialmente ProgettoEmma, ma pian piano mi sono accorto che non mi "bastava" più.
Mi sono costruito un'interfaccia web che uso come front-end per pc e cabinati, completa di immagini, video, manuali, recensioni, voti, ecc. ma anche questo ora non è sufficiente perchè contiene solo i giochi a cui posso giocare.
Quello che vorrei ottenere è proprio una database il più completo possibile e che si possa aggiornare con estrema facilità.
Ovviamente sarà pieno di filtri per le ricerche più strane e particolari (si parla di almeno 50 parametri per gioco), così come ricco di allegati come immagini, video, suoni, manuali e tutto ciò che mi verrà in mente di aggiungere.
Prevedo anche diversi tipi di rappresentazioni/gallerie e funzioni di export per la creazione di liste per qualsiasi front-end.

Come anticipato è un'idea che ho da parecchi anni ma non l'ho mai esplorata e pensavo di non essere "capace" di fare certe cose, ma il recente front-end che ho scritto mi ha dimostrato l'esatto contrario. E' questo qui ed è in continua evoluzione, anche perchè è legato al mio sito personale che contiene altri 4-5 cataloghi. Tutto in php, html5, css3 ed un po' di javascript per renderlo un più interattivo, quindi un sito web da consultare con qualsiasi browser. Ho anche aggiunto animazioni ed effetti piacevoli durante la consultazione, senza però esagerare.

Dicevo che è un progetto che nasce in questi giorni quindi ci vorrà parecchio tempo anche solo per vedere una maschera.
Già perchè ora mi sto concentrando sul database e sulla struttura del file system. Le pagine arriveranno dopo, con calma.

Le prime routine di importazione che ho scritto prevedono la generazione automatica dell'xml e la sua trasposizione in un db. Una tabella conterrà tutti i giochi della versione corrente, un'altra tabella conterrà lo storico con i campi che sono cambiati e i giochi che sono stati cancellati.
Le informazioni memorizzate sono tante e comunque mi salvo tutto ciò che il Mame conosce di un gioco, quindi dal numero di pulsanti alla dimensione dello schermo, dal numero/tipo dei supporti (hard disk, cdrom, ecc) al numero/tipo di input (joy, trackball, paddle), ecc. I filtri potranno essere direttamente fatti su qualsiasi dato.
Per aggiornare una versione devo procurarmi alcuni file (come i file .ini per le categorie), le immagini e poco altro, poi lanciare l'update ed attendere la fine. La procedura è pensata in modo da non consentire errori, quindi molto guidata e con un sacco di verifiche prima di scrivere sul db, ma soprattutto si può fermare in qualsiasi momento per farla ripartire in seguito.

Giusto per dare qualche numero, con le ultime 4 versioni del Mame ho più di 200MB di database ed ho usato tutti i trucchi possibili per comprimere e salvare solo il necessario.
La fase di importazione dura qualche ora proprio perchè il processo di scrittura cerca di sistemare ogni dato al meglio (es. se un gioco non cambia, i dati non vengono toccati ne storicizzati).
Inizialmente salvando tutto quanto senza preoccuparmi dello spazio arrivavo a 150-200MB a singola versione, quindi queste 4 avrebbero occupato quasi 1GB.

Unica nota dolente: non ho uno sito pubblico per poter ospitare qualcosa di così grande, quindi per il momento rimarrà solo sul mio pc di casa... <-ranting3-> <-pardon->

Ho già scritto troppo... cosa ne dite?
E' una malattia grave o hanno già scoperto la cura? <-ciao->



EDIT 18-feb-2015
Qui trovate il sito in sviluppo.

EDIT 12-set-2015
Il sito è finalmente online!

Riferimenti
- sito web: http://adb.arcadeitalia.net oppure http://adb.arcadeitalia.org
- mail: arcadedatabase@gmail.com (oppure usare la pagina contatti del sito)
- canale YouTube: http://www.youtube.com/c/ArcadeDatabase
- progetto VideoSnaps (forum): http://arcadeitalia.net/viewtopic.php?f=19&t=22415
- progetto VideoSnaps (Google Drive): https://drive.google.com/open?id=0B_hdh ... authuser=0
- progetto VideoSnaps (Mega): https://mega.nz/#F!rUkxxY7A!m3LEO-9TJIeWFvc6JCqHGA

Re: Progetto Arcade Database

Inviato: 09/01/2015, 22:53
da cyborg
Amico mio, di alcuni tuoi progetti e che hai una capoccia tanta, già ne abbiamo parlato e già te l'ho detto, ma qua sembra che stai proprio esagerando <-thumbup->
Premetto che almeno un terzo di quello che hai scritto per mè è aramaico, ma da come l'hai scritto sembra che sarà un qualcosa di spettacolare e quindi mi complimento per il tuo genio <-shake2->
Spero di vedere presto questo tuo nuovo progetto e di conseguenza realizzarsi il tuo sogno <-thumbup->
Ancora complimenti.
Orazio.

Re: Progetto Arcade Database

Inviato: 14/01/2015, 22:34
da motoschifo
Piccoli aggiornamenti, anche se il lavoro è decisamente lungo e tortuoso.
Ho creato tabelle per fare in modo di leggere gli xml del Mame (rigorosamente solo la versione ufficiale) e memorizzare ogni singolo bit di informazione.
In questo modo ho un database che cresce solo se ci sono variazioni, altrimenti niente.
Usando le ultime 4 versioni del Mame ad esempio ho ottenuto un database di 140MB, tra la 156 e la 157 sono stati memorizzati solo 30MB anzichè tutto l'xml completo.

I tempi sulle query sono fin troppo buoni ora, vedremo quando avrò in linea centinaia di versioni.
Tra l'altro le prime 50-60 dovrò inserirle a mano perchè non esiste un xml simile visto che è stato introdotto dopo... vabbè.

Le routine di importazione possono essere interrotte e sono transazionali, oltre che totalmente guidate e a prova di errore.
Come dati di import pensavo di gestire una trentina di tipologie differenti (es. xml principale, immagini ingame, title, ini multiplayer, ecc) così da permettermi di fare tutte queste cose in tranquillità e sicurezza.

Insomma qualcosa si sta muovendo e come progetto mi sta piacendo un sacco. E poi, ora che ho quasi concluso il sito per C64 ho almeno una manciata di ore a settimana a disposizione :rofl2:
(a proposito, quel sito spero di pubblicarlo tra un paio di settimane <-sbav-> ).

Re: Progetto Arcade Database

Inviato: 18/01/2015, 15:06
da motoschifo
Ho raccolto tutte le versioni del mame e del mess, dalla 0.1 alla 0.157, e conservato eseguibili, sorgenti, changelog in cartelle separate.
Poi ho creato la tabella arcade_emulator che conterrà l'elenco di tutti gli emulatori supportati, quindi tutte le versioni con data di uscita, numero rom, versione, ecc.
Purtroppo ho dovuto inserire i dati a manina perchè non esiste un modo di copia/incollare tali valori decentemente... sono tutti differenti e particolari (es. ci sono le versioni "0.XbXX", quelle "0.XX fixed", buchi tra una e l'altra, ecc.)
Al momento ci sono 225 record in questa tabella, tutte complete e con il link alla cartella di eseguibili/sorgenti/changelog.

Ho creato anche le 3 tabelle dati (+1 di backup per poter rifare un domani le importazioni se qualcosa dovesse andare storto) ognuna con circa 45 campi per le informazioni necessarie.
Questi dati sono legati alla tabella degli emulatori che ha un id univoci.

La procedura di importazione che avevo fatto di test va cambiata un pochino visti gli aggiustamenti introdotti, e fatta guidare dalla tabella emulatori più un'altra per lo stato di importazione (oltre ai giochi ci sono circa 30 tipologie diverse di file tra ini/ingame/title/manual/pcb/ecc.)
Non dovrebbe richiedermi molto tempo, sono comunque qualche migliaio di righe di codice visto che l'argomento è molto vasto :)

Infine ho inserito i dati per la prima versione di mame (0.1) e cioè 5 giochi. Le prima 50-60 versioni non hanno l'xml con tutti i dettagli, quindi per ciascun gioco ho messo a mano i valori di tutti i campi, interpretando ciò che ho trovato scritto nel file txt e nel sorgente della versione.

Ci vorrà parecchio tempo per mettere questi dati, ma dalla versione 60 in poi sarà per fortuna tutto automatico.

Già che c'ero, ho introdotto lo storico oltre alle info del gioco anche a tutti i file aggiuntivi. Non è che sia stato complicato, visto che la procedura è molto precisa mi sembrava giusto aggiungere questa piccola miglioria. Lo spazio occupato comunque è parecchio e qualche png di certo non stravolte la cosa.

Se avete idea di come ottenere la lista dei giochi delle prime versioni avvisatemi.
Ho contattato il team del Mame e ProgettoEmma ma fino ad ora nessuno ha risposto... speriamo lo facciano! :)

Se può tornarvi utile allego i dati che ho inserito fino ad ora.

Re: Progetto Arcade Database

Inviato: 19/01/2015, 7:36
da pucci
motoschifo ha scritto:Se avete idea di come ottenere la lista dei giochi delle prime versioni avvisatemi.
La prima versione che usai del MAME era la 0.27 nei primi giorni di settembre del 1997 (dopo aver letto un articolo su The Games Machine 100).

essendo maniaco di collezionismo ricordo che già quella volta cercavo le rom e le confrontavo con una lista generata dal MAME stesso (-listinfo?) e se non ricordo male MAME aveva anche un rudimentale sistema di verifica ROM (nome + CRC16?)

Re: Progetto Arcade Database

Inviato: 19/01/2015, 7:38
da pucci
Prova chiedere a Roman di ClrMame Pro. In quel periodo realizzo il primo programma di verifica ROM che funzionava ancora da linea di comando. Magari ha ancora i sorgenti o ricorda il formato con il quale leggeva i dati.

Re: Progetto Arcade Database

Inviato: 19/01/2015, 8:38
da dR.pRoDiGy
Confermo quanto scritto da Pucci: il formato xml è arrivato dopo. I vecchi(ssimi) mame usavano un formato lista più semplice, estraibile tramite l'opzione -listinfo . Se serve io ho un parser pronto anche per quello: nel caso fammi sapere..

Re: Progetto Arcade Database

Inviato: 19/01/2015, 20:44
da motoschifo
Avevo pensato di recuperare a ritroso usando catver.ini e quindi capire quando il gioco era stato aggiunto, poi parlando con AntoPisa ho scoperto che i dat che ha lui del Mame comprendono anche la primissima versione. Quindi direi che il problema della lista non c'è più, ma rimane quello delle informazioni dettagliate sul gioco.
Mi ero quasi rassegnato ad usare l'opzione -listinfo e per le primissime inserire i dati a manina, fortuna che non dovrò farlo :)

Da un paio di messaggi con AntoPisa mi è venuta un'altra idea: tracciare anche le modifiche dei giochi, ossia cambi di nome (le cancellazioni erano già previste).
Con i suoi renameset riesco a capire se un gioco ha cambiato la rom oppure no, ed aggiungendo un altro campo sul db posso ripercorrere l'intera storia di quel gioco.

Quindi il mio progetto per il momento è molto attivo anche se per fare alcune procedure sto impiegando un sacco di tempo (e codice). Ma voglio fare le cose per bene, senza fretta e nel modo migliore possibile. Inoltre sto tenendo tutto quanto per poter ripetere la procedura in ogni momento, dato che è un lavoro enorme non voglio doverlo rifare.
Per rimanere sulle informazioni dei giochi, ossia il dettaglio massimo dentro all'xml, dovrò scegliere se iniziare da campi vuoti oppure valorizzati con la prima versione disponibile (0.7x).
Nel primo caso ho un gioco (es. pacman) che inizialmente nasce senza nulla (numero pulsanti, dimensione schermo, rotazione display, controlli, ecc) ma che dalla 0.7x in poi avrà quei campi inseriti.
Nel secondo caso ho subito tutte le info ma sarebbero relativa alla 0.7x duplicate a ritroso, e non specifiche della versione.
Cosa mi consigliate? Meglio mettere tutto oppure lasciare vuoto?

Per ora ProgettoEmma e MameDev latitano... aspettiamo per vedere se hanno altre idee.

Re: Progetto Arcade Database

Inviato: 19/01/2015, 21:19
da motoschifo
Altra cosa: avete archivi Mame con snap/title/icons ed altro relativo a vecchie versioni?
Io avevo una 0.38 (credo) ed ho 106+149. Su progettosnaps ho recuperato 140-143 e 150-157.
Ma di tutto ciò che passa in mezzo non ho nulla perchè di volta in volta sovrascrivevo e cancellavo.

Nel caso fatemi sapere, mi interesserebbero quei file.

Re: Progetto Arcade Database

Inviato: 31/01/2015, 22:36
da motoschifo
Il lavoro continua...
Sono riuscito a trovare un metodo per archiviare alcuni file ini: catlist, genre e series.
Questi attributi vengono prima inseriti in una tabella e poi collegati al gioco stesso. Ho fatto in modo che si possa importare più volte senza per questo fare danni, ed oltretutto per aggiornare i dati ci mette meno di un secondo (faccio click, compare la message box che mi dice di aver finito...).
Tutti i raggruppamenti che non vengono più usati vengono marcati come "non visibili" e quindi non compariranno nei filtri di ricerca (almeno in quello di ricerca classica). Compariranno invece nella ricerca che tiene conto anche dello storico, ossia di tutte le versioni Mame dalla sua nascita ad oggi.

Se presente, viene caricata anche la traduzione in italiano ma questa la gestisco io a mano perchè non esiste un metodo sicuro al 100%. I file ini potrebbero non avere un ordine preciso e non posso basarmi sulla loro presenza. Se dovessero cambiare di posto verrebbe fuori un bel casino.
Il file adult.ini viene inglobato nella gestione a tag: ogni gioco può avere anche più tag e sono usati per raggruppare le rom in base a criteri dei più vari (es. i famosi "working/not working" ed i "not working/working").

Quindi mame.dat fino alla 0.70 e file ini sono a posto. Dalla 0.70 in avanti devo ancora sistemarlo ma il 90% è già scritto, solo che devo aggiungerci tutta la gestione errori e procedure guidate che mi garantiscono di non fare cavolate ad ogni import.
Tornando al database ho rivisto alcune tabelle per migliorare l'archiviazione: la tabella "corrente" (ossia l'ultima definizione conosciuta di tutti i giochi) contiene molti attributi in più rispetto a prima che servono esclusivamente per aiutare durante le ricerche. Ho aggiunto anche campi particolari come recensioni, indirizzi web (quanti se ne vuole, anche centinaia per lo stesso gioco), history.dat inglese e italiano, tipo di scroll dello schermo (che non va confuso con l'orientamento orizzontale/verticale), modalità di gioco con più giocatori (fino a 8 singoli e fino a 8 multipli) ed altri campi meno importanti.

Con l'occasione ho migliorato l'algoritmo per la storicizzazione (tabella "archivio") per occupare meno spazio possibile per cui memorizzo alcuni dati in maniera compressa (gz), scompattandola al momento del bisogno in automatico.
Inoltre ho preparato anche gli algoritmi per le ricerche fulltext che non tengono conto della punteggiatura. Li avevo già usati negli altri miei cataloghi, in pratica i termini "mspacman", "ms pac man", "ms. Pac-Man" otterranno tutti quanti tra le ricerce il gioco "Ms. Pac-Man".

Il tutto è pensato per poter gestire più piattaforme, perchè dopo il Mame mi piacerebbe fare la parte NeoGeo.

Scrivo questi papiri perchè così rimane una traccia di quello che sto facendo e soprattutto ripercorro mentalmente il lavoro, onde evitare di prendere cantonate.
Se avete idee questo è il posto giusto per segnalarle :)

La parte grafica ancora non l'ho ben chiara in testa ma la mia intenzione è fare qualcosa di davvero utile e rapido. Ad esempio pagina di ricerca rapida e pagina di ricerca completa con possibilità di filtrare a step, paginazioni, immagini selezionabili o a rotazione sul posto, 3-4 modalità di consultazione differenti ed ovviamente gestione liste personalizzate con export dati/lista nei più svariati formati, link di collegamento che collegano le varie rom affini, ecc.
Ma è presto parlarne ora, prima chiudo la parte più importante ossia quella che non si vede, poi mi diverto con i css... <-gamer->