Protocol v1

Experimental protocol idea. Read everything and the warning before inscribing.

Syntax details

  • All inscriptions must be valid JSON5

  • Game and avatar references are Inscription IDs. Not inscription numbers!

  • Supplies of players and loot are limited. Valid inscriptions are counted by inscription number to determine which one was inscribed first.

  • JSON keys must match exactly: Case sensitive. No spaces. Exact match!

  • JSON values (class and loot names) must match: Case insensitive. No spaces.

Boot new game

OG games define players and loot within a "game universe". OG assets are meant to be consumed by other onchain or offchain game designs. Take care on this step. Once the game is created it can’t be altered. Make sure to check all the numbers to ensure your players have enough loot. Also validate your JSON5.

Example for the first OG game, Wizords:

{
"p": "og",
"v": "1",
"op": "boot",
"name": "Wizords",
"avatar": "7079d8c3a090e8ddea26377f6fc6b8dcc5914579b5528e18eae267fbfbc0b64ai0",
"players": [
		[ "wizords", "10000" ],
		[ "elves", "10000" ],
		[ "humans", "10000" ],
		[ "orcs", "10000" ],
		[ "wraiths", "10000" ],
		[ "frogs", "10000" ],
	],
"loot": [
		[ "eyes", "white", "10", "100" ],
		[ "eyes", "onyx", "9", "200" ],
		[ "eyes", "orange", "8", "300" ],
		[ "eyes", "ruby", "7", "500" ],
		[ "eyes", "orchid", "6", "1000" ],
		[ "eyes", "amber", "5", "2000" ],
		[ "eyes", "opal", "4", "3000" ],
		[ "eyes", "azure", "3", "6000" ],
		[ "eyes", "jade", "2", "10000" ],
		[ "eyes", "ivory", "1", "20000" ],
		[ "headgear", "medusa", "10", "100" ],
		[ "headgear", "raven", "9", "200" ],
		[ "headgear", "yeti", "8", "300" ],
		[ "headgear", "werewolf", "7", "500" ],
		[ "headgear", "dragon", "6", "1000" ],
		[ "headgear", "ibex", "5", "2000" ],
		[ "headgear", "tyger", "4", "3000" ],
		[ "headgear", "griffin", "3", "6000" ],
		[ "headgear", "auroch", "2", "10000" ],
		[ "headgear", "stag", "1", "20000" ],
		[ "weapon", "bloodscope", "10", "100" ],
		[ "weapon", "biowrath", "9", "200" ],
		[ "weapon", "nightblade", "8", "300" ],
		[ "weapon", "warcode", "7", "500" ],
		[ "weapon", "hellmouth", "6", "1000" ],
		[ "weapon", "deadbolt", "5", "2000" ],
		[ "weapon", "demonflame", "4", "3000" ],
		[ "weapon", "soulreaver", "3", "6000" ],
		[ "weapon", "voidblade", "2", "10000" ],
		[ "weapon", "boneshard", "1", "20000" ],
		[ "armor", "gold", "10", "100" ],
		[ "armor", "darkmatter", "9", "200" ],
		[ "armor", "lightborne", "8", "300" ],
		[ "armor", "cybernetic", "7", "500" ],
		[ "armor", "demonskin", "6", "1000" ],
		[ "armor", "titanium", "5", "2000" ],
		[ "armor", "kevlar", "4", "3000" ],
		[ "armor", "leather", "3", "6000" ],
		[ "armor", "bone", "2", "10000" ],
		[ "armor", "fur", "1", "20000" ],
		[ "orb", "love", "10", "100" ],
		[ "orb", "oblivion", "9", "200" ],
		[ "orb", "healing", "8", "300" ],
		[ "orb", "necromancy", "7", "500" ],
		[ "orb", "lust", "6", "1000" ],
		[ "orb", "teleportation", "5", "2000" ],
		[ "orb", "invisibility", "4", "3000" ],
		[ "orb", "telekinesis", "3", "6000" ],
		[ "orb", "pyrokinesis", "2", "10000" ],
		[ "orb", "poison", "1", "20000" ],
	],
}

Breakdown of the commands:

Both players and loot are optional. Create a game with both, or just loot, or just players.

Breakdown of the players array:

Breakdown of the loot array:

About protocol versioning

OG versioning applies to game boot inscriptions. Each game and all it's operations will "run" on this version. The intention here is to maintain compatibility as our team, or other teams, try to extend the protocol. And avoid messiness and confusion (BRC, GRC, ORC...). Try to follow semantic versioning: If you break backwards compatibility then please increment the first digit. This approach is experimental and may simply not work. 🤷‍♂️

Version defines the version of the OG protocol you're inscribing with, not a version of your game, meaning boot commands are not upgradeable without declaring a new game (and that means all new assets). Boot games carefully.

Mint new player

This operation allows anyone to inscribe an ordinal that creates a new player for a specific game within the limits on the classes/supply set in the boot operation. An example:

{
"p": "og",
"game": "cd282b9b1658ca3010221f6fb088d77e56dede84329c431aa1c60cd4075a02a9i0",
"op": "player",
"class": "wizords",
"name": "Zorin",
"avatar": "f2ae346f478dccfa00ac8ba97bbc83b01c558291ba158176fc8fa1e1ba6bd754i0",
}

Here is a breakdown of the commands:

You must reference the player class from the boot file exactly. For this reason you should choose simple, clear player class names.

Player name is a non-unique display name. These nams can be duplicates, contain spaces, etc. It is not suitable as a primary key.

Mint loot

This operation allows anyone to inscribe an ordinal that creates a new loot object for a specific game within the class/supply limits set in the boot operation.

{
"p": "og",
"game": "cd282b9b1658ca3010221f6fb088d77e56dede84329c431aa1c60cd4075a02a9i0",
"op": "loot",
"class": "weapon",
"loot": "bloodscope",
}

Here is a breakdown of the commands:

You must reference class and loot names exactly. For this reason game designers should choose simple, clear names.

Last updated