SoftwareForceEditor

はじめに

ForceEditorDirectInput のフォースフィードバックエフェクトを編集するツールです。

フォースフィードバックとは

  • Microsoft DirectX のコンポーネントであるゲーミング用入力プログラム、DirectInput で使用可能な特殊効果です。
  • ゲームコントローラからの入力やゲーム内でのイベントに応じて入力デバイスが振動などの反力をユーザに提供します。
  • 特殊効果にはさまざまな種類があり、ゲーム製作者がシーンに適した効果を選択します。

ここで紹介するのは、DirectInput8 で使用可能なフォースフィードバック API を使用して、フォースフィードバックに対応したデバイスで再生するフォースを編集するミニアプリケーションです。 このアプリケーションは、かつて DirectX8 の SDK に付属していた ForceEditor の使い勝手を向上させ 64bit 版に対応すべく開発しました。 このツールはゲーム開発者向けに設計されていますが、フォースフィードバックに対応した入力デバイスをお持ちの方が、デバイスのエフェクトを動作させて遊ぶためにも使用できます。

アプリケーションの外観

x86版のダウンロード

x64版のダウンロード

アーカイブの内容

ForceEditor.exe
実行ファイル本体です。
hermapi.dll
アプリケーションで使用するダイナミックリンクライブラリファイルです。

フォースフィードバックとは、入出力デバイス(ジョイスティックに搭載されているモーターなど)で生成される押す力や抵抗です。 DirectInput では、互換性のあるドライバーを持つデバイスにフォースフィードバックエフェクトを生成できます。

フォースエディタについて

For ForceEditor

  • DirectInput8 以降を必要とします。
  • .NET Framework 4.5.1 以降を必要とします。
  • フォースフィードバックに対応したデバイスを接続した場合、作成したフォースの再生が可能です。
  • インストール不要、レジストリは使用しません。
  • 保存形式はバイナリ形式と XML 形式があり、一度保存されたエフェクトファイルは、再編集が可能です。

フォースエディタウィンドウ

For ForceEditor

アプリケーション概要

メインウィンドウ
タイムラインを新規作成、編集、保存することができます。
タイムライン
複数のエフェクトデータを配置することができます。
エフェクトデータ
エフェクトデータ フォースフィードバックの状態を表すデータです。

メイン画面の各種バーについて

メニュー
アプリケーションで操作可能な各種メニューが格納されています。
クイック
使用頻度の高いメニューアイテムが格納されています。
フォースエフェクト
タイムラインに追加することができるフォースエフェクトです。
再生
タイムライン上に配置されている全てのエフェクトを再生します。
(対応デバイスが接続されている場合)
ステータス
現在のデバイス接続状態を表します。
拡大率
タイムラインの拡大率を変更することができます。

ファイルメニュー

新規作成(N)
タイムラインファイルを作成します。
開く(O)
保存したタイムラインファイルを開きます。
保存(S)
現在アクティブなタイムラインファイルを保存します。
名前を付けて保存(A)
現在アクティブなタイムラインファイルを別名で保存します。
すべて保存(L)
現在開いているタイムラインファイルすべてを保存します。
選択エフェクトを保存
現在アクティブなタイムラインファイルで選択されているエフェクトデータを保存します。
デバイスの選択(D)
エフェクトを再生するデバイスを選択します。
フォースフィードバックに対応したデバイスを選択した場合、エフェクトの再生が可能になります。
終了(E)
アプリケーションを終了します。

編集メニュー

コピー(C)
選択中のエフェクトをクリップボードにコピーします。
切り取り(X)
選択中のエフェクトを切り取ります。
貼り付け(V)
クリップボードにコピーされたエフェクトをタイムラインに貼り付けます。
削除(D)
選択中のエフェクトをタイムラインから削除します。
エフェクトをすべて選択
編集中のタイムラインにあるエフェクトをすべて選択します。
エフェクトの選択を解除
編集中のタイムラインで選択中のエフェクトを解除します。
エフェクトの選択を反転
編集中のタイムラインで選択中のエフェクトを非選択に、非選択のエフェクトを選択状態に変更します。

