Emergence Avatar System

Real time loading of humanoid 3d models with animations into game engines using NFTs as an authentication layer

NOTE: This system is being refactored. Please be aware, this documentation will be superseded in the future. The documentation below is for context and the system described below will be deprecated in the near future.

One of the challenges in the Web 3 space is that users are collecting PFPs but with no way to use these characters in a metaverse space. We have built the Smart Contract and Game Engine tools so that NFT Avatars can now be used interoperably between Game Worlds.

The Avatar System allows new models to be associated with existing NFTs by collection creators or avatar owners, with the link being stored on-chain in the EAS smart contract. Additionally, the the Avatar System allows developers to quickly find avatars that the user owns in-engine.

Architecture

Smart contract

The smart contract can mint non-transferable NFT’s that have its ownership mapped to a NFT, allowing to ‘extend’ the metadata of existing NFTs while preserving the provenance and ownership.

There are 2 endpoints for the metadata (in order to work with the Emergence SDK your avatar metadata should look like the one referenced in section Avatar Metadata Standard).

The primary URI: Only the collection owner/creator is allowed to modify its metadata.

The secondary URI: Only the NFT owner is allowed to modify the metadata.

Both can point to on-chain or off-chain endpoints.

Avatar metadata standard (Subject to modifications)

You can customize your avatar(s) by following this standard in the format of JSON files. Both of your URI’s should either return a valid URL pointing to this JSON or the JSON itself in string format.

[
	{
		"GUID": "9b239272-156a-471a-8a4b-9a05489ccfc2", # Any random string
		"Name": "HairSample Female",
		"Creator": "madjin",
		"Type": "VRM", # file type
		"UriBase": "ipfs://QmbPMERsRsUxMV5oqiA7M6iXtT7xyTRyYWwPB9sjjJ5jdp",
		"MaxTotalSize": 16000,
		"MaxTotalVertices": 1600,
		"MaterialType": "pbr"
	},
	
]

Networks

We are currently deployed on Polygon. ETH coming soon post-merge

The smart contract addresses are:

EAS Polygon: 0xC9571AaF9EbCa8C08EC37D962310d0Ab9F8A5Dd2

How-To

In order to register an avatar for your nft there are 2 prerequisites:

  1. Own an NFT in one of the above networks.

  2. Have a humanoid VRM/gLTF file uploaded to any storage system accessible by an URL (We recommend IPFS)

Once you have both of this, we recommend uploading your VRM file to IPFS (https://ipfs.io). As of now we do not offer a browser user interface for configuring your avatars, but you can do it manually through etherscan by following the steps shown on the next page.

Go to the contract tab and connect your wallet ethereum wallet

Register your avatar by filling the ‘registerAvatar’ function in the write methods tab (make sure that it’s not already registered!)

Submit and confirm your transaction.

And that’s it! You can now open any game that supports the Emergence SDK to be able to use your avatars.

IPFS

IPFS stands for interplanetary file system. It's basically a decentralized storage system for files. Where you can choose to host a node, or use 3rd party services like Pinata to pin your files.

The easy way of accomplishing this is by using a service like Pinata.

It's a free up to 1GB and the sign up process only requires an email verification (no credit cards).

After creating an account you will be able to upload files

Once you have uploaded your file you will notice the CID row. This is your hash, the GUID of your uploaded file, which translates to a url like ipfs://{CID}. This is the URL that you can use both inside the json standard and for the smart contract registration

Once you've got your NFT or Collection Setup, you'll want to enable the EAS System in your Game World: Avatar System - How to get VRMs Working with Emergence

Last updated