Agent skill

tictactoe

Tic Tac Toe game development for Unity. Use for game logic, AI implementation, MVVM architecture, and UI development specific to this project.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/testing/tictactoe

SKILL.md

Tic Tac Toe Game Development Skill

Unity 6 での Tic Tac Toe(三目並べ)AI 対戦ゲーム開発のためのスキル定義。

When to Use This Skill

このスキルは以下の作業時にトリガーされる:

  • TicTacToe ゲームのロジック実装
  • 盤面管理、勝敗判定、ターン管理
  • AI 対戦ロジックの実装
  • MVVM + Clean Architecture に基づく UI 実装
  • VContainer/R3 を使用した DI・イベント実装

Project Overview

Game Specification

  • ゲームモード: AI 対戦オンリー(難易度なし)
  • 先手後手: ランダム決定
  • UI: 2D uGUI(PC 向け、マウス操作)
  • 演出: アニメーション、効果音あり
  • スコア/リプレイ: なし

Tech Stack

  • Engine: Unity 6000.3.2f1
  • DI: VContainer
  • Reactive: R3 (Reactive Extensions)
  • UI: uGUI (Canvas)
  • Architecture: MVVM + Clean Architecture
  • Deployment: WebGL → GitHub Pages

Quick Reference

Directory Structure

Assets/TicTacToe/
├── Scenes/
│   └── TicTacToeScene.unity
├── Prefabs/UI/
│   ├── BoardPanel.prefab
│   ├── CellButton.prefab
│   ├── ResultPanel.prefab
│   └── TurnIndicator.prefab
├── Scripts/
│   ├── Core/                    # Domain Layer
│   │   ├── Domain/              # Entities, Value Objects
│   │   ├── Repositories/        # Data Containers
│   │   ├── Services/            # Facades (Transaction Boundary)
│   │   └── Strategies/          # AI Algorithms
│   ├── Presentation/            # MVVM Layer
│   │   ├── Board/               # BoardView, BoardViewModel
│   │   ├── Cell/                # CellView, CellViewModel
│   │   ├── Result/              # ResultView, ResultViewModel
│   │   ├── TurnIndicator/       # TurnIndicatorView, TurnIndicatorViewModel
│   │   └── Mediators/           # GameMediator
│   ├── Infrastructure/          # DI, Factories
│   │   ├── Installers/
│   │   └── Factories/
│   └── EntryPoints/
├── Tests/
│   ├── EditMode/
│   └── PlayMode/
├── Audio/SE/
├── Art/Sprites/
└── Animations/

Namespace Convention

csharp
namespace TicTacToe.Core.Domain { }
namespace TicTacToe.Core.Repositories { }
namespace TicTacToe.Core.Services { }
namespace TicTacToe.Core.Strategies { }
namespace TicTacToe.Presentation.Board { }
namespace TicTacToe.Presentation.Cell { }
namespace TicTacToe.Presentation.Mediators { }
namespace TicTacToe.Infrastructure.Installers { }

Key Patterns

Domain Models

csharp
// CellState.cs
public enum CellState { Empty, X, O }

// PlayerType.cs
public enum PlayerType { Human, AI }

// BoardPosition.cs
public readonly struct BoardPosition
{
    public int Row { get; }
    public int Column { get; }
}

Service Pattern

csharp
// GameService.cs - Facade / Transaction Boundary
public class GameService
{
    private readonly BoardRepository _boardRepository;
    private readonly IAIStrategy _aiStrategy;

    public IObservable<GameResult> OnGameEnd { get; }
    public IObservable<PlayerType> OnTurnChanged { get; }

    public void PlaceMark(BoardPosition position) { }
    public void StartNewGame() { }
}

MVVM Pattern

csharp
// ViewModel
public class CellViewModel : IDisposable
{
    public IReadOnlyReactiveProperty<CellState> State { get; }
    public IObservable<Unit> OnClicked { get; }
}

// View
public class CellView : MonoBehaviour
{
    [Inject] private CellViewModel _viewModel;
    [SerializeField] private Button _button;
    [SerializeField] private Image _markImage;
}

AI Strategy

csharp
public interface IAIStrategy
{
    BoardPosition DecideMove(IReadOnlyList<CellState> board, CellState aiMark);
}

public class RandomAIStrategy : IAIStrategy { }
// Future: MinimaxAIStrategy, etc.

Reference Files

WebGL Deployment (GitHub Pages)

Build Settings

  • 圧縮形式: Disabled(GitHub Pages 互換)
  • 解像度: 960x600
  • メモリ: 256MB
  • Color Space: Linear

Build Helper

Assets/TicTacToe/Editor/WebGLBuildHelper.cs でビルド自動化:

TicTacToe/WebGL/1. Setup Build Settings     → シーン設定
TicTacToe/WebGL/2. Configure WebGL Player Settings → プレイヤー設定
TicTacToe/WebGL/3. Switch to WebGL Platform → プラットフォーム切替
TicTacToe/WebGL/4. Build WebGL              → ビルド実行

Deploy Workflow (git worktree)

bash
# 1. worktree作成(gh-pagesブランチ用)
git worktree add ../UnityTest-gh-pages gh-pages

# 2. ビルドファイルをコピー
cd ../UnityTest-gh-pages
rm -rf Build TemplateData index.html
cp -r ../UnityTest/Build/WebGL/* .

# 3. コミット & プッシュ
git add -A
git commit -m "Deploy WebGL build"
git push origin gh-pages

# 4. worktree削除
cd ../UnityTest
git worktree remove ../UnityTest-gh-pages

Public URL

https://yuemori.github.io/UnityMCPTest/

WebGL Known Issues

問題 原因 解決策
AI turns not progressing Task.Delay() WebGL 非対応 Observable.Timer() (R3) 使用
Brotli decode error GitHub Pages Content-Encoding 未設定 圧縮形式 Disabled を使用

Integration with Other Skills

  • claude_skill_unity: Unity 汎用パターン、MonoBehaviour ライフサイクル
  • Serena Memory: 実装進捗、セッション引き継ぎ

Notes

  • VContainer/R3 は要パッケージ追加
  • UI は全て Prefab 化(Scene に直接配置しない)
  • テストは Core 層を中心に作成
  • WebGL ではSystem.Threading.Tasksの使用を避け、R3 Observable を使用

Didn't find tool you were looking for?

Be as detailed as possible for better results