00-Argonath-Wiki

System Architecture Overview

Architectural Principles

Argonath Systems is built on Argonath Systems architecture, emphasizing:

  1. Layered Design - Clear separation between platform, adapters, frameworks, and mods
  2. Dependency Inversion - Depend on abstractions, not implementations
  3. Modular Composition - Mix and match components as needed
  4. Single Responsibility - Each module has one clear purpose

The Four Layers

┌─────────────────────────────────────────────┐
│           MOD LAYER (06-xx)                 │
│  End-user content and gameplay features     │
│  • mod-quest-tracker                        │
└─────────────────────────────────────────────┘
                    ▲
                    │
┌─────────────────────────────────────────────┐
│      FRAMEWORK LAYER (02-05-xx)             │
│  Feature-specific implementations           │
│  • framework-quest    • framework-npc       │
│  • framework-ui       • framework-config    │
│  • framework-storage  • framework-objective │
└─────────────────────────────────────────────┘
                    ▲
                    │
┌─────────────────────────────────────────────┐
│       ADAPTER LAYER (02-adapter-xx)         │
│  Game-specific integration bridges          │
│  • adapter-hytale                           │
│  • adapter-mod-api                          │
└─────────────────────────────────────────────┘
                    ▲
                    │
┌─────────────────────────────────────────────┐
│       PLATFORM LAYER (01-xx)                │
│  Game-agnostic foundation utilities         │
│  • platform-core                            │
│  • platform-sdk                             │
└─────────────────────────────────────────────┘

Layer Details

Platform Layer (01-xx)

Purpose: Provide game-agnostic foundation services

Modules:

Key Responsibilities:

Dependencies: None (foundation layer)

Adapter Layer (02-adapter-xx)

Purpose: Bridge between platform and specific game engines

Modules:

Key Responsibilities:

Dependencies: Platform Layer

Framework Layer (02-05-xx)

Purpose: Implement specific features using platform services

Organized by prefix:

Key Modules:

Core (02-xx):

Data Management (03-xx):

Game Mechanics (04-xx):

High-Level Features (05-xx):

Dependencies: Platform Layer, selected Adapters

Mod Layer (06-xx)

Purpose: End-user content and complete features

Modules:

Key Responsibilities:

Dependencies: Framework Layer components

Module Numbering System

The XX- prefix indicates dependency tier:

Higher numbers can depend on lower numbers, never the reverse.

Dependency Flow

┌──────────────┐
│ Quest Mod    │ (06)
└──────┬───────┘
       │ uses
       ▼
┌──────────────┐     ┌──────────────┐
│framework-    │────▶│framework-    │ (05)
│quest         │     │ui            │
└──────┬───────┘     └──────┬───────┘
       │                    │
       │ uses               │ uses
       ▼                    ▼
┌──────────────┐     ┌──────────────┐
│framework-    │     │framework-    │ (04)
│objective     │     │condition     │
└──────┬───────┘     └──────┬───────┘
       │                    │
       └─────────┬──────────┘
                 │ uses
                 ▼
┌─────────────────────────────────────┐
│framework-config / framework-storage │ (03)
└─────────────┬───────────────────────┘
              │ uses
              ▼
┌─────────────────────────────────────┐
│     framework-core / accessor       │ (02)
└─────────────┬───────────────────────┘
              │ uses
              ▼
┌─────────────────────────────────────┐
│         platform-core               │ (01)
└─────────────────────────────────────┘

Bundles

Purpose: Pre-configured module collections for common use cases

Available Bundles:

Bundle Composition:

bundle-quest includes:
├── platform-core
├── framework-core
├── framework-config
├── framework-storage
├── framework-condition
├── framework-objective
├── framework-quest
└── adapter-hytale

Bundles are convenience packages - you can always use individual modules instead.

Cross-Cutting Concerns

Event System

Configuration

Storage

Conditions

Extension Points

Every framework provides extension points:

  1. Service Interfaces - Implement to add behavior
  2. Registry Systems - Register custom types
  3. Event Listeners - React to framework events
  4. Configuration Schemas - Define custom configs

See Advanced Topics for extension guides.

Design Patterns

Service Registry Pattern

Central registry for dependency injection and service location.

Event-Driven Architecture

Loose coupling through event bus.

Factory Pattern

Builders and factories for object creation.

Strategy Pattern

Pluggable implementations (storage backends, condition evaluators).

Observer Pattern

Event listeners and callbacks.

Next Steps


Understanding the architecture? You’re ready to start building! Head to Quest Development Guide.