file: docs/pages/index.mdx meta: { "layout": "landing" } import { HomePage } from "vocs/components";
Eternum Cover
{" "} Eternum Logo Eternum is a decentralized, open-source, and community-driven 4x MMO game built on the Dojo framework. Get started Play Now
--- file: docs/pages/development/client.mdx meta: {} # React Client ## Run the dev server From the root of the project, run: Easy method: ```bash ./scripts/client.sh ``` Manual method: ```bash pnpm i && pnpm dev ``` The client requires environment variables to be set. See the [Environment Variables](client/.env.sample) page for more information. ## Project Structure ### Elements * Small reusable react UI components ### Components * Stateful react components composed of Elements. This is where all the onchain state should be stored. ### Modules * Collection of components composed into Modules ### Containers * Locations where Modules are composed into a full page ### Layouts * Collection of containers composed into a full layout ## useDojo Hook The `useDojo` hook is a core part of the Dojo framework that provides access to essential game functionality, account management, and network interactions. ### Usage ```tsx import { useDojo } from "@/hooks/context/dojo-context"; function GameComponent() { const { account, network, masterAccount } = useDojo(); // ... your game logic } ``` ### Features #### Account Management The hook provides comprehensive wallet and account management capabilities: * **Burner Wallet Creation**: Create temporary wallets for players * **Account Selection**: Switch between different burner wallets * **Account Listing**: View all available burner wallets * **Master Account Access**: Access to the game's master account * **Deployment Status**: Track wallet deployment status #### Network Integration Access to network configuration and setup results for interacting with the Starknet blockchain. #### Game Setup Provides access to all initialized game systems, components, and world configurations. ### Requirements The hook must be used within a `DojoProvider` component and requires the following environment variables: * `VITE_PUBLIC_MASTER_ADDRESS` * `VITE_PUBLIC_MASTER_PRIVATE_KEY` * `VITE_PUBLIC_ACCOUNT_CLASS_HASH` ### Return Value The hook returns an object containing: * `setup`: Complete Dojo context including game systems and components * `account`: Account management functions and state * `network`: Network configuration and setup results * `masterAccount`: The master account instance ### Example ```tsx function GameUI() { const { account } = useDojo(); return (

