XML data files per creare una Civilità standard

L'angolo tutto esagonale in cui parlare delle cose che piacciono al buon Sid (non il bradipo).
Rispondi
whoward69
Fantasma
Fantasma
Messaggi: 6
Iscritto il: 2 agosto 2012, 16:41
XML data files per creare una Civilità standard

Messaggio da whoward69 »

Creare una nuova civiltà è uno dei primi desideri di ciascun modder in erba, probabilmente il motivo per cui molti siavvicinano al modding in Civ. Probabilmente, però, è anche una delle cose più complesse da realizzare perché molte parti teoricamente scollegate devono incastrarsi alla perfezione. Un singolo errore può causare il crash del gioco oppure portare a degli errori irreversibili che richiedono addirittura di cancellare tutto il lavoro fatto per poter ripristinare il corretto funzionamento del gioco.
Uno degli errori più comuni, ad esempio, è quello di fornire alla civiltà soltanto due dei tre tratti univoci (unità, edificio e tratto caratteristico) causando puntualmente un crash al caricamento della mod. Un altro esempio è quello "introdotto" da G&K, un ennesimo crash inevitabile dovuto alla mancanza dei nomi in codice per le spie. In questo caso la mod può funzionare senza problemi (se scritto bene almeno per il resto, ovviamente) fino al Rinascimento, epoca in cui si ottiene la prima spia.

Quando si comincia a creare delle mod, chiedendo in giro dei chiarimenti, si riceve spesso la fantastica risposta "Scarica una mod e usala come come template". Sì, simpatici... Ma quale scaricare? Ovviamente una di quelle già presenti e funzionanti sulla nostra copia del gioco, meglio se una di quelle originali di FIraxis, sono certamente funzionanti. Ma spesso le informazioni che servono non sono facilmente distinguibili per civiltà, non rispecchiano neppure lo standard di Firaxislo meglio ancora sono inglobate in un unico grande file; Firaxis stessa ha utilizzato un formato (ovviamente) differente per il suo set di civiltà e per questo non è facile capire quali sono le relazioni tra le tabelle .sql ed i riferimenti agli altri tag xml. Insomma, spesso i file che ci propinano o suggeriscono non sono affatto utili a chiarici le idee ma piuttosto aiutano a creare ulteriore confusione.

Allegato a questo post trovate il file zip che ho creato per risolvere questo problema (sperando di essere di aiuto). All'interno troverete delle sottocartelle con una chiara suddivisione per civiltà, e per ognuna di queste sei file Civilization.xml, Leader.xml, Trait.xml, Units.xml, Buildings.xml e Improvements.xml.
  • Civilization.xml - La entry principale per la tabella <Civilizations> e tutte le entry per le tabelle secondarie relative (esempio Civilization_CityNames, Civilization_FreeTechs, Civilization_FreeBuildingClasses, ecc.), più le entry per le tabelle PlayerColors e Colors e tutte le stringhe di testo associate.
  • Leader.xml - La entry principale per la tabella <Leaders>, quelle per le secondarie (Leader_MajorCivApproachBiases, Leader_Flavors, ecc.) e i relativi campi testo.
  • Trait.xml - La entry principale per la tabella <Traits>, le entry per le tabelle relative (Trait_YieldChanges, Trait_FreePromotions, ecc.) e le stringhe di testo.
  • Units.xml - La entry principale per la tabella <Units>, le entry per le tabelle secondarie (Unit_FreePromotions, Unit_Flavors, ecc.) e le relative stringhe di testo. Se una civlità ha due unità peculiari appaiono una di seguito all'altra nel file, all'interno del metatag principale.
  • Buildings.xml - La entry principale per la tabella <Buildings> e per le associate (Building_ClassesNeededInCity, Building_Flavors, ecc.) e i campi testo (questo file è presente soltanto per quelle civiltà che hanno anche una UB).
  • Improvements.xml - La entry principale per la tabella <Improvements> e per le associate (Improvement_Yields, Improvement_ValidFeatures, ecc.) etc) e i campi testo (questo file è presente soltanto per quelle civiltà che hanno un UI).
