overthrow-architecture

Overthrow mod architecture patterns, naming conventions, and project structure

Installs: 0
Used in: 1 repos
Updated: 2d ago
$npx ai-builder add skill ArmaOverthrow/overthrow-architecture

Installs to .claude/skills/overthrow-architecture/

# Overthrow Architecture

Quick reference for Overthrow mod-specific patterns and conventions. For detailed patterns, see resource files below.

---

## When to Use This Skill

Use this skill when:
- Creating new Manager or Controller components
- Understanding Overthrow's architecture patterns
- Following project naming conventions
- Organizing code in the correct directories
- Accessing global systems via OVT_Global
- Setting up new features or systems

---

## Quick Reference

### Manager Components
Singleton components on OVT_OverthrowGameMode managing entire systems. Use GetInstance() pattern with static s_Instance. Init() and PostGameStart() called manually by game mode.

**See:** `managers.md` for complete manager patterns

### Controller Components
Non-singleton components managing individual entities (bases, towns, camps). Register with manager in constructor. Multiple instances can exist simultaneously.

**See:** `controllers.md` for complete controller patterns

### OVT_Global Access
Central static class providing easy access to all manager singletons. Use OVT_Global.GetSomething() instead of calling GetInstance() directly. Cleaner and more consistent.

**See:** `global-access.md` for access patterns

### OVT_OverthrowController
New modular architecture for client-server communication. Each player owns a controller entity with specialized components. Replaces legacy OVT_PlayerCommsComponent. Built-in progress tracking support.

**See:** `overthrow-controller.md` for complete pattern

### File Organization
Scripts in Scripts/Game/, configs in Configs/, prefabs in Prefabs/. Specific subdirectories for Components, GameMode, Entities, Controllers, UI, UserActions.

**See:** `file-structure.md` for directory structure

### Coding Standards
OVT_ class prefix, m_ member prefix, type prefixes (m_i, m_f, m_s, m_b, m_a, m_m). Doxygen-style comments. Getters/setters for protected members.

**See:** `coding-standards.md` for complete conventions

---

## Critical Conventions

- ✅ **OVT_ prefix** - All Overthrow classes start with OVT_
- ✅ **Managers are singletons** - One instance per game mode
- ✅ **Controllers are instances** - Multiple instances per entity type
- ✅ **Use OVT_Global** - For accessing managers (not direct GetInstance())
- ✅ **Use OverthrowController** - For new client→server operations (not PlayerCommsComponent)
- ✅ **Register in constructor** - Controllers register with managers
- ✅ **Protected members** - Use getters/setters for external access
- ⚠️ **Init() not automatic** - Called manually by game mode or manager
- ✅ **Type prefixes** - m_i for int, m_f for float, m_s for string, etc.

---

## Architecture Hierarchy

```
OVT_OverthrowGameMode (entity)
├── OVT_SomeManagerComponent (singleton)
│   ├── Manages multiple controllers
│   └── Global system state
└── OVT_AnotherManagerComponent (singleton)
    └── Manages different system

Entity in World
└── OVT_SomeControllerComponent (instance)
    ├── Manages this specific entity
    └── Registered with relevant manager
```

---

## Resource Files

Detailed documentation organized by concern:

1. **managers.md** - Singleton manager pattern, GetInstance, Init, PostGameStart
2. **controllers.md** - Instance controllers, registration, lifecycle
3. **overthrow-controller.md** - NEW: Modular controller pattern for client-server operations
4. **global-access.md** - OVT_Global patterns, accessing managers/systems
5. **file-structure.md** - Project directory organization and file placement
6. **coding-standards.md** - Naming conventions, documentation style, best practices

---

## Common Patterns

### Creating a Manager
1. Extend OVT_Component
2. Add corresponding OVT_ComponentClass
3. Implement static s_Instance and GetInstance()
4. Add Init() and PostGameStart() if needed
5. Place component on OVT_OverthrowGameMode prefab
6. Add accessor to OVT_Global

### Creating a Controller
1. Extend OVT_Component
2. Add corresponding OVT_ComponentClass
3. Register with manager in constructor
4. Use protected members with getters/setters
5. Attach to entity prefab or spawn at runtime

### Accessing Systems
1. Use OVT_Global.GetManager() for managers
2. Use OVT_Global.GetController() for local controller
3. Use OVT_Global.GetUI() for UI manager
4. Use OVT_Global.GetPlayers() for player management
5. Always check for null before using

---

**Pattern:** Start here for quick reference, dive into resource files for implementation details.

Quick Install

$npx ai-builder add skill ArmaOverthrow/overthrow-architecture

Details

Type
skill
Slug
ArmaOverthrow/overthrow-architecture
Created
5d ago