Skip to content

SAGE Dev DocsStart with SAGE C4

Developer docs for Star Atlas SAGE C4 on the z.ink testnet, shaped for first integrations, debugging, and agent-friendly lookup.

Star Atlas Build

Start here

A practical entry point for SAGE C4 developers

Use this site to get from zero to useful quickly: connect to the right cluster, understand the core accounts, inspect generated client calls, and review transaction effects before you ask a wallet to sign anything.

Networkz.ink testnetSAGE C4 PTR runs on the z.ink testnet, with separate RPC, WebSocket, and explorer endpoints.
Core pathConnect, Read, ReviewMost integrations start by reading identity, profiles, fleets, and world state before composing writes.
InputsGenerated clientsExamples use TypeScript clients and concrete account names so code and docs stay aligned.
AudienceDevelopers and agentsWritten for humans taking first steps and for tools that need clean, searchable implementation notes.

Pick a path

Start from the task you need to complete

For first steps

Overview

Learn the major programs, account relationships, and the order most integrations should understand them.

For runtime

Connection Setup

Copy the right RPC, WebSocket, explorer, and commitment settings for the z.ink testnet environment.

For safe writes

Review and Diffs

How to summarize signers, writable accounts, simulations, and state changes before a wallet prompt.

Reference habits

What this documentation optimizes for

Where the bindings fit

The packages documented here are generated TypeScript bindings: typed adapters between your application and the Star Atlas programs running on z.ink. They know how to decode program accounts, derive addresses when the seeds are known, and build transaction instructions.

They are not a wallet, indexer, game server, or safety layer. Your application still decides which accounts to discover, what an action means to the player, which signer is allowed to authorize it, and whether a transaction should be sent.

Start with the Beginner Map for the account hierarchy, or use the runnable check below to prove that your code is connected to the correct deployment.

Quick start

ts
import { address, createSolanaRpc } from '@solana/kit';

export const sagePtrCluster = {
	http: 'https://testnet-rpc.z.ink',
	ws: 'wss://testnet-rpc.z.ink',
	explorer: 'https://explorer.z.ink',
	commitment: 'confirmed'
} as const;

const rpc = createSolanaRpc(sagePtrCluster.http);
const game = address('EKEj47SzaCjPM3m4T4vRXrrsVtkEmiNgPMMFye3AkXj4');
const sageProgram = address('C4SAgeKLgb3pTLWhVr6NRwWyYFuTR7ZeSXFrzoLwfMzF');

const { value: account } = await rpc.getAccountInfo(game, {
	commitment: sagePtrCluster.commitment,
	encoding: 'base64',
	dataSlice: { offset: 0, length: 0 }
}).send();

if (!account || account.owner !== sageProgram) {
	throw new Error('C4 Game account not found on this cluster');
}

This confirms that the known C4 Game account exists on z.ink and belongs to the expected SAGE program without downloading its roughly 2.5 MB data buffer. Continue with Reading Live Game State to discover and decode gameplay accounts.

Community Created

This documentation is maintained by the community and tracks the live SAGE C4 PTR on the z.ink testnet as closely as possible.