Dojo; Simplifying Onchain Game Development
Building games is hard enough, but building games onchain is even harder. Dojo simplifies the process of building onchain games by providing a suite of tools that streamline the process of building onchain games, allowing developers to focus on gameplay logic and drastically reducing time-to-game.
Cairo State and Contract Framework
- Dojo extends Cairo's base functionality and adds helpful inline 
macros - Simplifies interoperability with the dojo Models
 - Standardized approach to building games on cairo smart contracts
 - Simplifies development process allowing you to focus on logic and not architecture
 
The following is an example of a dojo function and contains the macros get! and set! which are used to read and write to the world state.
fn spawn(self: @ContractState) {
    // Access the world dispatcher for reading.
    let world = self.world_dispatcher.read();
 
    // Get the address of the current caller, possibly the player's address.
    let player = get_caller_address();
 
    // Retrieve the player's current position from the world.
    let position = get!(world, player, (Position));
 
    // Retrieve the player's move data, e.g., how many moves they have left.
    let moves = get!(world, player, (Moves));
 
    // Update the world state with the new data.
    // 1. Set players moves to 10
    // 2. Move the player's position 100 units in both the x and y direction.
    set!(
        world,
        (
            Moves { player, remaining: 100, last_direction: Direction::None },
            Position { player, vec: Vec2 { x: 10, y: 10 } },
        )
    );
}
 Katana - Fast Development Network
- Customizable Starknet development network
 - Allows swift iteration on game logic
 - Easily deploy Katanas to providers like Slot by Cartridge, providing you with a custom network for your team
 
Spin up a local development network like:
katanaTorii - Starknet Indexer
- Auto-indexes all contract states
 - Exposes states via GraphQL API or gRPC automatically!
 - Not more building custom indexers!
 
Spin up and indexer for your world like:
torii --world 0x42069Sozo CLI - Management Tool
- Assists in managing large contracts (worlds)
 - Enables creation, building, testing, and deployment of worlds
 - Supports crafting new components and systems
 
Compile and deploy your world!
sozo --release buildWhat dojo is not
Dojo does not provide visual graphics, but integrates with engines like Unreal, Godot, or Unity. However, dojo SDKs exist to integrate with these visual engines.