Current Account: {account.account.address}

); } ``` ## Eternum provider Wrapper around the DojoProvider, which itself is a wrapper around a generic Starknet provider, an API to easy interact with your contract’s API via the RPC. Each layer of abstraction adds its own set of functionalities, with the Eternum Provider mainly providing easy access to all the system calls that our systems expose (create\_army, etc…) ## Offchain messages You can use offchain messages to store information in the indexer, but it is not persisted onchain. Some examples of use cases for this are in-game messages. Refer to [this code](https://github.com/BibliothecaDAO/eternum/blob/1490dfcf513d72f51e5a84138be743d774338caf/client/src/ui/modules/chat/InputField.tsx#L50) for an example of how to use offchain messages # State Management with Recs Recs allow you to query the state of the world and subscribe to changes in the world. It is the recommended way to manage state in the client. ```tsx const structureAtPosition = runQuery([HasValue(Position, { x, y }), Has(Structure)]); ``` This line of code will run a query against the local state of the browser and return all the structures that are at the position `{ x, y }`. This does not execute any call to Torii as the local state is already synced with the latest updates. This part of the code in `client/src/dojo/setup.ts` is where the local state is initialized and synced. ## Subscribing to changes To subscribe to changes in the world, you can use the `useEntityQuery` hook. This hook will return the entity that matches the query and update it if it changes. ```tsx const allRealms = useEntityQuery([Has(Realm)]); ``` ## Getting the value of your components After you have run a query, you can get the value of your components using the `getComponentValue` function. ```tsx const realm = getComponentValue(Realm, entityId); ``` The entityId is the poseidon hash of all the keys of the component you want to get. This can be an easier way to get your component than using a query if you already know all the keys. ### Getting a component from an entity If you have an entityId, you can get a component from it using the `getComponent` function. ```tsx const realm = getComponentValue(Realm, getEntityIdFromKeys([entityId])); ``` The previous line of code is equivalent to: ```tsx const entity = runQuery([Has(Realm), HasValue(Keys, [entityId])]); const realm = getComponentValue(Realm, Array.from(entity)[0]); ``` # Extending the client ## Adding a new component You will need to add your component to the `contractComponents.ts` file. This will ensure that the component is synced with the state of the world and will provide the types for the component. ## Adding a new system You will need to add your system logic to the `sdk/packages/eternum/src/provider/index.ts` file and then use it in the `createSystemCalls.ts` file. This will ensure that the system is called with the correct arguments and will provide the types for the system. ## Optimistic updates You can use optimistic updates to update the local state without waiting for the transaction to be included in a block. This is useful to provide a better user experience by updating the UI immediately. ```ts private _optimisticDestroy = (entityId: ID, col: number, row: number) => { const overrideId = uuid(); const realmPosition = getComponentValue(this.setup.components.Position, getEntityIdFromKeys([BigInt(entityId)])); const { x: outercol, y: outerrow } = realmPosition || { x: 0, y: 0 }; const entity = getEntityIdFromKeys([outercol, outerrow, col, row].map((v) => BigInt(v))); this.setup.components.Building.addOverride(overrideId, { entity, value: { outer_col: outercol, outer_row: outerrow, inner_col: col, inner_row: row, category: "None", produced_resource_type: 0, bonus_percent: 0, entity_id: 0, outer_entity_id: 0, }, }); return overrideId; }; ``` You can use the `uuid` function to generate a unique overrideId. Remember to return the overrideId so you can later delete it after the transaction is included in a block. It's good practice to remove the override, however because of a delay between the transaction being included in a block and Torii syncing, you might have a split second where the override is removed and the Recs being updated. This will cause your component (i.e. a building) to appear then disappear for a second before reappearing. --- file: docs/pages/development/collaborators.mdx meta: {} import Collaborators from "@/components/Collaborators"; # Collaborators --- file: docs/pages/development/contracts.mdx meta: {} # Contracts ## Rules of thumb * Note that every field you add in a model will raise the storage cost of each transaction that modifies the model. * Try to make models as small as possible, and re-use existing models as much as possible, every model and system that you add raises the size of the CASM, and there is a limit to the size of a declared contract on Starknet. * Keep systems stateless. Store your game state in models. * When implementing a new game logic, you will need to keep in mind that the game already has physics implemented, such as weight, position, movement, speed, etc. If creating something that needs to have any of this logic, re-use components so everything stays logical. ## Models ### Keys Use the `ID` type alias for keys that require a unique identifier. ### Model design entity\_id: u32 ### Implementations Where possible make traits for the models so they are stateless for unit testing. Always use generate trait where possible to minimise code. ```rust #[generate_trait] ``` ### Adding a model ```rust #[derive(Copy, Drop, Serde)] #[dojo::model] pub struct Structure { #[key] entity_id: ID, category: StructureCategory, created_at: u64 } ``` To test this model, you need to add it to the `contracts/src/utils/testing/world.cairo` file so it can be instantiated in the tests. ## Event models If you need some data to be available in the client, but it doesn't need to be stored onchain, you can use an event model. ```rust #[derive(Introspect, Copy, Drop, Serde)] #[dojo::event] #[dojo::model] pub struct ExampleEvent { #[key] id: ID, #[key] event_id: EventType, my_data_field: u8 } ``` ## Adding a system Design systems like this in the directory * SystemName * system\_name.cairo * tests.cairo `system.cairo` should include the implementation of the system like this. Things to note: * Interface at top of File * use of `super::IBuildingContract` to minimise imports and make it clear where the interface is defined. ```rust #[dojo::interface] trait IBuildingContract { fn create( entity_id: ID, building_coord: s1_eternum::models::position::Coord, building_category: s1_eternum::models::resource::production::building::BuildingCategory, produce_resource_type: Option ); } #[dojo::contract] mod production_systems { use s1_eternum::alias::ID; use s1_eternum::models::{ resource::resource::{Resource, ResourceCost}, owner::Owner, hyperstructure::HyperStructure, order::Orders, position::{Coord, Position, PositionTrait, Direction}, buildings::{BuildingCategory, Building, BuildingImpl}, production::{Production, ProductionRateTrait}, realm::{Realm, RealmImpl} }; #[abi(embed_v0)] impl BuildingContractImpl of super::IBuildingContract { fn create( world: IWorldDispatcher, entity_id: ID, building_coord: Coord, building_category: BuildingCategory, produce_resource_type: Option, ) { } } } ``` To test this system, you need to add it to the `contracts/src/utils/testing/world.cairo` file so it can be instantiated in the tests. --- file: docs/pages/development/getting-started.mdx meta: { "layout": "docs" } # Getting Started Eternum Development ## Prerequisites * [Dojo onchain game engine](https://book.dojoengine.org) v1.0.4 * [Node.js](https://nodejs.org/) * [pnpm](https://pnpm.io/) v9.12.3 * [Bun](https://bun.sh/) ## Setup Install Dojo via: ```bash curl -L https://install.dojoengine.org | bash ``` Eternum uses a pnpm workspace and bun for scripts to allow easy npm packages to be created. Install pnpm: ```bash npm install -g pnpm ``` Install project dependencies: ```bash pnpm install ``` Build shared packages: ```bash pnpm run build:packages ``` ## Development Scripts ### Development * `pnpm dev` - Start game development server * `pnpm dev:docs` - Start documentation development server * `pnpm dev:landing` - Start landing page development server ### Building * `pnpm build` - Build game client * `pnpm build:docs` - Build documentation * `pnpm build:landing` - Build landing page * `pnpm build:packages` - Build shared packages ### Testing & Linting * `pnpm test` - Run all tests * `pnpm lint` - Run linting * `pnpm format` - Format code * `pnpm format:check` - Check code formatting ## Contract Deployment Eternum supports multiple deployment environments: | Environment | Description | | ----------- | --------------------------- | | Local | For development and testing | | Slot | Staging environment | | Sepolia | Public testnet | | Mainnet | Production environment | ### Deploying to Local 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: ```bash # Start local game contracts pnpm run contract:start:local ``` ### Deploying to Sepolia To deploy the contracts to Sepolia testnet, run these commands in order: 1. Deploy game contracts: ```bash pnpm run game:migrate:sepolia ``` 2. Deploy season pass contracts: ```bash pnpm run seasonpass:deploy:sepolia ``` 3. Deploy season resources contracts: ```bash pnpm run seasonresources:deploy:sepolia ``` 4. Update TOML configuration: ```bash pnpm run toml:update:sepolia ``` 5. Start the indexer: ```bash pnpm run indexer:start:sepolia ``` 6. Deploy game configuration: ```bash pnpm run config:deploy:sepolia ``` ## Environment Variables For local development, create a file called `.env.local` in the client repository and add the following: ```bash VITE_PUBLIC_MASTER_ADDRESS="0x127fd5f1fe78a71f8bcd1fec63e3fe2f0486b6ecd5c86a0466c3a21fa5cfcec" VITE_PUBLIC_MASTER_PRIVATE_KEY="0xc5b2fcab997346f3ea1c00b002ecf6f382c5f9c9659a3894eb783c5320f912" VITE_PUBLIC_ACCOUNT_CLASS_HASH="0x07dc7899aa655b0aae51eadff6d801a58e97dd99cf4666ee59e704249e51adf2" VITE_PUBLIC_FEE_TOKEN_ADDRESS=0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7 VITE_PUBLIC_TORII="http://127.0.0.1:8080" VITE_PUBLIC_NODE_URL="http://127.0.0.1:5050" VITE_PUBLIC_GAME_VERSION="v1.0.0-rc0" VITE_PUBLIC_GRAPHICS_DEV=false VITE_PUBLIC_TORII_RELAY="/ip4/127.0.0.1/udp/9091/webrtc-direct/certhash/uEiDry6d-bDv3UdIS6L9VMugoiZnfwqOeXyFWm6jgKf7aTw" VITE_SOCIAL_LINK=http://bit.ly/3Zz1mpp VITE_PUBLIC_CHAIN=local VITE_PUBLIC_SLOT="eternum-prod" VITE_PUBLIC_VRF_PROVIDER_ADDRESS="0x0" VITE_PUBLIC_CLIENT_FEE_RECIPIENT=0x045c587318c9ebcf2fbe21febf288ee2e3597a21cd48676005a5770a50d433c5 VITE_PUBLIC_MOBILE_VERSION_URL=https://next-eternum-mobile.realms.world ``` This file is subject to change, please keep an eye on the repository for potential updates. ## Project Structure * [Client](https://github.com/BibliothecaDAO/eternum/tree/main/client) - React apps built with Vite * [Game](https://github.com/BibliothecaDAO/eternum/tree/main/client/apps/game) - Main game client with Three.js interface * [Landing](https://github.com/BibliothecaDAO/eternum/tree/main/client/apps/landing) - Landing page * [Game Docs](https://github.com/BibliothecaDAO/eternum/tree/main/client/apps/game-docs) - Game documentation * [Balancing](https://github.com/BibliothecaDAO/eternum/tree/main/client/apps/balancing) - Game balancing tools * [Contracts](https://github.com/BibliothecaDAO/eternum/tree/main/contracts) - Cairo/Dojo smart contracts * Game contracts * Season Pass contracts * Season Resources contracts * [Packages](https://github.com/BibliothecaDAO/eternum/tree/main/packages) - Shared libraries * [Core](https://github.com/BibliothecaDAO/eternum/tree/main/packages/core) - Eternum SDK * [React](https://github.com/BibliothecaDAO/eternum/tree/main/packages/react) - React hooks and components * [Config](https://github.com/BibliothecaDAO/eternum/tree/main/config) - Configuration and deployment scripts ## Core Dependencies * [@dojoengine/react](https://www.npmjs.com/package/@dojoengine/react) - React integration for Dojo * [@dojoengine/recs](https://www.npmjs.com/package/@dojoengine/recs) - Entity Component System * [@cartridge/controller](https://www.npmjs.com/package/@cartridge/controller) - Game controller integration * [Starknet.js](https://www.npmjs.com/package/starknet) v6.23.1 - StarkNet interaction * [Vite](https://vitejs.dev/) - Frontend build tool ## Stack Eternum Technology Stack * [Contracts](/development/contracts): built using the Dojo framework. This leverages the ECS model, allowing us to build quick and ship fast. It revolves around 3 units: Entities, Components (called Models in Dojo) and Systems (more about this in the Dojo book). * [Client](/development/client): our client is built using React with Typescript. We leverage Dojo by using DojoJS * [Eternum SDK](/development/sdk): our SDK contains most notably the getter and setter of the configuration of Eternum, the EternumProvider and most of the constants/types of the world that needed to be transcribed to Typescript. * [Torii](https://book.dojoengine.org/toolchain/torii): Dojo's indexer, optimized for that particular framework and well integrated into the stack. From our client, we have a gRPC subscription set up through DojoJS and recs to events. Events are fired in the contracts as a way for the indexer to know what's going on in the world. Every time an entity is created, updated, or deleted, an event is fired which updated Torii's record of the world. * [DojoJS and recs](https://github.com/dojoengine/dojo.js?tab=readme-ov-file#contributing-to-dojojs): DojoJS is the SDK that allows easy integration of a Dojo app into your client/node backend. Recs are DojoJS's way of exposing the state of the world to the client. This is done via queries to the Recs state using a simple query language, which doesn't support complex queries yet (e.g. joins, gt, lt, etc...). --- file: docs/pages/development/index.mdx meta: { "layout": "docs" } # Development * [Getting Started](/development/getting-started) * [Client](/development/client) * [Contracts](/development/contracts) * [SDK](/development/sdk) * [Collaborators](/development/collaborators) --- file: docs/pages/development/llm.mdx meta: { "title": "LLM" } # LLM These docs are experted at [https://eternum-docs.realms.world/llm.txt](https://eternum-docs.realms.world/llm.txt) for consumption by the LLM. --- file: docs/pages/development/sdk.mdx meta: {} # SDK ## Compiling From the root of the project, run: ```bash pnpm i && pnpm run build:packages ``` ## Structure This SDK contains most notably the getter and setter of the configuration of Eternum, the EternumProvider and most of the constants/types of the world that needed to be transcribed to Typescript. Everything considered as client agnostic should be in there. The main reason for this separation is to be able to re-use this logic in any other project that uses Typescript, e.g. new mobile client, data analytics app, etc. --- file: docs/pages/mechanics/achievements.mdx meta: {} # Achievements & Quests *WIP, update next week !* --- file: docs/pages/mechanics/agents.mdx meta: {} # Agents *WIP, update next week !* --- file: docs/pages/mechanics/key-concepts.mdx meta: { "title": "Key Concepts", "description": "The foundational mechanics of Eternum" } # 🔑 Key Concepts Eternum Key Concepts This section outlines the core mechanics and systems that form the foundation of Eternum's gameplay. ## Realms * **Limited Assets**: 8,000 unique and irreplaceable Realms serve as the foundation of Eternum, each has the ability to freely mint a Season Pass. * **Settling**: Players must burn a Season Pass to settle their Realm in the game world. * **Starting Materials**: Each newly settled Realm begins with a set of starting materials. * **Progression Path**: Realms can upgrade from Settlements → Cities → Kingdoms → Empires, unlocking additional buildable hexes and defensive army slots. * **Resource Production**: Each Realm can produce 1-7 different resources based on the original Realms NFT metadata. * **Wonders**: Realms with Wonders have a 20% production bonus and share this bonus with all Realms and Villages in a 12 tile radius. * **Hardcore Gameplay**: If a Realm’s defenses crumble, it can be claimed by another player—transferring gameplay rights to the conqueror. ## Villages * **Accessible Entry**: Villages can be established around settled Realms, offering a simple entry system for new players * **Scaling**: Up to 6 Villages per Realm, allowing for 48,000 Villages in Season 1 * **Limited Production**: Produce materials at 50% the rate of Realms and only have access to 1 resource type each * **Parent Realm**: Each Village is tied to a parent Realm and will pay bridging fees if moving materials out of the game * **Troop Restrictions**: Villages may only receive tokenized troops from their parent Realm, they cannot buy or be sent troops from any other source * **Simple Progression**: Villages have a limited upgrade path from Settlement to City * **Casual Gameplay**: Villages can be raided, but can’t be claimed by other players. ## Materials * **Materials Categories**: * **Food**: (Wheat, Fish) - essential for production, troop movement, and construction. * **Resources**: 22 different resource types, distributed based on rarity across both Realms and Villages. * **Troops**: Units with unique properties that can be assigned to armies. * **Donkeys**: Required for moving materials around the world, essential for logistics. * **Labor**: A new material in S1, allows players to build and produce in 'simple mode', acquired through burning resources. * **Ancient Fragments**: Found in game, critical for the construction of Hyperstructures. * **ERC20 Compatibility**: All materials (except Labor) can be traded freely and bridged out as ERC20 tokens through Realms. ## Buildings * **Construction Modes**: Two building systems available - Standard (resource-efficient) and Simple (labor-focused). * **Building Types**: * **The Keep**: Central structure automatically constructed when settling, provides baseline population capacity. * **Resource Buildings**: Specific buildings for each of the 22 resources, only requiring food to construct. * **Economic Buildings**: Includes Farms, Fishing Villages, Worker Huts, Storehouses, and Markets. * **Military Buildings**: Nine different buildings for producing three tiers of each troop type. * **Placement & Population**: Buildings require buildable hexes and population capacity, with more unlocked as Realms and Villages are upgraded. ## Production * **Production Modes**: Like buildings, production can be done in Standard (resource-intensive) or Simple (food and labor) mode. * **Production Types**: * **Food**: The only resources (Wheat, Fish) that can be produced without inputs. * **Resources**: Require combinations of other resources (standard) or labor (simple). * **Labor**: Produced by burning resources in the Keep, used for simple mode construction and production. * **Troops**: Essential for exploration and warfare, with higher tiers requiring lower tier troops as inputs. * **Donkeys**: One-time-use transport, consumed after a single journey. ## World Map * **Exploration System**: The world begins shrouded in mystery, with only the six Banks visible at season start; adjacent hexes are revealed when settling, and armies can explore to reveal new areas. * **Biomes**: 16 unique biome types procedurally generated across the map, each affecting combat effectiveness and troop movement. * **Movement & Stamina**: Armies move using stamina (regenerating at +20 per Eternum Day), with costs varying by biome and troop type; Knights, Crossbowmen, and Paladins each have different maximum stamina capacities. * **Exploration Mechanics**: Exploring costs 30 stamina per hex and reveals that area permanently to all Lords; exploring armies may discover resources or encounter world structures and agent armies. ## Military Eternum Military * **Army Composition**: Armies consist of a single troop type and tier (Knights, Crossbowmen, or Paladins). * **Troop Tiers**: T1, T2, and T3 troops with increasing combat strength. * **Combat Factors**: Battles resolved based on army damage, stamina modifiers, and biome effects. * **Army Types**: * **Field Armies**: Deploy onto the world map for exploration and conquest. * **Guard Armies**: Deployed to defense slots to protect structures. * **Stamina System**: Armies recover +20 stamina daily, with 30+ stamina needed for full combat effectiveness. * **Biome Effects**: Each troop type has advantages (+30% damage), disadvantages (-30% damage), or no change (0%) in specific biomes. * **Raiding Mechanics**: Armies can attempt to steal resources from structures without defeating defenders. * Success depends on the raiding army's damage relative to the combined guard armies. * Undefended structures can be raided without casualties. ## Tribes Tribes are player-formed organizations enabling cooperation and coordination. They can be made public (open to all) or private (invitation only) and allow players access to tribe-only features. Tribes are an early form of social structures within Eternum and rely on player-driven interactions including arrangements of alliances and declarations of war. ## Victory Conditions Eternum's seasonal gameplay culminates in victory through the accumulation of victory points earned through the construction and ownership of Hyperstructures. However, there are various achievement paths, with players earning recognition and rewards for various actions within the Season. --- file: docs/pages/mechanics/prize-pool.mdx meta: {} import { table } from "@/components/styles"; # 💰 Prize Pool ## Overview In Season 1 of Eternum, there are four prize categories with a total of: * 1,000,000 $LORDS tokens * 100,000 $STRK tokens > **Note:** All Season 1 prizes will be distributed manually by the development team (except for the agent rewards which > are collected directly in-game). Future seasons will implement automated distribution through game contracts, aligning > with decentralized gaming principles. ## Prize Categories ### 1. Victory Prizes **Total: 300,000 $LORDS + 50,000 $STRK** These prizes are awarded to top-performing tribes based on victory points. Additionally, 2.5% of all $LORDS bridging volume is collected as a fee and added to the prize pool, further increasing the total rewards available. #### How to Earn Victory Points Players can earn victory points by: * Contributing resources and labor to hyperstructure construction * Holding shares in completed hyperstructures to accumulate emitted victory points #### Distribution Once a player triggers the end of the game (or the game contract breaks), a snapshot of tribes, their members, and the victory point leaderboard is taken. Tribes will then be ranked by the cumulative number of victory points of their players. The top 10 tribes receive prizes based on this allocation:
Rank Allocation
1st Place 30%
2nd Place 18%
3rd Place 12%
4th Place 9%
5th Place 7%
6th Place 6%
7th & 8th Place 5% each
9th & 10th Place 4% each
#### Individual Distribution Within each tribe: * Tribe Leader: 30% of tribal allocation (regardless of their victory points) * Other Members: 70% split proportionally based on victory points contribution to the tribal total ### 2. Achievement Prizes **Total: 300,000 $LORDS** Players earn achievement points by completing quests—tracked inside your Cartridge profile, and accessible via your Cartridge wallet in-game. At the end of the season, this prize pool will be split proportionally amongst all players based on the number of achievement points they have accumulated. > **Note:** Achievement details, requirements, and point allocations will be withheld until the game begins to prevent > planned farming and extractive behaviors. Check the [Achievements section](/mechanics/achievements) for updates when > this information becomes available. ### 3. Daydreams Agent Prizes **Total: 250,000 $LORDS + 25,000 $STRK** #### Agent Rewards Each agent on the world map carries 10-35 $LORDS, obtainable through: * Collaboration (persuasion via chat) * Combat victory #### Special Achievement 25,000 $STRK will be distributed to the first 100 players who complete the 'Nexus-6' achievement by defeating 10 agent armies. ### 4. Eternum Arts & Emissaries Prizes **Total: 150,000 $LORDS + 25,000 $STRK** Awarded to players or groups making exceptional cultural, artistic, or creative contributions to Eternum. These awards can be given during or after the game at the developers' discretion. > **Note:** For more information, join our [Discord community](https://discord.gg/KJff5Ecp). ## Unused Prize Distribution If any prizes remain unallocated at the end of the game and prize distribution phase: * Unused $LORDS will be distributed through the veLORDS protocol * Unused $STRK will be retained by developers for future use --- file: docs/pages/mechanics/tribes.mdx meta: {} # 👥 Tribes Tribes are player-formed organizations enabling cooperation and coordination. They can be made public (open to all) or private (invitation only) and allow players access to tribe-only features. Tribes are an early form of social structures within Eternum and rely on player-driven interactions including arrangements of alliances and declarations of war. ## Formation & Membership * Any player can create a tribe * Set tribe name * Set to public or private * If private, send invites to player
Create Guild Flow to create tribe
--- file: docs/pages/mechanics/victory.mdx meta: {} import { ETERNUM_CONFIG } from "@/utils/config"; import { HyperstructureInitializationShardsTable, HyperstructureConstructionCostTable, HyperstructurePointsTable, getTotalHyperstructureCompletionPoints, HYPERSTRUCTURE_POINT_MULTIPLIER, } from "@/components/HyperstructureTable"; import { formatNumberWithCommas } from "@/utils/formatting"; # 👑 Victory Troops Moving Across Eternum ## Victory Points Ultimate victory in Eternum is measured by Victory Points (VP), earned exclusively through Hyperstructures. When a single player’s total VP reaches the season-defined threshold, they unlock the ability to End Season, immediately halting all further gameplay actions and cementing the final standings. Thus, the race to build, seize, and defend Hyperstructures is the decisive path that ultimately closes the chapter on each season of Eternum. ## Activating Foundations Each Hyperstructure is unique, requiring varying quantities of all 22 resources (and Labor) for completion. To activate a Hyperstructure Foundation, all **{ formatNumberWithCommas(ETERNUM_CONFIG().hyperstructures.hyperstructureInitializationShardsCost.amount)} Ancient Fragments** must be deposited into the structures's balance, and then the owner of the mine must explicitly activate the foundation to begin construction. Upon activation, the exact quantity required for each resource is randomly determined within predefined minimum and maximum ranges shown below: *Note: In addition to these resources, all Hyperstructures require a fixed contribution of 50,000,000 units of labor to complete construction.* ## Construction Victory Points The Lord initiating the Hyperstructure construction determines whether contributions can be made by all Lords (public) or restricted to members of their tribe (private). Contributions may be made directly from Realms or Villages without requiring donkeys for transport. As Lords contribute to the Hyperstructure, they are awarded with a proportional allocation of Victory Points. A total of **{formatNumberWithCommas(getTotalHyperstructureCompletionPoints())}** are available to claim throughout the construction process. ## Accumulation Victory Points Separately, and in addition to the victory points awarded at completion, the owner of the Hyperstructure begins to accumulate **{formatNumberWithCommas(Number(ETERNUM_CONFIG().hyperstructures.hyperstructurePointsPerCycle)/HYPERSTRUCTURE_POINT_MULTIPLIER)} victory points** for every second the structure remains under their control. These accumulating victory points can be shared among multiple Lords through a customizable share split, allowing the owner to distribute glory and reward cooperation. If a Hyperstructure is claimed by another Lord, future accumulated victory points are redirected to the new owner, who may similarly decide on sharing arrangements. ## Total Victory Victory points earned through construction contributions or accumulation cannot be lost once awarded. The first player to reach **{formatNumberWithCommas(Number(ETERNUM_CONFIG().hyperstructures.hyperstructurePointsForWin)/HYPERSTRUCTURE_POINT_MULTIPLIER)} total victory points** unlocks the ability to select the ‘End Season’ option, concluding the current game season. --- file: docs/pages/mechanics/world-structures.mdx meta: {} # 💠 World Structures ## Hyperstructures Hyperstructures are colossal edifices constructed atop ancient foundations hidden across Eternum, representing monumental achievements and symbols of dominance in the game world. Lords must uncover and claim Hyperstructure Foundations through exploration and combat, then invest substantial quantities of resources, labor, and ancient fragments to reconstruct these majestic towers. Successfully completing and controlling Hyperstructures is the primary path to victory in Eternum, making them ultimate strategic targets for ambitious Lords and powerful tribes alike. ### Hyperstructure Foundations These ancient, indestructible platforms are primarily scattered within the ring of Banks that surround the centre of the map. There is a chance of discovering a Hyperstructure Foundation each time an army explores an unrevealed hex, calculated using the following formula: ``` Discovery Chance = (0.975^x × y) - (z × 0.001) ``` Where: * **x** = the number of hexes from the centre of the map * **y** = the base chance of finding a Hyperstructure Foundation on the central hex (4%) * **z** = the number of Hyperstructure Foundations already discovered For example, if you're exploring a hex 100 tiles from the center and 5 foundations have already been discovered: ``` Discovery Chance = (0.975^100 × 4) - (5 × 0.001) = (0.079 × 4) - 0.005 = 0.316 - 0.005 = 0.311 or 31.1% ``` The result of this function means that Hyperstructure Foundations are generally only able to be found within 300 tiles of the centre of the map. As more are found, the chance of finding another diminishes and makes it even less likely to find one further from the centre. Lords are therefore incentivised to explore early in the season to discover these key components for victory. Hyperstructure Foundations and Hyperstructures both have four defense slots to deter attacks from rival Lords. However, like other world structures they are not able to maintain any field armies. ## Fragment Mines Fragment Mines are rare, ancient nodes scattered throughout the unexplored hexes of Eternum. They produce valuable ancient fragments, a vital resource needed for constructing Hyperstructures. Once discovered by an exploring field army, a Fragment Mine must first be claimed by defeating its resident bandit forces. Only then can Lords begin extracting the mysterious shards hidden within. Each mine contains a finite number of ancient fragments and will permanently cease production when depleted. The chance of discovering a Fragment Mine when exploring an unrevealed hex is static at 1 in 150, or 0.67%. Mines can contain between 300,000 and 3 million ancient fragments in incremental amounts (i.e. 300k, 600k, 900k…). It will take some time for the full amount of ancient fragments to be produced by the structure, and the more that the mine contains, the longer it will take. Lords will need to ensure that their mines are adequately defended from rivals, however they only have one defense slot to support a guard army. ## Quest Tiles *WIP, update next week !* --- file: docs/pages/overview/bridging.mdx meta: {} import { Callout } from "vocs/components"; # Bridging in Materials *WIP, update next week !* --- file: docs/pages/overview/controller.mdx meta: {} import { importantNote } from "@/components/styles"; *** title: Cartridge Controller description: Using the Cartridge Controller in Eternum *** # Cartridge Controller The Cartridge Controller is a gaming-focused smart contract wallet that makes Web3 gaming accessible and transactionless via Session Keys. You must have a controller to play Eternum. To find out more about the controller, read their documentation [here](https://docs.cartridge.gg/controller/overview). Controller ## Using the Controller in Eternum If you are playing with a Village, you can play Eternum purely using the controller, However, to use Season Passes and **$LORDS**, you will need to transfer them to your controller from Starknet using your ArgentX or Braavos wallet. To use the controller, you can either log in or sign up when starting Eternum. To create a controller, simply input a username and sign up. Controller There are multiple ways to securely sign up: * **Passkey**: Passkeys are a modern and secure way to authenticate users without passwords. They use public key cryptography and are stored by platform authenticators such as Face ID, Touch ID, or password managers like Bitwarden or 1Password. * **Metamask**: Connect using your MetaMask wallet. * **Rabby**: Connect using your Rabby wallet. * **Discord**: Connect using your Discord account. * **Wallet Connect**: Connect using a wide range of wallets.

