Claude Code Plugins

Community-maintained marketplace

Feedback

overthrow-architecture

@ArmaOverthrow/Overthrow.Arma4
80
0

Overthrow mod architecture patterns, naming conventions, and project structure

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name overthrow-architecture
description Overthrow mod architecture patterns, naming conventions, and project structure
version 1.0.0

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.