L'approccio% attacker% può essere esteso per includere alcune informazioni diverse dai soli nomi degli oggetti:
- Il verbo può essere singolare o plurale. Questo dipende dall'argomento. " Attacchi X" (soggetto singolare in 2a persona) contro " Attacchi di Extrakun X" (soggetto singolare in 3a persona) contro "I goblin attaccano X" (soggetto plurale in 3a persona). La maggior parte dei verbi necessita solo di
-s
un'aggiunta, ma ci sono alcune eccezioni.
- Il sostantivo può essere un nome proprio ("Il Goblin attacca X") o un nome comune (" Un Goblin attacca X"). I nomi comuni che iniziano con un suono di vocale dovrebbero usare "an" anziché "a". Può essere un nome comune ma con una sola istanza nel contesto attuale (" Il goblin attacca X").
- Il nome può variare in numero, da zero ("Colpisci nessun goblin ") a uno ("Colpisci un goblin ") a molti ("Colpisci tre goblin "). Molti nomi hanno solo bisogno di
-s
o -es
aggiunti, ma ci sono molte eccezioni.
- I soggetti e gli oggetti possono essere semplici (" Un goblin ") o composti (" Un goblin e suo fratello ").
- I nomi comuni all'inizio della frase devono essere scritti in maiuscolo, ma se il nome ha un articolo o se è composto, si desidera solo scrivere in maiuscolo la prima parola. I nomi propri sono sempre in maiuscolo.
- La posizione del soggetto ( " Lei ha colpito il goblin ') e la posizione dell'oggetto (' Il folletto ha colpito il suo ") utilizzano diversi pronomi.
- I possessivi possono essere generati aggiungendo
's
se singolare (" Ascia di un goblin "), '
se plurale (" Asce di due goblin "), ma i pronomi hanno le loro regole ("La tua ascia").
Per l'inglese, ho scritto a Python una libreria di generazione di testi derivata da un MUD chiamato JaysHouseMOO. Sentiti libero di studiare o copiare il codice . Non ha una buona biblioteca di casi eccezionali; dovrai aggiungerlo con le parole usate nel tuo gioco. Temo che il mio codice trasferito non sia stato ampiamente testato. Potrebbe anche essere necessario aggiungere più casi per i giochi (è stato progettato per un MUD sociale, non per un MUD di gioco).
Il tuo esempio sarebbe scritto come "%1I %1:(inflicts) a serious wound (%2n damage) on %3i"
. I numeri %1
, %2
, %3
dicono che quale oggetto deve essere sostituito; I
/ i
digli di aggiungere un articolo indiretto ("a", "an") se necessario; n
gli dice di mostrare il nome senza articoli; :(inflicts)
gli dice di coniugare il verbo per quell'oggetto.
Ecco l'output da mostrare all'attaccante, al difensore e a tutti gli altri:
$ python
>>> import msg
>>> m = "%1I %1:(inflicts) a serious wound (%2n damage) on %3i."
>>> attacker = msg.GenderedObject('Amit', 'm', 'proper')
>>> defender = msg.GenderedObject('goblin', 'm', 'unique')
>>> points = (12, 'point')
>>> msg.Msg().sub_parties({1: attacker, 2: points, 3: defender},
m, [attacker, defender])
(['You inflict a serious wound (12 points damage) on the goblin.',
'Amit inflicts a serious wound (12 points damage) on you.'],
'Amit inflicts a serious wound (12 points damage) on the goblin.')
Nota se lo avessi dato (1, 'point')
avrebbe stampato "1 punto" invece di "1 punti". È qualcosa che mi infastidisce nel testo del gioco, quindi mi sono assicurato di includere una funzione per semplificare la stampa in modo corretto.
Ecco un altro esempio, con i nomi composti e "a" vs. "an":
>>> m = "%1I %1:(hits) %2'n %2'(head)."
>>> a1 = msg.GenderedObject('goblin', 'm', 'normal')
>>> a2 = msg.GenderedObject('orc', 'm', 'normal')
>>> d1 = msg.GenderedObject('Amit', 'm', 'proper')
>>> d2 = msg.GenderedObject('Extrakun', 'm', 'proper')
>>> msg.Msg().sub_parties({1: [a1, a2], 2: [d1, d2]}, m, [d1, d2])
(["A goblin and an orc hit your and Extrakun's heads.",
"A goblin and an orc hit Amit's and your heads."],
"A goblin and an orc hit Amit's and Extrakun's heads.")
Questi esempi sono in inglese e tracciano solo maschio / femmina, pronomi, verbi / sostantivi singolari / plurali e nomi propri / comuni. Ciò che devi monitorare varierà in base alle lingue e al tipo di testo nel tuo gioco. In spagnolo ci sono pronomi formali e informali. Diverse lingue hanno forme maschili e femminili di verbi. I pronomi giapponesi dipendono dallo stato del soggetto rispetto all'oggetto. In alcune lingue la coniugazione del verbo può implicitamente includere l'argomento. Determina tutti i tipi di testo che vuoi generare e le lingue in cui vuoi tradurre, e questo ti dirà cosa devi tracciare nei tuoi oggetti di gioco. Quando si crea il contenuto, è possibile includere le annotazioni necessarie e casi eccezionali.