鈴鹿回路 (SUZUKA KAIRO)
Game / Hardware

鈴鹿回路 (SUZUKA KAIRO)

UnityESP32/C++GoPython / LLM
Suzuka Kairo Logo
🏆Happy Hacking Award

SUZUKA KAIRO

電子となって、回路を駆け巡る

A Hardware-Integrated Time Attack Racing Game

Visit Official Site
SCROLL TO DIVE

SYSTEM ARCHITECTURE

物理世界の「電気の流れ」を、デジタルの「ゲームロジック」へと昇華させる。 ハードウェアからクラウドまで一貫したデータフロー設計。

ARCHITECTURE DIAGRAM
System Architecture Diagram

Physical Input

Hardware / Circuit

独自の物理コントローラと基板マップ。ジャンパ線の短絡を検知。

Serial Comm

ESP32 (C++)

物理信号をデジタルデータへ変換し、シリアル通信で送信。

Game Logic

C# / Unity

物理演算、衝突判定、レンダリング。入力信号をゲーム内物理へ反映。

API Layer

Go (Gin)

AI APIキーの隠蔽とリクエスト制御を行う中間サーバー。

Data & AI

Python / LLM

プレイログのJSONL保存と、Azure OpenAIによる実況生成。

MY ROLE & RESPONSIBILITY

UI / UX Design

  • Start / Result UI
  • State Machine Design
  • Audio Management
  • Visual Effects (Shader Graph)

Data Architecture

  • Ranking System (JSON)
  • Replay Recorder (JSONL)
  • Map Data Structure
  • Local Storage IO

AI & Logic

  • Real-time Commentary Log
  • Race Analysis (LLM)
  • Prompt Engineering
  • Context Management

Backend / Infra

  • Go Proxy Server
  • API Key Security
  • Request Throttling
  • Error Handling

Full Stack Engagement: From Hardware Interface to AI Integration

GAME EXPERIENCE

Start Screen

Title Screen

電子が反発し合う物理演算を取り入れたロゴアニメーション。

Suzuka Course Overview
COURSE VIEW
In-Game UI

Diegetic UI Design

UIを「計測機器」としてデザイン。 速度を「電流計(A)」、ターボ残量を「電圧計(V)」として表現し、 SF的な世界観没入を阻害しない画面設計を徹底しました。

HARDWARE FUSION

Industrial Aesthetics

"Naked" Controller Design

筐体を持たず、基板と配線が剥き出しになった独自コントローラ。 「中身が見える」ことの美しさと、電子回路への興味を誘うデザインを意図しています。 プレイヤーは物理的な「電気の結合」を直接手で操作します。

Custom Controller with naked wiring
ESP32 INSIDE
Physical Switch Operation
GIMMICK ACTION

Physical Interaction

Manual Toggle Switch

ゲーム内のギミック解除も物理スイッチで行います。 「回路を物理的にONにする」手触りが、ゲーム画面内のアクションと完全に同期する没入感を目指しました。 基本的な操作(ハンドル・アクセル)も全てジャンパ線同士の物理的な接触(短絡)によって行われます。

Physical Map Cartridge

Map Cartridge Before
BEFORE

好きなコースの基板を選んで...

Map Cartridge After
AFTER

コントローラに「ガチャン」とドッキング!

かつてのゲームカセットのように、物理的な基板を差し替えることでステージ選択を行います。 デジタルなメニュー画面操作を廃し、フィジカルな手触りにこだわりました。

DATA DRIVEN & AI

Replay Data Visualization

replay_log.jsonl
{"timestamp":5.852713584899902,"eventType":"race_start"}
{"timestamp":5.959995746612549,"eventType":"player_state","eventData":{"position":{"x":0.399999737739563,"y":-4.768368100371845e-8},"angle":270,"velocity":{"x":4.000000476837158,"y":-4.76837158203125e-7},"ampere":0.10000000149011612,"voltage":5,"componentContext":{"onComponent":true,"componentType":"Conductor","componentId":-1,"componentValue":0}}}
{"timestamp":6.069995880126953,"eventType":"player_state","eventData":{"position":{"x":0.8399993181228638,"y":-1.0013572193656728e-7},"angle":270,"velocity":{"x":4.000000476837158,"y":-4.76837158203125e-7},"ampere":0.10000000149011612,"voltage":5,"componentContext":{"onComponent":true,"componentType":"Conductor","componentId":-1,"componentValue":0}}}
{"timestamp":6.1,"eventType":"player_state","eventData":{"ampere":0.1,"voltage":5,"velocity":{"x":5,"y":0}}}
{"timestamp":6.199999999999999,"eventType":"player_state","eventData":{"ampere":0.14392117666229123,"voltage":4.99,"velocity":{"x":4.955336489125606,"y":0}}}
{"timestamp":6.3,"eventType":"player_state","eventData":{"ampere":0.14489594940159217,"voltage":4.98,"velocity":{"x":4.825335614909679,"y":0}}}
{"timestamp":6.3999999999999995,"eventType":"player_state","eventData":{"ampere":0.13032414697690078,"voltage":4.97,"velocity":{"x":4.621609968270665,"y":0}}}
{"timestamp":6.5,"eventType":"player_state","eventData":{"ampere":0.13987656137730559,"voltage":4.96,"velocity":{"x":4.362357754476673,"y":0}}}
...

走行データは全てJSONL形式で保存され、リプレイ再生やゴースト機能の基盤となります。 「いつ」「どこで」「どんな操作をしたか」を完全再現可能です。

AI Commentary Logic

INPUT (LOG QUERY)

{
  "timestamp": 5.95,
  "eventType": "player_state",
  "eventData": {
    "velocity": { "x": 4.0, "y": 0 },
    "ampere": 0.1,
    "componentContext": { "componentType": "Conductor" }
  }
}

OUTPUT (TTS)

「第2コーナーに高速で突入!この速度で曲がりきれるか!?」

Azure OpenAIを利用し、ログデータから「実況」をリアルタイム生成。 単なる数値の羅列ではなく、レースの文脈を理解した熱いコメンタリーを提供します。

LESSONS LEARNED

Challenge: Unity Team Dev

Git Conflict in Unity

シーンファイル(.unity)のコンフリクトにより、オブジェクトの参照(ヒエラルキー関係)が破損する問題が頻発しました。 最終的には、作業用シーンのバックアップを作成し、競合時にUnityエディタ上で正常なオブジェクトをコピー&ペーストして復旧する運用で乗り切りました。

Solution: Debug Architecture

Custom Debug Tools

ゲームロジックを複数のPrefabに分割し、シーンへの依存を最小限に抑える設計へシフト。 また、DBファイルの保存フォルダをワンクリックで開くメニューをエディタ拡張で自作するなど、Unityエディタ自体のカスタマイズによる効率化も学びました。