# Land Sale: Technical Specs
Each land is a multi-resource RMRK NFT.
There are three resources.
## Resource 1
Resource 1 is just the "RMRK Land logo", to be shown in generic marketplaces. It is what ERC721-oriented marketplaces see.
This is a simple image, basically. Maybe animated to attract attention.
It has no attributes.
The icon will differ from skyland to skyland.
## Resource 2: Map Land
If we consider that Skybreach is a world of 9 skylands initially, and we are selling land on 1 skyland in the first sale, then the master UI of the land sale must look something like this:

Clicking on the primary skyland, the one being sold, produces a zoomed in tiled view which renders the secondary resource of each Land. Each tile is one Land.

Land is buyable if more than 50% of its surface is usable. Thus, an edge-tile cannot be purchased if too small, but can be purchased if big enough to build on. Same with natural obstacles like beaches, volcano bottoms, boulders.
An owner of a Land can put any image into the land and this is shown on the single-skyland view, Sandbox/Decentraland style.

This is accomplished by making this resource a base with a single slot, whitelisted for all. This allows users to mint NFTs into the land and equip them to show them.
These lands all look the same, barring geographical diversity in shape and adjacent land, but their hue matches the biome they belong to. Thus, a land that is mostly fire will tilt red.
Hills are not visualized. Vertical diversity (see table below) is indicated in attributes.
Each land resource will have attributes visualized as flags on mouseover. These attributes are what indicates rarity and thus value, and are how people are going to pick which ones to buy.
Because we do not yet know which direction the game will develop in, some attributes will be "unknown1", "unknown2" etc. indicating they are yet to be revealed but hold _some_ additional value over the lands around them.
The following table is a proposal for some of the attributes.
| Attribute | Attribute type | Value type | Affects Appearance |
| -------- |-| -------- | -------- |
| fire |biome| % | ✅ |
| water |biome | % | ✅ |
| earth |biome| % | ✅ |
| wind |biome| % | ✅ |
| necro |biome| % | ✅ |
| cyber |biome| % | ✅ |
| steampunk |biome| % | ✅ |
| mecha |biome| % | ✅ |
| dragon |biome| % | ✅ |
| iron |resource| enum(none, scarce, present, rich) | ❌ |
| coal |resource| enum(none, scarce, present, rich) | ❌ |
| gold |resource| enum(none, scarce, present, rich) | ❌ |
| silver |resource| enum(none, scarce, present, rich) | ❌ |
| diamond |resource| enum(none, scarce, present, rich) | ❌ |
| gold |resource| enum(none, scarce, present, rich) | ❌ |
| clay |resource| enum(none, scarce, present, rich) | ❌ |
| wood |resource| enum(none, scarce, present, rich) | ❌ |
| unknown1 |resource| enum(none, scarce, present, rich) | ❌ |
| unknown2 |resource| enum(none, scarce, present, rich) | ❌ |
| unknown3 |resource| enum(none, scarce, present, rich) | ❌ |
| unknown4 |resource| enum(none, scarce, present, rich) | ❌ |
| fauna |population| enum(none, scarce, present, rich) | ❌ |
| fauna |disposition| enum(pacified, neutral, hostile, aggro) | ❌ |
Additionally, each land should have plot size information, and information on how high or how deep one can build or dig. Vertical variance is also of importance - a high variance terrain will have loads of hills and edges, convenient for Kanaria but clumsy to navigate on foot (Chunkies). However, a high variance terrain also makes p2e experiences easier, as enemies can be sniped from up high as they navigate the stairs.
| Attribute | Attribute type | Value type | Affects Appearance |
| -------- |-| -------- | -------- |
| biggest_plot |build| int x int | ❌ |
| max_depth |build | int | ❌ |
| vertical_variance |build| enum(flat, low, medium, high) | ❌ |
Finally, each land has a Decay Rate. This is how susceptible it is to the elements of chaos that rule Skybreach. Practically, this is a way to purge lands that have been bought and never used - their owner is gone, the keys were lost, etc. After {decay} days, the land is purged, eroded to its original state, and the ownership reverts to public, similar to how ENS domains work, only this resets if there is even a single interaction with a world made by its owner, or by anyone who owns a structure on this land.
| Attribute | Attribute type | Value type | Affects Appearance |
| -------- |-| -------- | -------- |
| decay |meta| int (days) | ❌ |
## Resource 3: Game Land
*Note: This resource comes with certain caveats which are not yet possible (send-into-non-owned, take-from-non-owned, etc.). This means a future migration will be required to the RMRK version of the standard which does allow this, or potentially we can pull this off with a special Base specifically designed for this, so no migration needed, only adding a new resource.*
A piece of game land is a plot of 32x32 tiles as below, and we render 3 x 3 lands, so 3x32 x 3x32 on the screen at any given time.
The [protoype from Ilia](https://landsales.gql-rmrk.workers.dev/) matches this design rather well.

If we suppose we have A1, A2, A3, B1, B2, B3, C1, C2, C3, in three rows, then moving from A1 to B1 does not incur a transaction, but moving from B1 to B2 does, because the original point of spawning was in A1, thus the final destination is 2 slots away (it is not possible to move diagonally due to there being only a single pixel touch point).
However, _interacting_ (trading, building) in a land other than the one the avatar started in will issue a transaction that will move the avatar into the other land (send into another NFT). This benefits UX, allowing avatars to explore and chat until they need to make an on-chain operation in the context they find themselves in.
The image below shows relative size of 32x32 land in a viewframe of ~150x55.

Rendering 3 x 3 lands of 32x32 tiles each at any given time thus makes sure we never show empty map beyond the screen borders even at highest resolutions.
Once a player moves into another land, the land centers on this viewport and the previous surrounding lands are unloaded, with new ones loaded.
This maintains the illusion of a large, always-loaded world.
Attributes like "biggest_plot" as specified above in the Attributes table would therefore refer to a single area in a land on which it is possible to build:

The 32x32 land in the image above has a biggest_plot value of 18x15, marked in red.
Players will build by placing structures into the Land, by selecting the tile into which they want the NFT placed. The NFTs they place will have dimensions, and the Land NFTs will have "dynamic slots" which are calculated to be occupied and do not need to have something equipped in them specifically. Thus, if a player should place a (2x3) house at position (30,3), they have occupied slots (30,3), (29,3), (28,3), (30, 4), (29,4), (28,4).
