PHYSICAL COMPUTING LAB
各 STEP は独立したルート。共通のゲームループとステートマシン (@scripts/core) を土台に、入力デバイスと正規化だけを差し替えていく。 各 STEP
は動画1本で終える — 記録が残らなかった STEP は完了していない扱い。
PART I
機材を一切買わずに進む。手応えを得てから投資を判断する。
ゲームループと 4 状態 (attract/ready/play/result) の共通雛形。以降すべてコピーして使う。
「更新」と「描画」を分けたゲームループと、状態を明示するステートマシン。以降の全 STEP はこの構造をコピーして入力だけ差し替える。
音楽ファイルを D&D すると譜面が自動生成されてそのまま遊べる。時刻は AudioContext.currentTime 基準。
時刻の基準を AudioContext.currentTime に一元化し、音と描画のズレを防ぐ。判定はこの時刻軸だけで組む。
手を動かして落ちてくるボールを弾く。体がコントローラーになるブロック崩し。
カメラの生の骨格座標を、解像度に依存しない 0〜1 の入力に正規化してゲームに渡す。トラッキングの遅延と揺れをどう吸収するか。
スマホのセンサーを入力に、サーバー権威型で多人数対戦。※優先度低・後回し可。
判定をサーバー1箇所に集約するサーバー権威型で、複数クライアントの状態を破綻させずに同期する。ネットワーク遅延の前提で設計する。
PART II
マイコンは「値を流すだけの箱」に。判断はすべて PC 側へ。
Lチカ→Wi-Fi→WebSocket でブラウザと双方向通信。IMU を 50Hz で送りグラフ化。
マイコンは判断せず「値を流すだけの箱」に徹する。50Hz の連続送信を落とさずブラウザ側で受けてグラフ化するところまで通す。
プルアップとチャタリング除去。WebSocket と BLE HID の両方を作る。
物理スイッチのチャタリングをデバウンスで除去する。同じ入力を独自プロトコル(WebSocket)と標準デバイス(BLE HID)の2系統で出す設計を比べる。
ToF で洞窟飛行。中央値フィルタ→正規化→平滑化。ロスト処理=状態遷移。
ノイズの多い距離センサーを 中央値フィルタ→正規化→平滑化 の順で整える。値のロスト(検出失敗)を例外でなく状態遷移として扱う。
LEDテープ・サーボ・ソレノイド。電源分離と逆起電力対策。物理は失敗すると体で知る。
ロジックと駆動の電源を分離し、コイル負荷の逆起電力をフライバックダイオードで逃がす。ここは配線ミスが即ハードウェア破損につながる領域。
PART III
作品が動くことと、人に触られて朝から晩まで回ることは別のスキル。
既存の作品を「1週間放置しても回る状態」に。キオスク化・watchdog・8時間連続稼働テスト。
「動く」と「無人で1週間回り続ける」は別スキル。異常を検知して自動復帰する仕組みと、8時間連続稼働テストで壊れ方を先に知る。
磁気/測距/重量/NFC の 4 方式を並べて比較。センサー側とコンテンツ側を分離。
「手に取ると反応する」を4方式で実装し、反応速度・誤検知・設置性を横並びで比較する。センサー側とコンテンツ側を疎結合に保つ。
PART IV
8時間触って、自分に合うか合わないかを結論として書き残す。
8時間で結論を出す。既に作ったものを 1 つ再実装して比較。結論を出すこと自体が成果物。
コードで作った1作品をノードベース環境で再実装し、自分の制作スタイルに合うかを8時間で判断する。「越境するか否かの結論」自体が成果物。
PARALLEL
メイントラックに順番で挟まず、平日枠で常時進める。
Part Design と Sketcher だけに絞る。完全拘束を目で確認する癖をつける。
テストピース駆動。収縮率・はめあい・熱圧入インサート下穴径を実測して残す。
テンプレート・1枚ガイド・ワークショップ。レーザー/CNC の導入検討。