Setup
Getting Started
Add the Cartridge package quest as a dependency in your Scarb.toml
[dependencies]
starknet = "2.8.4"
dojo = { git = "https://github.com/dojoengine/dojo", tag = "v1.5.1" }
quest = { git = "https://github.com/cartridge-gg/arcade", tag = "v1.5.1" }
[[target.starknet-contract]]
build-external-contracts = [
"dojo::world::world_contract::world",
"quest::events::index::e_QuestCreation",
"quest::events::index::e_QuestProgression",
"quest::events::index::e_QuestAdvancement",
"quest::events::index::e_QuestCompletion",
]Torii Configuration
Quest events require historical tracking by Torii for proper progress monitoring.
All quest-related events should be configured as historical events to ensure complete tracking:
rpc = <YOUR-RPC-URL>
world_address = <YOUR-WORLD-ADDRESS>
[indexing]
...
[sql]
historical = [ // [!code focus]
"<YOUR-NAMESPACE>-QuestProgression", // [!code focus]
"<YOUR-NAMESPACE>-QuestAdvancement", // [!code focus]
] Controller Configuration
Configure the Controller to enable quest functionality:
import { ControllerConnector } from "@cartridge/connector";
const connector = new ControllerConnector({
// Your existing configuration
namespace: "your-game-namespace", // Required for quest data
// ... other options
});The namespace parameter is required for the quest system to fetch quest data from the Torii indexer.
Quest Data Models
The quest system uses several on-chain models:
- QuestDefinition: Core quest configuration (timing, tasks, conditions)
- QuestCreation: Quest metadata and creation events
- QuestProgression: Player task progress tracking
- QuestAdvancement: Individual task advancement events
- QuestCompletion: Quest completion and reward claiming state
These models are automatically handled by the quest system when properly configured.
Next Steps
Once setup is complete, you can:
- Create quest definitions in your game
- Integrate quest progression events
- Use the built-in quest UI components
- Configure quest rewards and metadata
See the Integration guide for implementation details.