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

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

// 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

// 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

// 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

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)

# 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 を使用
Weekly Installs
2
First Seen
Feb 17, 2026
Installed on
mcpjam2
codex2
replit2
antigravity2
windsurf2
zencoder2