---
# System prepended metadata

title: 'NFTs for Character Progression Systems: A Playable Demo'

---

# NFTs for Character Progression Systems: A Playable Demo

In order to demonstrate how perfect RMRK is for character progression systems and to really sell the narrative, I propose the following mini-project to advertise RMRK and CypherMOD.

A mini single player game, web-based top down pixel based (Godot? Phaser?), fully guided by on-screen tutorials, taking the player from character instantiation to walking through a few rooms (each an NFT, so moving from room to room with a transaction), and earning experience, items, and skills throughout, each of which is a soulbound 2.0 NFT. The end result is a finished game, and an avatar which is more valuable than when it was created - demonstrating [ownership of experience](https://docs.rmrk.app/ownershipxp).

The game will have a small PvE element in the middle. This can be turn-based (fully on-chain enforced cheat-resistance and game state) or something more dynamic, maybe even both. 

## Room by Room and Gameplay Breakdown

This is a breakdown of the whole mini-game. It should take no more than 30 minutes to complete from start to finish, including any reading of tooltip text and interacting with the chain.

### Room 0: Character Creation

Explainer text:

*"Welcome, explorer! Here you will learn about NFT-based character progression systems: completely decentralized approaches to RPG game mechanics using NFTs that evolve right alongside you. We will introduce you to the concept of Soulbound 2.0 NFTs, owning your experience, and cross collection compatibility! Ready to dive in? Click Mint Character to start creating your avatar!"*

On clicking the button, the user chooses:

- name
- species (Chunky vs Human, both male in appearance for simplicity)
- hair style, hair color, skin color, facial hair style, face tattoo (markings). These are fixed parts - non transferable. 3 per species or so, just for demo purposes.
- a distribution of 10 points for Humans and 8 points for Chunkies between the following **stats**: _might_ (strength and health), _dexterity_ (acrobatics, speed, precision), _cognition_ (intelligence, wisdom, magic use).
- two out of 5 total skills: lockpicking, sneaking, trapping, crafting, persuasion.

Despite there not being a need for it, Humans and Chunkies should be separate collections to demonstrate cross-collection compatibility of NFTs. 

Once the selection is confirmed, an NFT is minted in the appropriate collection. The stats are minted as attributes/properties on the NFT. 

Skills are minted as non-transferable NFTs inside of the avatar's brain, which itself is a non-transferable NFT minted into the avatar.

The NFT brain has 1 slot which can equip the skills for Humans, and two slots for Chunkies.

After the minting is done, the user is asked to equip the skills into however many slots they have.

### Room 1: Orientation

![](https://i.imgur.com/cXW6K8E.png)

The user spawns in a 20x20 room.

The avatar is able to walk around seamlessly, no transaction needed. 
On each tile, the user can:

- interact with the object present there (tx needed after confirming interaction type)
- inspect to investigate the tile (tx needed)

The room contains:

- a torch on each wall
- a locked door on the far side
- a set of spikes on the ground with a skeleton inside them

Tutorial mode:

*"Welcome to the dungeon! Left-click on any tile to move there. Try this now - move towards one of the torches."*

User can move to the west position with the torch (1). User is prevented from moving to any other tile.

*"Good job! We'll need some light as we explore! Maybe we can take a torch? But it seems like it is attached to the wall. Why don't you take a better look by Inspecting? (click the interact/inspect button! - this will require an on-chain transaction)"*

This interaction is always 100% successful. It adds to the avatar's Quest Log NFT (non-transferable NFT like the brain) a non-transferable NFT called *"Insight: loose torch"* with the description *"This torch is loose. It can be taken."*

*"Nice work! Your inspection revealed a new Insight about the world! This Insight is stored in your Quest Log, which you open with `(Q)` or clicking on the Journal Icon. Do so now!"*

The user is expected to click the Journal Icon or press Q.

*"This is your Quest Log. It was minted during character creation and is itself a soulbound 2.0 NFT inside your avatar which is also an NFT. The log contains other non-transferable NFTs like Insights and Achievements. Move your cursor over these NFTs to learn more about them. When ready, close the Quest Log UI."*

The user can close the UI.

*"Good! To take the torch, we need knowledge of it being loose (Insight!). Click Interact. The interaction requires something. Drag and drop your insight about the torch being loose from the Quest Log UI into the requirement popup, then click Interact. This will require an on-chain transaction."*

The user cannot move and MUST follow these instructions. On transaction finalization, the wall's light source is removed. The option to Interact on the tile where the torch was is now gone.

*"Nice job! You now have a torch. Let's equip it. Open your Inventory by pressing (I) or clicking the bag icon!"*

The user can only open the Inventory UI.

*"This is your inventory. Your avatar has several slots - headwear, left hand, right hand, body. Drag the torch in your backpack to one of the hands and click Confirm. This will store this new loadout after you confirm a transaction, and you should see the ground light up around you."*

The user can do the operations and then only close the Inventory UI.

*"Now let's get out of here. Approach the door."*

The user can only walk to the tile with the door (2).

*"Interact with the door to open it and leave."*

The action fails. A new Insight is minted into the Brain: *Insight: Door Locked.* The description reads *"Room 1's door is locked and needs a key to be opened."*

*"Oh no! The door is locked (a new insight has been added into your brain indicating this new finding). Perhaps our unlucky colleague knew something more?"*

The only tile highlighted as one to which the user can move is the one with the spiketrap and skeleton. The user must move there (3). He is given no hint about doing Inspect. The user is expected to figure out Inspect on their own. The transaction is always successful.

*"Interesting! You found a key rummaging through the remains. Looks like our buddy here was also on his way out. Interact with the tile to take the key!"

The transaction is always successful.

The key NFT is minted into the user's bag.

The user can only open the backpack by pressing the bag icon or the letter I. Other controls are not available. Hovering over the key NFT reveals that its name is *"Item: Room 1 key"* and its description *"The key that opens room 1. Found on human remains impaled on a spike trap".*

The user can only close the UI. The user is expected to go back to the door and press Interact. This summons another Requirement popup. Two NFTs need to be dragged into it: the insight about the door being locked, and the key. On confirm, the door snaps open and a creaking sound is hear. The text reads:

*"Well done. By knowing the door needs a key (your Insight) and by having the key (an NFT item), you have unlocked your way out. When using some NFTs on others, sometimes the requirements are destroyed (like your Insight), while others stick around (the key is still with you)."*

The text continues.

*"To really exit the room, Interact with the tile again. The interaction now has two options: Close door, and Leave. You can close the door, but will have to open it again to leave. Or you can leave and go to the next room. You can also choose to further explore this room if you feel like it before leaving."*

The user can go into the bottom left corner of the room to perform an Inspect. If they do and they have more than 2 points in dexterity, they find some *Item: Leather String*, a transferable NFT described as *"Crafting material"*.

### Room 2: Exploration

The user spawns in a 20x20 room. The room transition results in a new non-transferable NFT being minted into the user's Quest Log: *"Completed Room 1"* with the description *"Room 1 completed - logging out and logging back in will automatically place the player into the highest available non-completed room."*

The room contains:

- a trader NPC
- a torch on each wall
- a chest with a key
- a loose rock in the wall (inspecting needed to find it, lockpicking tools behind it)
- a locked door on the far end (inspecting reveals the hinges to be weak)
- a skeleton in the corner (inspecting reveals ogre bones, very dense, usable as a weapon)
- a crafting table

Depending on the user's selection of skills and stats, they need to exit the room.

Full journey of possibilities is interactively documented here: TODO.

### Room 3: Fight

TODO: figure out PvE playstyle.

### Room 4: Character Upgrade, Skill Shop

TODO:

- level up because of previous room. Level-up happens by minting a new NFT brain with one extra skill slot. One skill credit is given, they can spend it in the skill shop to buy another skill.

### Room 5: Boss fight

PvE requiring the upgrade from the last room.

## Making a Framework

It would probably not be too hard to make this on its own as a siloed experience. The benefit of doing so would be faster launch, getting ahead of the narrative and not allowing other projects to steal it, and much needed hype within a bear market.

The other approach would be to build this as part of CypherMOD. Such an approach would validate the CM thesis and encourage investors, along with helping us build a good first prototype but would likely take much longer.

As such, my suggestion is to follow approach 1, launch a fake "Cyphermod-made" game, and then turn it into a frameworkable experience based on the learnings from the standalone thing. While developing the siloed version, we keep the frameworkable parts in mind. 

E.g. we design the levels not manually, but by allowing for a system of overlaid grid over an image, so that we can pre-map walkable vs nonwalkable areas programmatically etc.

Ideally, to deliver the CypherMOD prototype vision, there would be a plugin system where custom game experiences can be added into this game by means of a portal, and where once entered, the same character is moved into another game with a completely different play style. 

> Check [**Evoland 2**](https://store.steampowered.com/app/359310/Evoland_2/) for an example of different playstyles in the same game.
