El enfoque% atacante% se puede ampliar para incluir información que no sea solo los nombres de los objetos:
- El verbo puede ser singular o plural. Esto depende del tema. "Usted ataca X" (singular segunda persona sujeta) vs. "Extrakun ataques X" (singular tercera persona sujeta) frente a "Los duendes atacan X" (plural tercera persona sujeta). La mayoría de los verbos solo necesitan un
-s
agregado, pero hay algunas excepciones.
- El sustantivo puede ser un nombre propio (" Goblin ataca X") o un sustantivo común (" Un duende ataca X"). Los sustantivos comunes que comienzan con un sonido vocal deben usar "an" en lugar de "a". Puede ser un nombre común pero tener solo una instancia en el contexto actual (" El duende ataca X").
- El nombre puede variar en número, desde cero ("No golpeas a los duendes ") a uno ("Golpea a un duende ") a muchos ("Golpea a tres duendes "). Muchos sustantivos solo necesitan un
-s
o -es
agregado, pero hay muchas excepciones.
- Los sujetos y los objetos pueden ser simples (" Un duende ") o compuestos (" Un duende y su hermano ").
- Los sustantivos comunes al comienzo de la oración deben escribirse en mayúscula, pero si el sustantivo tiene un artículo o si es compuesto, solo desea poner en mayúscula la primera palabra. Los nombres propios siempre están en mayúscula.
- La posición del sujeto ( " Ella golpeó el duende ') y la posición del objeto (' El duende golpeó su ") utiliza diferentes pronombres.
- Los posesivos pueden generarse agregando
's
if singular (" Axe goblin's axe"), '
if plural ("Two goblins ' axes"), pero los pronombres tienen sus propias reglas (" Your ax").
Para inglés, escribí Python una biblioteca de generación de texto derivada de un MUD llamado JaysHouseMOO. Siéntase libre de estudiar o copiar el código . No tiene una buena biblioteca de casos excepcionales; tendrás que agregar eso con las palabras usadas en tu juego. Me temo que mi código portado no se ha probado exhaustivamente. También podría necesitar más casos agregados para juegos (fue diseñado para un MUD social, no para un MUD de juegos).
Su ejemplo se escribiría como "%1I %1:(inflicts) a serious wound (%2n damage) on %3i"
. Los números %1
, %2
,%3
dicen que el objeto que ha de ser sustituido; I
/ i
dígale que agregue un artículo indirecto ("a", "an") si es necesario; n
le dice que muestre el sustantivo sin artículos; :(inflicts)
le dice que conjugue el verbo para ese objeto.
Aquí está la salida para mostrarle al atacante, al defensor y a todos los demás:
$ 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.')
Tenga en cuenta que si lo hubiera dado, (1, 'point')
habría impreso "1 punto" en lugar de "1 punto". Eso es algo que me molesta en el texto del juego, así que me aseguré de incluir una función para facilitar la impresión correcta.
Aquí hay otro ejemplo, con sustantivos compuestos, y "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.")
Estos ejemplos están en inglés y solo rastrean masculinos / femeninos, pronombres, verbos / sustantivos singulares / plurales y sustantivos propios / comunes. Lo que necesitas rastrear variará según los idiomas y el tipo de texto en tu juego. En español hay pronombres formales e informales. Varios idiomas tienen formas de verbos masculinos y femeninos. Los pronombres japoneses dependen del estado del sujeto en relación con el objeto. En algunos idiomas, la conjugación verbal puede incluir implícitamente al sujeto. Determine todos los tipos de texto que desea generar y los idiomas a los que desea traducir, y eso le dirá lo que necesita rastrear en los objetos de su juego. Cuando crea el contenido, puede incluir las anotaciones necesarias y casos excepcionales.