I'm designing a CCG/TCG game (with the Kotlin language), and I am looking for advice regarding the text of the cards.
First of all, here is an example of one card, defined in XML:
<card name="Sample Card"
type="event"
image="tex-event"
metalCost="1"
energyCost="1">
<text>
Whenever you destroy a creature, you will gain 3 energy.
Your stronghold does not produce energy.
</text>
<traits>
<trait name="ScavengeResOnDestroy" type="energy" amount="3"/>
<trait name="ResFlux" target="self"/>
</traits>
</card>
ScavengeResOnDestroy
, and ResFlux
are direct mappings to class names.
Scavenge refers to the first line in the text, and ResFlux to the second.
Before I go on and design a whole lot of cards this way (then again maybe this issue would become a lot clearer AFTER I would design some more cards..) Should I attempt to tie/"hard"-code the text descriptions into the Trait-classes?
The thing is, I find it quite hard problem to "generate" the text for a Trait.. For example ScavengeResOnDestroy could have several targets:
- Self (Whenever you destroy a creature...)
- Opponent (Whenever an opponent destroys a creature...)
- Both (Whenever a player destroys a creature...)
And to complicate things even further, I could very well see a possibility to modify ScavengeResOnDestroy, like so:
- Whenever you destroy a creature you do not control..
- Whenever an opponent destroys any creature..."
Now I haven't done much research on the topic yet... but I guess I'd need to build some kind of "sentence generator" (I don't know the correct term)?
Do you think I should stick with simply defining the text for each card, as in the example, or possibly, under the <trait>
? And perhaps generate the text only for the simplest traits? Something else?