ウィンドウメニュー

縦に並べて表示(V)
複数タイムラインがある場合、ウィンドウを縦に並べて表示します。
横に並べて表示(H)
複数タイムラインがある場合、ウィンドウを横に並べて表示します。
重ねて表示(C)
複数タイムラインがある場合、ウィンドウ重ねて表示します。
アイコン表示(A)
最小化されているタイムラインがある場合、整列表示します。
開かれているファイル名
フォーカスが、選択されたファイルに該当するタイムラインに切り替わります。

エフェクトの作成

For ForceEditor

  1. ツールバーのフォースエフェクボタンをクリックします。アクティブなタイムラインウインドウ上にグラフが作成され、既定の継続時間・開始位置にエフェクトが表示されます。
  2. マウスを使用することで、エフェクトの四角形を移動/リサイズし、開始/終了ポイントを希望する場所にあわせます。
  • エフェクト領域を左右に移動または修正すると、タイムラインは自動的に必要な分だけ延長されます。
  • 1つのタイムラインウインドウに複数のエフェクトを作成することができます。 ただし、その数は一度にデバイスがダウンロードできる限界量までに限ります。
  • 編集・再生または削除するエフェクトを選択するするには、そのグラフをクリックします。 SHIFT キーを使用すれば、複数のエフェクトを選択することができます。
  • エフェクトをデバイスにダウンロードするとき、優先度はタイムラインの上から順となります。
  • エフェクトは、コピー・切り取り・貼り付けを行うことができます。
タイムラインに追加されるフォースの種類
継続フォース Constant Force(継続フォース)を追加します。
傾斜フォース Ramp Force(傾斜フォース)を追加します。
矩形波 周期フォースの Square Wave(矩形波)を追加します。
三角波 周期フォースの Triangle Wave(三角波)を追加します。
正弦波 周期フォースの Sine Wave(正弦波)を追加します。
アップ鋸歯波 周期フォースの SawtoothUp Wave(アップ鋸歯波)を追加します。
ダウン鋸歯波 周期フォースの SawtoothDown Wave(ダウン鋸歯波)を追加します。
スプリング 条件フォースの Spring Force(スプリング)を追加します。
摩擦 条件フォースの Friction Force(摩擦)を追加します。
ダンパー 条件フォースの Dumper Force(ダンパー)を追加します。
慣性 条件フォースの Inertia Force(慣性)を追加します。

エフェクトの削除

For ForceEditor

  1. 1つまたは複数のエフェクトを選択します。
  2. メニューから [ 編集(E) ] → [ 削除(D) ] を選択します。
    または、 Del キーを押します。

エフェクトプロパティの設定

For ForceEditor

エフェクトプロパティは、エフェクト設定画面で設定します。エフェクト設定画面は一度に 1 つだけ開くことができます。 タイムラインウインドウで最終に選んでいたエフェクトの設定画面が表示されます。

  1. タイムラインのエフェクトをダブルクリックします。
  2. 変更したいプロパティのページを選択し、値を設定します。 新しい値は即座に適応されます。 但しテキストボックスの場合、エフェクトを適応するには、入力フォーカスを他に移動させるか、エンターキーを押す必要があります。

エフェクトプロパティ詳細

共通プロパティ

すべての種類のフォースで設定可能なパラメータを設定する画面です。

For ForceEditor

継続フォース
傾斜フォース
矩形波
三角波
正弦波
アップ鋸歯波
ダウン鋸歯波
スプリング
摩擦
ダンパー
慣性

名前
エフェクトの表示名。
GUID
管理用一意識別子
開始遅延
エフェクト再生が開始されるまでの待機時間。
再生時間
エフェクトの生成時間。永続化をチェックすると停止するまで再生し続けます。
再生(P) ボタン
現在編集中のエフェクトを再生します。再生中に編集するとフォース状態は逐次更新されます。

