build-threejs-enemy-systems

Builds data-driven enemy archetype and moveset systems for Three.js action games.

5.7k|685|Updated Feb 3, 2026
One-click install
npx skills add https://github.com/MengTo/Skills --skill build-threejs-enemy-systems
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: build-threejs-enemy-systems
Source: https://github.com/MengTo/Skills/tree/main/agent-skills/game-development/build-threejs-enemy-systems
Command: npx skills add https://github.com/MengTo/Skills --skill build-threejs-enemy-systems

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Enemy logic in Three.js games often becomes tangled with rendering, animation, and AI code, making enemies hard to extend, validate, or debug. This Skill enforces a clean separation between authored enemy content and runtime state so new enemies can be added as data instead of new code branches.

Core Features & Use Cases

  • Content/Runtime Separation: Defines immutable authored enemy definitions (stats, moves, presentation specs) consumed by shared runtime systems, with validation for duplicate IDs, missing references, and impossible timing.
  • Data-Driven Movesets: Specifies moves as data with startup, active windows, recovery, cooldowns, contact shapes, and feedback hooks, letting AI select legal move IDs while combat owns timing and outcomes.
  • Honest Fallbacks & Validation: Provides placeholder conventions preserving colliders, sockets, and timing when models are unavailable, plus deterministic fixtures and playthrough checks for desktop and mobile.
  • Use Case: When adding a new enemy to a Three.js action game, define it as a new authored definition referencing existing archetypes and moves, validate its content, and prove it with deterministic fixtures instead of writing ad-hoc runtime branches.

Quick Start

Use the build-threejs-enemy-systems skill to define a reusable enemy archetype and moveset system for this Three.js action game.

Frequently Asked Questions about build-threejs-enemy-systems

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I structure enemy data in a Three.js game?

Define enemies as immutable authored definitions containing stable IDs, base stats, presentation specs, move IDs, and AI hints, kept separate from runtime instances holding health, transform, and cooldowns. Reference definitions by ID and validate for duplicates and missing references.

How to define enemy attack moves as data in Three.js?

Define each move with a stable ID, eligibility range and angle, startup and active windows, recovery, cooldown, contact shape, damage, and animation/VFX hook IDs. Let AI select only legal move IDs while the combat system owns timing and resolves outcomes from contact events.

What should I do when an enemy model is not ready yet?

Use a deliberate placeholder that preserves footprint, height, pivot, collider, sockets, facing, and move timing, and log the fallback once. Never silently substitute a mismatched asset or treat placeholder visuals as production-ready.

How do I add a new enemy without breaking existing systems?

First check if existing archetypes and moves fit and configure a new definition instead of adding runtime branches. If a new behavior is essential, add the smallest reusable move, hook, or AI tag, then validate content and add deterministic fixtures.

How do I test enemy combat systems in Three.js?

Create deterministic fixtures for spawn, each move phase, wrong range, obstruction, interrupt, stagger, death, fallback, and LOD transitions. Test active-window boundaries, cooldowns, per-target hit deduplication, and run desktop and mobile playthroughs checking frame time and memory stability.