MetaMaker is a blockchain-based decentralized game development platform that allows players and developers to collaboratively create, govern, and own in-game assets and features. This platform would use blockchain to ensure transparent decision-making, reward contributions, and secure ownership of game elements.
- General Information
- Tech Stacks and Platforms
- High Level Design
- Pages and Features
- How to Run
- Report and Demo
- Assets
- Contributors
Collaborative application development has become increasingly accessible, particularly with the rise of open-source platforms. These platforms allow anyone to modify an application to meet specific needs. If a modification proves valuable to a broader user base, the original developers can integrate it into the official version of the open-source application.
However, this open-source model still faces several challenges:
- Selection Process: Determining which modifications to include in the official codebase can be subjective and time-consuming.
- Component Tracking: Ensuring transparency and traceability of open-source components in the codebase.
- Workflow Automation: Accelerating integration processes to enhance efficiency.
To address these challenges, we propose a blockchain-based fully public development method. This method enables anyone to suggest program modifications by submitting them to the blockchain as a linked file (e.g., Google Drive link). Public voting will evaluate these proposals, with the highest-voted modification automatically integrated into the main codebase after a defined voting period.
This blockchain-powered system offers:
- Transparent decision-making through public voting.
- Automated integration of top-voted modifications.
- Enhanced traceability and accountability for submitted changes.
Initially, this method is designed for blockchain-based game development, aiming to revolutionize how games are collaboratively developed, governed, and owned by communities.
MetaMaker's system consists of three main components: Frontend (FE), Backend/Oracle, and Smart Contract (SC).
-
Frontend (FE):
- Users can connect their wallets directly without involving the Backend.
- Users can view asset data by requesting information from the Backend, which retrieves it from the Smart Contract.
- To vote, users submit their votes via the Frontend, which sends them to the Smart Contract through the Backend/Oracle.
- After the voting period ends, the Frontend calls the Backend to execute the declare winner function on the Smart Contract and displays the results.
-
Backend/Oracle:
- Acts as a bridge between external sources (e.g., Google Drive) and the Smart Contract.
- For asset submissions, the Backend uploads temporary files to Google Drive and stores the file link on the blockchain via the Smart Contract.
- The Backend also forwards user votes to the Smart Contract, retrieves voting results, and uploads the winning asset to a GitHub repository.
-
Smart Contract (SC):
- Stores asset data and voting results.
- Provides functions to view assets, cast votes, and declare the winner (declare winner).
- Serves as the central logic layer for interactions with the Frontend and Backend.
This architecture ensures a transparent, secure, and decentralized workflow from asset submission to winner declaration.
Here's MetaMaker's features and its interface.
![]() |
![]() |
Home | About |
![]() |
![]() |
Proposing Game Asset (1) | Proposing Game Asset (2) |
![]() |
![]() |
Vote Asset | Winner Announcement |
![]() |
![]() |
Patch State Management | Some Decoration :D |
- Clone the repository from the terminal using the following command:
$ git clone https://github.com/mikeleo03/MetaMaker.git
- Go to the each directory one by one (frontend, backend, dApp), by using this command:
Using 3 different terminals is recommended.
$ cd <dir>
- Install all the required dependencies using this following command in the project frontend directory
$ npm install
- Run the frontend using this following command
$ npm run dev
- The MetaMaker frontend should now be running. You can check the server by opening http://localhost:3000 in your web browser.
- Install all the required dependencies using this following command in the project backend directory
$ npm install
- Create a
.env
file inside the repository directory using theenv.example
file as the template. - Run the server using the following command. Make sure you have Docker Desktop installed on your device:
$ npm run dev
- The MetaMaker backend server should now be running. You can check the server by opening http://localhost:5000 in your web browser.
- Ensure that Ganache is installed on your device. For more information, visit this link.
- Build the smart contract using this following command
$ truffle build
- Deploy the smart contract on private chain using this following command
$ truffle deploy
- Finally, do migration using this command
$ migrate
- The MetaMaker dApp should now be running on http://127.0.0.1:7545.
Access the Project Report: Project Report Link
Watch the Video Demo: Video Demo Link
Access the MetaMaker Google Drive Assets: View Google Drive Assets
Explore the GitHub Repository Assets: View GitHub Repository
SID | Contributor |
---|---|
13521063 | Salomo Reinhart Gregory Manalu |
13521108 | Michael Leon Putra Widhi |
13521172 | Nathan Tenka |