
overthrow-architecture
by ArmaOverthrow
A dynamic and persistent revolution platform for Arma Reforger (and eventually Arma 4)
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:
- managers.md - Singleton manager pattern, GetInstance, Init, PostGameStart
- controllers.md - Instance controllers, registration, lifecycle
- overthrow-controller.md - NEW: Modular controller pattern for client-server operations
- global-access.md - OVT_Global patterns, accessing managers/systems
- file-structure.md - Project directory organization and file placement
- coding-standards.md - Naming conventions, documentation style, best practices
Common Patterns
Creating a Manager
- Extend OVT_Component
- Add corresponding OVT_ComponentClass
- Implement static s_Instance and GetInstance()
- Add Init() and PostGameStart() if needed
- Place component on OVT_OverthrowGameMode prefab
- Add accessor to OVT_Global
Creating a Controller
- Extend OVT_Component
- Add corresponding OVT_ComponentClass
- Register with manager in constructor
- Use protected members with getters/setters
- Attach to entity prefab or spawn at runtime
Accessing Systems
- Use OVT_Global.GetManager() for managers
- Use OVT_Global.GetController() for local controller
- Use OVT_Global.GetUI() for UI manager
- Use OVT_Global.GetPlayers() for player management
- Always check for null before using
Pattern: Start here for quick reference, dive into resource files for implementation details.
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon
