Skip to main content

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_modedev_featuresResult
"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 - dependency characters not running
  • atm - dependency banking not 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

  1. Always include init - Core module required by most others
  2. Include dependency chain - List all dependencies of your feature
  3. Disable in production - Ensure dev_mode is "false" in prod configs