Integrating Content
The easiest way for non-developers to create content and integrate it into a Space or application on Lamina1 is by using a Template created by its Space developer in the Creator Studio. We demoed this functionality in Space Lasers, a browser-based arcade game we launched in Betanet, where users could sign in with their LAMINA1 Hub credentials, create a custom laser via a no-code Template, and immediately deploy it into the game. That experience will be mentioned several times in this section as a case study/example for how future integrations will “plug in” to Lamina1. Space Lasers is still accessible and playable on the Lamina1 Betanet, however the game and Custom Laser template are no longer live on the Hub.
**NOTE: **Space Lasers is no longer supported by the LAMINA1 core team developers and is no longer guaranteed to work. If you’d like to fork the game or improve on it yourself, reach out to [email protected].
At this time, publishing Templates that can plug into storyworld IP or open metaverse Spaces/experiences is by invitation only. However, we will be providing builders the opportunity to begin testing, building and deploying their own Templates via the Creator Studio on the Fuji Testnet and Mainnet over the next few months.
When Template creation does become available to partners and creators across Lamina1, the process will be broken down into the following stages:
- Selecting the NFT smart contract template
- Filling out the template with assets and metadata
- Deploying the smart contract (i.e. minting it on the Lamina1 blockchain)
Learn more about each of these steps by continuing on below.
NFT Smart Contracts
In the Web3 space, there are a plethora of content and metadata specs, both established and experimental, that are currently available to item creators for use in minting on EVM chains. Lamina1 is committed to supporting the expanding range of functionalities that is inherent to the developing smart contract space. However, we also understand that most developers don’t want to get their hands dirty researching and comparing between hundreds of smart contract specs.
As such, in the next section, we’ll provide a concise library of recommended NFT smart contracts templates that have been customized and optimized for interoperability and metaverse use cases.
Our recommendations for the smart contracts you should use when integrating items into a Space on LAMINA1 have been divided across the following use-cases:
- Fungible Item Collections
- Soul-Bound Item Collections
- Randomized Collections
You can refer to the Lamina1 Spaces Registry github’s README to look into each smart contract for more information.
Fungible Item Collections
This is a great baseline smart contract for developers who want to introduce collections that include a variety of fungible items, like trading cards, weapons, or apparel. Fungible items can be traded 1 for 1, with no change in value between two different versions of the same item. Fungible item collections have more than one fungible item. The smart contract mints NFTs implementing the ERC1155 specification.
In “Space Lasers,” we used this standard for our collection of five differently-colored lasers. While each of five lasers are unique from each other (i.e. the Red Laser has completely different data from the Blue Laser), each laser color can be separately collected by numerous people (my Blue Laser will be identical to your Blue Laser in every way except for its ID). All of these lasers are fungible with lasers of the same color, but not the same as other laser colors.
Soul-Bound Items
This is a great standard for any item which is not intended to be transferable, such as achievements, awards, trophies, badges, tickets, or membership tokens. The smart contract mints NFTs implementing the ERC5633 (Extension of 1155) specification.
In “Space Lasers,” this standard is used for the ‘Golden Astronaut’ trophy that was awarded to users for beating the final level of the game. This is a personal achievement item based on gameplay performance, and we did not want to allow the transfer of this item to others, which is why we opted for a soul-bound standard.
Randomized Items
This template is a great way to introduce elements of randomization, such as random prizes or raffle tickets. The smart contract mints NFTs implementing the ERC1155 specification.
In “Space Lasers,” we use this standard to support random elements for our Mystery Laser –– however, this information was not driven by the smart contract. Instead, it happened in the Lamina1 Metaverse Asset Dispenser (L1MAD), drawing from the item metadata attached to the NFT and the item’s unique identifier.
See here to access the code for our Mystery Laser to see how it interacts with the ERC1155 contract to create this element of randomization in the game. For more information, see the Item Metadata section below.
NOTE: For other smart contracts outside of these specifications, developers should be aware that interoperability, i.e. the ability for items in your space to travel to other Lamina1 spaces, may be affected.
We expect this collection of smart contract recommendations to evolve significantly and grow to adapt to the discovery of new standards, use cases and troubleshooting. As such items created today may not be able to take advantage of future features on the Lamina1 network. We welcome developer feedback on how we can make these standards best fit the needs of metaverse developers, and it should be noted that developers will always have the freedom to use their own EVM compatible contracts on Lamina1.
Item Metadata
Once developers have selected a smart contract template for use in your Space, they will need to go through the process of compiling the right metadata information into the contract. Generally, we recommend including the following information for every asset:
- Media Asset
- Name
- Creator
- Description
- Tags (for search and algorithmic discoverability)
- Display Properties
- Behavior Properties
As with the smart contract recommendations above, including these metadata properties will help empower interoperability in future metaverse experiences – providing a shared language for game developers to understand what each item is and how to incorporate it into the gaming experience. These properties also allow items to introduce unique functionalities directly into the game. For example, in “Space Lasers,” each laser's color data was brought into the game through the metadata encoded in the NFT itself, and it wouldn't appear in the game without it.
Note that these metadata categories are essentially version 0 of an interoperable standard for items using NFTs and will be heavily adapted as we onboard more creators onto LAMINA1 over the coming months. For example, dynamic properties, rights, royalties, and history as well as on-chain metadata are a big area of focus for us in the next iteration.
See the table below for what each of these recommendations looked like in the context of the demo “Space Lasers” experience we developed, as well as example ways to fill in these attributes into the smart contract you create.
In this system, Media Assets can be hosted in one of two ways:
Via a centralized link to a webpage including media files and json data that define information about the NFTs/Items in your Space.
Via a decentralized Interplanetary File System (IPFS), a distributed file storage protocol that allows computers all over the globe to store and serve files as part of a giant peer-to-peer network.
For “Space Lasers,” we used NFT.Storage, a service that uses the IPFS protocol to host off-chain assets. Another popular IPFS service in the Web3 space is Pinata.
Contract Deployment
Once your smart contract type is selected and your metadata is compiled for each NFT Item you’d like to mint, you will need to deploy each item’s smart contract.
You can do this manually, or use a toolset like Hardhat, Remix IDE, Truffle, Web3.js / Ethers.js, or other SDK of your choice to facilitate the deployment process.
Currently, all metaverse Items are deployed and minted on the LAMINA1 C-Chain, but ultimately, Lamina1 will provide a dedicated metaverse content service subnet, and also support the ability for partners to start their own subnets with custom economics and mint their metaverse Items there.
Right now, to set up a Template using the process described above, you must submit the smart contract to the Lamina1 core team (preferrably following the standards above and/or other established smart contract specs). We will then set up and test the Template for you. If you would like to talk to the Lamina1 core team about launching a custom Space or creating a custom Template for an upcoming storyworld or experience, please reach out to us at [email protected] and/or fill out our official Get Involved form.