dojo-init
Dojo Project Initialization
Initialize new Dojo projects with the complete directory structure, configuration files, and dependencies.
When to Use This Skill
- "Create a new Dojo project"
- "Initialize a Dojo game called [name]"
- "Set up a new Dojo application"
- "Start a new provable game project"
What This Skill Does
Creates a complete Dojo project with:
Scarb.tomlwith Dojo dependenciesdojo_dev.tomlfor local development- Source directory structure
- Example models and systems
- Test files
Quick Start
Using 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"
Project Structure
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
Configuration Files
Scarb.toml
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"]
dojo_dev.toml
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"]
Starter Template Contents
The starter template includes:
Models (src/models.cairo)
Positionmodel with player key and Vec2 coordinatesMovesmodel tracking remaining moves and directionDirectionenum
Systems (src/systems/actions.cairo)
spawnfunction to initialize player statemovefunction to update player position- Example event emission
Tests (src/tests/test_world.cairo)
- Test world setup with
spawn_test_world - Integration tests for spawn and move
Development Workflow
-
Initialize 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
Customization
After initialization, customize your project:
- Add models: Create new model structs in
src/models.cairoor separate files - Add systems: Create new contract modules in
src/systems/ - Update permissions: Edit
[writers]indojo_dev.toml - Add dependencies: Edit
[dependencies]inScarb.toml
Next Steps
After initialization:
- Use
dojo-modelskill to add game state models - Use
dojo-systemskill to implement game logic - Use
dojo-testskill to write tests - Use
dojo-deployskill to deploy your world
Related Skills
- dojo-model: Add models to your project
- dojo-system: Add systems to your project
- dojo-config: Modify configuration
- dojo-deploy: Deploy your project
More from dojoengine/book
dojo-client
Integrate Dojo with game clients for JavaScript, Unity, Unreal, Rust, and other platforms. Generate typed bindings and connection code. Use when connecting frontends or game engines to your Dojo world.
69dojo-system
Create Dojo systems that implement game logic, modify model state, and handle player actions. Use when implementing game mechanics, player commands, or automated logic.
69dojo-migrate
Manage world migrations, handle breaking changes, and upgrade Dojo versions. Use when updating deployed worlds, migrating to new versions, or handling schema changes.
67dojo-test
Write tests for Dojo models and systems using spawn_test_world, cheat codes, and assertions. Use when testing game logic, verifying state changes, or ensuring system correctness.
67dojo-config
Configure Scarb.toml, dojo profiles, world settings, and dependencies. Use when setting up project configuration, managing dependencies, or configuring deployment environments.
66dojo-deploy
Deploy Dojo worlds to local Katana, testnet, or mainnet. Configure Katana sequencer and manage deployments with sozo. Use when deploying your game or starting local development environment.
66