Unity and Godot are two of the most popular game engines currently used. This proposal's deliverables would be SDK extensions to either of the game engines to allow integration with o1js. Extensions should permit zkApp transactions and account transfers.
There are two ways the extensions can interface.
Native
This requires an extension to use the o1js library to do all computations locally (including signing/proving). Client-side transaction proving depends on the extension to support o1js. o1Js is a typescript library, and the engine needs to provide a way to call it via bindings/bridges (in case it is not supported). There are also considerations related to proving time, updating contracts, deploying new artifacts, etc.
zkCloudWorker
Integration with zkCloudworker - should enable this with minimal friction —a rough schematic of the workflow.
On-game event (mint collectibles, marketplace, achievements) - invoke an HTTP call to zkCloudWorker requesting a payload. Provide the public key mapped to the private key.
zkCloudworker creates the payload for the user signing and sends back the response.
The user signs this using the mina-signer package locally.
Send signed payload to zkCloudWorker
zkCloudWorker runs proving and creates transactions.
zkCloudWroker publishes transactions to Mina L1.
Note:
zkCloudWorker currently supports only FungibleToken out of the box, (NFT standard is in the works).
Arbitrary smart contract usage is more complicated with cloudworkers and requires more research.
zkCloudWorker would also have fees associated with the usage.
Summary
Unity and Godot are two of the most popular game engines currently used. This proposal's deliverables would be SDK extensions to either of the game engines to allow integration with o1js. Extensions should permit zkApp transactions and account transfers.
There are two ways the extensions can interface.
This requires an extension to use the o1js library to do all computations locally (including signing/proving). Client-side transaction proving depends on the extension to support o1js. o1Js is a typescript library, and the engine needs to provide a way to call it via bindings/bridges (in case it is not supported). There are also considerations related to proving time, updating contracts, deploying new artifacts, etc.
Integration with zkCloudworker - should enable this with minimal friction —a rough schematic of the workflow.
Note:
Resources