Synthèse automatique
Crée des paquets de protocole serveur de type requête-réponse et événement pour le serveur moorestech en utilisant la sérialisation MessagePack.
Points forts
- Instructions étape par étape claires pour créer des protocoles serveur
- Couvre à la fois les protocoles requête-réponse et événement
- Inclut l'enregistrement des protocoles et les références aux tests
- Utilise l'injection de dépendances et les modèles de conception standard
Limites
- Spécifique à la base de code du serveur moorestech (Unity/MessagePack)
- Nécessite une compréhension de l'architecture existante
- Ne couvre pas les protocoles génériques ou autres frameworks
Lors de l'ajout d'une nouvelle communication client-serveur dans le serveur moorestech.
Pour la conception de protocoles réseau génériques en dehors de l'écosystème moorestech.
Analyse de sécurité
SûrThis skill only provides guidance for implementing server protocols in C# within a Unity game project. There are no executable commands, network calls, or destructive actions described. It is purely instructional.
Aucun point d'attention détecté
Comment cette analyse est faiteExemples
Create a new request-response protocol for getting a player's inventory. The client should send a player ID and receive a list of items with quantities.Add an event packet that notifies all clients when a player dies, including the player ID and death position.Implement a request-response protocol to send a chat message from client to server, and an event to broadcast chat messages to all players.name: creating-server-protocol description: | moorestechサーバーのプロトコル(Request-Response型・Event型)を作成するためのガイド。 Use when:
- 新しいサーバープロトコル(IPacketResponse)を実装する時
- 新しいイベントパケット(EventPacket)を実装する時
- 「プロトコルを作って」「パケットを追加して」と依頼された時
- クライアント-サーバー間の通信を新規追加する時
サーバープロトコル作成ガイド
プロトコル選択
| 条件 | 種類 | |------|------| | クライアントが明示的に情報を要求/操作を実行 | Request-Response型 | | サーバー側の状態変化をクライアントに通知 | Event型 |
詳細パターンとコード例: references/protocol-patterns.md を参照。
Request-Response型の作成手順
Step 1: プロトコルクラスを作成
moorestech_server/Assets/Scripts/Server.Protocol/PacketResponse/ に新規ファイルを作成。
using System;
using System.Collections.Generic;
using MessagePack;
using Server.Protocol;
namespace Server.Protocol.PacketResponse
{
public class YourProtocol : IPacketResponse
{
public const string ProtocolTag = "va:yourProtocol";
private readonly ISomeDependency _dependency;
public YourProtocol(ServiceProvider serviceProvider)
{
_dependency = serviceProvider.GetService<ISomeDependency>();
}
public ProtocolMessagePackBase GetResponse(byte[] payload)
{
var data = MessagePackSerializer.Deserialize<YourRequestMessagePack>(payload);
// ビジネスロジック
return new YourResponseMessagePack(/* result */);
}
#region MessagePack
[MessagePackObject]
public class YourRequestMessagePack : ProtocolMessagePackBase
{
// Key(0)=Tag, Key(1)=SequenceId は基底クラスで予約済み
[Key(2)] public int SomeField { get; set; }
[Obsolete("デシリアライズ用のコンストラクタです。基本的に使用しないでください。")]
public YourRequestMessagePack() { }
public YourRequestMessagePack(int someField)
{
Tag = ProtocolTag;
SomeField = someField;
}
}
[MessagePackObject]
public class YourResponseMessagePack : ProtocolMessagePackBase
{
[Key(2)] public string ResultData { get; set; }
[Obsolete("デシリアライズ用のコンストラクタです。基本的に使用しないでください。")]
public YourResponseMessagePack() { }
public YourResponseMessagePack(string resultData)
{
Tag = ProtocolTag;
ResultData = resultData;
}
}
#endregion
}
}
Step 2: PacketResponseCreatorに登録
moorestech_server/Assets/Scripts/Server.Protocol/PacketResponseCreator.cs のコンストラクタに追加:
_packetResponseDictionary.Add(YourProtocol.ProtocolTag, new YourProtocol(serviceProvider));
Step 3: テストを作成
/creating-server-tests スキルを使用してテストを作成。配置先: Tests/CombinedTest/Server/PacketTest/
Step 4: コンパイル確認
MCPツールまたはunity-test.shでコンパイルを確認。
Event型の作成手順
Step 1: イベントパケットクラスを作成
moorestech_server/Assets/Scripts/Server.Event/EventReceive/ に新規ファイルを作成。
using System;
using Game.Context;
using MessagePack;
using Server.Event;
namespace Server.Event.EventReceive
{
public class YourEventPacket
{
public const string EventTag = "va:event:yourEvent";
private readonly EventProtocolProvider _eventProtocolProvider;
public YourEventPacket(EventProtocolProvider eventProtocolProvider)
{
_eventProtocolProvider = eventProtocolProvider;
// ゲームイベントを購読(UniRx .Subscribe)
ServerContext.SomeEvent.OnSomething.Subscribe(OnSomething);
}
private void OnSomething(SomeEventData eventData)
{
var messagePack = new YourEventMessagePack(eventData.Value);
var payload = MessagePackSerializer.Serialize(messagePack);
// 全プレイヤー: AddBroadcastEvent / 特定プレイヤー: AddEvent(playerId, ...)
_eventProtocolProvider.AddBroadcastEvent(EventTag, payload);
}
#region MessagePack
[MessagePackObject]
public class YourEventMessagePack
{
// EventのMessagePackはProtocolMessagePackBaseを継承しない。Key(0)から開始
[Key(0)] public string Value { get; set; }
[Obsolete("デシリアライズ用のコンストラクタです。基本的に使用しないでください。")]
public YourEventMessagePack() { }
public YourEventMessagePack(string value)
{
Value = value;
}
}
#endregion
}
}
Step 2: イベントパケットを初期化
イベントを発火する責任を持つシステムのコンストラクタでインスタンス化し、フィールドに保持する(GC防止)。
例: ブロック配置イベント → BlockUpdateSystemで初期化、レールノード作成イベント → RailGraphDatastore関連で初期化。
Step 3: テストを作成
/creating-server-tests スキルを使用。配置先: Tests/CombinedTest/Server/PacketTest/Event/
Step 4: コンパイル確認
MCPツールまたはunity-test.shでコンパイルを確認。
注意事項
- タグの一意性を必ず確認する(既存タグと重複しないこと)
- MessagePackのKey番号: Request/ResponseはKey(2)から、EventデータはKey(0)から
[Obsolete]付き引数なしコンストラクタは省略不可- イベント購読はUniRxの
.Subscribe()を使用(/csharp-event-pattern参照) - コードのコメントは日本語・英語の2行セット
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 annexesCe 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.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/creating-moorestech-server-protocols-mma3jqyp/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/creating-moorestech-server-protocols-mma3jqyp' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/creating-moorestech-server-protocols-mma3jqyp/download' --output '.skill-downloads/creating-moorestech-server-protocols-mma3jqyp/SKILL.md.part' && mv '.skill-downloads/creating-moorestech-server-protocols-mma3jqyp/SKILL.md.part' '.skill-downloads/creating-moorestech-server-protocols-mma3jqyp/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.
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
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/creating-moorestech-server-protocols-mma3jqyp/SKILL.md' && test -s '.skill-downloads/creating-moorestech-server-protocols-mma3jqyp/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/creating-server-protocol' && cp -R '.skill-downloads/creating-moorestech-server-protocols-mma3jqyp' '.claude/skills/creating-server-protocol'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’OpenSkillsopenskills install './.skill-downloads/creating-moorestech-server-protocols-mma3jqyp'openskills read 'creating-moorestech-server-protocols-mma3jqyp'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 syncMode 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/creating-moorestech-server-protocols-mma3jqyp/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.
Bonnes pratiques React Hook Form
Developpement
Maîtrisez React Hook Form : évitez les anti-patterns, gérez les abonnements, et traitez correctement reset, dirty state et entrées contrôlées.
Migration Emotion vers Mantine
Developpement
Migrer les styled-components Emotion vers des composants Mantine avec style props et modules CSS. Pour convertir .styled.tsx ou supprimer les imports @emotion.
Détecteur de dérive de périmètre
Developpement
Analyse les diffs git par rapport à une intention pour détecter la dérive de périmètre, fichiers non liés et PR trop larges, puis suggère de garder, diviser ou justifier.