周期プロパティ

For ForceEditor

矩形波
三角波
正弦波
アップ鋸歯波
ダウン鋸歯波

周期フォースで設定可能なプロパティシートです。

画面下部のスパンバーを使用して、周期の開始タイミングと波形の1周期にかかる時刻を設定します。

スパンバーの両端をドラッグすることで時刻を表す幅を設定します。

スパンバーをドラッグすることで周期の開始位置を調整することができます。

表示されている波形は、エフェクト全長です。

エンベロープ

For ForceEditor

継続フォース
傾斜フォース
矩形波
三角波
正弦波
アップ鋸歯波
ダウン鋸歯波

継続フォース・傾斜フォース・周期フォースで設定可能なプロパティシートです。

左右のスライダーで開始時刻・終了時刻のマグニチュードを設定します。

下部のスパンバーでエンベロープが影響しない時刻の範囲を設定します。

画面上部の数値ボックスは、1 周期にかかる時刻、周期開始タイミングを表す数値です。
(この数値ボックスは周期フォース時のみ表示されます。)

震度プロパティ

For ForceEditor

継続フォース
傾斜フォース

継続フォース・傾斜フォースで設定可能なプロパティシートです。

画面左右のスライダーで、開始時刻・終了時刻の震度の割合を設定します。
(継続フォースの場合はスライダーは左のみ)

画面中央のラインは震度 0 を表し、ラインより下は逆方向のフォースを表します。

方向プロパティ

For ForceEditor

継続フォース
傾斜フォース
矩形波
三角波
正弦波
アップ鋸歯波
ダウン鋸歯波

継続フォース・傾斜フォース・周期フォースで設定可能なプロパティシートです。

角度バー(赤いライン)をドラッグすることでエフェクトの角度を設定します。

角度バーの長さを変更することで、エフェクト全体の強さ(ゲイン)を設定することができます。

数値ボックス[角度]は、角度の 100倍の値となり、0 ~ 35999 までを入力することが可能です。

数値ボックス[ゲイン]は、エフェクト全体の強さを 0 ~ 10000 で表現する値で、5000 で 50 % 、10000 で 100 % となります。

軸プロパティ

For ForceEditor

スプリング
摩擦
ダンパー
慣性

条件フォースで設定可能なプロパティシートです。

条件フォースの影響範囲を設定します。

画面内の十字は X 軸、Y 軸 とその交点(オフセット位置、offset )を表します。
画面下、画面左はネガティブ領域を表します。

画面内の赤い■をマウスドラッグすることで影響範囲を編集します。

赤いゾーンは飽和(影響範囲限界、saturation )を表します。

緑のゾーンはエフェクト係数値(影響度、coefficient )を表します。

黒のゾーンはデッドゾーン(無効領域、deadband )を表します。

十字の中央をダブルクリックすることで、デッドゾーンの有効無効を切り替えることができます。

エフェクトの再生

For ForceEditor

エフェクトを再生している間にも、選択したエフェクトを修正することができます。 パラメータの変更は直ちに適用されます。

単一のエフェクトを再生する

  1. エフェクトを選択します。
  2. プロパティシートを開き、[ 再生(P) ] をクリックします。

ウィンドウに配置した全てのエフェクトを再生する

ツールバーにある矢印をクリックします。

エフェクトファイルの使用

For ForceEditor

ファイルメニューから[保存(S)][名前を付けて保存(A)][すべて保存(L)][選択エフェクトの保存]を選択することで、それぞれの方法で、エフェクトをファイルとして保存することができます。

ファイルメニューから[開く(O)]を選択することで、エフェクトファイルを再び読み込むことができます。

ファイルの保存形式は xml 形式と バイナリ形式があり、xml 形式はテキストファイルとして可読です。