⚠️ IMPORTANT NOTE

If you are choosing Passkey on a Windows PC that does not have Bluetooth functionality, you will need to use a password manager to set up your controller. There is a known issue in which Windows will ask for a Windows Hello or external security key (USB) that wasn't used in the controller setup, preventing you from being able to sign in.

Once this is complete, you will be able to 'Create Session'. This enables all of the game functions in a transactionless session. ## Transfer Season Pass to Controller Transfer a season pass to your controller easily [here](https://empire.realms.world/season-passes). Connect your controller by selecting the controller icon located at the top of the page and select the passes to transfer.
Controller Icon
## Controller Key Features ### Simple and Secure * Passwordless authentication using Passkeys for one-click onboarding * Self-custodial embedded wallets that put players in control * Built-in security features to protect player assets ### Designed for Seamless Gameplay: * Session keys eliminate transaction popups during gameplay * Secure transaction delegation lets games submit actions on behalf of players * Free transactions through the Cartridge Paymaster so players focus on playing ### Supported Platforms and Passkey Backup Passkeys are well-supported across modern platforms. You can use them with device authenticators directly or pair them with a mobile device using the QR flow. For those without device authenticators, several password managers like Bitwarden (free), 1Password, and Dashlane support Passkeys. #### Backing Up Your Passkey * Apple devices: Passkeys are backed up along with your keychain in iCloud. * Android devices: Passkeys are backed up with your Google account. * Windows devices: Passkeys are created and managed as part of your Windows account. #### Using Controller Across Devices Currently, Controller availability across devices depends on how the Passkey was created. Some platforms automatically synchronize them across devices for seamless use. For cross-platform usage (e.g., Apple and Android), synchronization might not be available. For now, we recommend using a Password Manager or the QR flow to support this configuration. Multi-credential support is coming soon to enhance device compatibility. Should you have any issues with the controller or require support, you can join the Cartridge Discord [here](https://discord.gg/cartridge). --- file: docs/pages/overview/disclaimer.mdx meta: {} import { formatNumberWithSpaces } from "@/utils/formatting"; import { ETERNUM_CONFIG } from "@/utils/config"; import { Callout } from "vocs/components"; import { HYPERSTRUCTURE_POINT_MULTIPLIER } from "@/components/HyperstructureTable"; # Disclaimer and Risk Acknowledgment Important Disclaimer – Please Read Carefully
By participating in Eternum, you fully acknowledge and accept the following terms and conditions.
## Immutable Contracts Eternum is governed entirely by **immutable** smart contracts. Once deployed, the game’s rules and mechanics **cannot be altered, updated, or reversed** by the developers, the DAO, or any other party. These smart contracts have **not** been audited. Players should fully understand the implications of interacting with the system and assess the risks involved. ## Risk of Loss All transactions and gameplay actions in Eternum are **final**. There are no mechanisms for refunds, reversals, or compensation. You acknowledge the **risk of loss of funds** and accept that you bear sole responsibility for any financial impact incurred. A season of Eternum concludes when a single player achieves the required **{formatNumberWithSpaces(Number(ETERNUM_CONFIG().hyperstructures.hyperstructurePointsForWin)/HYPERSTRUCTURE_POINT_MULTIPLIER)}** Victory Points and clicks the "End Season" button. At this point: ### ⚠️ SEASON END CRITICAL INFORMATION When the season ends, **ALL in-game actions are DISABLED** except: * transfer materials * deposit resource arrivals * retrieve LP positions * cancel market orders * bridge materials out of the game 1. **48-Hour Withdrawal Window (starts immediately when "End Season" is clicked)** * Starting from the exact moment the season ends, you have **48 hours** to bridge out **ALL $LORDS** tokens and bridgeable materials from your Realms' balance 2. **After 48 Hours** * Any remaining **$LORDS** tokens and **Materials** will be **permanently locked** * These assets **CANNOT** be recovered under any circumstances 3. **Score Registration** * Players have **4 days** to register their scores * Registration is **MANDATORY** to be eligible for prizes * While registration has a deadline, prize claiming does not Please refer to the documentation for detailed instructions on the bridging process during active gameplay. ## No Recourse By participating in Eternum, you waive all rights to claims or recourse against the developers, the DAO, or any other associated entities for any losses or disputes arising from your participation in the game. ## Acknowledgment of Terms Participation in Eternum constitutes your agreement to these terms, as well as all other terms and conditions outlined in the game’s documentation. --- file: docs/pages/overview/entry.mdx meta: { "title": "Game Entry & Participation", "description": "How to join and participate in Eternum seasons" } # Game Entry & Participation ## Season Access ### Realms NFT Holder Entry Season entry Realms NFT holders have the exclusive benefit of free entry into each season of Eternum through the minting of Season Passes. Each Season Pass is unique to the Realm it was minted from and allows the Season Pass holder to initiate a settling transaction to enter the game. To do this, Lords must first transfer the Season Pass to their Cartridge Wallet. * Mint your pass [here](https://empire.realms.world/mint) ### Non-Realm Holder Entry #### Marketplace Should a Realm NFT holder decide not to use their Season Pass, they can transfer it or sell it on the [Season Pass Marketplace](https://empire.realms.world/trade), providing avenues for non-Realm holders to acquire Season Passes to participate in the game. #### Villages Villages are modest outposts that can be established around settled Realms, offering an accessible entry point into Eternum. Villages have some restrictions, but offer a low-cost taste of Eternum gameplay to newcomers while also acting as an avenue for established players to expand their production. Each Realm can support up to six surrounding Villages, allowing for up to 48,000 Villages in Season 1. For detailed information about Villages, including settling mechanics, resource production, and progression paths, visit our [Villages guide](/mechanics/realm-and-villages/villages). ### Continuous Play As long as you maintain in-game Realm or Village ownership, you can actively participate without additional entry fees. Engage in the market using **$LORDS** tokens and enjoy uninterrupted gameplay until the end of the season. ### Realm Control Mechanics ⚔️ **Takeover System** Settled Realms can be conquered within a Season, transferring control to the conqueror. Gameplay rights are restored at the start of the next Season, as the Realm NFT owner will be able to mint a new Season Pass for the new Season. 🛡️ **Village Security** Unlike Realms, Villages cannot be conquered by other players, making them an ideal choice for casual players seeking a lower-risk gameplay experience. Villages can still participate in most gameplay activities - producing resources, training troops, and engaging in trade - but at 50% the rate of Realms. This security, combined with their accessibility and limited progression path from Settlement to City, makes Villages perfect for new players looking to learn the game mechanics without the constant threat of conquest. --- file: docs/pages/overview/introduction.mdx meta: { "title": "Introduction to Eternum", "description": "Understanding the World of Eternum" } # Welcome to Eternum Eternum Landscape ## The Lords Have Arrived Across treacherous open seas and endless horizons, the legendary Galleon has finally arrived upon the lands of Eternum, bearing the brave and ambitious souls known as Lords. Having journeyed for years, driven by dreams of power, glory, and untold riches, these Lords have finally set foot upon their destination—a mysterious landscape ripe with ancient secrets and unclaimed territories. Now, as the mists clear, each Lord must forge their own path in this land of promise and peril. ## Establish Your Foothold In Eternum, your task begins by settling a Realm or Village—a seat of power from which your destiny unfolds. Select your strategic position upon the vast, unexplored, procedurally generated world map and secure vital materials to fuel your expansion. Grow your influence through shrewd economic choices, military strategy, and diplomatic maneuvering, nurturing your humble settlement into a mighty empire. Yet, strength alone is insufficient, for Eternum is fraught with dangers—bandits roam unchecked and rival Lords covet your lands. Armies must be raised, resources guarded, and alliances carefully chosen. Only through wise leadership and vigilant defense can your Realm flourish and endure. ## Find Your Glory Scattered throughout Eternum are the foundations of ancient Hyperstructures—colossal relics from an ancient civilization far surpassing all known powers. Some unknown, cataclysmic event once destroyed all of these structures and plunged the land into darkness and disorder. Lords who successfully reclaim, rebuild, and control these Hyperstructures will assert their dominance over the vast continent, with one player eventually claiming ultimate victory. However, Eternum's expansive world offers glory beyond mere conquest; whether through trade mastery, military prowess, diplomatic excellence, or simply the joy of exploration, every Lord has the freedom to find their own path to greatness. ## Core Pillars Eternum is built on three core pillars: * **Player‑Driven Economy** – Every resource harvested and trade executed originates from player choices. Collective actions shape supply, demand, and market prices across Eternum. * **Strategic Depth** – Success hinges on efficient production, calculated territorial expansion, and well‑timed military engagements. Foresight and adaptability separate thriving empires from conquered realms. * **Community Governance** – Power grows through tribes, alliances, and diplomatic pacts. Coordinated groups can tip regional conflicts and shift the balance of power continent‑wide. ## Game Features Eternum Game Features Eternum offers high-stakes gameplay across defined seasons, set on an infinite, procedurally generated hexagonal map. Players can pursue total victory or explore freely, with a focus on diplomacy, resource management, and tactical decisions. ### Game Progression * **Early Game**: Establish your Realm, build infrastructure, and secure resources. * **Mid Game**: Expand influence, forge alliances, and develop military capabilities. * **End Game**: Engage in epic battles, large-scale diplomacy, and resource warfare. ### Core Elements * **Seasons** – Freestanding campaigns with fresh rules and victory conditions; in-game assets can be bridged forward, however, allowing committed Lords to carry hard‑won progress between chapters. * **World Map** – An infinite, procedurally generated hex grid dotted with Banks, Fragment Mines, and Hyperstructure Foundations, facilitating exploration and conflict. * **Resources & Economy** – 22 tokenized resources—plus food, labor, donkeys, and troops—are traded with a player owned and operated economy. * **Military Power** – Raise armies and battle strategically—considering stamina, troop tiers and biome effects, to seize territory and capture the Realms of your rivals. * **Social Structure** – Forge tribes and alliances to pool resources, coordinate conquests, and shape regional politics through diplomacy or decisive force. ## Vision Explore our [detailed vision document](https://github.com/BibliothecaDAO/world-guide/blob/main/realms-world-guide-v1.0.0.pdf) ## Eternum as a Platform Eternum lays the foundation for future development with open architecture, community extensions, and a focus on innovation. It serves as a benchmark for onchain gaming capabilities. --- file: docs/pages/overview/links.mdx meta: { "title": "Quick Links", "description": "Essential links for Eternum" } # Quick Links ## Play & Learn * [Play Eternum](https://eternum.realms.world/) - Start your journey * [GitHub](https://github.com/BibliothecaDAO/eternum) - Explore the code * [Season Pass](https://empire.realms.world/) - Mint your season pass * [Season Pass Marketplace](https://element.market/starknet) - Buy your Season Pass on Element * [Realms Marketplace](https://market.realms.world/) Buy a Realm NFT ## Community * [Realms World](https://realms.world/) - The DAO behind Eternum * [Discord](https://discord.gg/realmsworld) - Join our discord * [Twitter](https://x.com/LootRealms) - Follow the community * [Twitter](https://x.com/RealmsEternum) - Follow for Eternum updates --- file: docs/pages/overview/lords.mdx meta: {} # $LORDS Token ![LORDS Token](/images/resources/37.png) $LORDS is the native token of the Realms Autonomous World. It serves as the primary currency within the Eternum ecosystem, enabling economic activity and resource movement throughout the game. ## Token Details * **Name**: LORDS * **Network**: Starknet * **Contract Address**: [0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49](https://starkscan.co/token/0x0124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49) * **Total Supply**: 300,000,000 LORDS ## $LORDS in Eternum * **Trading Currency**: $LORDS serves as the primary currency for trading within Eternum's Automated Market Maker (AMM) and the peer-to-peer Orderbook, allowing Lords to facilitate trades and manage their economic interactions. * **Transport System**: $LORDS are essential for producing donkeys, the backbone of Eternum's transport system, effectively acting as the "gas" token required for facilitating all in-game logistics and resource transfers. ## How to get $LORDS ### In Eternum Within Eternum, Lords can obtain $LORDS through various methods: * Selling surplus materials through the in-game AMM or Orderbook * Defeating or negotiating with AI agents * Discovering special quest tiles scattered throughout the Eternum world * Achieving objectives in other Realms Ecosystem games ### On Starknet Outside of gameplay, $LORDS can be acquired on the Starknet network through decentralized exchanges (DEXs). #### Recommended Exchanges | Exchange | Compatibility | Notes | | --------------------------------------------------------------------------------- | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | [Ekubo](https://app.ekubo.org/?outputCurrency=LORDS\&amount=1\&inputCurrency=ETH) | ✅ Supports Cartridge Controller | Swap directly with your game wallet | | [Avnu](https://app.avnu.fi/en/eth-lords) | ❌ No Cartridge Controller support | Requires an [Argent](https://x.com/argentHQ) or [Braavos](https://x.com/myBraavos) wallet first, then transfer to your controller | #### Step-by-Step Guide For new users, follow this [comprehensive guide](https://x.com/lordcumberlord/status/1920650310621495350) that covers: 1. Setting up a Braavos wallet 2. Bridging ETH to Starknet via Orbiter 3. Swapping ETH for STRK and LORDS 4. Creating a Cartridge Controller (if needed) 5. Transferring LORDS to your game wallet --- file: docs/pages/overview/resource-addresses.mdx meta: {} import { ResourceAddresses } from "@/components/ResourceAddresses"; # Resource Addresses --- file: docs/pages/overview/world-physics.mdx meta: {} import { Biomes } from "@/components/Biomes"; # 🌪️ World Physics Troops Moving Across Eternum In Eternum, every action is governed by onchain physics—immutable rules encoded directly onto the blockchain, ensuring fairness, transparency, and absolute consistency for all Lords. Here, code is law; no exceptions exist outside the boundaries set by these protocols. ## Seasons Welcome to Season 1. Eternum, in its current form, comes and goes in seasonal launches. Each season marks a special time of iteration and advancement in this new form of onchain gaming and may be likened to the movement of tides. Once a season launches, the tide flows out and the Lords arrive to build their castles in the sand. Nothing, not even the developers, can stop or alter the course of a season once launched, and players are free to take any action that the rules of the game allow. Once a Lord accumulates the requisite Victory Points, they unlock the ability to end the season—signalling the tide to come back in and put an end to the Lords' fun… until next season. ## Time Time within a season is measured in Eternum Days, and each is precisely one hour in length. One day ends and the next begins at the top of every real-world hour. ## Materials In the world of Eternum, everything holds tangible, tokenized value—be it food, labor, resources, troops, or even the trusty donkeys required for transport. These fungible tokens are generated within Eternum, but can be bridged in and out of the game through Realms or Banks and traded on external marketplaces. All materials have an associated weight, which determines the amount that can be stored and the number of donkeys required to move the goods from place to place. Note: This document will use 'materials' to refer to all tangible assets - i.e. food, resources, ancient fragments, labor, troops, and donkeys. This is not to be confused with 'resources', which specifically refers to the 22 resources ranging from wood through to dragonhide. Tokens such as $LORDS and $STRK are not considered materials. ## Cost of Production With the exception of food, nothing in Eternum is produced for free; every unit of production demands an input—food, labor, resources, or some combination thereof. Lords must consider these costs and effectively balance trade to ensure they can survive the season. ## Travel Transporting materials across the vast lands of Eternum takes time… and donkeys. Every transfer of materials between locations relies exclusively on these speedy and dependable creatures. These donkeys are single-use, consumed upon completing their journey, making continuous acquisition vital for maintaining trade routes and strategic flexibility. Moving tokenized troops through the donkey network may be fast, but to dominate your enemies and ensure security of your lands, troops must be deployed to an army. Once troops are deployed, they cannot be retokenized, and are doomed to their fate within this season of Eternum. Once troops are deployed to the world map, their mobility is governed by stamina, limiting the distance they can travel and the number of actions they can perform. Travelling between hexes or initiating an attack expends valuable stamina points, but they are partially replenished each Eternum Day. ## Hexes Eternum unfolds across an infinite, procedurally-generated, hexagonal-tile world map. This represents the physical space of the world and defines spawn locations, biome distribution, and distances between Realms, Villages, and other world structures. This is the layer in which armies explore, fight, raid and capture, and is explorable in the 'World' view. Zooming in, each Realm or Village hex is broken up into smaller hexes which define the local area and building placement (hexes within hexes!). Here in the 'Local' view, Lords can plan out their building placement and closely manage their population, supply chain, and production. ## Biomes Each hexagonal tile on the world map possesses a distinct biome. Each troop type responds uniquely to these varied terrains, gaining or losing combat efficiency and stamina based on their affinity with different biomes. Successful Lords must master biome knowledge to exploit strategic advantages or avoid costly missteps. ## The Known World Initial scouting reports have revealed some key details about the world: * Six ancient Banks have been located, distributed evenly in a ring around the central point. These structures are perfectly situated and designed to facilitate trade in this new world. Sufficiently prepared Lords may be able to capture these lucrative structures, but will likely make themselves a target in the process. * An unknown number of Hyperstructure Foundations are scattered around the unexplored world. These are rare, key locations that must be claimed by Lords in order to rebuild the ancient Hyperstructures that are critical to achieving victory. They are more likely to be found in the central regions of the map, and as each subsequent Hyperstructure Foundation is discovered, the likelihood of finding another one in the world diminishes. * Hundreds of mines are also strewn across the landscape. Prospectors have theorized that these mines are hotspots for finding ancient fragments needed to reconstruct key sections of the Hyperstructures. * Bandits roam throughout the lands and have established lairs in each of the key locations described above. The newly arrived Lords will need to overcome these lawless brigands to bring order and control back to Eternum. * Mysterious hooded figures lurk in the mist, offering to play a strange card game with any who wish to try their luck. --- file: docs/pages/mechanics/military/armies.mdx meta: {} import { RealmDefenseSlotsTable, WorldStructureDefenseSlotsTable } from "@/components/DefendingArmies"; import { ETERNUM_CONFIG } from "@/utils/config"; import { formatNumberWithCommas } from "@/utils/formatting"; # ⚔️ Armies Eternum World Map In Season 1, individual armies consist of a single troop type and tier—streamlining combat strategy and simplifying interactions on the world map. Each hex can host only one army, so Lords must carefully manage their positioning and engagement opportunities. Each Realm and Village has a limited number of guard and field armies The number of armies can be increased by upgrading the Realm / Village level as explained in the [Realms](/mechanics/realm-and-villages/realm) section. Each military building constructed on a Realm or Village also increases total field armies by 1 (up to a maximum of **+{ETERNUM_CONFIG().troop.limit.explorerMaxPartyCount-4}**). Lords can deploy armies from the Military tab in the Local view. The maximum size of an army is **{formatNumberWithCommas(ETERNUM_CONFIG().troop.limit.explorerAndGuardMaxTroopCount)}**. ### Field Armies Field armies are used to project force on the world map, explore unknown territories, patrol borders, defend key areas, or march against your enemies. These armies are deployed onto one of the six hexes surrounding their parent Realm on the world map. If all hexes adjacent to the Realm are occupied, a field army cannot be deployed. Once deployed, these armies occupy a hex and traverse the world map based on the conditions outlined in the World Map & Movement section. Lords may direct their field armies to attack another army or structure on any adjacent hex by selecting the army with left-click, then right-clicking the target hex. When attacking a structure, the field army will engage in combat against any guard armies present.
Create Army Flow to create field army in the client
### Guard Armies Guard armies do not appear on the world map; instead, they occupy defense slots visible in the Military tab of the Local view. When in the World view, Lords can observe the defensive capabilities of any structure by selecting a hex and opening up the Details tab. Unlike Realms and Villages, world structures have a static number of defence slots:
Create Army Flow to create guard in the client
When attacked, guard armies are targeted sequentially starting from the outermost occupied slot. If a guard army is destroyed, the slot that it occupied becomes unavailable for reinforcement for **{Math.floor(ETERNUM_CONFIG().troop.limit.guardResurrectionDelay / 3600)} hours**. Once all guard armies are defeated, the structure becomes vulnerable to being claimed by an adjacent field army (with the exception of Villages, which cannot be claimed). Lords can also direct their guard armies to launch attacks against adjacent hexes by selecting their structure on the worldmap, then right-clicking the target hex.
Attack field army Attack field army with structure
--- file: docs/pages/mechanics/military/damage.mdx meta: {} # 💥 Damage import { DamageCalculation } from "@/components/DamageCalculation"; ## Damage Overview Damage is defined as the number of casualties dealt by one army against the other in an instance of combat. When combat is initiated (i.e. one army attacks another), damage for both the attacking and defending army is calculated based on the number of troops, troop tier, stamina, and biome bonuses. Damage is then simultaneously inflicted by both sides. Battles can last multiple rounds (requiring multiple combat instances) depending on the relative strength and number of troops involved. Armies with higher-tier troops deal significantly more damage. However, careful management of troop numbers, stamina, and biome positioning can enable lower-tier armies to overcome stronger opponents. --- file: docs/pages/mechanics/military/raiding.mdx meta: {} import { ETERNUM_CONFIG } from "@/utils/config"; import { RAIDABLE_RESOURCES } from "@bibliothecadao/types"; import { resource } from "@/components/styles"; import { RaidableResources } from "@/components/RaidableResources"; import { importantNote } from "@/components/styles"; # 💰 Raiding Raiding allows field armies to attempt theft of valuable resources directly from an adjacent target structure, without first having to battle through enemy guard armies. Lords can direct their armies to complete this action by selecting the 'raid' action when attacking an enemy structure. ![Raiding interface showing an army preparing to raid a structure](/screenshots/raiding.png) ## Raid Requirements Before attempting a raid, your army must meet the following requirements: * Have at least **{ETERNUM_CONFIG().troop.stamina.staminaAttackReq}** stamina * Be adjacent to the target structure * Structure must contain raidable resources ## Raidable Materials Raidable materials are stolen based on rarity, with the most valuable taken first. Rarer materials are prioritized during raids:

