Cartesi Rollups version: 1.0.x
The World Arcade allows users to play riscv-binaries of games on a RISC-v Cartesi Machine on the browser, submit the game moves onchain so the session will be replayed a Cartesi Rollups DApp to generate a provable score. Naturally you can upload you own games.
DISCLAIMERS
This is not a final product and should not be used as one.
- npm (To install dependencies and run the frontend)
- Sunodo (To build and run the DApp backend)
- Metamask (To sign transactions in the frontend)
Important
This project uses Sunodo version 0.8.1, after installing npm install sunodo using the command below.
npm install -g @sunodo/cli@0.8.1To build the DApp, two images are also required: riv/toolchain and sunodo/sdk:0.2.0-riv.
- To generate
riv/toolchain, clone RIV repository and in its directory do:
make toolchain- To generate
sunodo/sdk:0.2.0-riv, in theworld-arcadeproject directory do:
makeBuild with:
sunodo buildFor the frontend, open a new terminal and:
Go to the frontend folder:
cd next-js-frontendThen, build it with:
npm install && npm run codegenRun the DApp environment with:
sunodo runThe frontend can be executed in developer mode or production mode. After choosing the desired mode, run the command in the terminal opened for the frontend.
npm run devnpm run build && npm run startSince the DApp will be running on top of a local Blockchain, it is necessary to configure Metamask to interact with the local blockchain RPC node. The user will need an account in this local network to pay for the transactions. Luckily, this environment has standard accounts with tokens ready to use. So, the setup has two steps:
-
Add the local network, setting the values specified below.
- RPC URL: http://localhost:8545
- Chain ID: 31337
-
Import one of the ready-to-use accounts. For this, use one of the private keys below:
- 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
- 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d
- 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a
- 0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6
- 0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a
- 0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba
- 0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e
- 0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356
- 0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97
- 0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6
Interact with the application using the web frontend
Warning
Every time the DApp backend is interrupted (Ctrl+c) and started again, a new local blockchain is create. So, to avoid inconsistencies between Metamask and the local blockchain, remember to clear your account activity.
The flow of the protocol is as follows:
- Upload a cartridge Squash File System (sqfs) through the upload form available on the Upload page. This page can be accessed using the navbar. On upload success, you will be redirected to the game page.
Important
You can download some cartridges sqfs examples here.
-
On the game page, read its description to get to know its controls.
-
Click on "Start" to initiate the game.
-
When the gameplay finishes (beat the game or click on "Stop"), you will be able to:
- Download your gameplay log to submit later.
- Submit your current gameplay log for verification.
-
If the gameplay log was submitted and validated, you can access the game's ranking to see your place in it.