You interact with the EVE Frontier world in two ways:
Write path — Submit transactions to Move public functions to mutate on-chain state (create assemblies, bring them online, deposit items, etc.).
Read path — Query on-chain state and events via GraphQL, gRPC, or custom indexers.
Writing to the World Contracts
Write operations use the Sui TypeScript SDK to build and submit transactions. The world-contracts ts-scripts provide examples on how to interact with the EVE Frontier world. You can also use other SDKs (e.g., Rust or community Go SDK) based on your tech stack.
Example: Bring Assembly Online
This script borrows OwnerCap from a character, calls the assembly online function, then returns the cap:
Many world operations require server-side validation (e.g., proximity checks, sponsor checks). These use sponsored transactions — the player signs the intent, and an authorized sponsor (e.g., EVE Frontier) pays gas and submits:
SuiClient is the main entry point for read operations in the TypeScript SDK. It connects to a Sui full node and exposes methods for querying objects, events, and transactions without submitting any transaction. Use it when you need to read state programmatically — for example, fetching an assembly's current config or checking ownership before building a transaction.
GraphQL
Use Sui's GraphQL to query objects by type, owner, or filters.
Example: Get objects by type
Try it: GraphQL Testnet IDE. Pass variables in the IDE's Variables panel, e.g.:
Query character by wallet address
A PlayerProfile is created at character creation and transferred to the player’s wallet (character_address). Query objects owned by the wallet with type PlayerProfile to get character_id, then fetch the full Character if needed.
Use your network’s GraphQL endpoint and the world package ID for that network. Set address to the wallet (Sui address) and profileType to 0x<WORLD_PACKAGE_ID>::character::PlayerProfile (package ID is network-specific; see your deployment or world-contracts).
Variables:
Each node’s json includes character_id. Use that ID to load the full Character (e.g. query objects by that ID).
gRPC
For higher throughput and streaming (e.g., checkpoints), use gRPC—Sui's preferred read path. Requires a gRPC-enabled Sui full node.
Events
State changes emit events on transactions. Use suix_queryEvents to filter by module, type, or sender:
World events include JumpEvent (gate traversal), inventory updates, and deployment changes. Store and subscribe to events off-chain for dashboards, analytics, or game services.
Reading from the World
TypeScript — SuiClient for objects, events, and transactions.