Créer un nouveau boss

VérifiéSûr

Compétence pour ajouter un nouveau boss à un jeu RPG en ligne, gérant la configuration serveur, la classe d'ennemi, le gestionnaire de spawn, le moteur de jeu et la visualisation client.

Spar Skills Guide Bot
DeveloppementIntermédiaire
27/07/2026
Claude Code
#game-development#rpg#enemy-ai#typescript#fullstack

Recommandé pour

Synthèse automatique

Ce skill accompagne l'ajout complet d'un nouveau boss dans un RPG en ligne, depuis la configuration serveur jusqu'au rendu 3D côté client.

Points forts

  • Découpe l'intégration en 5 étapes explicites (config, classe ennemie, SpawnManager, GameEngine, SnapshotRenderer) avec les chemins de fichiers concernés
  • Fournit un gabarit TypeScript de classe boss (stats, update, takeDamage) directement adaptable
  • Commence par recueillir les informations nécessaires : stats, capacités spéciales, géométrie/couleur et timing d'apparition
  • Suit les conventions du dépôt (fichiers LimboBosses.ts, SPAWN_TIMERS, flags isBossAlive) pour rester cohérent avec l'existant

Limites

  • Très lié à l'architecture de ce dépôt précis : les chemins server/src et client/js ne se transposent pas ailleurs
  • Ne propose qu'une indication de stats « selon la progression du jeu », sans règle d'équilibrage chiffrée
  • Ne couvre ni les tests, ni la validation en jeu du boss une fois intégré
Quand l'utiliser

À utiliser lorsqu'on veut ajouter un tout nouveau boss ou ennemi nommé au jeu, avec ses statistiques, son IA et son apparition.

Quand l'éviter

À éviter pour de petites retouches sur un boss existant ou pour du contenu qui n'est pas un ennemi (armes, niveaux, UI).

Analyse de sécurité

Sûr
Score qualité92/100

The skill only instructs reading and editing game source files to add a new boss. It contains no destructive commands, no network exfiltration, no obfuscated payloads, and does not instruct the agent to run arbitrary scripts or disable safety. The declared allowed tools include Bash but the skill body does not use it.

Aucun point d'attention détecté

Comment cette analyse est faite

Exemples

Boss complet
Crie um novo boss chamado Dragão Sombrio, com HP alto, um ataque de fogo em área e que apareça após 10 minutos de jogo.
Boss simples com visual específico
Adicione um novo inimigo boss do tipo SlimeKing, com geometria Sphere roxa, hitbox pequena e recompensa de XP alta.
Boss com fases
Quero um novo boss que fica invulnerável até cair para 50% de HP e depois fica mais rápido — cria a classe e integra no spawn.

name: newboss description: Cria um novo boss para o jogo RPG online. Use quando o usuário pedir para criar um novo boss, adicionar um novo inimigo, ou criar um novo personagem/boss para o jogo. argument-hint: <nome-do-boss> allowed-tools: [Read, Write, Edit, Grep, Glob, Bash, Agent]

New Boss Creation Skill

This skill helps you add a new boss to the online RPG game. It handles all 5 steps needed to fully integrate a new boss into both server and client.

Understanding the Architecture

