Initialize new Dojo projects with proper directory structure, configuration files, and dependencies. Use when starting a new Dojo game project or setting up the initial project structure.
Initialize new Dojo projects with the complete directory structure, configuration files, and dependencies.
Creates a complete Dojo project with:
Scarb.toml with Dojo dependenciesdojo_dev.toml for local developmentUsing sozo init:
sozo init my-game
This creates a new Dojo project from the dojo-starter template.
Interactive mode:
"Create a new Dojo project called my-game"
After initialization:
my-game/
āāā Scarb.toml # Package manifest and dependencies
āāā dojo_dev.toml # Local development profile
āāā dojo_release.toml # Production deployment profile
āāā src/
āāā lib.cairo # Module exports
āāā models.cairo # Game state models
āāā systems/
ā āāā actions.cairo # Game logic systems
āāā tests/
āāā test_world.cairo # Integration tests
Package manifest with Dojo dependencies:
[package]
cairo-version = "2.12.2"
name = "my_game"
version = "1.0.0"
edition = "2024_07"
[[target.starknet-contract]]
sierra = true
build-external-contracts = ["dojo::world::world_contract::world"]
[dependencies]
starknet = "2.12.2"
dojo = "1.7.1"
[dev-dependencies]
cairo_test = "2.12.2"
dojo_cairo_test = "1.7.1"
[tool.scarb]
allow-prebuilt-plugins = ["dojo_cairo_macros"]
Local development configuration:
[world]
name = "My Game"
seed = "my_game"
[env]
rpc_url = "http://localhost:5050/"
account_address = "0x127fd..."
private_key = "0xc5b2f..."
[namespace]
default = "my_game"
[writers]
"my_game" = ["my_game-actions"]
The starter template includes:
src/models.cairo)Position model with player key and Vec2 coordinatesMoves model tracking remaining moves and directionDirection enumsrc/systems/actions.cairo)spawn function to initialize player statemove function to update player positionsrc/tests/test_world.cairo)spawn_test_worldInitialize project:
sozo init my-game
cd my-game
Start Katana:
katana --dev --dev.no-fee
Build and deploy:
sozo build && sozo migrate
Test your system:
sozo execute my_game-actions spawn
Run tests:
sozo test
After initialization, customize your project:
src/models.cairo or separate filessrc/systems/[writers] in dojo_dev.toml[dependencies] in Scarb.tomlAfter initialization:
dojo-model skill to add game state modelsdojo-system skill to implement game logicdojo-test skill to write testsdojo-deploy skill to deploy your world