project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

SukaVerse

A collaboration tool for 3D artists to work on a large project(NFT, Game, Movie, or Industrial design), with a git-like capability to keep history and reuse assets from other users.

SukaVerse

Created At

FVM Space Warp

Project Description

This project targets 3D designers. Its main goal is to give them a Git-like experience while collaborating, or developers in creating 3D Objects or 3D environments.

Unlike Git, the platform focuses on user experience, and we design it with 3D designers in mind to make it usable for them. We decided to use a Metaverse experience where the user interacts directly with the 3D Object and the scenes to share, edit and review the designs.

To build such a project Merkle DAG and built-in deduplication of the IPFS are essential to store those 3D assets, and a FEVM smart contract governs the assets' access.

The main problem with such use cases and using IPFS is providing SLA, which can achieve by using FileCoin and embedding the governance of those SLA in the FEVM smart contract.

The project goals plan in four phases as follows (The Item, The Dollhouse, The Room, and The City).

The Item: enable multiple designers to customize specific 3D Objects consisting of multiple parts. This phase is helpful for limited use cases such as NFT creation, In-Game items customization, customizing characters, and sharing single Objects. Phase Progress: 70% complete this Demo

The DollHouse: In this phase, the designer can use Items they created in the previous stage and add them to Dollhouse. In this phase, the designer can change the layout of the Dollhouse, take Items from the last step, and embed it as part of the larger scene. Phase Progress: 20% completed the Dollhouse 3D design, which we will use as a reference model and testing.

The Room: This phase will bring physics to the environment and open the nesting to the n-layer, The Item inside The Dollhouse, and The Dollhouse in The Room. Phase Progress: 0%

The City: The design can work with a programmer to add programmability to the Item or the environment and provide interaction. This programmability can be a simple use case, from randomly turning the lights on and off for a big city model to complex interaction with AI. Phase Progress: 0%

We started this project 2 Months ago. It was a portal to download the Blender file of ERC721 NFT using the Polygon smart contract. Since the start of this Hackathon, with the understanding of FEVM, we pivoted this project to the collaboration tool, migrated the smart contract from Polygon to EVM, and added all required governance to behave as a collaboration platform. We updated the Backend to share the files on IPFS and introduced automatic Minting and adding members to the project. Pre-Hackathon Tag. https://github.com/ahmadsayed/suka-forever/tree/pre-hackathon

How it's Made

This project uses IPFS to store the 3D designs in GLTF format. The problem with IPFS is the CID's immutability, so to share the virtual world state, we store the CID of 3D assets as ERC721 tokens on the blockchain.

For each 3D Item, we store the Metadata as follows 1 - CID of the glTF. 2- Timestamp of this 3D asset. 3 - CID of thumbnails 4 - CID of the previous Metadata

This Metadata is stored again as CID, representing the current state of the 3D Object. The existing client keeps this CID on the browser's local storage until the user decides to share it on the blockchain.

The designer will decide to Mint this token on the FEVM blockchain and assign a team member who can edit this token. At any point, the owner can add more members when required. Also, being the ERC721, they can transfer the ownership.

The owner or any assigned user can update the 3D Object and revise the Latest CID by updating the token URI (currently no mechanism for conflict management, The smart contract may be able to handle it by introducing the timestamp to the transaction in Optimistic concurrency control).

Note: as of now using the UI owner can add members only during project creation, even if the smart contract support adding more member. Another point we need to consider is removing members yet to be implemented in the smart contract.

Integration with FileCoin

If the user or project requires SLA, they can choose a committed duration. In this flow 1 - the users need to fund the smart contract with a specific amount of FIL. 2 - The backend will create the Deal with the admin wallet (or FEVM if supported in the future) 3 - After the backend creates the Deal, it will ask the smart contract to transfer the locked fund to the admin wallet. 4 - The smart contract will use FEVM market API to check the Deal terms and ensure the CID matches the TOKEN URI and the Deal in the ACCEPTED state, then automatically withdraw from user-locked funds to the admin fund.

Note: The previous flow and integration with FileCoin API is still a work in progress. I only developed the smart contract, as End-to-end testing is not possible because I could not create a Deal on Hyperspace, but I partially tested with Remix using FilFox Mocked deals and skipped the CID check part).

Infrastructure:

We are using Akash Network to host the Frontend ,and Rest API used, In addition to a virtual machine on Cloud to host the IPFS, and run lotus daemon litenode.

We host most of the website images on web3.storage and use cloudflare-ipfs to access them, as we use Cloudflare as a security layer.

For the User project, we are using our own IPFS gateway, which we host on virtual Private Server, another approach under evaluation is using web3.storage, which may be a better option. during the Hackathon Web3.storage does not return deal_id, which also contributed to blocking the Filecoin integration flow.

background image mobile

Join the mailing list

Get the latest news and updates