✨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:

Key
Type
What this does in example
Required?

p

string

Identifies Ord Game protocol

Y

v

string

Identifies the OG version number

Y

op

string

Boot operation. Creates new game.

Y

name

string

Name of your game. No restrictions.

Y

avatar

string

Logo/avatar. Reference by ordinal ID.

N

players

array

Player classes and supply (see table below)

N

loot

array

All loot details (see table below)

N

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

Breakdown of the players array:

Index
Type
What this does in example
Required?

0

string

Defines player class name. Make up whatever groupings of players you wish.

Y

1

integer

Defines supply of this player class. You may make some more rare than others.

Y

Breakdown of the loot array:

Index
Type
What this does in example
Required?

0

string

Defines loot class (group of similar loot types) like β€œweapon” or β€œarmor”

Y

1

string

Defines specific loot objects like β€œsword” or β€œknife”

Y

2

integer

Defines "power" of loot. Use any integer range to establish max and min within a class. You should think of loot objects in the same class as comparable but with different power levels.

Y

3

integer

Supply of each loot object that can be minted.

Y

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:

Command
Type
What this does in example
Required?

p

string

Identifies Ord Games protocol

Y

game

string

Specifies game by inscription ID

Y

op

string

New player operation

Y

class

string

Class of player (must a match class defined in the game boot operation)

Y

name

string

Declares name of this specific player. No constraints, pick anything you like.

Y

avatar

string

Player avatar as inscription ID

N

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:

Command
Type
What this does in example
Required?

p

string

Identifies Ord Game protocol to indexer or game builder

Y

game

string

Specific game by boot operation inscription number

Y

op

string

Mint loot operation

Y

class

string

Class of loot to mint (much match exact)

Y

loot

string

Name of loot to mint (much match exact)

Y

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

Last updated