⚠️ IMPORTANT NOTE

No materials are safe from pillagers, $LORDS tokens can be raided as well

## Raid Success The success chance of a raid is determined by the following conditions: | Condition | Raid Success Chance | | -------------------------------------------------------------------------- | --------------------------------------------- | | Raiding army's total damage \< **50%** of combined guard armies' damage | **0%** | | Raiding army's total damage > **200%** of combined guard armies' damage | **100%** | | Raiding army's damage between **50%** and **200%** of guard armies' damage | Scales proportionally from **0%** to **100%** | | No guard armies present | **100%** (automatic success) | Upon a successful raid, resources are transferred directly to the raiding army's inventory up to its carrying capacity. It is only possible to steal food, resources, and ancient fragments from a raid, tokens such as $LORDS and $STRK can only be stolen from another player by claiming a Realm into which tokens have been bridged or transferred. ## Damage in Raids At the conclusion of a raid, regardless of whether it was successful or not, damage is calculated for both the raiding army and the guard armies. This damage is significantly reduced by a raid damage modifier, simulating the concept of a pillaging and looting event as opposed to a full-scale battle. The raid damage modifier reduces damage to **{ETERNUM_CONFIG().troop.damage.damageRaidPercentNum/100}%** of that which would be applied in an attack action. Damage from a raiding action is calculated according to the following rules: * The raiding army troop total is split evenly across each guard army. * A standard combat damage calculation is then applied to each combat instance. * Each damage number is multiplied by the raid damage modifier before casualties are applied. ### Example: Consider **1000** raiders attacking a structure with two occupied guard slots: * Slot 1: **400** troops * Slot 2: **600** troops The raiding army is split into two groups of **500** troops, each attacking one guard slot. Assume that the damage calculations result in the following: * Raiding army deals **180** damage to Slot 1 and **150** damage to Slot 2 = **330** total damage * Guard armies deal **120** damage from Slot 1 and **200** damage from Slot 2 = **320** total damage. Applying the raid damage modifier, actual losses become: * Guards: Slot 1 loses **36** troops (**{ETERNUM_CONFIG().troop.damage.damageRaidPercentNum/100}%** of 180), Slot 2 loses **30** troops (**{ETERNUM_CONFIG().troop.damage.damageRaidPercentNum/100}%** of 150). * Raiders: Lose **64** troops total (**{ETERNUM_CONFIG().troop.damage.damageRaidPercentNum/100}%** of 320). ## Raid Outcomes After a raid attempt, one of two outcomes will occur: 1. **Successful Raid** * Resources are transferred to your army's inventory * Resources are limited by your army's carrying capacity * Both armies suffer reduced casualties (**{ETERNUM_CONFIG().troop.damage.damageRaidPercentNum/100}%** of normal combat damage) * Your army's stamina is reduced by **{ETERNUM_CONFIG().troop.stamina.staminaAttackReq}** 2. **Failed Raid** * No resources are stolen * Both armies still suffer reduced casualties (**{ETERNUM_CONFIG().troop.damage.damageRaidPercentNum/100}%** of normal combat damage) * Your army's stamina is still reduced by **{ETERNUM_CONFIG().troop.stamina.staminaAttackReq}** The outcome is determined by comparing your army's total damage output against the combined damage output of all guard armies present. If no guard armies are present, the raid automatically succeeds. --- file: docs/pages/mechanics/military/stamina-and-biomes.mdx meta: {} import { BiomeCombat } from "@/components/BiomeCombat"; # ⚡ Stamina & Biome Effects ## Stamina Stamina is a vital resource governing the mobility and effectiveness of armies. Each deployed army possesses a maximum stamina value determined by its troop type and tier as explained above. Field armies expend stamina when moving, exploring unknown hexes, or engaging in combat against other armies and structures. Guard armies only expend stamina when attacking armies in hexes adjacent to their structure. During combat, stamina impacts army combat effectiveness: ### Attacking Army (the army initiating combat) Attacks require a minimum of **30 stamina**, so armies with less than 30 stamina cannot initiate an attack. Each additional stamina point above this threshold grants a **1%** damage bonus, up to a maximum of **+30%** damage at **60 stamina**. Additional stamina spend is not optional, so attacking armies will use all available stamina up to a maximum of **60** for any one attack. If the attacking army destroys the defending army, they gain **+30 stamina**. ### Defending Army (the army being attacked) Defending armies rely on having stamina available to maintain full combat effectiveness. When attacked, defending armies incur a **1%** damage reduction for every stamina point below **30**. For example, if an army is attacked while they have **10 stamina**, they would deal **-20%** damage to the attacking army. The maximum penalty is **-30%** damage if stamina is completely depleted. Successfully defending an attack does not deplete stamina. Lords should manage their armies' stamina carefully, ensuring they retain enough reserves to remain effective against unexpected attacks. ## Biomes (Combat Effects) The combat effectiveness of different troop types is impacted by the biome on which the defending army is located when engaging in battle. Armies can gain either a combat advantage (**+30%** damage), disadvantage (**-30%** damage), or no effect, depending on their affinity with a particular biome. To summarise these combat modifiers for each troop type: ⚔️️ ️️️**Knights** excel in forests, leveraging cover and mobility, but suffer reduced effectiveness in deserts, beaches, and snow-covered regions where their heavy armour and weapons can make it difficult to move on the soft ground cover. Knights are equally advantaged, disadvantaged or not affected across all biome types. 🏹 **Crossbowmen** benefit from open seas and unstable terrains (such as beaches and snow), where they can remain static and make the most of their ranged capabilities. However, they will be disadvantaged in flat, open terrain with no cover or opportunity for concealment. Crossbowmen are the least advantaged, but also the least disadvantaged by biome modifiers of the three troop types. 🛡 ️**Paladins** dominate open, flat terrain where mounted units thrive, but are hindered in dense forests and on open water where their mounted capabilities are negated. They are the most advantaged, but also the most disadvantaged troop type. In combination with the biome effects on stamina use, Paladins are less versatile than other Knights or Crossbowmen, but are devastatingly effective in the right situations. **Note: The scorched biome applies +30% damage to all troop types, representing the additional casualties sustained from battling in an inhospitable environment.** --- file: docs/pages/mechanics/military/troop-tiers.mdx meta: {} import { TroopTiers, TroopTierDamageStats } from "@/components/TroopTiers"; import { MaxStaminaTable } from "@/components/TroopMovementTable"; # 🛡️ Troop Tiers Troops in Eternum come in three distinct tiers: T1, T2, and T3. Tier 1 (T1) represents basic troops, while T2 and T3 troops are more advanced, offering significantly increased combat strength and stamina. Higher-tier troops are produced by constructing specialized buildings that require rare resources and lower-tier troops as inputs: * Two T1 troops combine to produce one T2 troop * Two T2 troops combine to produce one T3 troop Each troop tier provides escalating advantages in terms of damage output and stamina. --- file: docs/pages/mechanics/realm-and-villages/buildings.mdx meta: {} import BuildingCard from "../../../components/BuildingCard"; import { formatNumberWithCommas } from "@/utils/formatting"; import { CapacityConfig } from "@bibliothecadao/types"; import { ETERNUM_CONFIG } from "@/utils/config"; # 🪓 Buildings ## Standard vs. Simple Season 1 offers two building systems. Lords can switch between standard and simple building modes at any time by clicking the toggle at the top of the construction tab. ![Simple Mode Production](/gifs/simple-mode.gif) Note: Some buildings only require food to construct. Farms, Fishing Villages and Resource Buildings have the same construction cost in both standard and simple building modes. ### Standard Mode This is the classic Eternum experience. Construction requires a combination of labor and a particular set of resources as building materials. Standard mode is more complex as it involves a greater number of materials in storage, however it is far more efficient overall. This building mode is generally designed for those with multiple Realms and/or Villages working with economies of scale. ### Simple Mode This mode allows players to utilize Labor, a new material for Season 1, as the singular input for construction. Simple mode greatly improves accessibility and simplifies gameplay overall, but is much less efficient in both time and materials. This would be the preferred system for players with smaller holdings and limited access to a variety of resources. ## Placement & Population ### Placement The construction tab can be accessed in the Local view. Buildings can be constructed on any buildable hex of a Realm or Village, provided the owner has the requisite materials and population capacity. Buildable hexes are defined by the upgrade level (i.e. Settlement, City, Kingdom, or Empire) and are visible as hexes with patches of bare, prepared earth. Most buildings can be constructed in either simple or standard mode, which toggled at the top of the construction tab. ![Building Placement](/gifs/construction.gif) ### Population Population is the total population utilised by the currently constructed production buildings on a Realm or Village, while the population capacity is the maximum available population with which to construct production buildings. Worker Huts can be built to increase population capacity, while all other buildings require population capacity to be available in order to construct. Lords must balance their construction to ensure there is enough population capacity available to construct their desired production buildings. ## Building Types ### The Keep Settling any Realm or Village will automatically construct a structure in the centre of your buildable hexes, known as the Keep. This structure represents your seat of power and the central point of governance, and facilitates key functions such as Realm/Village upgrades and Labor production. This building cannot be destroyed and provides a baseline population capacity of 5. ### Resource Buildings There is a specific resource building for each of the 22 resources in the game, so Lords will require separate resource buildings if they wish to produce more than one type of resource. These buildings only require food to construct and have the same requirements in simple and standard mode.
### Economic Buildings These buildings define the utility of a Realm or Village, including food production, donkey production, population capacity, and storage capacity. All of these buildings can be constructed in either standard or simple mode, but have varying costs and population requirements: \[economic building table, including population cost / population capacity increase (Worker Hut) / storage capacity increase (Storehouse)]
### Military Buildings Your military buildings are essential for training up armies to defend your territories and project your might. There are three 'tiers' of each of the three troop types, but a different building is required to produce each troop tier. As such, there are a total of 9 military buildings in the game. Note: Only T1 troop buildings can be constructed in both standard and simple mode. T2 and T3 military buildings are only available for construction in standard mode.
### Same Building Cost Increase Building multiple buildings of the same type will cost progressively more each time. The cost increase is calculated using the following formula: ``` Cost = Base Cost + (Base Cost × 0.5 × (N-1)²) ``` Where: * **Base Cost** is the initial cost of the building (from the tables above) * **N** is the number of the same buildings already constructed For example, if you build a second building of the same type (N=2), the cost will be: ``` Cost = Base Cost + (Base Cost × 0.5 × (2-1)²) = Base Cost + (Base Cost × 0.5 × 1) = Base Cost × 1.5 ``` Note: Buildings need to be exactly the same type for this rule to apply. For example, building a Stone Quarry after a Lumber Camp (both being resource buildings) would not be subject to this cost increase. --- file: docs/pages/mechanics/realm-and-villages/realm.mdx meta: {} import { StartingResources, StructureType } from "@/components/StartingResources"; import { StartingMilitary } from "@/components/StartingMilitary"; import { RealmDefenseSlotsTable } from "@/components/DefendingArmies"; import { BuildableHexes } from "@/components/BuildableHexes"; import { RealmLeveling } from "@/components/RealmLeveling"; import { importantNote } from "@/components/styles"; # 🏰 Realms The 8,000 Realms are the foundation of Eternum, each uniquely destined to shape the fate of this vast continent. As limited and irreplaceable strongholds, these Realms serve as the primary playing pieces of the game. Each Realm settled in Eternum can produce between one and seven different resources, depending on the metadata of the original Realm NFT and its associated Season Pass. This metadata also aligns each Realm to one of sixteen ancient Orders, however the meaning of this alignment has been lost to the mist… for now. ### Settling To settle a Realm, Lords must first burn a Season Pass, which gives them the ability to select the location of their homeland from an array of locations scattered across the map. For Season 1, there is a seven-day settling period before the game starts, allowing players to organise and position themselves before a move can be made. Realms can still be settled after this period, however the earlier in the season that Lords can establish their holdings, the greater their production potential and overall experience. Settling a Realm ![Realm Settling Screen](/screenshots/settling.png)

