Releases: automatic9045/BveEX
Release list
beta0.19 - v0.19.30520.1
本バージョンは β 版です。正式版リリースまでにあと 1 回破壊的変更を加える可能性がありますので、本番環境で採用される場合はその点ご留意ください。
AtsEX についてはこちら→ AtsEX ATSプラグイン拡張キット - 岡オカ営業所
インストール方法の説明はこちら→ AtsEXインストールガイド - AtsEX ATSプラグイン拡張キット - 岡オカ営業所
アップデートのポイント
AtsEX 入力デバイスプラグイン版の追加
従来の AtsEX ATS プラグイン版では車両に AtsEx.Caller を組み込む必要があり、様々な車両で AtsEX を使用するとなると非常に面倒なものでした。
しかし、この度実装した入力デバイスプラグイン版では、「BVE 本体の設定画面から『AtsEX』にチェックをつける」たったこのひと手間で 全ての 車両・マップから AtsEX が使えるように。手軽に AtsEX を導入できる時代がついにやってきました!
パフォーマンスの改善
実際に AtsEX をお試しくださったデータ制作者の皆様からのフィードバックを基に、パフォーマンスに問題のある処理を改善しました。
ご協力ありがとうございました。
beta0.18.2 (v0.18.302042) からの主な更新内容
共通
- 【重要】 AtsEX 入力デバイスプラグイン版を実装しました。→ f8a5dae / 376e713 / ee4336e / 0409975 / 257f761 / f2dc4d9 / 09ad92f
AtsEX 本体
- 【破壊的変更】 プラグイン読込まわりの処理を実装し直しました。→ c849c98
- これにより仕様が変更となった機能が存在します。
- 「範囲外のノッチ入力を検出した場合に例外をスローする」設定をオフにした場合でも例外がスローされてしまう不具合を修正しました。→ 22e6dbd
- 独自ステートメントの他列車検知処理のパフォーマンスを改善しました。→ de57308
- AtsEX プラグインではないアセンブリ (DLL) を読み込むと AtsEX が強制終了する不具合を修正しました。→ e772979
パネル・サウンド出力
- インデックスの競合を検出するかどうかを、車両データに同梱した AtsEX 独自の設定ファイル (以下「車両設定ファイル」) から選択できるようになりました。→ 37c383b
- 既定では検出しない仕様に変更となりました。
- 車両設定ファイルは省略することもできます。省略した場合は既定値が使用されます。
BveTypes (クラスラッパー除く)
- BveTypeSet クラスのファクトリメソッドに同期版を追加しました。→ dfdccaf
クラスラッパー
- ドア関連の型 (CarDoor クラス、DoorSet クラス、DoorSide 列挙型、DoorState クラス、SideDoorSet クラス) を追加しました。→ 617eab1
- AtsEX 入力デバイスプラグイン版の実装に際して必要だったメンバーを追加しました。→ f729fe4 / 7d4152e / 868f490
- 対象の型: MainForm クラス、PluginLoader クラス、SectionManager クラス、VehicleStateStore (仮称) クラス
- パネル・サウンド配列を操作するためのメンバーを追加しました。→ 6834824
- 対象の型: PluginLoader クラス、VehicleStateStore (仮称) クラス
- CarInfo クラスから自列車が空転・滑走しているかのフラグを操作できるようになりました。→ d2884f5
- VehicleDynamics クラスから自列車の車両の長さを操作できるようになりました。→ 12de7c4
- WrappedList クラス、WrappedSortedList クラスのインスタンス生成のパフォーマンスを改善しました。→ 2e68102
- SectionManager.SectionIndexesTrainOn プロパティは、調査の結果名前が実際の役割に合っていないことが判明したため StopSignalSectionIndexes に改名となりました。→ a29c3e4
- 互換性維持のために従来の名前のものも残してあります。
- ObjectPassedEventArgs クラスの実装ミスを修正しました。→ 1d44ca4
サンプル
- 独自マップ構文 (独自ヘッダー、独自ステートメント) のサンプルを追加しました。→ fe99fd5
- マッププラグインと車両プラグインで連携するサンプルを追加しました。→ 1dc72ef
- 入力デバイスプラグイン版関連のサンプルを 2 つ追加しました。→ 3336688
- 車両設定ファイルを「空のサンプル車両」以外の全サンプル車両に追加しました。→ 8b729bb
- 一部シナリオにおいて、「プログラムから開く」からシナリオを開くと終了時にエラーが発生する不具合を修正しました。→ ebc7d4d
- シナリオ再読込時のメモリリークを修正しました。→ 2ac33c7
同梱プラグイン一覧
拡張機能
- AtsEX コア拡張機能
- ContextMenuHacker
- メインフォームの右クリックメニューを編集するための機能を提供します。
- DiagramUpdater
- 時刻表、ダイヤグラムなどの行路に関わるオブジェクトの更新機能を提供します。
- PreTrainPatch
- 先行列車の走行位置を自由に変更できるようにするパッチを提供します。
- SignalPatch
- 閉塞の信号現示を自由に変更できるようにするパッチを提供します。
- StructureModelFinder
- ストラクチャーの 3D モデルを簡単に検索するための機能を提供します。
- TrainDrawPatch
- 他列車を自由に移動・回転できるようにするパッチを提供します。
- ContextMenuHacker
- DXDynamicTexture
- * 拡張地上子
- 古い機能のため非推奨。独自マップ構文機能を使用してください。
車両プラグイン
- 運転台パネルに値を渡すサンプル
- 【新規】 マッププラグイン連携サンプル
- シンプルな ATS サンプル
- 状態取得・設定サンプル
マッププラグイン
- 【新規】 車両プラグイン連携サンプル
- DXDynamicTexture 連携サンプル
- 【新規】 独自マップ構文サンプル
- 先行列車操作サンプル
- 信号現示操作サンプル
- 駅リスト編集サンプル
- 他列車操作サンプル
- 他列車操作サンプル EX
- 走行抵抗係数編集サンプル
- 空の C# スクリプトプラグイン
- 空の IronPython プラグイン
ダウンロード
AtsEX 本体+サンプルシナリオ
AtsEX 本体に加えて、車両プラグイン・マッププラグインの動作を確認できるサンプルシナリオを同梱しています。
【推奨】入力デバイスプラグイン版
下の Assets より「AtsEX_v0.19.30520.1_AsInputDevice.7z」をダウンロード・解凍し、シナリオフォルダおよび BVE 本体の Input Devices フォルダに配置してください。
2023/8/27 13:35 (JST) 以前にダウンロードされた方は、誠に恐縮ですが再インストールをお願いします。
「atsex.caller.inputdevice.dll 呼び出しのターゲットが例外をスローしました。」というダイアログが表示される場合は、Assets より「AtsEx.Caller.InputDevice.dll」をダウンロードし、AtsEX 本体の Input Devices フォルダ内にある同名の DLL ファイルを置き換えてください。
ATS プラグイン版 (以前と同様の起動方法のもの)
下の Assets より「AtsEX_v0.19.30520.1_AsAtsPlugin.7z」をダウンロード・解凍し、シナリオフォルダに配置してください。
AtsEX SDK
サンプルプラグインのソースコードのセットです。
下の Assets より「AtsEX_v0.19.30520.1_SDK.7z」をダウンロード・解凍してください。
ビルドには別途 AtsEX 本体のダウンロードが必要です。
解凍には 7-zip などの解凍ソフトが必要です。
beta0.18.2 - v0.18.30204.2
本バージョンは β 版です。頻繁に破壊的変更を行う可能性があるので、まだ本番環境での採用は推奨しません。
AtsEX についてはこちら→ AtsEX ATSプラグイン拡張キット - 岡オカ営業所
インストール方法の説明はこちら→ AtsEXインストールガイド - AtsEX ATSプラグイン拡張キット - 岡オカ営業所
beta0.18.1 (v0.18.30204.1) からの主な更新内容
AtsEX 本体
サウンド出力
beta0.18 (v0.18.30202.1) からの主な更新内容
AtsEX 本体
パネル出力
- 【重要】 他の ATS プラグインからの値の変更を同期できるようになりました。→ 2847332
- データの同期方向を OneWay (β0.18 と同様の挙動) / OneWayToSource / TwoWay の 3 種類から選べます。
- インデックス競合の自動検出機能は、OneWay に指定されている場合のみ動作する仕様となりました。
- データの同期方向を OneWay (β0.18 と同様の挙動) / OneWayToSource / TwoWay の 3 種類から選べます。
beta0.17.7 (v0.17.30127.1) からの主な更新内容
AtsEX 本体
- 【重要】 パネル出力、サウンド出力に対応しました。→ 7e0d490 / 6185258 / ad0f7d4 / c39b87b
- 通常の ATS プラグインでいう「Elapse 関数の panel 変数、sound 変数を編集する」操作の互換機能になります。
- 他のプラグインとのインデックスの競合を防止・自動検出する機能付です。
- 他の AtsEX プラグインと競合している場合 - そのインデックスが既に使用されていることを通知します。
- ネイティブプラグイン (通常のプラグイン) と競合している場合 - そのプラグインから値が変更された時点で「予期せぬ外部からの編集」として検出し、エラーを発生させます。
- 仕様の詳細については下記「パネル出力について」、「サウンド出力について」をご参照ください。
- 【破壊的変更】 AtsEx.Caller の互換性チェックが機能していなかった不具合を修正しました。→ 5f15e7f / aa3711d / 7318226
- この修正の影響で、以前のバージョンの AtsEx.Caller.x**.dll を使用している車両に関しては最新バージョンのものへ差し替えが必要となります。
- AtsEX プラグインの再コンパイル・修正等は不要です。
- この修正の影響で、以前のバージョンの AtsEx.Caller.x**.dll を使用している車両に関しては最新バージョンのものへ差し替えが必要となります。
サンプル
- panel 出力機能のサンプルプラグイン・シナリオを追加しました。→ 0c36482
- サウンド出力機能のサンプルとして、「シンプルな ATS サンプル」で ATS 作動時にはベルが鳴る仕様に変更しました。→ 7f95daf
パネル出力について
この機能は BVE が ATS プラグイン向けに提供している機能のみを組み合わせて実装しているため、BVE 本体のバージョンに依存しません。
パネルへ出力可能なのは整数値のみのため、通常の ATS プラグインでは
- PilotLamp 向けの真偽値なら 0 を false、1 を true に対応させる
- DigitalNumber で駅名を表示させたいなら各駅名に ID をふって駅名と整数値を 1 対 1 に対応させる
など、何かしらの方法でデータを整数値に変換する必要がありました。
本機能では、出力データに疑似的に型を持たせる仕様としています。bool 型の場合は AtsEX が上記のように自動で整数へシリアライズし、BVE 本体へ送信します。その他の型も独自にシリアライザーを定義することで使用できます。
これにより、整数以外のデータを出力するときも直感的に記述することが可能です。
コードの例
// 状態量 ats50 を bool 型、初期値 false として登録
IAtsPanelValue<bool> ats50 = Native.AtsPanelValues.RegisterBoolean(50, false);
// 状態量 ats51 を double 型、初期値 0.0 として登録
// 小数第 2 位まで出力する例 (例えば、1.23 なら「123」として送信)
IAtsPanelValue<int> ats51 = Native.AtsPanelValues.Register<double>(51, value => (int)(value * 100), 0.0);この場合、以下のように出力するデータを設定します。
ats50.Value = true; // ->「1」として送信
ats51.Value = 45.6; // ->「4560」として送信サウンド出力について
この機能は BVE が ATS プラグイン向けに提供している機能のみを組み合わせて実装しているため、BVE 本体のバージョンに依存しません。
Play / PlayLoop メソッド (≒関数) を実行すると再生され、Stop メソッドを実行すると停止する仕様です。
地上子通過などをトリガーにサウンドを再生する場合でも、フラグ変数を定義して Elapse 関数内で複雑な条件式を組み合わせる必要はありません。
コードの例
// ATS サウンド 12 番を AtsEX から操作するサウンドとして登録
IAtsSound atsSound12 = Native.AtsSounds.Register(12);// 再生
atsSound12.Play();同梱プラグイン一覧
拡張機能
- AtsEX コア拡張機能
- ContextMenuHacker
- メインフォームの右クリックメニューを編集するための機能を提供します。
- DiagramUpdater
- 時刻表、ダイヤグラムなどの行路に関わるオブジェクトの更新機能を提供します。
- PreTrainPatch
- 先行列車の走行位置を自由に変更できるようにするパッチを提供します。
- SignalPatch
- 閉塞の信号現示を自由に変更できるようにするパッチを提供します。
- StructureModelFinder
- ストラクチャーの 3D モデルを簡単に検索するための機能を提供します。
- TrainDrawPatch
- 他列車を自由に移動・回転できるようにするパッチを提供します。
- ContextMenuHacker
- DXDynamicTexture
- 拡張地上子
車両プラグイン
- 【新規】 運転台パネルに値を渡すサンプル
- シンプルな ATS サンプル
- 状態取得・設定サンプル
マッププラグイン
- DXDynamicTexture 連携サンプル
- 先行列車操作サンプル
- 信号現示操作サンプル
- 駅リスト編集サンプル
- 他列車操作サンプル
- 他列車操作サンプル EX
- 走行抵抗係数編集サンプル
- 空の C# スクリプトプラグイン
- 空の IronPython プラグイン
ダウンロード
AtsEX 本体+サンプルシナリオ
下の Assets より「AtsEX_v0.18.302024.2.7z」をダウンロード・解凍し、シナリオフォルダに配置してください。
AtsEX 本体に加えて、車両プラグイン・マッププラグインの動作を確認できるサンプルシナリオを同梱しています。
AtsEX SDK
サンプルプラグインのソースコードのセットです。
下の Assets より「AtsEX_v0.18.30202.1_SDK.7z」をダウンロード・解凍してください (beta0.18 向けのものですが、beta0.18.1 とは相互互換性があります)。
ビルドには別途 AtsEX 本体のダウンロードが必要です。
解凍には 7-zip などの解凍ソフトが必要です。
beta0.18.1 - v0.18.30204.1
本バージョンは β 版です。頻繁に破壊的変更を行う可能性があるので、まだ本番環境での採用は推奨しません。
AtsEX についてはこちら→ AtsEX ATSプラグイン拡張キット - 岡オカ営業所
インストール方法の説明はこちら→ AtsEXインストールガイド - AtsEX ATSプラグイン拡張キット - 岡オカ営業所
beta0.18 (v0.18.30202.1) からの主な更新内容
AtsEX 本体
パネル出力
- 【重要】 他の ATS プラグインからの値の変更を同期できるようになりました。→ 2847332
- データの同期方向を OneWay (β0.18 と同様の挙動) / OneWayToSource / TwoWay の 3 種類から選べます。
- インデックス競合の自動検出機能は、OneWay に指定されている場合のみ動作する仕様となりました。
- データの同期方向を OneWay (β0.18 と同様の挙動) / OneWayToSource / TwoWay の 3 種類から選べます。
beta0.17.7 (v0.17.30127.1) からの主な更新内容
AtsEX 本体
- 【重要】 パネル出力、サウンド出力に対応しました。→ 7e0d490 / 6185258 / ad0f7d4 / c39b87b
- 通常の ATS プラグインでいう「Elapse 関数の panel 変数、sound 変数を編集する」操作の互換機能になります。
- 他のプラグインとのインデックスの競合を防止・自動検出する機能付です。
- 他の AtsEX プラグインと競合している場合 - そのインデックスが既に使用されていることを通知します。
- ネイティブプラグイン (通常のプラグイン) と競合している場合 - そのプラグインから値が変更された時点で「予期せぬ外部からの編集」として検出し、エラーを発生させます。
- 仕様の詳細については下記「パネル出力について」、「サウンド出力について」をご参照ください。
- 【破壊的変更】 AtsEx.Caller の互換性チェックが機能していなかった不具合を修正しました。→ 5f15e7f / aa3711d / 7318226
- この修正の影響で、以前のバージョンの AtsEx.Caller.x**.dll を使用している車両に関しては最新バージョンのものへ差し替えが必要となります。
- AtsEX プラグインの再コンパイル・修正等は不要です。
- この修正の影響で、以前のバージョンの AtsEx.Caller.x**.dll を使用している車両に関しては最新バージョンのものへ差し替えが必要となります。
サンプル
- panel 出力機能のサンプルプラグイン・シナリオを追加しました。→ 0c36482
- サウンド出力機能のサンプルとして、「シンプルな ATS サンプル」で ATS 作動時にはベルが鳴る仕様に変更しました。→ 7f95daf
パネル出力について
この機能は BVE が ATS プラグイン向けに提供している機能のみを組み合わせて実装しているため、BVE 本体のバージョンに依存しません。
パネルへ出力可能なのは整数値のみのため、通常の ATS プラグインでは
- PilotLamp 向けの真偽値なら 0 を false、1 を true に対応させる
- DigitalNumber で駅名を表示させたいなら各駅名に ID をふって駅名と整数値を 1 対 1 に対応させる
など、何かしらの方法でデータを整数値に変換する必要がありました。
本機能では、出力データに疑似的に型を持たせる仕様としています。bool 型の場合は AtsEX が上記のように自動で整数へシリアライズし、BVE 本体へ送信します。その他の型も独自にシリアライザーを定義することで使用できます。
これにより、整数以外のデータを出力するときも直感的に記述することが可能です。
コードの例
// 状態量 ats50 を bool 型、初期値 false として登録
IAtsPanelValue<bool> ats50 = Native.AtsPanelValues.RegisterBoolean(50, false);
// 状態量 ats51 を double 型、初期値 0.0 として登録
// 小数第 2 位まで出力する例 (例えば、1.23 なら「123」として送信)
IAtsPanelValue<int> ats51 = Native.AtsPanelValues.Register<double>(51, value => (int)(value * 100), 0.0);この場合、以下のように出力するデータを設定します。
ats50.Value = true; // ->「1」として送信
ats51.Value = 45.6; // ->「4560」として送信サウンド出力について
この機能は BVE が ATS プラグイン向けに提供している機能のみを組み合わせて実装しているため、BVE 本体のバージョンに依存しません。
Play / PlayLoop メソッド (≒関数) を実行すると再生され、Stop メソッドを実行すると停止する仕様です。
地上子通過などをトリガーにサウンドを再生する場合でも、フラグ変数を定義して Elapse 関数内で複雑な条件式を組み合わせる必要はありません。
コードの例
// ATS サウンド 12 番を AtsEX から操作するサウンドとして登録
IAtsSound atsSound12 = Native.AtsSounds.Register(12);// 再生
atsSound12.Play();同梱プラグイン一覧
拡張機能
- AtsEX コア拡張機能
- ContextMenuHacker
- メインフォームの右クリックメニューを編集するための機能を提供します。
- DiagramUpdater
- 時刻表、ダイヤグラムなどの行路に関わるオブジェクトの更新機能を提供します。
- PreTrainPatch
- 先行列車の走行位置を自由に変更できるようにするパッチを提供します。
- SignalPatch
- 閉塞の信号現示を自由に変更できるようにするパッチを提供します。
- StructureModelFinder
- ストラクチャーの 3D モデルを簡単に検索するための機能を提供します。
- TrainDrawPatch
- 他列車を自由に移動・回転できるようにするパッチを提供します。
- ContextMenuHacker
- DXDynamicTexture
- 拡張地上子
車両プラグイン
- 【新規】 運転台パネルに値を渡すサンプル
- シンプルな ATS サンプル
- 状態取得・設定サンプル
マッププラグイン
- DXDynamicTexture 連携サンプル
- 先行列車操作サンプル
- 信号現示操作サンプル
- 駅リスト編集サンプル
- 他列車操作サンプル
- 他列車操作サンプル EX
- 走行抵抗係数編集サンプル
- 空の C# スクリプトプラグイン
- 空の IronPython プラグイン
ダウンロード
AtsEX 本体+サンプルシナリオ
下の Assets より「AtsEX_v0.18.302024.1.7z」をダウンロード・解凍し、シナリオフォルダに配置してください。
AtsEX 本体に加えて、車両プラグイン・マッププラグインの動作を確認できるサンプルシナリオを同梱しています。
AtsEX SDK
サンプルプラグインのソースコードのセットです。
下の Assets より「AtsEX_v0.18.30202.1_SDK.7z」をダウンロード・解凍してください (beta0.18 向けのものですが、beta0.18.1 とは相互互換性があります)。
ビルドには別途 AtsEX 本体のダウンロードが必要です。
解凍には 7-zip などの解凍ソフトが必要です。
beta0.18 - v0.18.30202.1
本バージョンは β 版です。頻繁に破壊的変更を行う可能性があるので、まだ本番環境での採用は推奨しません。
AtsEX についてはこちら→ AtsEX ATSプラグイン拡張キット - 岡オカ営業所
インストール方法の説明はこちら→ AtsEXインストールガイド - AtsEX ATSプラグイン拡張キット - 岡オカ営業所
beta0.17.7 (v0.17.30127.1) からの主な更新内容
AtsEX 本体
- 【重要】 panel 出力、sound 出力に対応しました。→ 7e0d490 / 6185258 / ad0f7d4 / c39b87b
- 通常の ATS プラグインでいう「Elapse 関数の panel 変数、sound 変数を編集する」操作の互換機能になります。
- 他のプラグインとのインデックスの競合を防止・自動検出する機能付です。
- 他の AtsEX プラグインと競合している場合 - そのインデックスが既に使用されていることを通知します。
- ネイティブプラグイン (通常のプラグイン) と競合している場合 - そのプラグインから値が変更された時点で「予期せぬ外部からの編集」として検出し、エラーを発生させます。
- 仕様の詳細については下記「panel 出力について」、「sound 出力について」をご参照ください。
- 【破壊的変更】 AtsEx.Caller の互換性チェックが機能していなかった不具合を修正しました。→ 5f15e7f / aa3711d / 7318226
- この修正の影響で、以前のバージョンの AtsEx.Caller.x**.dll を使用している車両に関しては最新バージョンのものへ差し替えが必要となります。
- AtsEX プラグインの再コンパイル・修正等は不要です。
- この修正の影響で、以前のバージョンの AtsEx.Caller.x**.dll を使用している車両に関しては最新バージョンのものへ差し替えが必要となります。
サンプル
- panel 出力機能のサンプルプラグイン・シナリオを追加しました。→ 0c36482
- sound 出力機能のサンプルとして、「シンプルな ATS サンプル」で ATS 作動時にはベルが鳴る仕様に変更しました。→ 7f95daf
panel 出力について
この機能は BVE が ATS プラグイン向けに提供している機能のみを組み合わせて実装しているため、BVE 本体のバージョンに依存しません。
panel へ出力可能なのは整数値のみのため、通常の ATS プラグインでは
- PilotLamp 向けの真偽値なら 0 を false、1 を true に対応させる
- DigitalNumber で駅名を表示させたいなら各駅名に ID をふって駅名と整数値を 1 対 1 に対応させる
など、何かしらの方法でデータを整数値に変換する必要がありました。
本機能では、出力データに疑似的に型を持たせる仕様としています。bool 型の場合は AtsEX が上記のように自動で整数へシリアライズし、BVE 本体へ送信します。その他の型も独自にシリアライザーを定義することで使用できます。
これにより、整数以外のデータを出力するときも直感的に記述することが可能です。
コードの例
// 状態量 ats50 を bool 型、初期値 false として登録
IAtsPanelValue<bool> ats50 = Native.AtsPanelValues.RegisterBoolean(50, false);
// 状態量 ats51 を double 型、初期値 0.0 として登録
// 小数第 2 位まで出力する例 (例えば、1.23 なら「123」として送信)
IAtsPanelValue<int> ats51 = Native.AtsPanelValues.Register<double>(51, value => (int)(value * 100), 0.0);この場合、以下のように出力するデータを設定します。
ats50.Value = true; // ->「1」として送信
ats51.Value = 45.6; // ->「4560」として送信sound 出力について
この機能は BVE が ATS プラグイン向けに提供している機能のみを組み合わせて実装しているため、BVE 本体のバージョンに依存しません。
Play / PlayLoop メソッド (≒関数) を実行すると再生され、Stop メソッドを実行すると停止する仕様です。
地上子通過などをトリガーにサウンドを再生する場合でも、フラグ変数を定義して Elapse 関数内で複雑な条件式を組み合わせる必要はありません。
コードの例
// ATS サウンド 12 番を AtsEX から操作するサウンドとして登録
IAtsSound atsSound12 = Native.AtsSounds.Register(12);// 再生
atsSound12.Play();同梱プラグイン一覧
拡張機能
- AtsEX コア拡張機能
- ContextMenuHacker
- メインフォームの右クリックメニューを編集するための機能を提供します。
- DiagramUpdater
- 時刻表、ダイヤグラムなどの行路に関わるオブジェクトの更新機能を提供します。
- PreTrainPatch
- 先行列車の走行位置を自由に変更できるようにするパッチを提供します。
- SignalPatch
- 閉塞の信号現示を自由に変更できるようにするパッチを提供します。
- StructureModelFinder
- ストラクチャーの 3D モデルを簡単に検索するための機能を提供します。
- TrainDrawPatch
- 他列車を自由に移動・回転できるようにするパッチを提供します。
- ContextMenuHacker
- DXDynamicTexture
- 拡張地上子
車両プラグイン
- 【新規】 運転台パネルに値を渡すサンプル
- シンプルな ATS サンプル
- 状態取得・設定サンプル
マッププラグイン
- DXDynamicTexture 連携サンプル
- 先行列車操作サンプル
- 信号現示操作サンプル
- 駅リスト編集サンプル
- 他列車操作サンプル
- 他列車操作サンプル EX
- 走行抵抗係数編集サンプル
- 空の C# スクリプトプラグイン
- 空の IronPython プラグイン
ダウンロード
AtsEX 本体+サンプルシナリオ
下の Assets より「AtsEX_v0.18.30202.1.7z」をダウンロード・解凍し、シナリオフォルダに配置してください。
AtsEX 本体に加えて、車両プラグイン・マッププラグインの動作を確認できるサンプルシナリオを同梱しています。
AtsEX SDK
サンプルプラグインのソースコードのセットです。
下の Assets より「AtsEX_v0.18.30202.1_SDK.7z」をダウンロード・解凍してください。
ビルドには別途 AtsEX 本体のダウンロードが必要です。
解凍には 7-zip などの解凍ソフトが必要です。
beta0.17.7 - v0.17.30127.1
本バージョンは β 版です。頻繁に破壊的変更を行う可能性があるので、まだ本番環境での採用は推奨しません。
AtsEX についてはこちら→ AtsEX ATSプラグイン拡張キット - 岡オカ営業所
インストール方法の説明はこちら→ AtsEXインストールガイド - AtsEX ATSプラグイン拡張キット - 岡オカ営業所
アップデートのポイント
※ beta0.15.x 〜 beta0.17.x における変更を基に記載しています。
- ユーザーに優しく
- 分かりやすいエラーメッセージ、ハマりやすいポイントには手厚い警告を
- パフォーマンスの向上
- キャッシュ機構の実装、高速な処理方法への再実装により、根本からの最大 100 倍もの高速化を実現しました。
- 読込もシナリオ実行も圧倒的に軽量化されています。
- これまでの処理方法では、AtsEX の読込に要する時間はシナリオの規模に比例していました。そのため、とある巨大なシナリオでは AtsEX の読込に1分以上要していましたが、この更新によって 20 秒程度へと 3 分の 1 以下に短縮されました。
- 見通しの良い構造に
- 大規模にアセンブリ (DLL) の分割、クラスの分割、名前空間の変更などを行いました。
- これによりプラグインが更に設計しやすくなりました。
beta0.17.6 (v0.17.30125.1) からの主な更新内容
AtsEX コア拡張機能
- SignalPatch で、内部的に使用されていなかったパラメータがファクトリメソッドに含まれていたため削除しました。→ 006a32e
- 互換性維持のため旧バージョンのメソッドも残していますが、今後新規に開発する際は新バージョンのものを使用してください。
クラスラッパー
- 【重要】 車両性能テーブルのデータを編集できるようになりました。→ 37316e1
- 【重要】 進段パラメーターテーブルの情報を取得・編集できるようになりました。→ 86d62b9
- SectionManager.TimeManager プロパティが取得できない不具合を修正しました。→ bed2768
beta0.17.5 (v0.17.30110.1) からの主な更新内容
AtsEX 本体
- 【重要】 DoorOpen 関数、DoorClose 関数の互換機能を追加しました。→ 4b14fa0
- 大文字で指定された名前空間・識別子は、全て自動で小文字に変換する仕様に変更しました。→ 9129951
- 名前空間・識別子に大文字を使用することは BVE の仕様上不可能だったため、影響はないと判断したものです。
AtsEX コア拡張機能
- 3D モデルからストラクチャーキーを検索する機能
StructureModelFinderを追加しました。→ 3515fd4AtsEx.Extensions.StructureModelFinder名前空間より使用可能です。
FastCaching
- 排他制御が不完全だったため、暫定的に修正しました。→ d0cd55d
- 処理速度が若干低下している可能性があります。
クラスラッパー
- 配列をラップする WrappedArray を追加しました。→ 9cef492
- LocatableModel クラス、StructureBlock クラス、StructureDrawer クラスを追加しました。→ 87d3783
- ストラクチャーの描画処理を管理・介入できます。
- ブレーキ方式を表すクラス (BrakeControllerBase クラス、Ecb クラス、Smee クラス、Cl クラス) を追加しました。→ 4d1ca7b
- GraphCurve クラスを追加しました。→ 29ca29c
- 車両性能テーブルやモーター音テーブルで内部的に使用されているクラスです。
- 電気系のクラス (VehicleElectricity クラス、VehiclePerformance クラス、VehiclePerformanceBase クラス、VehicleStep クラス、VehicleStepSet クラス) を追加しました。→ ae7d781
- これにより車両性能テーブルのデータを取得できるようになりました。
- ただし、進段パラメーターテーブルのデータに関しては未実装です。ご希望の場合は Twitter の DM かメールにてお知らせください。
- これにより車両性能テーブルのデータを取得できるようになりました。
- UserVehicleLocationManager.BlockIndex プロパティの型が誤っていたため修正しました。→ 2b06e3e
- オリジナル型からラッパー型を検索する BveTypeSet.GetWrapperTypeOf(Type originalType) メソッドに Try 版を追加しました。→ d13b23a
サンプル
- 「シンプルなサンプル車両 + 空のマップ」の組み合わせのシナリオを追加しました。→ 6feecb9
- ストラクチャーリスト、信号現示リストを BaseMap.txt 内ではなく各サンプル毎に定義する仕様に変更しました。→ 835ffac
- プラグインメインクラスの
IDisposableの明示的な指定を削除しました。→ 90bd413- 以前の仕様変更で自動的に
IDisposableが実装されるようになっており、指定の必要が無くなっていたためです。
- 以前の仕様変更で自動的に
beta0.17.3 (v0.17.30106.1) からの主な更新内容
AtsEX 本体
- SetBeaconData 関数の互換機能を追加しました。→ 7868f27
ObjectiveHarmonyPatch
- 【破壊的変更】 実装を一新しました。→ 43f541a / 69f6a6a
- 従来の仕様では、同一メソッドへ複数回パッチした場合、ケースによっては非常に複雑な処理が必要となってしまっていたためです。
- これに合わせて拡張機能・サンプルを書き換えたことに伴い、SignalPatch等を複数使用できない不具合が改善されています。
クラスラッパー
beta0.17.2 (v0.17.21224.2) からの主な更新内容
AtsEX 本体
- 【重要】 null ストラクチャー (ストラクチャーキーを指定せずに設置した空のストラクチャー) の処理に失敗する不具合を修正しました。→ 3ea84c3
- これにより、内房線をはじめとした多くの路線データにて AtsEX を起動できない問題が解消されました。
- アップデート情報ダイアログの詳細情報を表示するプロセスを変更しました。→ b1abc8a
- これにより、アップデート前の AtsEX のバージョンにより表示内容を多少変更することができるようになりました。
beta0.17.1 (v0.17.21224.1) からの主な更新内容
AtsEX 本体
- アップデート情報ダイアログが表示され続ける問題を修正しました。→ ac42024
beta0.16.2 (v0.16.21022.1) からの主な更新内容
非常に多いため、特に影響の大きいもののみを掲載しています。 全ての変更の一覧は Comparing changes をご覧ください。
AtsEX 本体
- 【重要】 シナリオフォルダ内における配置位置を
Scenarios\Automaitc9045\AtsExからScenarios\AtsEx\(バージョン名)に変更しました。→ 4cede3b / 64e1875- 今後、複数バージョンの AtsEX をインストール・使用することができるようになる予定です。現時点では最新バージョンのものを自動的に選択する仕様となっています。
- 【重要】 拡張機能を開発できるようになりました。→ 872bf68 / 387a140 / b3a96a4 / 4699eb4 / 1d0ed08 / 22f1d64 / bf66089
- 拡張機能は、シナリオではなく AtsEX 本体に紐づけるプラグインです。汎用的な機能を提供するプラグインや、シナリオの演出には直接関わらない補助的なプラグインなどにお勧めです。
- 拡張機能のアセンブリ (DLL) は AtsEx フォルダ (AtsEX の本体を配置するフォルダ) の Extensions フォルダ内に配置する仕様です。
- 【重要】 マップに独自の構文を定義できるようになりました。→ 648ce60 / 79ebd83 / 85036b4 / 6c8d337 / 39499fb / 6cd4db7 / 4247712 / 24cec14 / 37b7abf / 37f3bdb / 4c4600b / 4bdfc47
- include ステートメントを使用して定数的宣言 (何らかのファイルのパス指定など) ができる「ヘッダー」、Repeater 系ステートメントを使用してマップ内の特定距離程に独自のオブジェクトを設置できる「ステートメント」の 2 種類の機能を提供します。
- これに伴い、従来の
<MPIUSING>、[[NOMPI]]はヘッダー機能を利用した実装に書き換えました。記述方法がそれぞれ<AtsEx::MapPluginUsing>、[[AtsEx::NOMPI]]へ変更となります。
- 【重要】 先行列車を操作するパッチ、信号現示を操作するパッチを追加しました。→ 9acef49 / e5890c1
- 【重要】 アップデート情報ダイアログがリッチになりました。→ 44dd1f1
- 最新版の情報が Markdown 形式でより詳細に、綺麗に表示されるようになりました。
- データ制作者様向けに、12 時間のあいだアップデート情報の表示を停止するオプションを追加しました。
- 【破壊的変更】 名前空間を
Automatic9045.AtsEx.~からAtsEx.~に変更しました。→ 8f5a5ea / 086cfeb / - 【破壊的変更】 プラグインのメインクラスのコンストラクタの内、定数的用法のものについては属性で指定する仕様に変更しました。→ 62bb828
- 【破壊的変更】 BveTypeSet、クラスラッパーを別アセンブリ「BveTypes.dll」に分離しました。→ 5e940b6 / ab15845
- 【破壊的変更】 本体に実装された補助的な機能群を、拡張機能として分離しました。→ 9d08ecf / a4f5ae9 / 5540abc / 19f56c4
- ContextMenuHacker、DiagramUpdater、TrainDrawPatch は「AtsEx.CoreExtensions.dll」に定義されています。
- 拡張地上子は「ExtendedBeacons.dll」に定義されています。
- DXDynamicTexture のラッパーは「DXDynamicTexture.dll」に定義されています。
- 【破壊的変更】 App から、シナリオに依存するメンバー、プラグインの一覧をそれぞれ別クラス
Native、PluginSetに分離しました。→ c20cd45 / 1f2ab45 / 57204d2 / e90d1c2 / a8bc9dc / - 【破壊的変更】 App の実体を PluginHost に移動しました。→ c9644de
- PluginHost 内のクラスを含む全てのクラスからシングルトンパターンによりインスタンスを取得できるようにするためです。
- 【破壊的変更】 一部 PluginHost 内に記述していた BveHacker の実装を AtsEx (コア) 内のみに統一しました。これに伴い AtsEx.PluginHost.BveHacker クラスは AtsEx.PluginHost.IBveHacker インターフェイスへ変更となっています。→ ba92311
- 【破壊的変更】 全てのプラグインにおいて、IDisposable の実装が必須となりました。→ 660d1ea
- 【破壊的変更】 TickResult 系クラスをミュータブルな仕様に変更し、コンストラクタはパラメータを持たない形になりました。→ b60ef6a
- 【破壊的変更】 BveHacker の読込に成功しても、Native.Handles (旧: App.Handles) は書き換えない仕様に変更しました。→ 8d6896d
- 一様でない動作は仕様を分かりづらくすると判断したためです。
- 【破壊的変更】 BveHacker.Handles の初期化時、Native.Handles (旧: App.Handles) の設定を引き継がない仕様に変更しました。→ 65fd3a4
- BVE5.8 から読み込めない不具合を修正しました。→ 13492fb
- パブリックでないクラスもプラグインのメインクラスとして認識されるようになりました。→ f2fc4c7
- スクリプティング系の処理を別アセンブリ「AtsEx.Scripting.dll」に分離しました。→ 9623538 / d74a8dc / c933655 / a9e27b6
- これに伴い、プラグインへ独自のスクリプティング機能を比較的簡単に実装できるようになりました。
- エラー発生時に具体的なメッセージが表示されない問題を改善しました。→ 8d5c9cf / 23f4b47 / 8b3803a / 3b56d90 / d1b3b3f
- その他、プラグインの仕様に影響しない内部実装の改善を多数行いました。
クラスラッパー
- MapObjectBase、MapObjectList、Section、SectionManager にメンバーを追加しました。→ 905ac0c / ac7bf63 / 29a959d
- ValueNode を追加しました。→ ddbeacb
パフォーマンス関連
- 一部 SortedList を使用している処理を Dictionary へ置き換えました。→ ecc2f4f
- ConcurrentDictionary によるキャッシュ機構を Hashtable を利用した独自実装に置き換えました。→ 6a65b52
拡張地上子
- 【重要】 上位互換となる機能「独自マップ構文」の実装に伴い、新たにプラグインを開発される際、拡張地上子を使用するのは (非推奨 = Obsolete とまではいきませんが) あまりお勧めしません。
- 独自マップ構文機能では、拡張地上子にてサポートされる機能に加えて新しい機能が追加されている他、デバッグ性・読込速度も大幅に向上しています。
- 【重要】 「プラグインに紐づいた変数」機能を廃止しました。→ d4bfd23
- 今後複雑な機能を実装する場合は独自マップ構文機能を使用してください。
サンプル
- 【重要】 フォルダ構成を一新しました。→ 75548dc...
beta0.17.6 - v0.17.30125.1
本バージョンは β 版です。頻繁に破壊的変更を行う可能性があるので、まだ本番環境での採用は推奨しません。
AtsEX についてはこちら→ AtsEX ATSプラグイン拡張キット - 岡オカ営業所
アップデートのポイント
※ beta0.15.x 〜 beta0.17.x における変更を基に記載しています。
- ユーザーに優しく
- 分かりやすいエラーメッセージ、ハマりやすいポイントには手厚い警告を
- パフォーマンスの向上
- キャッシュ機構の実装、高速な処理方法への再実装により、根本からの最大 100 倍もの高速化を実現しました。
- 読込もシナリオ実行も圧倒的に軽量化されています。
- これまでの処理方法では、AtsEX の読込に要する時間はシナリオの規模に比例していました。そのため、とある巨大なシナリオでは AtsEX の読込に1分以上要していましたが、この更新によって 20 秒程度へと 3 分の 1 以下に短縮されました。
- 見通しの良い構造に
- 大規模にアセンブリ (DLL) の分割、クラスの分割、名前空間の変更などを行いました。
- これによりプラグインが更に設計しやすくなりました。
beta0.17.5 (v0.17.30110.1) からの主な更新内容
AtsEX 本体
- 【重要】 DoorOpen 関数、DoorClose 関数の互換機能を追加しました。→ 4b14fa0
- 大文字で指定された名前空間・識別子は、全て自動で小文字に変換する仕様に変更しました。→ 9129951
- 名前空間・識別子に大文字を使用することは BVE の仕様上不可能だったため、影響はないと判断したものです。
AtsEX コア拡張機能
- 3D モデルからストラクチャーキーを検索する機能
StructureModelFinderを追加しました。→ 3515fd4AtsEx.Extensions.StructureModelFinder名前空間より使用可能です。
FastCaching
- 排他制御が不完全だったため、暫定的に修正しました。→ d0cd55d
- 処理速度が若干低下している可能性があります。
クラスラッパー
- 配列をラップする WrappedArray を追加しました。→ 9cef492
- LocatableModel クラス、StructureBlock クラス、StructureDrawer クラスを追加しました。→ 87d3783
- ストラクチャーの描画処理を管理・介入できます。
- ブレーキ方式を表すクラス (BrakeControllerBase クラス、Ecb クラス、Smee クラス、Cl クラス) を追加しました。→ 4d1ca7b
- GraphCurve クラスを追加しました。→ 29ca29c
- 車両性能テーブルやモーター音テーブルで内部的に使用されているクラスです。
- 電気系のクラス (VehicleElectricity クラス、VehiclePerformance クラス、VehiclePerformanceBase クラス、VehicleStep クラス、VehicleStepSet クラス) を追加しました。→ ae7d781
- これにより車両性能テーブルのデータを取得できるようになりました。
- ただし、進段パラメーターテーブルのデータに関しては未実装です。ご希望の場合は Twitter の DM かメールにてお知らせください。
- これにより車両性能テーブルのデータを取得できるようになりました。
- UserVehicleLocationManager.BlockIndex プロパティの型が誤っていたため修正しました。→ 2b06e3e
- オリジナル型からラッパー型を検索する BveTypeSet.GetWrapperTypeOf(Type originalType) メソッドに Try 版を追加しました。→ d13b23a
サンプル
- 「シンプルなサンプル車両 + 空のマップ」の組み合わせのシナリオを追加しました。→ 6feecb9
- ストラクチャーリスト、信号現示リストを BaseMap.txt 内ではなく各サンプル毎に定義する仕様に変更しました。→ 835ffac
- プラグインメインクラスの
IDisposableの明示的な指定を削除しました。→ 90bd413- 以前の仕様変更で自動的に
IDisposableが実装されるようになっており、指定の必要が無くなっていたためです。
- 以前の仕様変更で自動的に
beta0.17.3 (v0.17.30106.1) からの主な更新内容
AtsEX 本体
- SetBeaconData 関数の互換機能を追加しました。→ 7868f27
ObjectiveHarmonyPatch
- 【破壊的変更】 実装を一新しました。→ 43f541a / 69f6a6a
- 従来の仕様では、同一メソッドへ複数回パッチした場合、ケースによっては非常に複雑な処理が必要となってしまっていたためです。
- これに合わせて拡張機能・サンプルを書き換えたことに伴い、SignalPatch等を複数使用できない不具合が改善されています。
クラスラッパー
beta0.17.2 (v0.17.21224.2) からの主な更新内容
AtsEX 本体
- 【重要】 null ストラクチャー (ストラクチャーキーを指定せずに設置した空のストラクチャー) の処理に失敗する不具合を修正しました。→ 3ea84c3
- これにより、内房線をはじめとした多くの路線データにて AtsEX を起動できない問題が解消されました。
- アップデート情報ダイアログの詳細情報を表示するプロセスを変更しました。→ b1abc8a
- これにより、アップデート前の AtsEX のバージョンにより表示内容を多少変更することができるようになりました。
beta0.17.1 (v0.17.21224.1) からの主な更新内容
AtsEX 本体
- アップデート情報ダイアログが表示され続ける問題を修正しました。→ ac42024
beta0.16.2 (v0.16.21022.1) からの主な更新内容
非常に多いため、特に影響の大きいもののみを掲載しています。 全ての変更の一覧は Comparing changes をご覧ください。
AtsEX 本体
- 【重要】 シナリオフォルダ内における配置位置を
Scenarios\Automaitc9045\AtsExからScenarios\AtsEx\(バージョン名)に変更しました。→ 4cede3b / 64e1875- 今後、複数バージョンの AtsEX をインストール・使用することができるようになる予定です。現時点では最新バージョンのものを自動的に選択する仕様となっています。
- 【重要】 拡張機能を開発できるようになりました。→ 872bf68 / 387a140 / b3a96a4 / 4699eb4 / 1d0ed08 / 22f1d64 / bf66089
- 拡張機能は、シナリオではなく AtsEX 本体に紐づけるプラグインです。汎用的な機能を提供するプラグインや、シナリオの演出には直接関わらない補助的なプラグインなどにお勧めです。
- 拡張機能のアセンブリ (DLL) は AtsEx フォルダ (AtsEX の本体を配置するフォルダ) の Extensions フォルダ内に配置する仕様です。
- 【重要】 マップに独自の構文を定義できるようになりました。→ 648ce60 / 79ebd83 / 85036b4 / 6c8d337 / 39499fb / 6cd4db7 / 4247712 / 24cec14 / 37b7abf / 37f3bdb / 4c4600b / 4bdfc47
- include ステートメントを使用して定数的宣言 (何らかのファイルのパス指定など) ができる「ヘッダー」、Repeater 系ステートメントを使用してマップ内の特定距離程に独自のオブジェクトを設置できる「ステートメント」の 2 種類の機能を提供します。
- これに伴い、従来の
<MPIUSING>、[[NOMPI]]はヘッダー機能を利用した実装に書き換えました。記述方法がそれぞれ<AtsEx::MapPluginUsing>、[[AtsEx::NOMPI]]へ変更となります。
- 【重要】 先行列車を操作するパッチ、信号現示を操作するパッチを追加しました。→ 9acef49 / e5890c1
- 【重要】 アップデート情報ダイアログがリッチになりました。→ 44dd1f1
- 最新版の情報が Markdown 形式でより詳細に、綺麗に表示されるようになりました。
- データ制作者様向けに、12 時間のあいだアップデート情報の表示を停止するオプションを追加しました。
- 【破壊的変更】 名前空間を
Automatic9045.AtsEx.~からAtsEx.~に変更しました。→ 8f5a5ea / 086cfeb / - 【破壊的変更】 プラグインのメインクラスのコンストラクタの内、定数的用法のものについては属性で指定する仕様に変更しました。→ 62bb828
- 【破壊的変更】 BveTypeSet、クラスラッパーを別アセンブリ「BveTypes.dll」に分離しました。→ 5e940b6 / ab15845
- 【破壊的変更】 本体に実装された補助的な機能群を、拡張機能として分離しました。→ 9d08ecf / a4f5ae9 / 5540abc / 19f56c4
- ContextMenuHacker、DiagramUpdater、TrainDrawPatch は「AtsEx.CoreExtensions.dll」に定義されています。
- 拡張地上子は「ExtendedBeacons.dll」に定義されています。
- DXDynamicTexture のラッパーは「DXDynamicTexture.dll」に定義されています。
- 【破壊的変更】 App から、シナリオに依存するメンバー、プラグインの一覧をそれぞれ別クラス
Native、PluginSetに分離しました。→ c20cd45 / 1f2ab45 / 57204d2 / e90d1c2 / a8bc9dc / - 【破壊的変更】 App の実体を PluginHost に移動しました。→ c9644de
- PluginHost 内のクラスを含む全てのクラスからシングルトンパターンによりインスタンスを取得できるようにするためです。
- 【破壊的変更】 一部 PluginHost 内に記述していた BveHacker の実装を AtsEx (コア) 内のみに統一しました。これに伴い AtsEx.PluginHost.BveHacker クラスは AtsEx.PluginHost.IBveHacker インターフェイスへ変更となっています。→ ba92311
- 【破壊的変更】 全てのプラグインにおいて、IDisposable の実装が必須となりました。→ 660d1ea
- 【破壊的変更】 TickResult 系クラスをミュータブルな仕様に変更し、コンストラクタはパラメータを持たない形になりました。→ b60ef6a
- 【破壊的変更】 BveHacker の読込に成功しても、Native.Handles (旧: App.Handles) は書き換えない仕様に変更しました。→ 8d6896d
- 一様でない動作は仕様を分かりづらくすると判断したためです。
- 【破壊的変更】 BveHacker.Handles の初期化時、Native.Handles (旧: App.Handles) の設定を引き継がない仕様に変更しました。→ 65fd3a4
- BVE5.8 から読み込めない不具合を修正しました。→ 13492fb
- パブリックでないクラスもプラグインのメインクラスとして認識されるようになりました。→ f2fc4c7
- スクリプティング系の処理を別アセンブリ「AtsEx.Scripting.dll」に分離しました。→ 9623538 / d74a8dc / c933655 / a9e27b6
- これに伴い、プラグインへ独自のスクリプティング機能を比較的簡単に実装できるようになりました。
- エラー発生時に具体的なメッセージが表示されない問題を改善しました。→ 8d5c9cf / 23f4b47 / 8b3803a / 3b56d90 / d1b3b3f
- その他、プラグインの仕様に影響しない内部実装の改善を多数行いました。
クラスラッパー
- MapObjectBase、MapObjectList、Section、SectionManager にメンバーを追加しました。→ 905ac0c / ac7bf63 / 29a959d
- ValueNode を追加しました。→ ddbeacb
パフォーマンス関連
- 一部 SortedList を使用している処理を Dictionary へ置き換えました。→ ecc2f4f
- ConcurrentDictionary によるキャッシュ機構を Hashtable を利用した独自実装に置き換えました。→ 6a65b52
拡張地上子
- 【重要】 上位互換となる機能「独自マップ構文」の実装に伴い、新たにプラグインを開発される際、拡張地上子を使用するのは (非推奨 = Obsolete とまではいきませんが) あまりお勧めしません。
- 独自マップ構文機能では、拡張地上子にてサポートされる機能に加えて新しい機能が追加されている他、デバッグ性・読込速度も大幅に向上しています。
- 【重要】 「プラグインに紐づいた変数」機能を廃止しました。→ d4bfd23
- 今後複雑な機能を実装する場合は独自マップ構文機能を使用してください。
サンプル
- 【重要】 フォルダ構成を一新しました。→ 75548dc
- 今後の拡張を見据えたものです。
- 【重要】 車両を AtsEX 本体を呼び出すのみで一切の車両プラグインを読み込まない「空」、基本的な車両プラグインを含む「シンプル」の 2 種類に分割しました。→ 7ab1d20
- 【重要】 機能の充実に伴いシナリオが肥大化してきたため、系統別に分割しました。→ 80436e6
- 【重要】 名前空間を
Automatic9045.AtsEx.~からAtsEx.~に変更しました。→ 607f379 - 【重要】 先行列車を操作するサンプル、特定閉塞の信号現示を操作するサンプルを追加しました。→ 6ced3a1 / 52969e8 / 96ecdad
beta0.16.1 (v0.16.21018.2) からの主な更新内容
AtsEX 本体
- 【破壊的変更】 IHandle で、範囲外のノッチを設定しても既定では例外をスローしない仕様に変更しまし...
beta0.17.5 - v0.17.30110.1
本バージョンは β 版です。頻繁に破壊的変更を行う可能性があるので、まだ本番環境での採用は推奨しません。
AtsEX についてはこちら→ AtsEX ATSプラグイン拡張キット - 岡オカ営業所
アップデートのポイント
※ beta0.15.x 〜 beta0.17.x における変更を基に記載しています。
- ユーザーに優しく
- 分かりやすいエラーメッセージ、ハマりやすいポイントには手厚い警告を
- パフォーマンスの向上
- キャッシュ機構の実装、高速な処理方法への再実装により、根本からの最大 100 倍もの高速化を実現しました。
- 読込もシナリオ実行も圧倒的に軽量化されています。
- これまでの処理方法では、AtsEX の読込に要する時間はシナリオの規模に比例していました。そのため、とある巨大なシナリオでは AtsEX の読込に1分以上要していましたが、この更新によって 20 秒程度へと 3 分の 1 以下に短縮されました。
- 見通しの良い構造に
- 大規模にアセンブリ (DLL) の分割、クラスの分割、名前空間の変更などを行いました。
- これによりプラグインが更に設計しやすくなりました。
beta0.17.3 (v0.17.30106.1) からの主な更新内容
AtsEX 本体
- SetBeaconData 関数の互換機能を追加しました。→ 7868f27
ObjectiveHarmonyPatch
- 【破壊的変更】 実装を一新しました。→ 43f541a / 69f6a6a
- 従来の仕様では、同一メソッドへ複数回パッチした場合、ケースによっては非常に複雑な処理が必要となってしまっていたためです。
- これに合わせて拡張機能・サンプルを書き換えたことに伴い、SignalPatch等を複数使用できない不具合が改善されています。
クラスラッパー
beta0.17.2 (v0.17.21224.2) からの主な更新内容
AtsEX 本体
- 【重要】 null ストラクチャー (ストラクチャーキーを指定せずに設置した空のストラクチャー) の処理に失敗する不具合を修正しました。→ 3ea84c3
- これにより、内房線をはじめとした多くの路線データにて AtsEX を起動できない問題が解消されました。
- アップデート情報ダイアログの詳細情報を表示するプロセスを変更しました。→ b1abc8a
- これにより、アップデート前の AtsEX のバージョンにより表示内容を多少変更することができるようになりました。
beta0.17.1 (v0.17.21224.1) からの主な更新内容
AtsEX 本体
- アップデート情報ダイアログが表示され続ける問題を修正しました。→ ac42024
beta0.16.2 (v0.16.21022.1) からの主な更新内容
非常に多いため、特に影響の大きいもののみを掲載しています。 全ての変更の一覧は Comparing changes をご覧ください。
AtsEX 本体
- 【重要】 シナリオフォルダ内における配置位置を
Scenarios\Automaitc9045\AtsExからScenarios\AtsEx\(バージョン名)に変更しました。→ 4cede3b / 64e1875- 今後、複数バージョンの AtsEX をインストール・使用することができるようになる予定です。現時点では最新バージョンのものを自動的に選択する仕様となっています。
- 【重要】 拡張機能を開発できるようになりました。→ 872bf68 / 387a140 / b3a96a4 / 4699eb4 / 1d0ed08 / 22f1d64 / bf66089
- 拡張機能は、シナリオではなく AtsEX 本体に紐づけるプラグインです。汎用的な機能を提供するプラグインや、シナリオの演出には直接関わらない補助的なプラグインなどにお勧めです。
- 拡張機能のアセンブリ (DLL) は AtsEx フォルダ (AtsEX の本体を配置するフォルダ) の Extensions フォルダ内に配置する仕様です。
- 【重要】 マップに独自の構文を定義できるようになりました。→ 648ce60 / 79ebd83 / 85036b4 / 6c8d337 / 39499fb / 6cd4db7 / 4247712 / 24cec14 / 37b7abf / 37f3bdb / 4c4600b / 4bdfc47
- include ステートメントを使用して定数的宣言 (何らかのファイルのパス指定など) ができる「ヘッダー」、Repeater 系ステートメントを使用してマップ内の特定距離程に独自のオブジェクトを設置できる「ステートメント」の 2 種類の機能を提供します。
- これに伴い、従来の
<MPIUSING>、[[NOMPI]]はヘッダー機能を利用した実装に書き換えました。記述方法がそれぞれ<AtsEx::MapPluginUsing>、[[AtsEx::NOMPI]]へ変更となります。
- 【重要】 先行列車を操作するパッチ、信号現示を操作するパッチを追加しました。→ 9acef49 / e5890c1
- 【重要】 アップデート情報ダイアログがリッチになりました。→ 44dd1f1
- 最新版の情報が Markdown 形式でより詳細に、綺麗に表示されるようになりました。
- データ制作者様向けに、12 時間のあいだアップデート情報の表示を停止するオプションを追加しました。
- 【破壊的変更】 名前空間を
Automatic9045.AtsEx.~からAtsEx.~に変更しました。→ 8f5a5ea / 086cfeb / - 【破壊的変更】 プラグインのメインクラスのコンストラクタの内、定数的用法のものについては属性で指定する仕様に変更しました。→ 62bb828
- 【破壊的変更】 BveTypeSet、クラスラッパーを別アセンブリ「BveTypes.dll」に分離しました。→ 5e940b6 / ab15845
- 【破壊的変更】 本体に実装された補助的な機能群を、拡張機能として分離しました。→ 9d08ecf / a4f5ae9 / 5540abc / 19f56c4
- ContextMenuHacker、DiagramUpdater、TrainDrawPatch は「AtsEx.CoreExtensions.dll」に定義されています。
- 拡張地上子は「ExtendedBeacons.dll」に定義されています。
- DXDynamicTexture のラッパーは「DXDynamicTexture.dll」に定義されています。
- 【破壊的変更】 App から、シナリオに依存するメンバー、プラグインの一覧をそれぞれ別クラス
Native、PluginSetに分離しました。→ c20cd45 / 1f2ab45 / 57204d2 / e90d1c2 / a8bc9dc / - 【破壊的変更】 App の実体を PluginHost に移動しました。→ c9644de
- PluginHost 内のクラスを含む全てのクラスからシングルトンパターンによりインスタンスを取得できるようにするためです。
- 【破壊的変更】 一部 PluginHost 内に記述していた BveHacker の実装を AtsEx (コア) 内のみに統一しました。これに伴い AtsEx.PluginHost.BveHacker クラスは AtsEx.PluginHost.IBveHacker インターフェイスへ変更となっています。→ ba92311
- 【破壊的変更】 全てのプラグインにおいて、IDisposable の実装が必須となりました。→ 660d1ea
- 【破壊的変更】 TickResult 系クラスをミュータブルな仕様に変更し、コンストラクタはパラメータを持たない形になりました。→ b60ef6a
- 【破壊的変更】 BveHacker の読込に成功しても、Native.Handles (旧: App.Handles) は書き換えない仕様に変更しました。→ 8d6896d
- 一様でない動作は仕様を分かりづらくすると判断したためです。
- 【破壊的変更】 BveHacker.Handles の初期化時、Native.Handles (旧: App.Handles) の設定を引き継がない仕様に変更しました。→ 65fd3a4
- BVE5.8 から読み込めない不具合を修正しました。→ 13492fb
- パブリックでないクラスもプラグインのメインクラスとして認識されるようになりました。→ f2fc4c7
- スクリプティング系の処理を別アセンブリ「AtsEx.Scripting.dll」に分離しました。→ 9623538 / d74a8dc / c933655 / a9e27b6
- これに伴い、プラグインへ独自のスクリプティング機能を比較的簡単に実装できるようになりました。
- エラー発生時に具体的なメッセージが表示されない問題を改善しました。→ 8d5c9cf / 23f4b47 / 8b3803a / 3b56d90 / d1b3b3f
- その他、プラグインの仕様に影響しない内部実装の改善を多数行いました。
クラスラッパー
- MapObjectBase、MapObjectList、Section、SectionManager にメンバーを追加しました。→ 905ac0c / ac7bf63 / 29a959d
- ValueNode を追加しました。→ ddbeacb
パフォーマンス関連
- 一部 SortedList を使用している処理を Dictionary へ置き換えました。→ ecc2f4f
- ConcurrentDictionary によるキャッシュ機構を Hashtable を利用した独自実装に置き換えました。→ 6a65b52
拡張地上子
- 【重要】 上位互換となる機能「独自マップ構文」の実装に伴い、新たにプラグインを開発される際、拡張地上子を使用するのは (非推奨 = Obsolete とまではいきませんが) あまりお勧めしません。
- 独自マップ構文機能では、拡張地上子にてサポートされる機能に加えて新しい機能が追加されている他、デバッグ性・読込速度も大幅に向上しています。
- 【重要】 「プラグインに紐づいた変数」機能を廃止しました。→ d4bfd23
- 今後複雑な機能を実装する場合は独自マップ構文機能を使用してください。
サンプル
- 【重要】 フォルダ構成を一新しました。→ 75548dc
- 今後の拡張を見据えたものです。
- 【重要】 車両を AtsEX 本体を呼び出すのみで一切の車両プラグインを読み込まない「空」、基本的な車両プラグインを含む「シンプル」の 2 種類に分割しました。→ 7ab1d20
- 【重要】 機能の充実に伴いシナリオが肥大化してきたため、系統別に分割しました。→ 80436e6
- 【重要】 名前空間を
Automatic9045.AtsEx.~からAtsEx.~に変更しました。→ 607f379 - 【重要】 先行列車を操作するサンプル、特定閉塞の信号現示を操作するサンプルを追加しました。→ 6ced3a1 / 52969e8 / 96ecdad
beta0.16.1 (v0.16.21018.2) からの主な更新内容
AtsEX 本体
- 【破壊的変更】 IHandle で、範囲外のノッチを設定しても既定では例外をスローしない仕様に変更しました。→ 8cc1f9c
- TASC プラグインなどで範囲外のノッチを設定する例がかなり多く、既存のプラグインと競合が発生するケースが非常に多かったためです。
- プラグインのコードは全て UI スレッドにて同期的に処理する仕様に戻しました。→ 953142d
- 非同期処理前提となると、プラグイン開発のハードルが大幅に上がってしまうためです。
- AtsEX 本体のアップデート情報を受信できない不具合を修正しました。→ 38a6f48
- 抑速ノッチのある車両が正しく読み込めない不具合を修正しました。→ 343f7d0
beta0.15.1 (v0.15.20828.1) からの主な更新内容
非常に多いため、特に影響の大きいもののみを掲載しています。 全ての変更の一覧は Comparing changes をご覧ください。
AtsEX 本体
- 【重要】 BVE 本体の型・メンバーを読み込む処理を刷新しました。→ e493475 / 3976cd8 / edd6c9b / 35261db / 151b80f / 9cf091c / 72021e3 / 12fe15b
- これにより、読込のパフォーマンスが大幅に向上しています。
- 【重要】 (クラスラッパー)ClassWrapperBase.CreateFromSource メソッドで、型ごとにキャッシュが効くようになりました。→ d63d238
- これにより、WrappedList などでクラスラッパーを列挙する際のパフォーマンスが大幅に向上しています。
- 【重要】 重い読込処理の多くを非同期化しました。→ d7757e6 / 9d6f535 / e2789e5
- 【重要】 リソースの読込など、AtsEX に依存しない機能を別のアセンブリ (DLL) に分離しました。→ 6f5a112 / 770cc8b / e6cf572 / be8ebd2 / a83d00f
- 【重要】 AtsEX Caller の互換性チェック機能を追加しました。→ 26bb1a4 / fb4e560 / fca6b89
- 現在のバージョンの AtsEX 本体を読み込めないバージョンの AtsEX Caller を自動で検出し、分かりやすいエラーメッセージでお知らせします。
- 【重要】 プラグインの互換性チェック機能を追加し...
beta0.17.3 - v0.17.30106.1
本バージョンは β 版です。頻繁に破壊的変更を行う可能性があるので、まだ本番環境での採用は推奨しません。
AtsEX についてはこちら→ AtsEX ATSプラグイン拡張キット - 岡オカ営業所
アップデートのポイント
※ beta0.15.x 〜 beta0.17.x における変更を基に記載しています。
- ユーザーに優しく
- 分かりやすいエラーメッセージ、ハマりやすいポイントには手厚い警告を
- パフォーマンスの向上
- キャッシュ機構の実装、高速な処理方法への再実装により、根本からの最大 100 倍もの高速化を実現しました。
- 読込もシナリオ実行も圧倒的に軽量化されています。
- これまでの処理方法では、AtsEX の読込に要する時間はシナリオの規模に比例していました。そのため、とある巨大なシナリオでは AtsEX の読込に1分以上要していましたが、この更新によって 20 秒程度へと 3 分の 1 以下に短縮されました。
- 見通しの良い構造に
- 大規模にアセンブリ (DLL) の分割、クラスの分割、名前空間の変更などを行いました。
- これによりプラグインが更に設計しやすくなりました。
beta0.17.2 (v0.17.21224.2) からの主な更新内容
AtsEX 本体
- 【重要】 null ストラクチャー (ストラクチャーキーを指定せずに設置した空のストラクチャー) の処理に失敗する不具合を修正しました。→ 3ea84c3
- これにより、内房線をはじめとした多くの路線データにて AtsEX を起動できない問題が解消されました。
- アップデート情報ダイアログの詳細情報を表示するプロセスを変更しました。→ b1abc8a
- これにより、アップデート前の AtsEX のバージョンにより表示内容を多少変更することができるようになりました。
beta0.17.1 (v0.17.21224.1) からの主な更新内容
AtsEX 本体
- アップデート情報ダイアログが表示され続ける問題を修正しました。→ ac42024
beta0.16.2 (v0.16.21022.1) からの主な更新内容
非常に多いため、特に影響の大きいもののみを掲載しています。 全ての変更の一覧は Comparing changes をご覧ください。
AtsEX 本体
- 【重要】 シナリオフォルダ内における配置位置を
Scenarios\Automaitc9045\AtsExからScenarios\AtsEx\(バージョン名)に変更しました。→ 4cede3b / 64e1875- 今後、複数バージョンの AtsEX をインストール・使用することができるようになる予定です。現時点では最新バージョンのものを自動的に選択する仕様となっています。
- 【重要】 拡張機能を開発できるようになりました。→ 872bf68 / 387a140 / b3a96a4 / 4699eb4 / 1d0ed08 / 22f1d64 / bf66089
- 拡張機能は、シナリオではなく AtsEX 本体に紐づけるプラグインです。汎用的な機能を提供するプラグインや、シナリオの演出には直接関わらない補助的なプラグインなどにお勧めです。
- 拡張機能のアセンブリ (DLL) は AtsEx フォルダ (AtsEX の本体を配置するフォルダ) の Extensions フォルダ内に配置する仕様です。
- 【重要】 マップに独自の構文を定義できるようになりました。→ 648ce60 / 79ebd83 / 85036b4 / 6c8d337 / 39499fb / 6cd4db7 / 4247712 / 24cec14 / 37b7abf / 37f3bdb / 4c4600b / 4bdfc47
- include ステートメントを使用して定数的宣言 (何らかのファイルのパス指定など) ができる「ヘッダー」、Repeater 系ステートメントを使用してマップ内の特定距離程に独自のオブジェクトを設置できる「ステートメント」の 2 種類の機能を提供します。
- これに伴い、従来の
<MPIUSING>、[[NOMPI]]はヘッダー機能を利用した実装に書き換えました。記述方法がそれぞれ<AtsEx::MapPluginUsing>、[[AtsEx::NOMPI]]へ変更となります。
- 【重要】 先行列車を操作するパッチ、信号現示を操作するパッチを追加しました。→ 9acef49 / e5890c1
- 【重要】 アップデート情報ダイアログがリッチになりました。→ 44dd1f1
- 最新版の情報が Markdown 形式でより詳細に、綺麗に表示されるようになりました。
- データ制作者様向けに、12 時間のあいだアップデート情報の表示を停止するオプションを追加しました。
- 【破壊的変更】 名前空間を
Automatic9045.AtsEx.~からAtsEx.~に変更しました。→ 8f5a5ea / 086cfeb / - 【破壊的変更】 プラグインのメインクラスのコンストラクタの内、定数的用法のものについては属性で指定する仕様に変更しました。→ 62bb828
- 【破壊的変更】 BveTypeSet、クラスラッパーを別アセンブリ「BveTypes.dll」に分離しました。→ 5e940b6 / ab15845
- 【破壊的変更】 本体に実装された補助的な機能群を、拡張機能として分離しました。→ 9d08ecf / a4f5ae9 / 5540abc / 19f56c4
- ContextMenuHacker、DiagramUpdater、TrainDrawPatch は「AtsEx.CoreExtensions.dll」に定義されています。
- 拡張地上子は「ExtendedBeacons.dll」に定義されています。
- DXDynamicTexture のラッパーは「DXDynamicTexture.dll」に定義されています。
- 【破壊的変更】 App から、シナリオに依存するメンバー、プラグインの一覧をそれぞれ別クラス
Native、PluginSetに分離しました。→ c20cd45 / 1f2ab45 / 57204d2 / e90d1c2 / a8bc9dc / - 【破壊的変更】 App の実体を PluginHost に移動しました。→ c9644de
- PluginHost 内のクラスを含む全てのクラスからシングルトンパターンによりインスタンスを取得できるようにするためです。
- 【破壊的変更】 一部 PluginHost 内に記述していた BveHacker の実装を AtsEx (コア) 内のみに統一しました。これに伴い AtsEx.PluginHost.BveHacker クラスは AtsEx.PluginHost.IBveHacker インターフェイスへ変更となっています。→ ba92311
- 【破壊的変更】 全てのプラグインにおいて、IDisposable の実装が必須となりました。→ 660d1ea
- 【破壊的変更】 TickResult 系クラスをミュータブルな仕様に変更し、コンストラクタはパラメータを持たない形になりました。→ b60ef6a
- 【破壊的変更】 BveHacker の読込に成功しても、Native.Handles (旧: App.Handles) は書き換えない仕様に変更しました。→ 8d6896d
- 一様でない動作は仕様を分かりづらくすると判断したためです。
- 【破壊的変更】 BveHacker.Handles の初期化時、Native.Handles (旧: App.Handles) の設定を引き継がない仕様に変更しました。→ 65fd3a4
- BVE5.8 から読み込めない不具合を修正しました。→ 13492fb
- パブリックでないクラスもプラグインのメインクラスとして認識されるようになりました。→ f2fc4c7
- スクリプティング系の処理を別アセンブリ「AtsEx.Scripting.dll」に分離しました。→ 9623538 / d74a8dc / c933655 / a9e27b6
- これに伴い、プラグインへ独自のスクリプティング機能を比較的簡単に実装できるようになりました。
- エラー発生時に具体的なメッセージが表示されない問題を改善しました。→ 8d5c9cf / 23f4b47 / 8b3803a / 3b56d90 / d1b3b3f
- その他、プラグインの仕様に影響しない内部実装の改善を多数行いました。
クラスラッパー
- MapObjectBase、MapObjectList、Section、SectionManager にメンバーを追加しました。→ 905ac0c / ac7bf63 / 29a959d
- ValueNode を追加しました。→ ddbeacb
パフォーマンス関連
- 一部 SortedList を使用している処理を Dictionary へ置き換えました。→ ecc2f4f
- ConcurrentDictionary によるキャッシュ機構を Hashtable を利用した独自実装に置き換えました。→ 6a65b52
拡張地上子
- 【重要】 上位互換となる機能「独自マップ構文」の実装に伴い、新たにプラグインを開発される際、拡張地上子を使用するのは (非推奨 = Obsolete とまではいきませんが) あまりお勧めしません。
- 独自マップ構文機能では、拡張地上子にてサポートされる機能に加えて新しい機能が追加されている他、デバッグ性・読込速度も大幅に向上しています。
- 【重要】 「プラグインに紐づいた変数」機能を廃止しました。→ d4bfd23
- 今後複雑な機能を実装する場合は独自マップ構文機能を使用してください。
サンプル
- 【重要】 フォルダ構成を一新しました。→ 75548dc
- 今後の拡張を見据えたものです。
- 【重要】 車両を AtsEX 本体を呼び出すのみで一切の車両プラグインを読み込まない「空」、基本的な車両プラグインを含む「シンプル」の 2 種類に分割しました。→ 7ab1d20
- 【重要】 機能の充実に伴いシナリオが肥大化してきたため、系統別に分割しました。→ 80436e6
- 【重要】 名前空間を
Automatic9045.AtsEx.~からAtsEx.~に変更しました。→ 607f379 - 【重要】 先行列車を操作するサンプル、特定閉塞の信号現示を操作するサンプルを追加しました。→ 6ced3a1 / 52969e8 / 96ecdad
beta0.16.1 (v0.16.21018.2) からの主な更新内容
AtsEX 本体
- 【破壊的変更】 IHandle で、範囲外のノッチを設定しても既定では例外をスローしない仕様に変更しました。→ 8cc1f9c
- TASC プラグインなどで範囲外のノッチを設定する例がかなり多く、既存のプラグインと競合が発生するケースが非常に多かったためです。
- プラグインのコードは全て UI スレッドにて同期的に処理する仕様に戻しました。→ 953142d
- 非同期処理前提となると、プラグイン開発のハードルが大幅に上がってしまうためです。
- AtsEX 本体のアップデート情報を受信できない不具合を修正しました。→ 38a6f48
- 抑速ノッチのある車両が正しく読み込めない不具合を修正しました。→ 343f7d0
beta0.15.1 (v0.15.20828.1) からの主な更新内容
非常に多いため、特に影響の大きいもののみを掲載しています。 全ての変更の一覧は Comparing changes をご覧ください。
AtsEX 本体
- 【重要】 BVE 本体の型・メンバーを読み込む処理を刷新しました。→ e493475 / 3976cd8 / edd6c9b / 35261db / 151b80f / 9cf091c / 72021e3 / 12fe15b
- これにより、読込のパフォーマンスが大幅に向上しています。
- 【重要】 (クラスラッパー)ClassWrapperBase.CreateFromSource メソッドで、型ごとにキャッシュが効くようになりました。→ d63d238
- これにより、WrappedList などでクラスラッパーを列挙する際のパフォーマンスが大幅に向上しています。
- 【重要】 重い読込処理の多くを非同期化しました。→ d7757e6 / 9d6f535 / e2789e5
- 【重要】 リソースの読込など、AtsEX に依存しない機能を別のアセンブリ (DLL) に分離しました。→ 6f5a112 / 770cc8b / e6cf572 / be8ebd2 / a83d00f
- 【重要】 AtsEX Caller の互換性チェック機能を追加しました。→ 26bb1a4 / fb4e560 / fca6b89
- 現在のバージョンの AtsEX 本体を読み込めないバージョンの AtsEX Caller を自動で検出し、分かりやすいエラーメッセージでお知らせします。
- 【重要】 プラグインの互換性チェック機能を追加しました。→ 06e545a
- 現在のバージョンの AtsEX 本体とは互換性のないバージョン向けに開発された AtsEX プラグインを自動で検出し、分かりやすいエラーメッセージでお知らせします。
- 【重要】 SlimDXの特定バージョン指定を削除しました。→ bd1f0bd
- これにより、複数のユーザー様から報告を頂いていた「BVE 5.8 に限って、SlimDX 関連のエラーが出て AtsEX を読み込めない」不具合が解消された可能性があります。
- 【重要】 拡張地上子定義用の連続ストラクチャーの End 忘れを検出する機能を追加しました。→ 1d688dc
- 【破壊的変更】 プラグイン一覧系プロパティを SortedList<TKey, TValue> 型から Dictionary<TKey, TValue> 型に変更しました。→ 9cf091c / e7c3318...
beta0.17.2 - v0.17.21224.2
本バージョンは β 版です。頻繁に破壊的変更を行う可能性があるので、まだ本番環境での採用は推奨しません。
AtsEX についてはこちら→ AtsEX ATSプラグイン拡張キット - 岡オカ営業所
アップデートのポイント
※ beta0.15.x 〜 beta0.17.x における変更を基に記載しています。
- ユーザーに優しく
- 分かりやすいエラーメッセージ、ハマりやすいポイントには手厚い警告を
- パフォーマンスの向上
- キャッシュ機構の実装、高速な処理方法への再実装により、根本からの最大 100 倍もの高速化を実現しました。
- 読込もシナリオ実行も圧倒的に軽量化されています。
- これまでの処理方法では、AtsEX の読込に要する時間はシナリオの規模に比例していました。そのため、とある巨大なシナリオでは AtsEX の読込に1分以上要していましたが、この更新によって 20 秒程度へと 3 分の 1 以下に短縮されました。
- 見通しの良い構造に
- 大規模にアセンブリ (DLL) の分割、クラスの分割、名前空間の変更などを行いました。
- これによりプラグインが更に設計しやすくなりました。
beta0.17.1 (v0.17.21224.1) からの主な更新内容
AtsEX 本体
- アップデート情報ダイアログが表示され続ける問題を修正しました。→ ac42024
beta0.16.2 (v0.16.21022.1) からの主な更新内容
非常に多いため、特に影響の大きいもののみを掲載しています。 全ての変更の一覧は Comparing changes をご覧ください。
AtsEX 本体
- 【重要】 シナリオフォルダ内における配置位置を
Scenarios\Automaitc9045\AtsExからScenarios\AtsEx\(バージョン名)に変更しました。→ 4cede3b / 64e1875- 今後、複数バージョンの AtsEX をインストール・使用することができるようになる予定です。現時点では最新バージョンのものを自動的に選択する仕様となっています。
- 【重要】 拡張機能を開発できるようになりました。→ 872bf68 / 387a140 / b3a96a4 / 4699eb4 / 1d0ed08 / 22f1d64 / bf66089
- 拡張機能は、シナリオではなく AtsEX 本体に紐づけるプラグインです。汎用的な機能を提供するプラグインや、シナリオの演出には直接関わらない補助的なプラグインなどにお勧めです。
- 拡張機能のアセンブリ (DLL) は AtsEx フォルダ (AtsEX の本体を配置するフォルダ) の Extensions フォルダ内に配置する仕様です。
- 【重要】 マップに独自の構文を定義できるようになりました。→ 648ce60 / 79ebd83 / 85036b4 / 6c8d337 / 39499fb / 6cd4db7 / 4247712 / 24cec14 / 37b7abf / 37f3bdb / 4c4600b / 4bdfc47
- include ステートメントを使用して定数的宣言 (何らかのファイルのパス指定など) ができる「ヘッダー」、Repeater 系ステートメントを使用してマップ内の特定距離程に独自のオブジェクトを設置できる「ステートメント」の 2 種類の機能を提供します。
- これに伴い、従来の
<MPIUSING>、[[NOMPI]]はヘッダー機能を利用した実装に書き換えました。記述方法がそれぞれ<AtsEx::MapPluginUsing>、[[AtsEx::NOMPI]]へ変更となります。
- 【重要】 先行列車を操作するパッチ、信号現示を操作するパッチを追加しました。→ 9acef49 / e5890c1
- 【重要】 アップデート情報ダイアログがリッチになりました。→ 44dd1f1
- 最新版の情報が Markdown 形式でより詳細に、綺麗に表示されるようになりました。
- データ制作者様向けに、12 時間のあいだアップデート情報の表示を停止するオプションを追加しました。
- 【破壊的変更】 名前空間を
Automatic9045.AtsEx.~からAtsEx.~に変更しました。→ 8f5a5ea / 086cfeb / - 【破壊的変更】 プラグインのメインクラスのコンストラクタの内、定数的用法のものについては属性で指定する仕様に変更しました。→ 62bb828
- 【破壊的変更】 BveTypeSet、クラスラッパーを別アセンブリ「BveTypes.dll」に分離しました。→ 5e940b6 / ab15845
- 【破壊的変更】 本体に実装された補助的な機能群を、拡張機能として分離しました。→ 9d08ecf / a4f5ae9 / 5540abc / 19f56c4
- ContextMenuHacker、DiagramUpdater、TrainDrawPatch は「AtsEx.CoreExtensions.dll」に定義されています。
- 拡張地上子は「ExtendedBeacons.dll」に定義されています。
- DXDynamicTexture のラッパーは「DXDynamicTexture.dll」に定義されています。
- 【破壊的変更】 App から、シナリオに依存するメンバー、プラグインの一覧をそれぞれ別クラス
Native、PluginSetに分離しました。→ c20cd45 / 1f2ab45 / 57204d2 / e90d1c2 / a8bc9dc / - 【破壊的変更】 App の実体を PluginHost に移動しました。→ c9644de
- PluginHost 内のクラスを含む全てのクラスからシングルトンパターンによりインスタンスを取得できるようにするためです。
- 【破壊的変更】 一部 PluginHost 内に記述していた BveHacker の実装を AtsEx (コア) 内のみに統一しました。これに伴い AtsEx.PluginHost.BveHacker クラスは AtsEx.PluginHost.IBveHacker インターフェイスへ変更となっています。→ ba92311
- 【破壊的変更】 全てのプラグインにおいて、IDisposable の実装が必須となりました。→ 660d1ea
- 【破壊的変更】 TickResult 系クラスをミュータブルな仕様に変更し、コンストラクタはパラメータを持たない形になりました。→ b60ef6a
- 【破壊的変更】 BveHacker の読込に成功しても、Native.Handles (旧: App.Handles) は書き換えない仕様に変更しました。→ 8d6896d
- 一様でない動作は仕様を分かりづらくすると判断したためです。
- 【破壊的変更】 BveHacker.Handles の初期化時、Native.Handles (旧: App.Handles) の設定を引き継がない仕様に変更しました。→ 65fd3a4
- BVE5.8 から読み込めない不具合を修正しました。→ 13492fb
- パブリックでないクラスもプラグインのメインクラスとして認識されるようになりました。→ f2fc4c7
- スクリプティング系の処理を別アセンブリ「AtsEx.Scripting.dll」に分離しました。→ 9623538 / d74a8dc / c933655 / a9e27b6
- これに伴い、プラグインへ独自のスクリプティング機能を比較的簡単に実装できるようになりました。
- エラー発生時に具体的なメッセージが表示されない問題を改善しました。→ 8d5c9cf / 23f4b47 / 8b3803a / 3b56d90 / d1b3b3f
- その他、プラグインの仕様に影響しない内部実装の改善を多数行いました。
クラスラッパー
- MapObjectBase、MapObjectList、Section、SectionManager にメンバーを追加しました。→ 905ac0c / ac7bf63 / 29a959d
- ValueNode を追加しました。→ ddbeacb
パフォーマンス関連
- 一部 SortedList を使用している処理を Dictionary へ置き換えました。→ ecc2f4f
- ConcurrentDictionary によるキャッシュ機構を Hashtable を利用した独自実装に置き換えました。→ 6a65b52
拡張地上子
- 【重要】 上位互換となる機能「独自マップ構文」の実装に伴い、新たにプラグインを開発される際、拡張地上子を使用するのは (非推奨 = Obsolete とまではいきませんが) あまりお勧めしません。
- 独自マップ構文機能では、拡張地上子にてサポートされる機能に加えて新しい機能が追加されている他、デバッグ性・読込速度も大幅に向上しています。
- 【重要】 「プラグインに紐づいた変数」機能を廃止しました。→ d4bfd23
- 今後複雑な機能を実装する場合は独自マップ構文機能を使用してください。
サンプル
- 【重要】 フォルダ構成を一新しました。→ 75548dc
- 今後の拡張を見据えたものです。
- 【重要】 車両を AtsEX 本体を呼び出すのみで一切の車両プラグインを読み込まない「空」、基本的な車両プラグインを含む「シンプル」の 2 種類に分割しました。→ 7ab1d20
- 【重要】 機能の充実に伴いシナリオが肥大化してきたため、系統別に分割しました。→ 80436e6
- 【重要】 名前空間を
Automatic9045.AtsEx.~からAtsEx.~に変更しました。→ 607f379 - 【重要】 先行列車を操作するサンプル、特定閉塞の信号現示を操作するサンプルを追加しました。→ 6ced3a1 / 52969e8 / 96ecdad
beta0.16.1 (v0.16.21018.2) からの主な更新内容
AtsEX 本体
- 【破壊的変更】 IHandle で、範囲外のノッチを設定しても既定では例外をスローしない仕様に変更しました。→ 8cc1f9c
- TASC プラグインなどで範囲外のノッチを設定する例がかなり多く、既存のプラグインと競合が発生するケースが非常に多かったためです。
- プラグインのコードは全て UI スレッドにて同期的に処理する仕様に戻しました。→ 953142d
- 非同期処理前提となると、プラグイン開発のハードルが大幅に上がってしまうためです。
- AtsEX 本体のアップデート情報を受信できない不具合を修正しました。→ 38a6f48
- 抑速ノッチのある車両が正しく読み込めない不具合を修正しました。→ 343f7d0
beta0.15.1 (v0.15.20828.1) からの主な更新内容
非常に多いため、特に影響の大きいもののみを掲載しています。 全ての変更の一覧は Comparing changes をご覧ください。
AtsEX 本体
- 【重要】 BVE 本体の型・メンバーを読み込む処理を刷新しました。→ e493475 / 3976cd8 / edd6c9b / 35261db / 151b80f / 9cf091c / 72021e3 / 12fe15b
- これにより、読込のパフォーマンスが大幅に向上しています。
- 【重要】 (クラスラッパー)ClassWrapperBase.CreateFromSource メソッドで、型ごとにキャッシュが効くようになりました。→ d63d238
- これにより、WrappedList などでクラスラッパーを列挙する際のパフォーマンスが大幅に向上しています。
- 【重要】 重い読込処理の多くを非同期化しました。→ d7757e6 / 9d6f535 / e2789e5
- 【重要】 リソースの読込など、AtsEX に依存しない機能を別のアセンブリ (DLL) に分離しました。→ 6f5a112 / 770cc8b / e6cf572 / be8ebd2 / a83d00f
- 【重要】 AtsEX Caller の互換性チェック機能を追加しました。→ 26bb1a4 / fb4e560 / fca6b89
- 現在のバージョンの AtsEX 本体を読み込めないバージョンの AtsEX Caller を自動で検出し、分かりやすいエラーメッセージでお知らせします。
- 【重要】 プラグインの互換性チェック機能を追加しました。→ 06e545a
- 現在のバージョンの AtsEX 本体とは互換性のないバージョン向けに開発された AtsEX プラグインを自動で検出し、分かりやすいエラーメッセージでお知らせします。
- 【重要】 SlimDXの特定バージョン指定を削除しました。→ bd1f0bd
- これにより、複数のユーザー様から報告を頂いていた「BVE 5.8 に限って、SlimDX 関連のエラーが出て AtsEX を読み込めない」不具合が解消された可能性があります。
- 【重要】 拡張地上子定義用の連続ストラクチャーの End 忘れを検出する機能を追加しました。→ 1d688dc
- 【破壊的変更】 プラグイン一覧系プロパティを SortedList<TKey, TValue> 型から Dictionary<TKey, TValue> 型に変更しました。→ 9cf091c / e7c3318
- 【破壊的変更】 DiagramUpdater.Update メソッドのパラメータを変更しました。→ bbc9b6c
- 現状の仕様では BveHacker.ScenarioCreated イベントから使用しづらい設計だったためです。
- 【破壊的変更】 VehicleSpec、VehicleState クラスを Automatic9045.AtsEx.PluginHost.Native 名前空間に移動しました。→ 1e88a70
- 【破壊的変更】 GameState 列挙型を (クラスラッパー) TimeManager クラスの内...
beta0.17.1 - v0.17.21224.1
本バージョンは β 版です。頻繁に破壊的変更を行う可能性があるので、まだ本番環境での採用は推奨しません。
AtsEX についてはこちら→ AtsEX ATSプラグイン拡張キット - 岡オカ営業所
アップデートのポイント
※ beta0.15.x 〜 beta0.17.x における変更を基に記載しています。
- ユーザーに優しく
- 分かりやすいエラーメッセージ、ハマりやすいポイントには手厚い警告を
- パフォーマンスの向上
- キャッシュ機構の実装、高速な処理方法への再実装により、根本からの最大 100 倍もの高速化を実現しました。
- 読込もシナリオ実行も圧倒的に軽量化されています。
- これまでの処理方法では、AtsEX の読込に要する時間はシナリオの規模に比例していました。そのため、とある巨大なシナリオでは AtsEX の読込に1分以上要していましたが、この更新によって 20 秒程度へと 3 分の 1 以下に短縮されました。
- 見通しの良い構造に
- 大規模にアセンブリ (DLL) の分割、クラスの分割、名前空間の変更などを行いました。
- これによりプラグインが更に設計しやすくなりました。
beta0.16.2 (v0.16.21022.1) からの主な更新内容
非常に多いため、特に影響の大きいもののみを掲載しています。 全ての変更の一覧は Comparing changes をご覧ください。
AtsEX 本体
- 【重要】 シナリオフォルダ内における配置位置を
Scenarios\Automaitc9045\AtsExからScenarios\AtsEx\(バージョン名)に変更しました。→ 4cede3b / 64e1875- 今後、複数バージョンの AtsEX をインストール・使用することができるようになる予定です。現時点では最新バージョンのものを自動的に選択する仕様となっています。
- 【重要】 拡張機能を開発できるようになりました。→ 872bf68 / 387a140 / b3a96a4 / 4699eb4 / 1d0ed08 / 22f1d64 / bf66089
- 拡張機能は、シナリオではなく AtsEX 本体に紐づけるプラグインです。汎用的な機能を提供するプラグインや、シナリオの演出には直接関わらない補助的なプラグインなどにお勧めです。
- 拡張機能のアセンブリ (DLL) は AtsEx フォルダ (AtsEX の本体を配置するフォルダ) の Extensions フォルダ内に配置する仕様です。
- 【重要】 マップに独自の構文を定義できるようになりました。→ 648ce60 / 79ebd83 / 85036b4 / 6c8d337 / 39499fb / 6cd4db7 / 4247712 / 24cec14 / 37b7abf / 37f3bdb / 4c4600b / 4bdfc47
- include ステートメントを使用して定数的宣言 (何らかのファイルのパス指定など) ができる「ヘッダー」、Repeater 系ステートメントを使用してマップ内の特定距離程に独自のオブジェクトを設置できる「ステートメント」の 2 種類の機能を提供します。
- これに伴い、従来の
<MPIUSING>、[[NOMPI]]はヘッダー機能を利用した実装に書き換えました。記述方法がそれぞれ<AtsEx::MapPluginUsing>、[[AtsEx::NOMPI]]へ変更となります。
- 【重要】 先行列車を操作するパッチ、信号現示を操作するパッチを追加しました。→ 9acef49 / e5890c1
- 【重要】 アップデート情報ダイアログがリッチになりました。→ 44dd1f1
- 最新版の情報が Markdown 形式でより詳細に、綺麗に表示されるようになりました。
- データ制作者様向けに、12 時間のあいだアップデート情報の表示を停止するオプションを追加しました。
- 【破壊的変更】 名前空間を
Automatic9045.AtsEx.~からAtsEx.~に変更しました。→ 8f5a5ea / 086cfeb / - 【破壊的変更】 プラグインのメインクラスのコンストラクタの内、定数的用法のものについては属性で指定する仕様に変更しました。→ 62bb828
- 【破壊的変更】 BveTypeSet、クラスラッパーを別アセンブリ「BveTypes.dll」に分離しました。→ 5e940b6 / ab15845
- 【破壊的変更】 本体に実装された補助的な機能群を、拡張機能として分離しました。→ 9d08ecf / a4f5ae9 / 5540abc / 19f56c4
- ContextMenuHacker、DiagramUpdater、TrainDrawPatch は「AtsEx.CoreExtensions.dll」に定義されています。
- 拡張地上子は「ExtendedBeacons.dll」に定義されています。
- DXDynamicTexture のラッパーは「DXDynamicTexture.dll」に定義されています。
- 【破壊的変更】 App から、シナリオに依存するメンバー、プラグインの一覧をそれぞれ別クラス
Native、PluginSetに分離しました。→ c20cd45 / 1f2ab45 / 57204d2 / e90d1c2 / a8bc9dc / - 【破壊的変更】 App の実体を PluginHost に移動しました。→ c9644de
- PluginHost 内のクラスを含む全てのクラスからシングルトンパターンによりインスタンスを取得できるようにするためです。
- 【破壊的変更】 一部 PluginHost 内に記述していた BveHacker の実装を AtsEx (コア) 内のみに統一しました。これに伴い AtsEx.PluginHost.BveHacker クラスは AtsEx.PluginHost.IBveHacker インターフェイスへ変更となっています。→ ba92311
- 【破壊的変更】 全てのプラグインにおいて、IDisposable の実装が必須となりました。→ 660d1ea
- 【破壊的変更】 TickResult 系クラスをミュータブルな仕様に変更し、コンストラクタはパラメータを持たない形になりました。→ b60ef6a
- 【破壊的変更】 BveHacker の読込に成功しても、Native.Handles (旧: App.Handles) は書き換えない仕様に変更しました。→ 8d6896d
- 一様でない動作は仕様を分かりづらくすると判断したためです。
- 【破壊的変更】 BveHacker.Handles の初期化時、Native.Handles (旧: App.Handles) の設定を引き継がない仕様に変更しました。→ 65fd3a4
- BVE5.8 から読み込めない不具合を修正しました。→ 13492fb
- パブリックでないクラスもプラグインのメインクラスとして認識されるようになりました。→ f2fc4c7
- スクリプティング系の処理を別アセンブリ「AtsEx.Scripting.dll」に分離しました。→ 9623538 / d74a8dc / c933655 / a9e27b6
- これに伴い、プラグインへ独自のスクリプティング機能を比較的簡単に実装できるようになりました。
- エラー発生時に具体的なメッセージが表示されない問題を改善しました。→ 8d5c9cf / 23f4b47 / 8b3803a / 3b56d90 / d1b3b3f
- その他、プラグインの仕様に影響しない内部実装の改善を多数行いました。
クラスラッパー
- MapObjectBase、MapObjectList、Section、SectionManager にメンバーを追加しました。→ 905ac0c / ac7bf63 / 29a959d
- ValueNode を追加しました。→ ddbeacb
パフォーマンス関連
- 一部 SortedList を使用している処理を Dictionary へ置き換えました。→ ecc2f4f
- ConcurrentDictionary によるキャッシュ機構を Hashtable を利用した独自実装に置き換えました。→ 6a65b52
拡張地上子
- 【重要】 上位互換となる機能「独自マップ構文」の実装に伴い、新たにプラグインを開発される際、拡張地上子を使用するのは (非推奨 = Obsolete とまではいきませんが) あまりお勧めしません。
- 独自マップ構文機能では、拡張地上子にてサポートされる機能に加えて新しい機能が追加されている他、デバッグ性・読込速度も大幅に向上しています。
- 【重要】 「プラグインに紐づいた変数」機能を廃止しました。→ d4bfd23
- 今後複雑な機能を実装する場合は独自マップ構文機能を使用してください。
サンプル
- 【重要】 フォルダ構成を一新しました。→ 75548dc
- 今後の拡張を見据えたものです。
- 【重要】 車両を AtsEX 本体を呼び出すのみで一切の車両プラグインを読み込まない「空」、基本的な車両プラグインを含む「シンプル」の 2 種類に分割しました。→ 7ab1d20
- 【重要】 機能の充実に伴いシナリオが肥大化してきたため、系統別に分割しました。→ 80436e6
- 【重要】 名前空間を
Automatic9045.AtsEx.~からAtsEx.~に変更しました。→ 607f379 - 【重要】 先行列車を操作するサンプル、特定閉塞の信号現示を操作するサンプルを追加しました。→ 6ced3a1 / 52969e8 / 96ecdad
beta0.16.1 (v0.16.21018.2) からの主な更新内容
AtsEX 本体
- 【破壊的変更】 IHandle で、範囲外のノッチを設定しても既定では例外をスローしない仕様に変更しました。→ 8cc1f9c
- TASC プラグインなどで範囲外のノッチを設定する例がかなり多く、既存のプラグインと競合が発生するケースが非常に多かったためです。
- プラグインのコードは全て UI スレッドにて同期的に処理する仕様に戻しました。→ 953142d
- 非同期処理前提となると、プラグイン開発のハードルが大幅に上がってしまうためです。
- AtsEX 本体のアップデート情報を受信できない不具合を修正しました。→ 38a6f48
- 抑速ノッチのある車両が正しく読み込めない不具合を修正しました。→ 343f7d0
beta0.15.1 (v0.15.20828.1) からの主な更新内容
非常に多いため、特に影響の大きいもののみを掲載しています。 全ての変更の一覧は Comparing changes をご覧ください。
AtsEX 本体
- 【重要】 BVE 本体の型・メンバーを読み込む処理を刷新しました。→ e493475 / 3976cd8 / edd6c9b / 35261db / 151b80f / 9cf091c / 72021e3 / 12fe15b
- これにより、読込のパフォーマンスが大幅に向上しています。
- 【重要】 (クラスラッパー)ClassWrapperBase.CreateFromSource メソッドで、型ごとにキャッシュが効くようになりました。→ d63d238
- これにより、WrappedList などでクラスラッパーを列挙する際のパフォーマンスが大幅に向上しています。
- 【重要】 重い読込処理の多くを非同期化しました。→ d7757e6 / 9d6f535 / e2789e5
- 【重要】 リソースの読込など、AtsEX に依存しない機能を別のアセンブリ (DLL) に分離しました。→ 6f5a112 / 770cc8b / e6cf572 / be8ebd2 / a83d00f
- 【重要】 AtsEX Caller の互換性チェック機能を追加しました。→ 26bb1a4 / fb4e560 / fca6b89
- 現在のバージョンの AtsEX 本体を読み込めないバージョンの AtsEX Caller を自動で検出し、分かりやすいエラーメッセージでお知らせします。
- 【重要】 プラグインの互換性チェック機能を追加しました。→ 06e545a
- 現在のバージョンの AtsEX 本体とは互換性のないバージョン向けに開発された AtsEX プラグインを自動で検出し、分かりやすいエラーメッセージでお知らせします。
- 【重要】 SlimDXの特定バージョン指定を削除しました。→ bd1f0bd
- これにより、複数のユーザー様から報告を頂いていた「BVE 5.8 に限って、SlimDX 関連のエラーが出て AtsEX を読み込めない」不具合が解消された可能性があります。
- 【重要】 拡張地上子定義用の連続ストラクチャーの End 忘れを検出する機能を追加しました。→ 1d688dc
- 【破壊的変更】 プラグイン一覧系プロパティを SortedList<TKey, TValue> 型から Dictionary<TKey, TValue> 型に変更しました。→ 9cf091c / e7c3318
- 【破壊的変更】 DiagramUpdater.Update メソッドのパラメータを変更しました。→ bbc9b6c
- 現状の仕様では BveHacker.ScenarioCreated イベントから使用しづらい設計だったためです。
- 【破壊的変更】 VehicleSpec、VehicleState クラスを Automatic9045.AtsEx.PluginHost.Native 名前空間に移動しました。→ 1e88a70
- 【破壊的変更】 GameState 列挙型を (クラスラッパー) TimeManager クラスの内部に移動しました。→ 4fee373
- 【破壊的変更】 BrakePosition 列挙型をクラスラッパーとしました。→ 3772b5a...