L'approche% attacker% peut être étendue pour inclure des informations autres que les noms des objets:
- Le verbe peut être singulier ou pluriel. Cela dépend du sujet. "Vous attaquez X" (sujet singulier à la 2ème personne) vs "Extrakun attaque X" (sujet singulier à la 3ème personne) vs "Les gobelins attaquent X" (sujet pluriel à la 3ème personne). La plupart des verbes ont juste besoin d'un
-s
ajout, mais il y a quelques exceptions.
- Le nom peut être un nom propre ("Le gobelin attaque X") ou un nom commun (" Un gobelin attaque X"). Les noms communs commençant par un son de voyelle doivent utiliser "an" au lieu de "a". Il peut s'agir d'un nom commun mais n'ayant qu'une seule instance dans le contexte actuel (" Le gobelin attaque X").
- Le nom peut varier en nombre, de zéro ("Vous frappez pas de gobelins ") à un ("Vous frappez un gobelin ") à plusieurs ("Vous frappez trois gobelins "). De nombreux noms ont juste besoin d'un
-s
ou -es
ajoutés, mais il existe de nombreuses exceptions.
- Les sujets et les objets peuvent être simples (" Un gobelin ") ou composés (" Un gobelin et son frère ").
- Les noms communs au début de la phrase doivent être en majuscules, mais si le nom a un article ou s'il est composé, vous ne voulez mettre en majuscule que le premier mot. Les noms propres sont toujours en majuscule.
- La position de sujet ( « Elle a frappé le gobelin « ) et la position de l' objet ( » Le gobelin a frappé son ») utilisent différents pronoms.
- Les possessifs peuvent être générés en ajoutant
's
if singulier ("Une hache de gobelin "), '
if pluriel ("Deux axes de gobelins "), mais les pronoms ont leurs propres règles (" Votre hache").
Pour l'anglais, j'ai écrit Python une bibliothèque de génération de texte dérivée d'un MUD appelé JaysHouseMOO. N'hésitez pas à étudier ou copier le code . Il n'a pas une bonne bibliothèque de cas exceptionnels; vous devrez ajouter cela avec les mots utilisés dans votre jeu. Je crains que mon code porté ne soit pas largement testé. Il pourrait également avoir besoin de plus de cas ajoutés pour les jeux (il a été conçu pour une MUD sociale, pas une MUD de jeu).
Votre exemple serait écrit comme "%1I %1:(inflicts) a serious wound (%2n damage) on %3i"
. Les nombres %1
, %2
, %3
disent que ce qui objet doit être substitué; I
/ lui i
dire d'ajouter un article indirect ("a", "an") si nécessaire; n
lui indique d'afficher le nom sans articles; :(inflicts)
lui dit de conjuguer le verbe de cet objet.
Voici la sortie à montrer à l'attaquant, au défenseur et à tout le monde:
$ 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.')
Notez que si vous l'aviez donné, (1, 'point')
il aurait imprimé "1 point" au lieu de "1 point". C'est quelque chose qui me dérange dans le texte du jeu, donc je me suis assuré d'inclure une fonctionnalité pour le rendre facile à imprimer correctement.
Voici un autre exemple, avec des noms composés, et "un" contre "un":
>>> 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.")
Ces exemples sont en anglais et ne suivent que les noms masculins / féminins, les pronoms, les verbes / noms singuliers / pluriels et les noms propres / communs. Ce que vous devez suivre variera selon les langues et le type de texte dans votre jeu. En espagnol, il existe des pronoms formels et informels. Plusieurs langues ont des verbes masculins et féminins. Les pronoms japonais dépendent du statut du sujet par rapport à l'objet. Dans certaines langues, la conjugaison des verbes peut implicitement inclure le sujet. Déterminez tous les types de texte que vous souhaitez générer et les langues que vous souhaitez traduire, et cela vous dira ce dont vous avez besoin pour suivre dans vos objets de jeu. Lorsque vous créez le contenu, vous pouvez inclure les annotations nécessaires et les cas exceptionnels.