⚠️ IMPORTANT NOTE

When the game starts, all structures are immune to attacks and raids for 24 hours. Once the first day of gameplay has concluded, there are no more instances of immunity, all Realms and Villages settling into the game after this time will need to rely on their starting defences and consider their starting locations carefully. Lords entering the game after the immunity period are advised to make use of the spectator mode to scout for relatively safe spawning locations before initiating a settling transaction.

### Starting Resources ### Starting Military Each Realm starts with the majority of the starting troops deployed to the first defense slot as a guard army. A small number of troops remain within the Realm's storage to be deployed as a field army should the Realm Lord wish to explore beyond their walls. Troops can be transferred from the guard army to the field army using the troop transfer process explained in the [Movement & Exploration](/mechanics/worldmap-movement/movement) section. The specific type of military unit is determined by your Realm's biome, and is strategically chosen to have a combat advantage in that particular environment. ### Realm Progression Realms can grow from a Settlement into a City, then to a Kingdom, and finally an Empire. Each upgrade level unlocks additional buildable hexes and defensive army slots, allowing for the expansion of your economy and strengthening of your defences. Each progression requires specific materials, outlined in the table below: --- file: docs/pages/mechanics/realm-and-villages/villages.mdx meta: {} import ResourceProbability from "@/components/ResourceProbability"; import { StartingResources, StructureType } from "@/components/StartingResources"; import { StartingMilitary } from "@/components/StartingMilitary"; # 🛖 Villages Beyond the limited number of sacred Realms lies the humble yet vital Village—small settlements established on hexes that surround a settled Realm. These modest outposts offer a more accessible entry into Eternum, serving as gateways for new settlers and loyal subjects. Additionally, they can act as supplementary playing pieces for more serious players who wish to maximise their potential. Each settled Realm can have up to six Villages surrounding it, allowing up to 48,000 Villages in Season 1! ### Settling Villages are settled by minting a Village token. Aspiring settlers can choose to place their Village next to a specific Realm by entering the asset ID of a settled Realm, or let fate guide them to a random Realm's outskirts - either way, the Realm that they spawn adjacent to becomes that Village's 'parent' Realm. Players may also choose which of the six possible hexes they spawn on by selecting a compass direction. Village Settling Screen *Three villages settled next to a realm* ### Starting Resources ### Starting Military Each Village starts with the majority of the starting troops deployed to the first defense slot as a guard army. A small number of troops remain within the Village’s storage to be deployed as a field army should the Village Lord wish to explore beyond their walls. Troops can be transferred from the guard army to the field army using the troop transfer process explained in the [Movement & Exploration](/mechanics/worldmap-movement/movement) section. The specific type of military unit is determined by your Village's biome, and is strategically chosen to have a combat advantage in that particular environment. ### Resource Roll When minting a Village, a random number is rolled to determine the single resource that it can produce. ### Limitations Villages produce food, resources, troops, donkeys, and labor at 50% the rate of Realms. They can receive and purchase food, labor, donkeys and resources without restriction, but can only receive troops from their parent Realm - this limitation is in place to prevent players from spawning a Village on their rival's Realm and 'teleporting' troops there by using the donkey network. ### Village Progression Villages have a limited progression path and may only upgrade once from Settlement to City. The cost and benefits of this progression is the same as that of a Realm. --- file: docs/pages/mechanics/realm-and-villages/wonders.mdx meta: { "title": "Wonders", "description": "The Wonders of Realms Eternum" } # ✨ Wonders Of the 8,000 Realms, 50 are distinguished by the presence of Wonders—unique and magical places of power that confer special benefits, making them highly desirable playing pieces that may put a target on their owner's back. In Season 1, Wonder Realms grant a 20% production bonus not only to themselves but also to all Realms and Villages located within 12 tiles. This bonus means the Wonder Realm itself, the surrounding Realms (up to six), and all Villages settled around these seven Realms produce food, resources, troops, labor, and donkeys at 120% efficiency compared to standard Realms, using the same inputs. Key Notes: * Production rates are not increased by this bonus, more is produced overall for the same amount of input. * These bonuses do not stack. There is no benefit to settling multiple wonders in a limited range.