ATTENZIONE:
  • Se le tabelle secondarie non sono utilizzate da una civiltà ho comunque inserito un segnaposto.
  • Ovviamente le stringhe sono soltanto quelle della "versione base" en_US, ma per alcune lingue ho inserito dei segnaposto. Ovviamente basta curiosare trai file di Firaxis per scoprire tutte le lingue supportate e le tag.
  • Negli zip non ci sono artwork.
Civilizations (G&K) Template
Civilizations (BNW) Template
Units Template
Buildings Template
Improvements Template
Ultima modifica di giupmat il 1 dicembre 2014, 20:39, modificato 1 volta in totale.
Motivazione: Corretti i link, come da PM. Grazie della segnalazione.
Avatar utente
giupmat
Fondatore
Fondatore
Messaggi: 1482
Iscritto il: 5 maggio 2008, 12:10
GFace: giupmat
Origin: giupmat
steam: giupmat
Supporto a Battlefield: supportato
Supporto a War Thunder: Supportato
Località: Fushe Pass
Re: XML data files per creare una Civilità standard

Messaggio da giupmat »

Uh, che bello! Una guida come si deve!
Ottimo lavoro, sarà sicuramente utile se deciderò di mettermi sotto con lo studio del modding. Grazie.
Immagine
whoward69
Fantasma
Fantasma
Messaggi: 6
Iscritto il: 2 agosto 2012, 16:41
Re: XML data files per creare una Civilità standard

Messaggio da whoward69 »

Ti divertirà sicuramente, giupmat. E' una cosa molto stimolante.
whoward69
Fantasma
Fantasma
Messaggi: 6
Iscritto il: 2 agosto 2012, 16:41
Re: XML data files per creare una Civilità standard

Messaggio da whoward69 »

