Eternum has been designed to be a foundational game for Realms World. It will freely evolve and grow as the game and world age. Think of it as a living, breathing digital ecosystem, constantly inviting endless exploration. It's both a game and an open platform.
A unique, high-stakes game played over seasons. Players can pursue total victory or freely explore their own path, unconstrained by predetermined objectives.
In Eternum, players forge alliances across an infinite hexagonal procedurally generated map during fully onchain, immutable seasons. They build resource stockpiles, train troops, trade, and strategically cooperate or deceive to achieve victory in this world of diplomacy, resource management, and tactical decision-making.
Entry is via a Season ticket minted off the original Loot Realms NFTs. Using $LORDS, players trade in a free market within the world and on Starknet to gain competitive advantages. The open nature of the design allows players to extend the game world and introduce their own features if they choose.
Eternum lays a robust scaffold on which to build higher-level structures and games. It establishes key functional systems in the Core layer while introducing fungible resources, serving as a foundation for future development and expansion.
Click to expand
Emphasizing the concept of a truly Autonomous World is pivotal. In our vision, it must embody two key characteristics: radical openness and persistence. But what exactly does this entail? Let's delve into both theoretical and mechanical perspectives.
From a theoretical standpoint, radical openness signifies an inclusive world accessible to everyone. This openness transcends traditional barriers - there are no gatekeepers, no singular entities exerting control. Instead, it's a space where anyone can contribute, build, and actively participate without restrictions.
Mechanically, radical openness is reflected in the flexibility and adaptability of the world's underlying structures. The contracts that define this world are not rigid; they are designed to be extended, forked, and maintained by anyone with the willingness and capability to do so.
Envision Eternum as akin to the original cellular structure in a primordial soup. Over time, this basic form dissolves, giving rise to a more complex organism. Eternum is the genesis, the starting point from which an intricate and expansive world emerges, constantly evolving and reshaping itself in response to the contributions and interactions of its inhabitants.
- Client - React apps built with Vite
- Contracts - Cairo/Dojo smart contracts
- Game contracts
- Season Pass contracts
- Season Resources contracts
- Packages - Shared libraries
- Config - Configuration and deployment scripts
- @dojoengine/react - React integration for Dojo
- @dojoengine/recs - Entity Component System
- @cartridge/controller - Game controller integration
- Starknet.js v6.23.1 - StarkNet interaction
- Vite - Frontend build tool
- Install Dojo:
curl -L https://install.dojoengine.org | bash
- Install pnpm:
npm install -g pnpm
- Install project dependencies:
pnpm install
- Build shared packages:
pnpm run build:packages
Development of Eternum is open-source. If you would like to contribute comment on an open issue.
pnpm dev
- Start game development serverpnpm dev:docs
- Start documentation development serverpnpm dev:landing
- Start landing page development server
pnpm build
- Build game clientpnpm build:docs
- Build documentationpnpm build:landing
- Build landing pagepnpm build:packages
- Build shared packages
pnpm test
- Run all testspnpm lint
- Run lintingpnpm format
- Format codepnpm format:check
- Check code formatting
Eternum supports multiple deployment environments:
Environment | Description |
---|---|
Local | For development and testing |
Slot | Staging environment |
Sepolia | Public testnet |
Mainnet | Production environment |
Before deploying to any environment, confirm that you have a
.env.{environment}
file in the contracts/common
directory,
as well as in the client/apps/game
directory.
To deploy and run the game locally:
# Start local game contracts
pnpm run contract:start:local
To deploy the contracts to Sepolia testnet, run these commands in order:
- Deploy game contracts:
pnpm run game:migrate:sepolia
- Deploy season pass contracts:
pnpm run seasonpass:deploy:sepolia
- Deploy season resources contracts:
pnpm run seasonresources:deploy:sepolia
- Update TOML configuration:
pnpm run toml:update:sepolia
- Start the indexer:
pnpm run indexer:start:sepolia
- Deploy game configuration:
pnpm run config:deploy:sepolia
This project is licensed under the MIT License. See the LICENSE file for more information.