--- file: docs/pages/mechanics/resources/automation.mdx meta: {} # Resource Automation Resource automation allows players to set up continuous production processes within their realms, converting existing resources or labor into other desired resources. This system helps manage resource generation efficiently without constant manual intervention. ## Overview The automation system works by processing "orders" that you define for each of your realms. These orders specify what resource you want to produce (or what resource you want to convert to labor), the method of production, a target amount, and a priority. **Key Features:** * **Order-Based**: Define specific production tasks. * **Priority System**: Control the sequence of execution for multiple orders. * **Multiple Production Types**: Choose how resources are generated. * **Realm-Specific**: Automation is configured on a per-realm basis. * **Browser Dependent**: Automation processes run in your browser; the game tab must remain open for automation to function. ## How It Works The automation system periodically checks and processes active orders for each realm. 1. **Processing Interval**: Orders are evaluated approximately every 10 minutes. 2. **Order Prioritization**: For each realm, orders are sorted by their priority number (1 being the highest). 3. **Balance Check**: Before executing an order, the system checks if the realm has sufficient input resources or labor as per the recipe. If not, the order is skipped for that cycle. 4. **Recipe-Based Production**: Production follows predefined recipes from the game's configuration, detailing the inputs and outputs. 5. **Cycle Calculation**: * The system determines the maximum number of production cycles possible based on available inputs. * If a target amount is set, production will not exceed this amount. 6. **Transaction**: If all conditions are met, a blockchain transaction is initiated to perform the production. ## Production Types There are three types of production automation: 1. **Standard (Resource-to-Resource)**: * Converts one or more input resources into a different output resource. * Example: Using Wood and Stone to produce Tools. 2. **Simple (Labor-to-Resource)**: * Utilizes Labor from the realm to produce a specific resource. * Example: Using Labor to harvest Food. 3. **Resource-to-Labor**: * Converts a specified resource into Labor for the realm. * Example: Burning Food to generate Labor. ## Managing Automation Orders (UI) You can manage automation orders through the "Automation" tab within a Realm's interface. ### Adding a New Order 1. Click the "Add New Automation" button. 2. Configure the following: * **Production Type**: * `Standard (Resource-based)` * `Simple (Labor-based)` * `Resource to Labor` * **Priority (1-9)**: * Set the execution priority. `1` is the highest priority, `9` is the lowest. Orders with lower numbers are processed first. * **Resource to Produce / Resource Input for Labor**: * If "Resource to Labor" is selected, choose the resource you want to consume to generate Labor. * Otherwise, select the resource you want the automation to produce. (Note: Certain resources like Fish and Wheat cannot be automated for direct production via this UI). * The UI may show the input resources required for a "Resource-to-Resource" recipe. * **Target Amount / Target Labor Amount**: * Set the total quantity of the resource (or Labor) you want to produce. * **Infinite**: Check this box if you want the order to run continuously without a specific target cap. 3. Click "Add Automation". ### Viewing Orders Existing orders are displayed in a table with the following columns: * **Priority**: The order's priority. * **Resource**: * For "Resource to Labor": Shows `Input Resource -> Labor`. * For "Labor to Resource": Shows `Labor -> Output Resource`. * For "Resource to Resource": Shows `Input Resources -> Output Resource`. * Icons for each resource are displayed. * **Target**: The target amount (or "Infinite"). * **Produced**: The amount produced by this order so far. * **Type**: The production type (e.g., "Resource To Resource", "Labor To Resource", "Resource To Labor"). * **Actions**: Allows you to "Remove" the order. ### Removing an Order Click the "Remove" button next to an order in the table to delete it. ## Important Considerations * **Browser Must Be Open**: Automation processing occurs in your browser. If you close the game tab or your browser, automation will stop. * **Resource Availability**: Orders will only execute if the required input resources are available in the realm at the time of processing. * **Transaction Costs**: Each successful automation cycle that results in production will involve a blockchain transaction, which incurs network transaction fees. * **Processing Time**: Due to the 10-minute processing interval and potential network conditions, there might be a delay before an order is executed or its results are visible. --- file: docs/pages/mechanics/resources/bridging.mdx meta: {} import { EfficiencyTable } from "@/components/EfficienyTable"; # 🌀 Bridging (Portals) Portals provide Lords with the ability to bridge materials into and out of Eternum, connecting the in-game economy with the Starknet infrastructure layer. Portals are mysterious and unstable devices, so they tend to burn up most of the materials sent through. However, there is evidence that the power of the Hyperstructures can increase the stability of Portals throughout Eternum. As Lords manage to reestablish these mighty structures throughout the land, the efficiency of bridging in and out of Eternum improves for all. Each Realm comes equipped with a Portal. Realm Lords are able to bridge materials both into and out of their Realms directly. Villages, however, have more limited bridging capabilities—they can bridge materials out of Eternum, but not in. This is in line with their existing restrictions on receiving troops from external sources. They are also limited to utilizing the Portal belonging to their parent Realm, for which the Realm owner collects a 5% fee on all materials and tokens bridged out of the game. --- file: docs/pages/mechanics/resources/production.mdx meta: {} import { StandardTroopProduction, SimpleTroopProduction, SimpleResourceProduction, StandardResourceProduction, LaborProduction, DonkeyProduction, } from "@/components/ResourceProduction"; # ⚒️ Production ## Standard vs. Simple As is the case for building construction, Lords can choose between standard and simple production systems when deciding how they wish to produce their materials. This can be done by selecting the appropriate panel when making an order in the production screen. ![Simple Mode Production](/gifs/labor-production.gif) *Note: Production works a little differently in Season 1 compared to Season 0. Instead of streaming resources unit by unit and producing an output for as long as you have the requisite inputs, Lords must now commit the full material requirements to the production order upfront. The output is then produced at a given rate per second.* ### Standard Mode The classic Eternum system—every resource and troop production order requires food and a combination of other resources as inputs. As with buildings, standard mode is the more complex but efficient way to produce materials. ### Simple Mode Simple mode reduces the requirements for a production order to food and labor. This is, once again, less efficient in both time and resources—but it allows Lords to produce resources on their Realm or Village even if they don't have access to the input resources required in standard mode. ## Materials Production ### Food The rich and fertile lands of Eternum produce two staple food sources, Wheat and Fish. These are the only materials that can be produced without inputs, so once a Farm or Fishing Village has been constructed, they can produce food indefinitely. ### Resources The 22 resources found in Eternum are the backbone of the world economy. Producing one resource requires the input of two other resources (standard mode), or labor (simple mode). Resources are also the main components in building construction, troop production and Hyperstructure contributions - so mastery of these assets is key to success and security. ### Labor Labor is a new mechanic in Season 1 that has been introduced to simplify and supplement gameplay. It is the primary input for buildings and production in simple mode, but is also required in standard mode for building construction, Realm upgrades and Hyperstructure contribution. Labor is produced by permanently burning resources in the central structure of a Realm or Village. This creates a steady stream of Labor at a fixed rate. Each of the 22 resources can be burned to produce Labor at varying efficiency, dependent on rarity. The amount of resources burned per second to produce Labor at the fixed rate is as follows: ### Troops Troops are essential for exploration, defending your lands and conquering your enemies. Every Lord will be required to procure troops, either through production or purchase, to ensure they remain a relevant force throughout the game. In Season 1, two new troop tiers have been introduced, each requiring a combination of food, rare resources, and troops of the previous tier as input for production. Note: Only T1 troops can be produced in both standard and simple mode. T2 and T3 troops can only be produced in standard mode. ### Donkeys The humble steeds that move all materials around Eternum must themselves be produced in a market building. Donkeys are one-time-use and consumed after a single journey, so Lords will need to procure a steady supply of donkeys, either through production or purchase, to ensure that they can sustain their supply chains, trade with other players, and buy and sell from the Banks. Since donkeys are the 'gas' of this onchain world, they consume $LORDS - the native token of the ecosystem - during production. --- file: docs/pages/mechanics/resources/resources.mdx meta: {} import RarityResourceTable from "@/components/RarityResourceTable"; import ResourceIcon from "@/components/ResourceIcon"; import TroopsLimitTable from "@/components/TroopsLimitTable"; import { ResourcesIds } from "@bibliothecadao/types"; # 🪵 Materials # Materials Overview Materials encompass all transportable assets in Eternum, including: * **Food**: Essential wheat and fish that fuel production and troop movement * **Resources**: The 22 distinct resource types that can be produced on Realms based on their metadata * **Troops**: Military units (Knights, Crossbowmen, Paladins) that can be assigned to armies * **Donkeys**: One-time-use transport units required for moving materials across the world * **Labor**: A special material that enables "simple mode" construction and production * **Ancient Fragments**: Rare materials found in-game that are critical for Hyperstructure construction While all materials can be transported, only specific resources can be produced by Realms based on their inherent properties. Most materials (except Labor) can be bridged out as ERC20 tokens. ## Resources Resources are the foundation of **Eternum**'s economy. Each of the 22 resources plays a vital role in the game's ecosystem, from basic production to advanced military operations. All in-game resources can be traded freely and bridged out as ERC20 tokens. ![Produce from building](/gifs/produce-from-building-click.gif) ## Material Categories #### Material Tiers Resources are distributed across the 8,000 Realms based on rarity, creating natural scarcity and trade opportunities. ### Basic Materials #### Food
Food is the cornerstone of your realm's economy: * Produced without additional resource inputs * Required for most production chains * Essential for maintaining troops and construction
### Strategic Materials #### Military
Military units have unique properties: * They can be traded as resources * Cannot be converted back to tradeable form once deployed to an army * Once deployed, they can still be transferred between armies if they are located on adjacent hexes and are of the same type and tier
#### Transport (Donkeys)
Essential for logistics: * Required for transferring and trading materials * Consumed after a single use
### Special Materials #### **$LORDS** Currency
**$LORDS** is Eternum's economic backbone: * Used as the currency for all market transactions * Bridgeable to external networks * Required to produce donkeys #### Labor
Labor is a fundamental production material: * New Season 1 mechanic * Can be produced by any Realm or Village * Introduces ‘simple mode’ which reduces the complexity of resource and troop production * Required to construct most buildings * Produced by burning resources, with rarer resources yielding more labor #### Ancient Fragments
Strategic end-game material: * Only found in world map Fragment Mines * Required to commence the construction of Hyperstructures * Cannot be produced --- file: docs/pages/mechanics/resources/storage.mdx meta: {} import { WeightTable } from "@/components/WeightTable"; import { formatNumberWithCommas } from "@/utils/formatting"; import { divideByPrecision } from "@/utils/resources"; import { CapacityConfig, ResourcesIds } from "@bibliothecadao/types"; import { ETERNUM_CONFIG } from "@/utils/config"; # 🏺 Storage System Your available storage limits the amount of materials your Realm or Village can hold. Effective management of your storage capacity is essential for successful development. Each Realm and Village begins with a base capacity of **{formatNumberWithCommas(ETERNUM_CONFIG().carryCapacityGram[CapacityConfig.Storehouse]/1000)} kg**. You'll need to construct storehouses to expand your storage capabilities. ## Material Weights Materials in Eternum have different weights that affect storage: ## Storehouses Storehouse Expand your storage capacity to support your growing realm: * **Capacity**: Each storehouse adds {formatNumberWithCommas(ETERNUM_CONFIG().carryCapacityGram[CapacityConfig.Storehouse]/1000 )}kg of storage capacity. * **Expansion**: Build additional storehouses to increase total storage. * **Danger**: When storage is full new production is wasted ## World Structure Storage All world structures have set storage capacities **(that cannot be expanded through the use of storehouses)**. These capacities are as follows: | Structure Type | Storage Capacity | | -------------- | ------------------------------------------------------------------------------------------------------------ | | Hyperstructure | {formatNumberWithCommas(ETERNUM_CONFIG().carryCapacityGram[CapacityConfig.HyperstructureStructure]/1000)} kg | | Bank | {formatNumberWithCommas(ETERNUM_CONFIG().carryCapacityGram[CapacityConfig.BankStructure]/1000)} kg | | Fragment Mine | {formatNumberWithCommas(ETERNUM_CONFIG().carryCapacityGram[CapacityConfig.FragmentMineStructure]/1000)} kg | ## Storage Management Tips > 💡 **Best Practices** > > * Check storage levels regularly > * Build new storehouses before reaching capacity > * Pause production when storage is nearly full > * Plan material usage to maximize storage efficiency --- file: docs/pages/mechanics/resources/transfers-and-trade.mdx meta: {} import { importantNote } from "@/components/styles"; # 📜 Transfers & Trade ## Transport ### Transfers Throughout the season, Lords will face the need to transfer materials from place to place around the world map, whether it be to their own Realms and Villages, or other structures like Banks, Hyperstructures, and Fragment Mines. Lords have two primary options for initiating transfers: * **Detailed Transfer**: Players can use the comprehensive transfer menu accessible from the Trade tab. This allows transfers of multiple types of materials simultaneously, to any structure on the map—including those belonging to other players. ![Detailed Transfer](/gifs/transfer-all.gif) * **Quick Transfer**: Alternatively, Lords can swiftly transfer resources between their own structures using the resources sidebar, ideal for managing internal logistics and maintaining supply chains. ![Quick Transfer](/gifs/transfer-own.gif) ### The Donkey Network When a transfer is initiated, donkeys travel through the invisible and immutable donkey network. This is the key infrastructure upon which all material transport takes place, facilitating trade between players and Banks. One donkey is capable of carrying up to 500 kg of materials, so the number of donkeys required for a transfer depends on the total weight of the materials being moved. Once a transfer is initiated, it cannot be cancelled, and the journey will take some time depending on the distance to the destination structure. Upon arrival, transferred materials and donkeys must be manually claimed via the 'Resource Arrivals' tab before they become available for use.

