Realms is an ever-expanding on-chain permission-less gaming Lootverse built on StarkNet.
This monorepo contains all of the Contracts (StarkNet/Cairo Ethereum/Solidity) for BibliothecaDAO, $LORDS, and Realms.
Directory | Title | Description |
---|---|---|
/settling_game | The Realms Settling Game | A modular game engine architecture built on StarkNet. |
/desiege | Desiege | A web-based team game built on Starknet. |
/token | Standard Tokens | Standard tokens (ERC721, ERC1155, ERC20) written in Cairo. |
/L1-Solidity | L1 contracts | A set of L1 contracts including the $LORDS, Realms, and the Journey (Realms staking). |
/game_utils | Game Utils | Game utility contracts such as grid positions written in Cairo. |
/loot | Loot | Loot contracts ported to Cairo. |
/exchange | Exchange | Allows trades between pairs of ERC20 and ERC1155 contract tokens. |
/nft_marketplace | NFT Marketplace | A marketplace for Realms, Dungeons, etc. built on Starknet. |
/utils | Cairo utility contracts | Helper contracts such as safemath written in Cairo. |
First, visit the Bibliotheca DAO Site for an overview of our ecosystem.
Next, read the Master Scroll. This is our deep dive into everything about the game. The Master Scroll is the source of truth before this readme.
Finally, visit The Atlas to see the Settling game in action.
If you want to get involved, join the Realms x Bibliotheca Discord.
We've placed individual development documentation inside each project's README and included general documentation for loading the monorepo in VSCode with our container in this file:
Development Workflow
If you are using VSCode, we provide a development container with all required dependencies. (Note: this requires [Docker](https://docs.docker.com/get-docker/) and the [Remote - Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)).When opening VS Code, it should ask you to re-open the project in a container, if it finds
the .devcontainer folder. If not, you can open the Command Palette (cmd + shift + p
),
and run “Remote-Containers: Rebuild and Reopen in Container”.
Logging into your dev container
The development container loads settings and the repository information on your local computer but cannot read your GitHub login credentials from your local computer.Instead, you can use the Github CLI to auth from your dev container:
- Download the Github CLI.
- Visit the Github Tokens page and click
Generate New Token
to create a new token that will be used in your dev container. Make sure to save it somewhere as the token is only visible upon creation. - With the container loaded, open the dev container terminal in vscode.
- Run
gh auth login
and follow the steps, pasting in your new access token when asked.
OSX ARM chips: Running without a container
Docker performance on ARM chips is pretty poor, so we recommend running without a container until these perf issues are resolved: 1. Pull down the repository 2. Install homebrew: https://brew.sh/ 3. Install gmp: `brew install gmp` 4. Install dependencies: `pip3 install -r ./requirements.txt` 5. Install realms cli: `pip3 install ./realms_cli`If you have further questions about the development workflow, please ask in #builders-chat in the Realms Discord.
How to contribute
We encourage pull requests.
- Create an issue to describe the improvement you're making. Provide as much detail as possible in the beginning so the team understands your improvement.
- Fork the repo so you can make and test changes in your local repository.
- Test your changes Follow the procedures for testing in each contract sub-directory (e.g. /contracts/settling_game and make sure your tests (manual and/or automated) pass.
- Create a pull request and describe the changes you made. Include a reference to the Issue you created.
- Verify cairo lint warnings run through the 'Files Changed' tab for your PR and resolve any warnings. These do not show up locally so you need to view them on GitHub.
- Monitor and respond to comments made by the team around code standards and suggestions. Most pull requests will have some back and forth.
If you have further questions, visit #builders-chat in our discord and make sure to reference your issue number.
Thank you for taking the time to make our project better!
The Realms Settling Game spans a number of repositories:
Content | Repository | Description |
---|---|---|
contracts | realms-contracts | StarkNet/Cairo and Ethereum/solidity contracts. |
ui, atlas | realms-react | All user-facing react code (website, Atlas, ui library). |
indexer | starknet-indexer | A graphql endpoint for the Lootverse on StarkNet. |
bot | squire | A Twitter/Discord bot for the Lootverse. |
subgraph | loot-subgraph | A subgraph (TheGraph) for the Lootverse on Eth Mainnet. |