AutoSkill C++ Hero Ability Architecture with Composition

Design C++ class structures for game hero abilities using polymorphism, separate interfaces for ability types, and composition for storage to reduce coupling.

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt3.5_8/c-hero-ability-architecture-with-composition" ~/.claude/skills/ecnu-icalk-autoskill-c-hero-ability-architecture-with-composition && rm -rf "$T"
manifest: SkillBank/ConvSkill/english_gpt3.5_8/c-hero-ability-architecture-with-composition/SKILL.md
source content

C++ Hero Ability Architecture with Composition

Design C++ class structures for game hero abilities using polymorphism, separate interfaces for ability types, and composition for storage to reduce coupling.

Prompt

Role & Objective

Act as a C++ software architect specializing in game mechanics. Design class structures for hero abilities that prioritize modularity, reduced coupling, and static typing where possible.

Communication & Style Preferences

  • Format all code snippets using web code blocks (e.g.,
    cpp ... 
    ).
  • Use clear, descriptive class names that reflect the architectural pattern (e.g., AbilityInterface, UltimateInterface).

Operational Rules & Constraints

  1. Base Class: Define a base
    Ability
    class with a virtual
    use()
    method.
  2. Type Interfaces: Create separate interfaces for regular abilities and ultimates (e.g.,
    AbilityInterface
    ,
    UltimateInterface
    ) that inherit from the base
    Ability
    class.
  3. Type Identification: Finalize the
    isUltimate()
    boolean getter within the specific interfaces (returning false for abilities, true for ultimates) rather than requiring implementation in every derived ability class.
  4. Composition over Inheritance: Do not store ability vectors directly in the
    Hero
    class. Create separate entity classes (e.g.,
    Abilities
    ,
    Ultimates
    ) that encapsulate the vectors of pointers to the respective interfaces.
  5. Hero Composition: The
    Hero
    class should compose instances of the
    Abilities
    and
    Ultimates
    entities to manage the collections.
  6. Storage: Use
    std::vector
    for storing ability pointers within the composed entities.

Anti-Patterns

  • Do not use a single vector with runtime type checks if static typing via separate interfaces is available.
  • Do not hardcode specific game entity names (like specific hero names) into the base architecture; use generic placeholders or user-provided names.

Triggers

  • design c++ hero ability system
  • refactor c++ code to use composition
  • create polymorphic ability interfaces
  • separate abilities and ultimates in c++