Froglins are strange creatures all around us. They exist only in cryptography terms, and can be captured and become friends through the use of Zero-Knowledge Proofs.
This repo is the Froglin's Universe source code.
Check out the game specs to understand what's the goal and why are we doing this.
The monorepo has two main packages:
- Game: exports a class Game where all meaningful actions take place, such as capturing froglins, fighting, claiming your mana, etc.
- Game Lib: exports all the needed classes and assets to execute and prove the game, such as Player, Froglin, etc
Both packages are a mixture of Typescript and Noir:
- Typescript: Where all the simulation and execution happens. This is the "optimistic" state of the game, before actions are proven and verified.
- Noir: The ZKDSL that allows for the actions of the game to be proven and verified.
You can test this library by running yarn
followed by yarn test
.
This will run the unit tests inside game_lib
and the e2e tests in game
.
Currently, Froglin's Universe doesn't have a frontend. We're open to contributions! If you want to develop a frontend for Froglin's Universe, please reach out on Telegram at @zpedro_eth.
We don't currently publish to npm
but feel free to simply add a new package to "packages" and use "@froglin/game": "workspace:*"
as a dependency.
The project is fully built in TS so you should be able to navigate all the current actions and properties of the Game class.
One yet-to-be-decided concept of the game is the idea of Zones. Hipothetically they would come from the user's device.
For now, I've just drawn a table with two Zones to help me navigate the coordinates:
000 | 100 | 200 | 300 | 400 | 500 | |
---|---|---|---|---|---|---|
000 | Prairie | Prairie | ||||
100 | Prairie | Prairie | ||||
200 | ||||||
300 | ||||||
400 | Forest | Forest | ||||
500 | Forest | Forest |