Before creating a boss, understand the flow:

  1. Config (server/src/config.ts) - Defines HP, damage, speed, XP, score, hitbox, and spawn timer
  2. Enemy Class (server/src/game/enemies/*.ts) - Server-side logic (AI, abilities, update loop)
  3. SpawnManager (server/src/game/SpawnManager.ts) - Controls when/where boss spawns
  4. GameEngine (server/src/game/GameEngine.ts) - Instantiates the boss on spawn events
  5. SnapshotRenderer (client/js/SnapshotRenderer.js) - Client-side 3D visualization

Step 1: Gather Boss Information

Ask the user for:

  • Boss name (e.g., "Dark Dragon")
  • Type identifier (e.g., "DarkDragon" - used in code)
  • Base stats:
    • HP (suggest based on game progression)
    • Damage
    • Speed
    • XP reward
    • Score reward
    • Hitbox radius
  • Special abilities (if any): Describe AI behavior, attacks, special moves
  • Visual: Preferred geometry (Box, Cone, Sphere, Cylinder, Octahedron) and color (hex)
  • Spawn timing: After how many minutes should it appear? (adds to SPAWN_TIMERS)

Step 2: Update Config

Read server/src/config.ts and add a new config block:

BOSS_NAME: {
    BASE_HP: <hp>,
    BASE_DAMAGE: <damage>,
    SPEED: <speed>,
    XP: <xp>,
    SCORE: <score>,
    HITBOX_RADIUS: <radius>,
},

Also add spawn timer in SPAWN_TIMERS:

BOSS_NAME: <minutes> * 60 * 1000, // Spawns after X minutes

Step 3: Create Enemy Class

Create or update a file in server/src/game/enemies/. For bosses, use existing files like LimboBosses.ts or create a new one.

Template for new boss class:

import { ServerEnemy } from './Enemy';
import { ServerPlayer } from '../Player';
import { Vec3 } from '../../utils/Vector3';
import { CONFIG } from '../../config';

export class BossNameEnemy extends ServerEnemy {
    constructor(pos: Vec3, globalMult: number, playerLevel?: number, playerMaxHp?: number) {
        super(pos);
        this.type = 'BossName'; // Must match config key and spawn event type
        this.name = 'Boss Display Name';
        const c = CONFIG.BOSS_NAME;
        this.maxHp = c.BASE_HP * globalMult;
        this.hp = this.maxHp;
        this.damage = c.BASE_DAMAGE * globalMult;
        this.speed = c.SPEED;
        this.originalSpeed = c.SPEED;
        this.xp = c.XP;
        this.score = c.SCORE;
        this.hitboxRadius = c.HITBOX_RADIUS;
        this.position.y = 1.75; // Adjust based on geometry
    }

    update(dt: number, players: ServerPlayer[], gameTime: number): void {
        super.update(dt, players, gameTime);
        if (this.isDestroyed) return;

        // Custom AI logic here
        // Find nearest player, move towards, use abilities, etc.
    }

    takeDamage(amount: number, instigator: ServerPlayer | null, countsForPassive = true): void {
        // Custom damage handling (barriers, immunity phases, etc.)
        super.takeDamage(amount, instigator, countsForPassive);
    }
}

Step 4: Update SpawnManager

Read server/src/game/SpawnManager.ts and:

  1. Add alive flag:
public isBossNameAlive = false;
  1. Add timer in constructor:
this.timers.spawnBossName = t.BOSS_NAME;
  1. Add spawn logic in update() method - follow pattern of existing bosses like spawnGuardiãoDoLimbo:
// Spawn Boss Name
if (!this.isBossNameAlive && this.gameTime >= this.timers.spawnBossName) {
    this.isBossNameAlive = true;
    events.push({
        type: 'BossName',
        position: new Vec3(
            (Math.random() - 0.5) * 80,
            1.75,
            (Math.random() - 0.5) * 80
        )
    });
}
  1. Add death handling - find where other bosses set isXAlive = false and add similar logic for the new boss.

Step 5: Update GameEngine

Read server/src/game/GameEngine.ts and:

  1. Add import:
import { BossNameEnemy } from './enemies/BossFile';
  1. Add case in handleSpawnEvent() method:
case 'BossName': {
    const boss = new BossNameEnemy(ev.position, this.globalMultiplier);
    this.enemies.push(boss);
    const sm = this.spawnManager as any;
    sm.isBossNameAlive = true;
    break;
}

Step 6: Update Client Renderer

Read client/js/SnapshotRenderer.js and add entry in enemyVisuals:

BossName: { geo: new THREE.BoxGeometry(2, 2, 2), color: 0xFF0000 },

Choose appropriate geometry:

  • BoxGeometry(width, height, depth) - for box-shaped enemies
  • ConeGeometry(radius, height, segments) - for cone-shaped
  • SphereGeometry(radius, widthSegments, heightSegments) - for spherical
  • CylinderGeometry(radiusTop, radiusBottom, height, segments) - for cylinders
  • OctahedronGeometry(radius, detail) - for crystal-like enemies

Step 7: Verify

After all changes:

  1. Check that the boss type string is consistent across all files
  2. Ensure the config key matches the type used in enemy class
  3. Verify the spawn event type matches the case in GameEngine
  4. Test by running the server and waiting for spawn timer

Important Notes

  • Boss type property must be unique and match what's used in spawn events
  • The position.y should be set to half the height of the geometry for proper ground placement
  • For bosses with special abilities (minions, projectiles, zones), look at existing examples like FeiticeiroImortalEnemy or SuperBossEnemy
  • Minions should be added to server/src/game/enemies/Minions.ts and handled in GameEngine's handleSpawnEvent

Quick Reference: File Paths

| Purpose | File Path | |---------|-----------| | Config | server/src/config.ts | | Enemy class | server/src/game/enemies/*.ts | | Spawn logic | server/src/game/SpawnManager.ts | | Engine integration | server/src/game/GameEngine.ts | | Client visuals | client/js/SnapshotRenderer.js |

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/new-boss-creation-ms2s7c3w/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/new-boss-creation-ms2s7c3w' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/new-boss-creation-ms2s7c3w/download' --output '.skill-downloads/new-boss-creation-ms2s7c3w/SKILL.md.part' && mv '.skill-downloads/new-boss-creation-ms2s7c3w/SKILL.md.part' '.skill-downloads/new-boss-creation-ms2s7c3w/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Extrait original : Quick Reference: File Paths
PurposeFile Path
Configserver/src/config.ts
Enemy classserver/src/game/enemies/*.ts
Spawn logicserver/src/game/SpawnManager.ts
Engine integrationserver/src/game/GameEngine.ts
Client visualsclient/js/SnapshotRenderer.js

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/new-boss-creation-ms2s7c3w/SKILL.md' && test -s '.skill-downloads/new-boss-creation-ms2s7c3w/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/newboss' && cp -R '.skill-downloads/new-boss-creation-ms2s7c3w' '.claude/skills/newboss'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/new-boss-creation-ms2s7c3w'

openskills read 'new-boss-creation-ms2s7c3w'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/new-boss-creation-ms2s7c3w/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires