Development Mode
Filter which modules load during development for faster iteration.
Overview
Development mode allows you to load only specific modules, reducing startup time and isolating features during development.
Configuration
Set convars in server.cfg:
# Enable development mode
set dev_mode "true"
# Load only specific modules (comma-separated)
set dev_features "spawning,characters,banking"
# Or leave empty to load all modules (useful for debugging only)
set dev_features ""
Behavior
dev_mode | dev_features | Result |
|---|---|---|
"false" | (ignored) | All modules load normally |
"true" | "" (empty) | All modules load |
"true" | "mod1,mod2" | Only listed modules load |
How It Works
The enabled() function checks module loading:
import { DEV, ONLY, enabled } from "@core/dev";
// DEV = true if dev_mode is "true"
// ONLY = Set of module names from dev_features
// In module loader:
for (const mod of sortedModules) {
if (!enabled(mod.name)) {
console.log(`Skipping ${mod.name} - dev mode filter`);
continue;
}
await mod.start();
}
Dependency Handling
When a module is skipped, its dependents are also skipped:
With filter "init,banking":
- ✓
init- in filter - ✗
characters- not in filter - ✗
banking- dependencycharactersnot running - ✗
atm- dependencybankingnot running
Common Workflows
Working on a Specific Feature
set dev_mode "true"
set dev_features "init,characters,your-feature"
Quick Server Tests
set dev_mode "true"
set dev_features "init" # Minimal load for testing infrastructure
Disable for Production
set dev_mode "false"
# dev_features is ignored
Best Practices
- Always include
init- Core module required by most others - Include dependency chain - List all dependencies of your feature
- Disable in production - Ensure
dev_modeis"false"in prod configs