変更履歴 — Hapbeat Unity SDK
This content is not available in your language yet.
Hapbeat Unity SDK の主要な変更点をまとめます。
形式は Keep a Changelog に、 バージョン付けは Semantic Versioning に従います。
[0.2.1] - 2026-05-30
Section titled “[0.2.1] - 2026-05-30”v0.2.0 直後に発覚した sample アップグレード時の compile error と、EventMap の使い勝手改善をまとめた hotfix リリース。
Fixed(修正)
Section titled “Fixed(修正)”- Sample namespace を folder 名に追従 (
Hapbeat.Samples.Tutorial→Hapbeat.Samples.Showcase) v0.2.0 でTutorial→Showcaseに folder rename したが、namespace が legacy のまま残っていた。 古いバージョン (v0.1.x) の Tutorial sample を import 済みの状態で v0.2.0 の Showcase sample を import すると、同一 namespace 下で同名 class が二重定義になり compile error が発生していた問題を解消。 あわせて Showcase の scene / prefab / animator 内に残っていた legacy namespace 参照 (m_TargetAssemblyTypeName等) も修正し、UnityEvent 配線の解決ずれを解消。 HierarchySeparatorを復活 — v0.2.0 の cleanup で巻き込み削除されていた、Hierarchy 上の区切り装飾 (-------- ... --------) を Showcase namespace + Unity 6 API (EntityIdToObject) で再追加。
Added(追加)
Section titled “Added(追加)”Hapbeat > Diagnostics > Check Sample Versions—Assets/Samples/Hapbeat SDK/配下に複数バージョンの sample が同時 import されている場合に Console 警告を出す診断ツール。Editor 起動時に自動 scan + 手動再実行可能。- EventMap Window: Bulk Edit モーダル — toolbar の
Bulk Editから起動。Mode / Gain / Loop / Target / Delay Offset / Manifest Override / Notes を Override チェックで選択的に一括編集できる。最上部のSelect allトグル (デフォルト ON) で全 entry または Table 選択行を対象に切替。変更は 1 つの Undo group にまとまる。 - EventMap Table view: Ctrl/Cmd+A で全行選択 — inline text field 編集中はテキスト全選択を奪わない。
- Table view の Target セルクリック / 右クリック
Set Target...による target 一括適用 (player / position / group) も従来通り利用可能。
Changed(変更)
Section titled “Changed(変更)”- Unity 6 (6000.0) 以上を要件化 —
package.jsonのunityを2021.3→6000.0に更新。SDK 本体が既に Unity 6 のEntityIdToObjectを使用しているため、実態に合わせた是正。 - EventMap の mode 選択から
LIVEを削除 — Table / Inspector ともFIRE/CLIPの 2 択に統一 (LIVEは廃止済みで UI ラベルのみ残っていた)。 - Settings の Haptic Delay 表示を ms 単位に — スライダーを
Haptic Delay (ms)(0–500 ms) 表記に変更。内部ストレージは秒のまま (プロトコル / per-entry delay と一貫)。
Migration(移行)
Section titled “Migration(移行)”v0.2.0 → v0.2.1 で Sample を再 import する場合は古いバージョンの folder を削除してください
Unity の UPM Samples は package 更新時に古い import folder (Assets/Samples/Hapbeat SDK/<旧バージョン>/) を自動削除しません。残っていると同一クラスの二重定義で compile error になります。Project ウィンドウで該当 folder を削除してから新しい Sample を import してください。SDK が起動時に自動 scan して警告を出します。
0.2.0 - 2026-05-26
Section titled “0.2.0 - 2026-05-26”v0.1.0 以降に蓄積した API 整理・サンプル再編・遅延補正・Editor UX 改修をまとめたリリース。 Pre-1.0 のため Breaking change を含みます — 詳細は下記を参照。
Breaking changes(破壊的変更)
Section titled “Breaking changes(破壊的変更)”HapbeatAnimatorTriggerを廃止しHapbeatStateBehaviourに置換 Animator state に直接 attach する StateMachineBehaviour 方式に変更。 State Enter/Exit に別 entry を bind 可能、Required Previous Stateで A→B 限定発火、 Looping StreamClip は OnStateExit で自動 Stop。旧 trigger は移行コードなしで削除。HapbeatEvent+StandardCategories削除 v0.1 期に obsolete 化していた legacy component と category 列挙を完全削除。_entryIndexlegacy fallback 全廃 Trigger → EventMap 参照は stable GUID (entry.id) only に統一。 古い_entryIndexベースのシリアライズデータは再 pick が必要。HapbeatBridgesubclass パターンの非推奨化 Trigger-first / EventMap-first 設計を標準とし、Bridge subclass は optional に。 抽象クラス自体は API 互換のため残置。- サンプル再編:
Tutorial→Showcaserename UPM Sample import の表示名・フォルダ名が変わります。 旧Tutorialを import 済みのプロジェクトは、新規にShowcaseを import し直してください。
Added(追加)
Section titled “Added(追加)”Latency compensation
HapbeatConfig.hapticDelaySeconds— グローバル遅延補正 (映像/音声に対して触覚を遅延発火)。HapbeatEventEntry.delayOffsetSeconds— エントリ単位の追加オフセット (Inspector で編集)。- Play-mode 中の
hapticDelaySeconds変更で pending coroutine を自動 flush (即時反映)。 HapbeatStateBehaviour経由の発火も含む全 fire 経路で delay を honor。
Trigger 機能拡張
HapbeatSequenceTrigger._stopShotDelay— On Stop one-shot を loop stop から遅延発火 (default 0.05s)。 loop→shot の packet burst を抑制し、shot 強度を安定化。HapbeatTickEmitterdual mode —AbsolutePosition(位置基準) /AccumulatedMotion(累積移動量基準) を選択可能。- Trigger の binding pre-seed が child / parent GameObject 上の binding も検出 (旧: Self のみ)。
EventMap Window
- Wiring セクションに HapbeatStateBehaviour (Animator state) を表示。
- Wiring に script-driven 参照 を表示 (
SerializeFieldの string heuristic +[HideInInspector]field も拾う)。 - Script Wiring scan が
entry.id(stable GUID) 検出にも対応。 - Verbose Log 一括 off メニュー 追加。
Manifest schema 2.0.0
- 2-bucket layout (
events+stream_events) の reader を実装。 - bare filename + mode-aware lookup により、Studio 側 multi-mode 出力と整合。
Stream
- ステレオ pan のデフォルトを passthrough (equal-power → linear balance) に変更。 中央 (pan=0) で √½ 減衰していた問題を解消。
HapbeatStreamPlayback.GainMultiplier/Panを再生中にリアルタイム push 可能に。- gain modulation 計算式を
ApplyGainModulation(float)に集約。
Editor / Menu
- メニューを 4 セクション構成 (Window / Create / Tools / Developer) に再編。flat 構成。
- Window 系メニューを
Open ...prefix で統一 (Event Map → Batch Setup → Settings の順)。 Hapbeat → Create → Initial Scene Setupを新設 (Manager + Config + EventMap の最小セットを自動生成)。HapbeatManagerInspector の Test 操作を EventMap-style に刷新 (Gain semantics を EventMap と揃える)。- Maintainer Sync の wipe-then-rebuild 化 —
Samples~/<sample>/を build artifact として全消し再構築。 dest-only orphan が次回 sync 時に必ず消えるよう保証。
Samples
Showcaseサンプル新設 (旧 Tutorial の後継) — Z1 Bowling / Z2 Door / Z3 Pickup / Z4 Stream Console / Z5 Charge Shot の 5 ゾーンで SDK 全機能を体験。WAV をKit/showcase-kit/に同梱 (Sample import 直後に EventMap が解決)。BasicExampleをフラット構成に再編。BasicExample.unity+BasicExampleEventMap.asset+Kit/basic-exam-kit/のみ。- 3rd-party 資産の credits を per-file 化 (
Samples~/Showcase/THIRD_PARTY_NOTICES.md)。CC0 / CC BY 3.0 を分離記載。 - XR helpers サンプルは引き続き opt-in (
Samples~/XriHelpers/)。
Changed(変更)
Section titled “Changed(変更)”- UI 文字列を英語に統一 — Tooltip / Label / Dialog / HelpBox / Debug.Log の user-facing 文字列を全 23 ファイルで英語化。日本語は portal docs に集約。
- ドキュメントを portal (devtools.hapbeat.com) に一本化 —
docs~/を削除し各サブ repo の docs は portal が一元参照。
Fixed(修正)
Section titled “Fixed(修正)”HapbeatUnityEventTrigger.FireWithGainが_entryIndex参照のままになっていた問題をResolveEntry()経由に修正。- Manifest schema 2.0.0 環境で send-ahead lead が指定値を超過するケースを
WaitForSecondsRealtimeで固定。 - Sample deploy 時に destination の親フォルダが未生成だと
AssetDatabase.CopyAssetが silent fail する問題に対し、事前にEnsureAssetFolderを実行。
Removed(削除)
Section titled “Removed(削除)”Editor/HapbeatSampleDeployment.cs— dead code (旧BasicExampleSceneBuilderとHapbeatSampleImportDeployer削除により呼び出し元なし)。Editor/HapbeatSampleImportDeployer.cs— 「Deploy Imported Sample」メニュー (非標準 UX)。Sample import 後はユーザー自身がAssets/配下に手動コピー。docs~/ディレクトリ — portal 集約に伴い撤去。
Migration notes(移行メモ)
Section titled “Migration notes(移行メモ)”HapbeatAnimatorTriggerを使っていた場合: Animator Controller の対象 state を選択 → Add Behaviour →HapbeatStateBehaviourを attach → EventMap entry を pick。- Tutorial サンプルを編集していた場合: 編集内容は
Assets/配下にコピー済みのはず。再 import で Showcase が降ってくるが、旧 Tutorial 編集物は上書きされません (UPM の Sample import は新規パスに展開するため)。 - 古い EventMap entry の参照が外れた場合: Trigger 側で entry を pick し直してください (
_entryIndex廃止のため)。
0.1.0 - 2026-05-11
Section titled “0.1.0 - 2026-05-11”Initial public release.
Added(追加)
Section titled “Added(追加)”Core runtime
HapbeatManager— シングルトン。Wi-Fi UDP broadcast で Hapbeat デバイスと通信HapbeatBridge—Play / PlayScaled / PlayWithCurve / Stopを提供するサブクラスベースHapbeatClient— UDP 送受信・PING/PONG・mDNS 自動検出HapbeatDiscovery— LAN 上の Hapbeat デバイスを mDNS で自動発見HapbeatConfig— Group ID・ポート・Bridge 設定を ScriptableObject で管理
Trigger コンポーネント
HapbeatCollisionTrigger— 物理衝突 / Trigger Enter|Exit に連動。速度スケールゲイン・AnimationCurve 対応HapbeatAnimatorTrigger— Animator パラメータ変化 (Bool / Float / Int) を検知して発火HapbeatUnityEventTrigger— UnityEvent のFire()メソッドで任意タイミングに発火HapbeatSequenceTrigger— grab / hold / release を 1 コンポーネントで管理HapbeatTickEmitter— 連続値 (Slider・ScrollRect 等) の変化量に応じてスナップ触覚を生成HapbeatParameterBinding— Transform / Rigidbody → gain / pan をリアルタイムマッピングHapbeatKeyDispatcher— キー → UnityEvent のマッピング。Input System Package 完全対応
EventMap
HapbeatEventMapScriptableObject — Event ID・gain・mode (FIRE / CLIP) を一元管理HapbeatEventEntry— manifest.intensity を乗算した effective gain を計算EventMap Window(Hapbeat → Event Map) — 全エントリと配線を GUI で一覧管理、Wiring 逆引きスキャン、Play テスト
App identity (デバイスディスプレイ表示)
HapbeatConfig.appName— Hapbeat デバイスのディスプレイに表示するクライアントアプリ名 (max 16 文字、空欄でApplication.productName自動使用)CONNECT_STATUSの周期送信 (Play 中) + 接続成立時 / 終了時の通知パケット送信
ストリーミング
- StreamClip モード — WAV を chunk 送信し、ParameterBinding で動的ゲイン・パン制御
streamSendAheadSecondsで送信先行バッファを調整
UI / Editor
HapbeatStatusOverlay— 接続状態・RTT を Canvas に表示するデバッグ UIHapbeatEventLogger— Hapbeat 系ログをフィルタしてファイル保存HapbeatEventMapEditor— Play-mode Snapshot/Restore、ポータビリティ確認HapbeatSettingsWindow— 接続設定 / アプリ名 / Bridge / Ping interval 等を一元編集- Setup メニュー (
Hapbeat → Setup) — HapbeatSDK フォルダ自動生成 - Build Samples メニュー (
Hapbeat → Build Samples) — Basic / Tutorial の Scene + EventMap + Kit を自動生成 (Tutorial は With / Without 2 シーン同時生成) - Debug メニュー — Event Logger 配線 / ログ録画 / Logs フォルダ参照などのユーザー向け診断ツール群
サンプル
BasicExample— キーボード操作で SDK 基本機能を確認する最小構成Tutorial— 5 ゾーン (Bowling / Door / Pickup / Stream Console / Target Range) で SDK 全機能を体験。XR デバイス不要XriHelpers—HapbeatXRGrabFilter/HapbeatXRSocketFilter(XRI opt-in)
XR 向け
- XR Helpers sample で XRI grab / socket イベントを Hapbeat に橋渡し
- Quest 3 / Quest 3s 動作確認済み
ドキュメント
- installation — UPM Git URL 導線
- getting-started / triggers / event-map / parameter-binding / streaming — 機能別解説
- tutorial/ — Tutorial サンプルの walkthrough (Plain → With 構築手順)
- editor-menus — Hapbeat メニュー全項目の使い方逆引き
- ai-assisted-workflow — Claude Code 等で既存シーンに触覚を後付けする 4 ステップ + コピペプロンプト集
- multi-app — 複数アプリ共存時の運用指針 (LAN 分離 / group ID 切り分け)