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>
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?