Showcase(サンプルレベル)
プラグインに同梱する Showcase レベルです。ゲーム内の出来事を Hapbeat Event Map の entry へ接続する 5 つのサンプルを収録しています。各 zone Actor の Details と EM_Showcase を開くと、再生する触覚とその設定を確認・変更できます。
| Zone | 実装方法 | 確認できる触覚配線 |
|---|---|---|
| Z1 Bowling | C++ Actor + collision trigger | pin の衝突から z1_pin_hit を発火する配線 |
| Z2 Swing Door | Blueprint Event Graph | ドアの Timeline と Play Event (Hapbeat) を同じ操作分岐から始める配線 |
| Z3 Fishing | C++ Actor + Sequence / Parameter Binding | hook の開始・loop・解除と、魚の速度を loop Gain へ送る配線 |
| Z4 Stream Console | Blueprint Event Graph + Widget Blueprint | stream の開始・停止、UI の Gain / Pan、tick、Address Override の配線 |
| Z5 Target Range | C++ Actor + collision trigger | charge・shot の直接 SDK 呼び出しと、target hit の light / heavy 分岐 |
最初に見る場所
Section titled “最初に見る場所”- Content Browser > Settings で Show Plugin Content を有効にします。
- Plugins/HapbeatSDK/Content/HapbeatSamples/Showcase/Maps/Showcase を開きます。
- World Outliner で対象の zone Actor を選びます。
- Content Browser > HapbeatSamples/Showcase/EM_Showcase を開き、entry の Clip、Gain、Target、Loop を編集します。
ゲーム入力 / 衝突 / 状態遷移 / UI → Hapbeat component または zone Actor → Event Map entry → Hapbeat SDKZ1 Bowling — pin の衝突
Section titled “Z1 Bowling — pin の衝突”ball が pin に Hit → pin の HitTrigger → Pin Hit EventPin Hit Event は、6 本の pin が衝突したときに再生する Event Map entry です。
編集して試す
Section titled “編集して試す”- Showcase map > World Outliner で
Z1_Bowlingを選びます。 - Details > Hapbeat > Bowling > Pin Hit を開きます。
EM_Showcaseのz1_pin_hitentry にある Gain を変更します。- 例: 現在値を半分にする。
- 確認できること: ball と pin の衝突は同じまま、触覚の強さだけが変わります。
- Pin Hit Event を変更します。
- 例:
z1_pin_hitからz2_door_slamに切り替える。 - 確認できること: 同じ pin 衝突が、選んだ entry の触覚を発火します。
- 例:
SDK の接続を確認する(C++)
Section titled “SDK の接続を確認する(C++)”Tools → Open Visual Studio を選び、次の SDK ファイルを開きます。
Plugins└ HapbeatSDK └ Source └ HapbeatSDKSamples ├ Public │ └ HapbeatShowcaseZ1BowlingActor.h └ Private └ HapbeatShowcaseZ1BowlingActor.cpp最初に Public/HapbeatShowcaseZ1BowlingActor.h を開き、次に同名の Private/HapbeatShowcaseZ1BowlingActor.cpp を開きます。
BuildEventMap が Details の EventMapOverride と PinHitEvent を解決し、SetUpPins がその map と entry を各 pin の HitTrigger へ渡します。
SetUpPins 内の次の 2 行が、Details の選択を実際の pin 衝突 trigger へ接続する箇所です。
Pin->HitTrigger->EventMap = EventMap;Pin->HitTrigger->EntryId = PinHitEntryId;Z2 Swing Door — Blueprint からイベントを発火する
Section titled “Z2 Swing Door — Blueprint からイベントを発火する”BP_Z2_Door は、ドア操作の各分岐から Play Event (Hapbeat) を発火する Blueprint 完結の例です。
編集して試す(PIE Details)
Section titled “編集して試す(PIE Details)”- PIE を開始し、
Shift + F1を押します。 - World Outliner > Play World で
Z2_Doorを選びます。 - Details > Hapbeat > Door Events の Door Slam Event を変更します。
- 例:
z2_door_slamからz2_door_closeに切り替える。 - 確認できること:
Gの slam Timeline は同じまま、選んだ entry の触覚を発火します。
- 例:
SDK の接続を確認する(Blueprint)
Section titled “SDK の接続を確認する(Blueprint)”PIE を停止し、Content Browser の HapbeatSamples/Showcase/BP_Z2_Door を開いて Event Graph を選びます。F、G、L の Input Key から Switch on Door State、対応する動作 lane、Play Event (Hapbeat) をたどります。
F / G / L Pressed → Switch on Door State → DoorOpen / DoorClose / DoorSlam / DoorRattle / Lock / Unlock → 対応する z2_door_* entry の Play Event (Hapbeat) → DoorHinge の Timeline各 lane の Play Event (Hapbeat) は、Door Event Map と対応する Door … Event の Get node を受け取ります。これが PIE Details の選択をゲーム内操作へ渡す箇所です。Timeline は同じ lane で始まるため、ドアの動きと触覚の開始点がそろいます。
Z3 Fishing — sequence と gain binding
Section titled “Z3 Fishing — sequence と gain binding”左クリック press / release → Shark.HookSequence → z3_hook_start / z3_hook_loop / z3_hook_release
Shark の速度 → HookVelocityBinding → loop の GainZ3_Fishing の Hook Start / Loop / Release Event は、左クリックの開始・継続・解除で再生する entry です。
編集して試す
Section titled “編集して試す”- Showcase map > World Outliner で
Z3_Fishingを選びます。 - Details > Hapbeat > Fishing > Hook を開き、Event Map と 3 つの entry を確認します。
- Hook Loop Event を変更します。
- 例:
z3_hook_loopからz5_charge_loopに切り替える。 - 確認できること: Hook Wiring の Loop Entry Name が選択した entry になり、hook 中の loop が切り替わります。
- 例:
SDK の接続を確認する(C++)
Section titled “SDK の接続を確認する(C++)”Tools → Open Visual Studio を選び、次の SDK ファイルを開きます。
Plugins└ HapbeatSDK └ Source └ HapbeatSDKSamples ├ Public │ └ HapbeatShowcaseZ3FishingActor.h └ Private └ HapbeatShowcaseZ3FishingActor.cppBuildEventMapAndHaptics が 3 つの選択値を HookSequence の start / loop / stop entry へ渡します。SetHooked が sequence の Fire() / Stop() を呼びます。HookVelocityBinding は釣られた魚の速度を loop 再生の Gain に反映します。
Z4 Stream Console — loop と runtime parameter
Section titled “Z4 Stream Console — loop と runtime parameter”BP_Z4_StreamConsole は、Space による loop 再生と slider 値による Gain / Pan 更新を接続する Blueprint の例です。
Space → Switch on Loop State → Stopped: LoopTrigger.Fire → Loop State = Running → Running: LoopTrigger.Stop → Loop State = Stopped
Gain / Pan slider → On Gain/Pan Slider Changed → BP_Z4_StreamConsole Event Graph → Set Binding Input (Hapbeat) → Update Stream Parameter (Hapbeat) → Fire Tick From Value (Hapbeat)編集して試す(PIE Details)
Section titled “編集して試す(PIE Details)”- PIE を開始し、
Shift + F1を押します。 - World Outliner > Play World で
Z4_StreamConsoleを選びます。 - Details 上部の component tree > TickEmitter を選び、Details > Hapbeat > Tick の Tick Threshold を変更します。
- 例:
0.1から0.2にする。 - 確認できること: 次に Gain / Pan slider を同じ距離だけ動かしたときの tick 回数が半分になります。
- 例:
Tick Threshold は実行中の TickEmitter が slider 入力ごとに読む値なので、PIE を再起動する必要はありません。一方、EventGraph の node や接続を編集した場合は、停止後に compile して PIE を開始し直します。
SDK の接続を確認する(Blueprint)
Section titled “SDK の接続を確認する(Blueprint)”PIE を停止し、Content Browser の HapbeatSamples/Showcase/BP_Z4_StreamConsole を開いて Event Graph を選びます。
Space Barから Switch on Loop State をたどります。Stopped の Fire Trigger (Hapbeat) がz4_stream_loopを開始し、Running の Stop Trigger (Hapbeat) が同じ loop を停止します。- On Gain Slider Changed / On Pan Slider Changed から Set Binding Input (Hapbeat) → Update Stream Parameter (Hapbeat) をたどります。slider の float 値を
GainBinding/PanBindingに入れ、両 binding がLoopTriggerの再生中 stream の Gain / Pan を更新します。 - 続く Fire Tick From Value (Hapbeat) は、slider が Tick Threshold をまたいだときだけ
z4_slider_tickを再生します。
Address Override は、Player / Group に対応する Hapbeat だけへ送るための実行時の送信先指定です。Event Map の entry や再生配線は変えません。詳しくはターゲティングを参照してください。
Z5 Target Range — charge / shot と target hit
Section titled “Z5 Target Range — charge / shot と target hit”charge begin / threshold / release → z5_charge_* / z5_shot_*
projectile が target に Hit → LightHitTrigger または HeavyHitTrigger → z5_tar_hit_light / z5_tar_hit_heavyZ5_ChargeShot の 6 つの Event プルダウンは、charge、shot、target hit で再生する entry を選びます。
編集して試す
Section titled “編集して試す”- Showcase map > World Outliner で
Z5_ChargeShotを選びます。 - Details > Hapbeat > Showcase を開きます。Event Map entry は Haptic Events、charge の調整は Charge にあります。
- Heavy Threshold を変更します。
- 例:
0.7から0.4にする。 - 確認できること: threshold entry と heavy shot へ切り替わるタイミングが早くなります。
- 例:
- Charge Loop Gain Curve の中間を下げます。
- 例:
ChargeT = 0.5の Gain を0.2にする。 - 確認できること: charge 前半の loop は弱く、後半でより急に強くなります。
- 例:
- Heavy Shot Event を変更します。
- 例:
z5_shot_heavyからz1_pin_hitに切り替える。 - 確認できること: heavy charge の release が、選んだ entry を再生します。
- 例:
SDK の接続を確認する(C++)
Section titled “SDK の接続を確認する(C++)”Tools → Open Visual Studio を選び、次の SDK ファイルを開きます。
Plugins└ HapbeatSDK └ Source └ HapbeatSDKSamples ├ Public │ └ HapbeatShowcaseZ5ChargeShotActor.h └ Private └ HapbeatShowcaseZ5ChargeShotActor.cppBuildEventMap が Details の EventMapOverride と 6 つの *Event を entry ID に解決します。Tick は Charge Loop Gain Curve を評価し、再生中の charge loop の Gain を更新します。HandleChargeBegin、Tick、FireShotAfterDelay が charge / shot の ID を FireOneShotEntry へ渡します。SetUpTarget は light / heavy target-hit の ID を各 collision trigger へ渡します。
| 変更したい内容 | 変更場所 |
|---|---|
| Clip、Gain、Target、loop | EM_Showcase の entry |
| Z1 の pin-hit entry | Z1_Bowling の Event Map / Pin Hit Event |
| Z5 の charge / shot / target-hit entry | Z5_ChargeShot の Haptic Events |
| 実行時の送信先 | Address Override |
Target は送信先を表す論理フィルタです。Address Override は Event Map や Actor の配線を変更しません。詳細はターゲティングを参照してください。
SDK の接続設定と確認
Section titled “SDK の接続設定と確認”エディタ上部の Tools → Hapbeat から次を開けます。
- Hapbeat Settings — Port、App Name、Command Unicast、タイミング、ビルド固定の Address Override を編集します。
- Hapbeat Runtime Status — この PC に保存する Address Override と、PIE 中の実効 Player / Group、socket 状態を確認します。PIE 外で保存した値は次回の PIE / packaged launch に使われ、PIE 中に保存した値は即時反映されます。
Event Map の Test Play は、同じ保存済み Address Override と build-pinned override を解決してから送信します。Test Play はボタンを押した時点で送信されます。