BuildIt is a metaverse project developed for the hackathon. It provides users with the ability to own virtual land within a map, place items on the land they own, and even sell the land to other users. The land is represented as ERC721 tokens, while the items are represented as ERC1155 tokens. All interactions within the metaverse are secured by smart contracts.
BuildIt is a metaverse project developed for the hackathon. It provides users with the ability to own virtual land within a map, place items on the land they own, and even sell the land to other users. The land is represented as ERC721 tokens, while the items are represented as ERC1155 tokens. All interactions within the metaverse are secured by smart contracts.
You should have Unity
, npm
, forge
and foundry
installed.
Go to backend
folder and install dependencies
cd backend/
npm install
To run the project:
npm run dev
Visit localhost:3000
to run the backend api access point.
Go to client
folder.
cd client/
Open the client
folder in Unity. Build the project and save build files in frontend/public
directory.
Go to frontend
folder and install dependencies
cd frontend/
npm install
To run the project:
npm run dev
Visit localhost:3000
to play the game.
Go to smart_contracts
folder and install foundry and hardhat.
cd smart_contracts/
forge init
npm install
To compile smart contracts:
forge compile --skip test --skip script
# Or If you want to compile test files
forge compile --via-ir
To run test on smart contracts:
forge test --via-ir
To deploy smart contracts:
npx hardhat deploy --network $ChainName
# example: npx hardhat deploy --network mumbai
To add destination chain data for cross chain transfer of utils:
npx hardhat run script/addChain.js --network $ChainName
# example: npx hardhat run script/addChain.js --network mumbai
Note: Don't forget to make .env file, refer .env.example file.
Website can also be used which is build for webgl and will works on both desktop and mobile.
The inspiration behind BuildIt comes from the desire to create an immersive metaverse experience where users can explore, own, and customize virtual land. We wanted to empower users to express their creativity and engage with a virtual world where they have control over their own unique space.
BuildIt allows users to:
When a user connects their wallet, the game fetches data from the smart contracts and highlights the portion of the map that the user owns. Users can then click the "Edit" button to place or remove items on their land. They have the option to cancel or confirm the changes, which updates the items in the appropriate locations. Smart contract checks ensure that users can only interact with the land they own.
In addition, BuildIt includes a marketplace where users can sell their land through direct listings or auctions. Chainlink automation can be utilized for auction listings, and if the chain supports Chainlink price feeds, the land can be sold in USD. The marketplace provides an easy and secure way for users to trade their land.
Also, users can transfer their util items from one chain to another ( using Polygon LxLy bridge and CCIP ). Polygon LxLy bridge is used to transfer utils items from Polygon ZKEVM Testnet to Goerli and vice versa whereas Chainlink CCIP is used to transfer utils items from Polygon Mumbai to Sepolia and vice versa
While editing the map, user can also save/load private designs which is saved using sprucekit.
In marketplace listing, if seller owns an ENS account then it will display it so that it add more credibility about seller.
BuildIt was built using the following technologies and tools:
During the development of BuildIt, we encountered several challenges, including:
Throughout the development process, we achieved several accomplishments that we're proud of, including:
The development of BuildIt provided us with valuable learning experiences, including:
BuildIt is an ongoing project, and we have exciting plans testnet.bscscan.com
We are dedicated to continuously improving and expanding BuildIt to create a vibrant and immersive metaverse experience for all users.