⚠️ IMPORTANT NOTE

In Season 1, resource arrivals are restricted by 'gates' to assist in reducing the load that resource arrival entities have on the game. As donkeys arrive at their destination bearing their various goods, they need to wait until the start of a new Eternum Day for the structure's arrival gate to open before they can enter and be claimed by the owning Lord. For example, if a transfer arrives at 2:56 p.m. the owner of the structure will only need to wait until 3:00 p.m. for the transfer to become claimable, however if the transfer arrives at 3:02 p.m., the goods won't be claimable until the next Eternum Day starts (4 p.m.).

## Banks & Marketplaces ### Banks
Bank Building
Six ancient Banks stand evenly distributed around, and equidistant from, the centre of the map. At the start of the game, each Bank is occupied by powerful groups of bandits. Lords who conquer a Bank become the beneficiary of any fees from the Automated Market Maker (AMM) trades that they facilitate. Although Banks collect fees independently, they collectively share liquidity, ensuring consistent and stable trading conditions throughout Eternum. Realms and Villages automatically utilize their nearest Bank when trading through the AMM. ### AMM (Automated Market Maker) The Automated Market Maker (AMM) is a decentralized trading protocol facilitated by the six Banks, allowing for instantaneous and trustless trades 24/7—the DeFi of Eternum. Trades executed via the AMM automatically utilize the closest Bank, directing trade fees specifically to that Bank's owner. Lords can further benefit from the AMM by contributing materials and $LORDS to liquidity pools, earning a share of the fees generated from subsequent swaps. Lords should be aware of the relatively high fees for using the AMM and consider the Orderbook for other trading options first. ### Orderbook Complementing the AMM, the Orderbook is a peer-to-peer marketplace, allowing Lords to place precise buy or sell orders at chosen quantities and prices. This traditional method of trading incurs lower fees and offers Lords strategic control, enabling them to manage market conditions to their advantage and set OTC orders for friends and allies. --- file: docs/pages/mechanics/worldmap-movement/movement.mdx meta: {} import TroopMovementTable from "@/components/TroopMovementTable"; import { BiomeStamina } from "@/components/BiomeStamina"; # 🧭 Movement & Exploration Troops Moving Across Eternum ## Stamina Troops in Eternum are deployed onto the world map as armies. Army movement and actions across the map are governed by stamina, a critical resource Lords must carefully manage. Stamina is expended whenever an army moves between hexes, explores previously unrevealed areas, or launches an attack against enemy forces. Each of these actions has a specific stamina cost, making strategic planning essential to maximizing an army's effectiveness. Armies regenerate stamina at a consistent rate of +20 stamina per Eternum Day. Each troop type possesses different maximum stamina capacities, outlined in the table below: Lords should remain cautious about fully depleting the stamina of their armies, as forces with low stamina may find themselves severely disadvantaged if attacked by enemy forces. ## Movement
Moving Army Moving armies in the client
Armies in Eternum can move freely into any adjacent, unoccupied hex. A hex is considered occupied if it contains a Realm, Village, another army, or a world structure such as a Bank, Fragment Mine, or Hyperstructure. Armies may also move to more distant hexes, provided there is a continuous path of adjacent, unoccupied hexes leading to the destination, and the army has sufficient stamina available for the entire journey. The amount of stamina consumed when moving into a hex depends on both the biome of that hex and the type of troops within the army. The table below details biome-specific stamina costs for each troop type: ## Exploring When an army is positioned adjacent to an unexplored hex, Lords may choose to send that army forth to uncover what lies hidden. Exploring an unknown hex always costs 30 stamina and will reveal that hex to all Lords, permanently expanding the known boundaries of the world. If the newly explored hex contains a world structure or an agent army, the exploring army will automatically be pushed back to the hex from which they started without any additional stamina penalty. Additionally, during exploration, armies gather any valuables they encounter, receiving a stack of randomly selected resources directly into their inventory. If an army becomes overloaded, they will not be able to undertake further exploration, but can continue to travel on previously-explored hexes. Armies can return to a structure to offload the materials, or drop them to free up space. Note that any materials discarded in the field will be permanently lost (burned). Given the possibility of encountering hostile agent armies during exploration, Lords should ensure that their exploring armies are well-prepared and capable of defending themselves in unexpected combat situations.
Explore Explore in the client
## Troop Transfers Lords may transfer troops from one army to another, provided that they are on adjacent hexes, the same troop type, and the same tier. To transfer troops from one army to another, or to a structure, the player first needs to select its army on the worldmap using left-click, then right-click on the target and select the Transfer -> Transfer Troops tab. Transferring troops from one army to another with lower stamina makes no change to the stamina of either army. Transferring from an army with lower stamina to an army with higher stamina will reduce the higher-stamina army to equal that of the lower stamina army.
Transfer Troops Transfer troops in the client
--- file: docs/pages/mechanics/worldmap-movement/worldmap.mdx meta: {} # 🗺️ The World Map Eternum World Map ## An Unexplored World At the beginning of each season, Eternum lies entirely unexplored, shrouded in mystery and opportunity. The only exceptions are the six ancient Banks, whose location and surrounding hexes are known and visible from the outset. They can be seen when settling and when observing the world view, each equidistant from the centre of the map and from one another. When Lords settle a Realm, the six hexes directly adjacent to the Realm hex and the six possible village locations are automatically revealed if they haven't already been explored. Beyond these instances, the world remains cloaked by the mist, waiting for ambitious Lords to send forth their armies to explore. Once a hex is explored, the state of the hex (i.e. the biome and whether it contains a world structure or army) is permanently revealed to all Lords. ## Biomes Each hex is assigned one of 16 biome types, each with unique aesthetics and strategic implications. These biomes are procedurally generated across the world map following specific rules that dictate their distribution, ensuring a coherent yet varied world, with certain biomes naturally occurring more or less frequently than others. Biomes impact both combat effectiveness and troop movement. Each troop type—Knights, Crossbowmen, and Paladins—can potentially be advantaged or disadvantaged in battle depending on the biome in which combat takes place; this is explained in more detail in the [Military section](/mechanics/military/stamina-and-biomes). Additionally, biomes have the potential to enhance or impede army maneuvers, as the various biomes impact the stamina consumption of each troop type differently as they move between hexes—this is explained further in the [Movement & Exploration](/mechanics/worldmap-movement/movement) section below.