TL;DR is in bold at the end!
As a preface I have been theory crafting and designing a blockchain RPG game for some time now and recently I have been researching and experimenting with Cardano.
At a super high level the idea is to use minted NFT as player owned (and therefore tradable) characters in the client. While many things such as the images, animations, interfaces, etc will be off-chain the idea of storing at least some attributes as meta data within the NFT itself is one of my primary goals. This would make the history and progression of developing your unique character verifiable, secure, etc, etc.
This is all well and good for randomly generated initial attributes such as class, attack, defense, etc during the transaction which creates the token. However I would ideally like to include experience as a 64-bit value within the token metadata fields. This would allow your “character level” to be calculated by a simple linear equation in the game.
In traditional RPG your character gains experience during normal play from slaying monsters, winning duels, completing quests, etc, etc. The problem I am faced with is that minUTxOValue was specifically designed to exclude any micro-transaction type system from storing such small amounts of data in the blockchain ledger.
If players are required to provide the minAda for acquiring experience on their character token of 1.448276 by my calculation that would make engaging in battles and game activities cost prohibitive. At least I can’t imagine many users wanting to spend roughly $2 USD per fight when much more elaborate games than a humble indie developer like myself can create charge on average $15 a month no matter how much you play!
So far my best idea is using experience as function of time such that storing a timestamp on the token could then be used to extrapolate age of the token and confer experience based upon elapsed time since the character’s “birth.” This removes any impetus for the user to actually play the game though as your token would “level up” automatically just due to the passing of time whether you played or not …
Note: My backup plan if it’s not feasible is simply generating a UUID and having literally everything else be off-chain so that only creating a new character, trading of characters, or deleting (burning) character tokens requires any transaction processing.
I am open to clever suggestions from anyone else out there considering blockchain games as an interesting twist on smart contract and NFT enabled dapp development for Cardano!