In primo luogo, dovresti riflettere su quale forma hai finalmente bisogno delle carte / oggetti business nel tuo programma per fare qualcosa di significativo con esso. Da quello che hai scritto, suppongo che se tu possiedi tutti quegli oggetti sotto forma di codice / oggetti Javascript, puoi effettivamente mischiare o distribuire le carte così come eseguire il codice quando un giocatore decide di usare una delle sue carte. Nota, per questi casi d'uso, non hai bisogno di alcuna gerarchia , la gerarchia è qualcosa che ti serve solo per mantenere i tipi di carte e le loro "regole aziendali".
Se non hai un team completo composto da cinque a dieci persone che implementano (e gestiscono) il codice per questi 3000 oggetti, hai bisogno sicuramente di un approccio dichiarativo per descrivere / implementare la maggior parte di essi. E sono abbastanza sicuro in 3000 oggetti, ci saranno tutti i tipi di ripetizioni / similitudini nel comportamento. Ad esempio, posso immaginare il tuo esempio
"when you summon minion deal 1dmg to random enemy"
potrebbe verificarsi spesso nel modulo
"when you summon <X> deal <Y> to enemies of type <Z>"
Quindi potresti provare a farne uso e creare un oggetto generatore , basato su alcuni input tabulari e alcune regole, e provare se puoi generare la maggior parte degli oggetti, incluso il codice Javascript per il comportamento, basato su modelli di codice con segnaposti. Ovviamente, ci saranno alcuni oggetti con regole troppo complesse per il tuo generatore, quindi dovrai implementarli manualmente, ma dovresti mirare che si tratti solo di una piccola parte dell'intero insieme di oggetti.
Quindi ciò che è necessario salvare è
- l'input tabulare per il tuo generatore
- l'implementazione per gli oggetti (si spera pochi) che non possono essere generati
I dati di input per il tuo generatore potrebbero essere memorizzati in un foglio di calcolo, testo "simile a DSL", file XML o JSON o in un database (leggero), a seconda di cosa ti senti più a tuo agio. Se c'è una sola persona alla volta che mantiene le regole, probabilmente farei un foglio di calcolo, per molte persone probabilmente proverei un database. In entrambi i casi potrebbe essere necessario fornire "stringhe di template" o campi con frammenti di codice nella tabella. Chiamalo "generatore DSL", se vuoi. 3000 righe in un foglio di calcolo sono abbastanza gestibili da una sola persona, soprattutto quando è possibile utilizzare le funzionalità di filtro e ordinamento. "nome", "colore", "rarità", "espansione", "tipo di nemico" o "tipo di regola aziendale" - con un programma di fogli di calcolo è possibile filtrare o ordinare le carte "ad hoc" in base a questi attributi, senza avere la necessità di investire troppo in anticipo il pensiero nelle gerarchie di cui potresti aver bisogno.
I restanti oggetti "non generabili" potrebbero essere implementati in normali file di testo, direttamente in Javascript. Oppure, è possibile generare anche quegli oggetti, ma fornire un "gancio" in cui è possibile aggiungere codice scritto manualmente. La tecnica per organizzare questo codice aggiuntivo (un file per tutti, un file per oggetto, qualunque cosa) dipende in gran parte da quanti di questi saranno finalmente disponibili.