Ok, continuiamo: c'è ancora parecchio lavoro da fare prima di arrivare in fondo.
Supponiamo di voler creare una nuova civiltà usando uno dei template.
  • Civilità: Gallesi - basata sui Celti
  • Leader: Owain Glyndwr - su Budicca
  • Tratto caratteristico: Land of our Fathers [Terra dei nostri padri] - con un bonus sulle colline, simile al tratto della "Grande strada andina" degli Inca
  • Unità unica: Arciere gallese (rimpiazza l'arciere) - basato sull'arciere babilonese
  • Edificio unico: Eisteddfod (rimpiazza l'anfiteatro) - basato sul Teatro gaelico
NOTA IMPORTANTE: Ricordate che ogni civiltà DEVE AVERE almeno DUE ELEMENTI UNIVOCI (tra unità, edificio e improvement) altrimenti il gioco andrà in crash alla schermata di caricamento.

Utilizzando ModBuddy (ttol che trovate facilmente tra gli strunenti di Steam) create una nuova mod e chiamatela "Civilization - Galles". Aggiungete quindi una sottocartella "XML" come spiegato dalla utile guida al modding di Kael (qui) e poi aggiungete:
  • i file Civilization.xml, Leader.xml e Buildings.xml dal template Celts
  • il file Trait.xml dal template Inca e
  • dalla cartella Babylon il file Units.xml
Per ciascun .xml aggiungete l'azione OnModActivated->UpdateDatabase. In questo modo date il comando di ricaricare le tabelle SQL al gioco. Senza questa opzione, come spiegato da Kael non verranno caricate le novità scritte da noi.

Ora aggiorniamo i campi di tutti i file (con l'opzione di case sensitive, eventualmente fate due sostituzioni separate) e sostituite:
  • "CELTS" con "WELSH" (nel file Civilization.xml)
  • "LEADER_BOUDICCA" con "LEADER_GLYNDWR" (dovrebbe essere nei file Civilization.xml e Leader.xml)
  • "LEADERS_BOUDICCA" con "LEADERS_GLYNDWR" (in Leader.xml)
  • "TRAIT_FAITH_FROM_NATURE" con "TRAIT_LAND_OF_OUR_FATHERS" (in Leader.xml)
  • "TRAIT_GREAT_ANDEAN_ROAD" con "TRAIT_LAND_OF_OUR_FATHERS" (in Trait.xml)
  • "CELT_PICTISH_WARRIOR" con "WELSH_BOWMAN" (in Civilization.xml)
  • "BABYLON_BOWMAN" con "WELSH_BOWMAN" (in Units.xml)
  • "BABYLONIAN_BOWMAN" con "WELSH_BOWMAN", ma NON rimpiazzate la entry <UnitArtInfo> (altriumenti non va più il gioco quando costruite) (ovviamente solo in Units.xml)
  • "CEILIDH_HALL" con "EISTEDDFOD" (dovrebbe essere in Civilization.xml e Buildings.xml)
Avatar utente
giupmat
Fondatore
Fondatore
Messaggi: 1482
Iscritto il: 5 maggio 2008, 12:10
GFace: giupmat
Origin: giupmat
steam: giupmat
Supporto a Battlefield: supportato
Supporto a War Thunder: Supportato
Località: Fushe Pass
Re: XML data files per creare una Civilità standard

Messaggio da giupmat »

Nel primo post avevi indicato come uno degli errori più frequenti quello di fornire ad una civiltà soltanto due delle tre caratteristiche uniche. Ma poi qui segnali che bastano due elementi. Cosa mi sono perso?
whoward69 ha scritto:[...] Uno degli errori più comuni, ad esempio, è quello di fornire alla civiltà soltanto due dei tre tratti univoci (unità, edificio e tratto caratteristico) causando puntualmente un crash al caricamento della mod. [...]
Immagine
whoward69
Fantasma
Fantasma
Messaggi: 6
Iscritto il: 2 agosto 2012, 16:41
Re: XML data files per creare una Civilità standard

Messaggio da whoward69 »

Nei due post parlo di elementi differenti, giupmat. Ti sei perso la differenza tra improvement e tratto caratteristico. Più attento, alla prossima.
L'errore comune è quello di non avere almeno tre elementi. Nell'altro post si parla di improvement, non di tratto caratteristico. Bisogna avere almeno due tra unità, edificio e improvement.
whoward69
Fantasma
Fantasma
Messaggi: 6
Iscritto il: 2 agosto 2012, 16:41
Re: XML data files per creare una Civilità standard

Messaggio da whoward69 »

Continuiamo le nostre modifiche....

In Civilization.xml abbiamo bisogno di cambiare:
  • Civilization_UnitClassOverrides per l'arciere gallese in UNITCLASS_ARCHER
  • Civilization_BuildingClassOverrides per l'Eisteddfod in BUILDINGCLASS_AMPHITHEATER
  • Civilization_Start_Region_Priority in REGION_HILLS
  • Cambiamo poi il nome della prima città (la capitale) in Machynlleth
  • Aggiorniamo COLOR_PLAYER_WELSH_ICON in (RGB) 0.996, 0.0, 0.0 (rosso chiaro) e
  • COLOR_PLAYER_WELSH_BACKGROUND in (RGB) 0.0, 0.427, 0.0 (verde scuro)
Buildate la mod e fatela partire nel gioco. :grinning:
whoward69
Fantasma
Fantasma
Messaggi: 6
Iscritto il: 2 agosto 2012, 16:41
Re: XML data files per creare una Civilità standard

Messaggio da whoward69 »

Googlate un po' per abilitare il logging, per eventuale debug. Tendenzialmente non servirà se apportate le modifiche a piccoli passi e verificate spesso le funzionalità della mod. I due file da controllare sono database.log e xml.log.

Quando siete in gioco controllate tutte le funzionalità connesse alla mod che avete creato (è utile soprattutto in fase di costruzione, quando inserirete una modifica per volta).
  • Lanciate la partita con la nuova civiltà
  • Controllate la Civilopedia, devono essere presenti e corrette tutte le entry che avete inserito
  • Controllate i colori e le icone, di unità e confini
  • Fondate la capitale, controllate il nome e
  • Controllate il bonus al movimento delle unità (quello delle colline, ricordate?)
Ok. Dovreste aver completato una verifica esaustiva delle funzionalità introdotte dalla vostra prima mod. Siete quasi cotti a puntino.
Ovviamente creare una nuova civiltà richiede molto lavoro, non è una cosa che si fa a cuor leggero, ma ricordatevi che perlomeno deve essere funzionante! :grinning:

Ricordate il consiglio: aggiungete le nuove funzionalità passo per passo (una per volta e non un'intera mod a dry run) perchè questo è la via più semplice e veloce per controllare la bontà del codice e fare trouble shootin.
Prima di concludere vi lascio con qualche altro task. La nuova civiltà che abbiamo creato ha bisogno di essere completata, giusto?
Avete bisogno di lavorare ancora un po'
  • Scrivete un bel testo per la cosiddetta DawnOfMan (la schermata che appare all'inizio della partita) e rimuovete il riferimento al file audio (almeno che non abbiate un compositore nel cassetto)
  • Configurate l'appropriato mood del leader giocando con i valori del suo .xml
  • Completate il tratto caratteristico
  • Completate le entry della Civilopedia per ciascuna delle informazioni aggiuntive (unità, edifici e quanaltro)
  • Completate una lista di nomi per le città (Firaxis ne aggiunge almeno 80 per ciascuna civiltà, di solito i modders non stanno mai sotto 35)
  • Completate una lista di nomi per le spie (sforzate la fantasia, ne serivranno non meno di 5)
  • Ricontrollate valori e opzioni per unità, edifici ed altre amenità
  • Create un cosiddetto icon atlas (un compendio delle icone) per Civiltà (256, 128, 80, 64, 45, 32), Civilization Alpha (128, 64, 48, 32, 24, 16), Leader (256, 128, 64), Edifici (256, 128, 64, 45), Improvements (256, 64, 45), unità (256, 128, 80, 64, 45) e "bandiere" per le unità (32)
  • Create una Leader Scene in 2D (1600x900), una immagine per il DoM (1024x768) e una mappa storica (360x412)
  • Create i modelli 3D per le eventuali unità e improvements che avete creato ...e le animazioni, ovviamente!
  • Create le icone SV per improvements (128) e unità (le "banidere" - 128)
  • Create un set di risposte per la schermata della diplomazia (solo nel caso vogliate che la civiltà sia usata anche dalla IA)
  • Infine fate tutto quello che è necessario ed ho dimenticato di scrivere qui! :fearful: :smile:
Avatar utente
giupmat
Fondatore
Fondatore
Messaggi: 1482
Iscritto il: 5 maggio 2008, 12:10
GFace: giupmat
Origin: giupmat
steam: giupmat
Supporto a Battlefield: supportato
Supporto a War Thunder: Supportato
Località: Fushe Pass
Re: XML data files per creare una Civilità standard

Messaggio da giupmat »

Quindi bisogna avere due tra unità, edificio e improvement e un tratto caratteristico?! Giusto!?
Immagine
Avatar utente
giupmat
Fondatore
Fondatore
Messaggi: 1482
Iscritto il: 5 maggio 2008, 12:10
GFace: giupmat
Origin: giupmat
steam: giupmat
Supporto a Battlefield: supportato
Supporto a War Thunder: Supportato
Località: Fushe Pass
Re: XML data files per creare una Civilità standard

Messaggio da giupmat »

Come volevasi dimostrare sono entrato in clima mod. C'è voluto un po' di tempo, ma ci sono riuscito...
Immagine

Rispondi