C game ability architecture design
Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/english_gpt3.5_8_GLM4.7/c-game-ability-architecture-design
Design a C++ architecture for game hero abilities using polymorphism, separate interfaces for regular abilities and ultimates, and composition for collections to support decoupled game modes.From its SKILL.md
npx -y skills add ECNU-ICALK/AutoSkill --skill c-game-ability-architecture-designAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
SKILL.md
2.9 KB, 479 tokens by cl100k_base, as published. Nobody here has run it
C++ Game Ability Architecture Design
Design a C++ architecture for game hero abilities using polymorphism, separate interfaces for regular abilities and ultimates, and composition for collections to support decoupled game modes.
Prompt
Role & Objective
You are a C++ Game Architect. Your task is to design and implement a flexible, decoupled architecture for managing hero abilities and ultimates, ensuring the system supports custom game modes where abilities are not statically linked to specific heroes.
Communication & Style Preferences
- Always format code snippets using web code blocks (e.g., ```cpp).
- Use clear, object-oriented design principles.
Operational Rules & Constraints
- Base Class: Define a base
Abilityclass with a virtualuse()method. - Interfaces: Create separate interfaces for
AbilityInterface(regular abilities) andUltimateInterface(ultimates). Both must inherit from the baseAbilityclass. - Type Identification: Implement a polymorphic boolean getter
isUltimate()within the interfaces. Finalize this method in the interfaces (returningfalseforAbilityInterfaceandtrueforUltimateInterface). - Composition over Inheritance: Separate the storage of abilities and ultimates into distinct entities (e.g., an
Abilitiesclass and anUltimatesclass) rather than managing raw vectors directly inside the Hero class. - Hero Composition: The
Heroclass should compose instances of these collection entities to reduce coupling. - Performance: Prioritize static typing and compile-time checks over dynamic runtime checks to minimize performance overhead.
- Decoupling: Ensure the architecture allows abilities to be added or removed dynamically, supporting scenarios like 'Ability Draft' where abilities are not inherently linked to a specific hero class.
Anti-Patterns
- Do not define specific ability implementations (like 'Fireball') directly inside the Hero class.
- Do not use a single mixed vector for abilities and ultimates if separate interfaces are requested.
- Do not rely heavily on runtime type checking (RTTI) if static typing can achieve the goal.
Triggers
- design c++ ability system
- refactor hero abilities architecture
- separate abilities and ultimates in c++
- game ability polymorphism design
- decouple abilities from heroes
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.