Releases: automatic9045/BveEX
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...
beta0.16.2 - v0.16.21022.1
本バージョンは β 版です。頻繁に破壊的変更を行う可能性があるので、まだ本番環境での採用は推奨しません。
AtsEX についてはこちら→ AtsEX ATSプラグイン拡張キット - 岡オカ営業所
**重要なお知らせ**
次版にて過去最大規模の破壊的変更を実施する予定です。 このバージョン以前の AtsEX 向けに開発された全てのプラグインは、次版以降の AtsEX で動作させるためには修正が必要となります。
これから新しいプラグインを開発される際は、この点ご留意頂きますようお願い申し上げます。
次版で予定している破壊的変更
- 名前空間を変更します。
Automatic9045.AtsEx.~
→AtsEx.~
に変更となります。
- 右クリックメニューの編集機能、読込エラーのスロー機能、拡張地上子等を AtsEX 本体から分離します。
- etc...
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 由来の機能に依存しない機能は別アセンブリへ積極的に分離
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
- (クラスラッパー)ObjectPassedEventArgs クラス、PluginLoader クラス、ValueEventArgs クラスを追加しました。→ 28a676c
- (クラスラッパー)PistonArea を扱うための型・メンバーを追加しました。→ 430a569
- XML ドキュメントが更に充実しました。→ 101c30c / 5a348b0 / fc97e18 / 01320db / 242e42f
- 全アセンブリに AssemblyCompany を設定しました。→ c75cc14
- 一部エラー発生時のエラーメッセージが分かりやすくなりました。→ 015c477、 73df58d
- 非同期処理中に発生した例外 (AggregateException) でも詳細なメッセージが表示されるようになりました。→ befdb58
- VehicleState から現在時刻も取得できるようになりました。→ b987579
- リソースの過不足を自動で検出するようになりました。→ 6aeebb5 / 48a9be2 / 44a73f8
- AtsEX 本体の更新情報に任意のメッセージが表示できるようになりました。→ 3d5ff85
- 今後の更新では、この機能を利用して更新に当たっての注意点などをご案内する予定です。
- (クラスラッパー)ScenarioInfo.ScenarioFileLoadErrors プロパティが動作しない不具合を修正しました。→ 2d0aafb
- (クラスラッパー)MainForm.KeyProvider プロパティが動作しない不具合を修正しました。→ e95de94
- (クラスラッパー)Section が MapObjectBase を継承し忘れていた問題を修正しました。→ a0b9eb4
サンプル
- Excel の自動変換が動作しないよう、停車場キーを変更しました。→ 836b750
サンプルプラグイン一覧
車両プラグイン
- シンプルな ATS サンプル
- 状態取得・設定サンプル
マッププラグイン
- DXDynamicTexture 連携サンプル
- 駅リスト編集サンプル
- 他列車操作サンプル
- 他列車操作サンプル EX
- 走行抵抗係数編集サンプル
- 空の C# スクリプトプラグイン
- 空の IronPython プラグイン
ダウンロード
AtsEX本体+サンプルシナリオ
下のAssetsより「AtsEX_v0.16.21022.1.7z」をダウンロード・解凍し、シナリオフォルダに配置してください。
AtsEX本体に加えて、車両プラグイン・マッププラグインの動作を確認できるサンプルシナリオを同梱しています。
BVE5.8で正常に動作しない不具合を確認しています。BVE5.8向けにはβ0.15.1をご利用ください。
※BVE6では正常に動作します。
AtsEX SDK
サンプルプラグインのソースコードのセットです。
下のAssetsより「AtsEX_v0.16.21018.2_SDK.7z」をダウンロード・解凍してください(beta0.16.1 から変更はありません)。
ビルドには別途AtsEX本体のダウンロードが必要です。
解凍には7-zipなどの解凍ソフトが必要です。
beta0.16.1 - v0.16.21018.2
本バージョンは β 版です。頻繁に破壊的変更を行う可能性があるので、まだ本番環境での採用は推奨しません。
AtsEX についてはこちら→ AtsEX ATSプラグイン拡張キット - 岡オカ営業所
**重要なお知らせ**
次版にて過去最大規模の破壊的変更を実施する予定です。 このバージョン以前の AtsEX 向けに開発された全てのプラグインは、次版以降の AtsEX で動作させるためには修正が必要となります。
これから新しいプラグインを開発される際は、この点ご留意頂きますようお願い申し上げます。
次版で予定している破壊的変更
- 名前空間を変更します。
Automatic9045.AtsEx.~
→AtsEx.~
に変更となります。
- 右クリックメニューの編集機能、読込エラーのスロー機能、拡張地上子等を AtsEX 本体から分離します。
- etc...
beta0.15.1(v0.15.20828.1)からの主な更新内容
非常に多いため、特に影響の大きいもののみを掲載しています。 全ての変更の一覧は Comparing changes をご覧ください。
アップデートのポイント
- ユーザーに優しく - 分かりやすいエラーメッセージ、ハマりやすいポイントには手厚い警告を
- パフォーマンスの向上 - キャッシュ機構の実装で根本から高速化、それでも重い読込処理は非同期化し固まりづらく
- 見通しの良い構造に - AtsEX 由来の機能に依存しない機能は別アセンブリへ積極的に分離
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
- (クラスラッパー)ObjectPassedEventArgs クラス、PluginLoader クラス、ValueEventArgs クラスを追加しました。→ 28a676c
- (クラスラッパー)PistonArea を扱うための型・メンバーを追加しました。→ 430a569
- XML ドキュメントが更に充実しました。→ 101c30c / 5a348b0 / fc97e18 / 01320db / 242e42f
- 全アセンブリに AssemblyCompany を設定しました。→ c75cc14
- 一部エラー発生時のエラーメッセージが分かりやすくなりました。→ 015c477、 73df58d
- 非同期処理中に発生した例外 (AggregateException) でも詳細なメッセージが表示されるようになりました。→ befdb58
- VehicleState から現在時刻も取得できるようになりました。→ b987579
- リソースの過不足を自動で検出するようになりました。→ 6aeebb5 / 48a9be2 / 44a73f8
- AtsEX 本体の更新情報に任意のメッセージが表示できるようになりました。→ 3d5ff85
- 今後の更新では、この機能を利用して更新に当たっての注意点などをご案内する予定です。
- (クラスラッパー)ScenarioInfo.ScenarioFileLoadErrors プロパティが動作しない不具合を修正しました。→ 2d0aafb
- (クラスラッパー)MainForm.KeyProvider プロパティが動作しない不具合を修正しました。→ e95de94
- (クラスラッパー)Section が MapObjectBase を継承し忘れていた問題を修正しました。→ a0b9eb4
サンプル
- Excel の自動変換が動作しないよう、停車場キーを変更しました。→ 836b750
サンプルプラグイン一覧
車両プラグイン
- シンプルな ATS サンプル
- 状態取得・設定サンプル
マッププラグイン
- DXDynamicTexture 連携サンプル
- 駅リスト編集サンプル
- 他列車操作サンプル
- 他列車操作サンプル EX
- 走行抵抗係数編集サンプル
- 空の C# スクリプトプラグイン
- 空の IronPython プラグイン
ダウンロード
不具合により動作が不安定のため、非推奨です。特段の事情が無い限り新しいバージョンをご利用ください。
beta0.15.1 - v0.15.20828.1
本バージョンは β 版です。頻繁に破壊的変更を行う可能性があるので、まだ本番環境での採用は推奨しません。
AtsEX についての更に詳細な情報はこちら→ AtsEX ATSプラグイン拡張キット - 岡オカ営業所
beta0.15(v0.15.20819.1)からの主な更新内容
AtsEX 本体
- 【重要】 名前のない拡張地上子(名前に
AtsEx::Null
を指定)を複数個定義すると全て上書きされてしまう不具合を修正しました。→ 85b2592 - SlimDX.dll がプラグインや AtsEX 本体に同梱されている場合、検出するようになりました。→ d67096f
- AtsEX 本体が誤った SlimDX.dll を読み込んだことによるエラーの報告が多く寄せられているためです。
マッププラグイン:DXDynamicTexture 連携サンプル
- 新規追加です。→ 6d9f5f7
beta0.14(v0.14.20811.1)からの主な更新内容
AtsEX本体
- 【重要】 他列車のワールド変換行列、ビュー変換行列を編集できるようになりました。→ 44f2040
- 【重要】 DXDynamicTexture を AtsEX との連携機能を強化した上で埋め込みました。→ b1a6c23 / 41c179d
- Texture や Model から直接 TextureHandle を取得できます。
- 【重要】 拡張地上子の読込速度が大幅に向上しました。→ 36d3a28 / 4362941
- 同一内容の拡張地上子スクリプトはキャッシュされるようになりました。
- 連続ストラクチャーから拡張地上子構文を検索する処理も最適化しました。
- 【重要】 AtsEx.Core.dll を AtsEx.dll に統合しました。→ 397cd43 / bae6372 / a28ba13 / a84fb67
- 自動更新機能廃止により、2 つのアセンブリに分割する必要が無くなったためです。
- 【破壊的変更】 ストラクチャーキーの識別子の仕様を変更しました。→ bad4ea6
AtsEx.
始まりからAtsEx::
始まりになりました(例:AtsEx.ScriptLanguage.CSharpScript
→AtsEx::ScriptLanguage.CSharpScript
)。
- 【破壊的変更】 拡張地上子スクリプトが距離程順に実行されない不具合を修正しました。→ 995b7a2
- 拡張地上子スクリプトの実行順序が変わります。
- 【破壊的変更】 TrainDrawer.OriginalMemberSet クラスを削除しました。→ e84dee1
- BveTypeSet クラスと機能が重複していたためです。
- (クラスラッパー)
CarInfo
を追加しました。→ 9eaf341- 動力車、付随車それぞれの質量、両数、慣性係数、制輪子の想定摩擦係数(ShoeFriction) を取得・変更できるようになりました。
- Dynamics クラスから取得可能です。Dynamics は Scenario.Vehicle.Dynamics プロパティから取得可能です。
- (クラスラッパー)
Section
、SectionManager
を追加しました。→ 4fe519a- 各閉塞の位置、信号現示、定義されている信号現示インデックスの一覧、列車の在線状況を取得できるようになりました。
- SectionManager は Scenario クラスから、Section の一覧は Route クラス、SectionManager クラスから取得可能です。Route は Scenario.Route プロパティから取得可能です。
- (クラスラッパー)
DrawDistanceManager
を追加しました。→ ecf453a / 212e73a / 055ed96- マップファイル内での最長描画距離指定とユーザー設定の双方を加味した描画距離を取得できるようになりました。
- 前方、後方それぞれの描画距離を分けて取得できるようになりました。
- ユーザーが前方を向いているときと後方を向いているときで描画距離の設定が変動しています。
- (クラスラッパー)Route クラスに
GetTrackMatrix
メソッドを追加しました。→ 165e4b6- 3D モデルを軌道上の指定した距離程に設置するためのワールド変換行列を求めるメソッドです。
- その他、多数のクラスラッパーを追加しました。
- Harmony のパッチ処理をオブジェクト指向的に扱えるようにするクラス
ObjectiveHarmonyPatch
を追加しました。→ d2fe5e2
マッププラグイン:他列車操作サンプル
- 他列車が存在しないときのエラーを分かりやすくしました。→ 7a2776d
マッププラグイン:他列車操作サンプル EX
マッププラグイン:走行抵抗係数編集サンプル
- 以前の更新でバージョンを上げ忘れていたため、バージョンを 0.15.20819.1 としました。→ 74f1dea
近日実装予定
正式版リリースまでに実装するもの
- 従来のATSプラグインと同等の機能は少なくとも実装する
- 運転台パネル関係→ #13
- 電流、圧力関係
- デバッグ
編集できるようにするもの(クラスラッパー)
- サウンドの詳細を編集できるようにする
その他
- クラスラッパーの無意味な
sealed
/protected
を変更する
把握している不具合
ScenarioInfo.ScenarioFileLoadErrors
が実装ミスで動作しない
サンプルプラグイン一覧
車両プラグイン
- シンプルな ATS サンプル
- 状態取得・設定サンプル
マッププラグイン
- DXDynamicTexture連携サンプル
- 駅リスト編集サンプル
- 他列車操作サンプル
- 他列車操作サンプル EX
- 走行抵抗係数編集サンプル
- 空の C# スクリプトプラグイン
- 空の IronPython プラグイン
ダウンロード
AtsEX本体+サンプルシナリオ
下のAssetsより「AtsEX_v0.15.20828.1.7z」をダウンロード・解凍し、シナリオフォルダに配置してください。
AtsEX本体に加えて、車両プラグイン・マッププラグインの動作を確認できるサンプルシナリオを同梱しています。
AtsEX SDK
サンプルプラグインのソースコードのセットです。
下のAssetsより「AtsEX_v0.15.20828.1_SDK.7z」をダウンロード・解凍してください。
ビルドには別途AtsEX本体のダウンロードが必要です。
解凍には7-zipなどの解凍ソフトが必要です。
beta0.15 - v0.15.20819.1
本バージョンはβ版です。頻繁に破壊的変更を行う可能性があるので、まだ本番環境での採用は推奨しません。
AtsEXについての更に詳細な情報はこちら→ AtsEX ATSプラグイン拡張キット - 岡オカ営業所
beta0.14(v0.14.20811.1)からの主な更新内容
AtsEX本体
- 【重要】 他列車のワールド変換行列、ビュー変換行列を編集できるようになりました。→ 44f2040
- 【重要】 DXDynamicTexture を AtsEX との連携機能を強化した上で埋め込みました。→ b1a6c23 / 41c179d
- Texture や Model から直接 TextureHandle を取得できます。
- 【重要】 拡張地上子の読込速度が大幅に向上しました。→ 36d3a28 / 4362941
- 同一内容の拡張地上子スクリプトはキャッシュされるようになりました。
- 連続ストラクチャーから拡張地上子構文を検索する処理も最適化しました。
- 【重要】 AtsEx.Core.dll を AtsEx.dll に統合しました。→ 397cd43 / bae6372 / a28ba13 / a84fb67
- 自動更新機能廃止により、2 つのアセンブリに分割する必要が無くなったためです。
- 【破壊的変更】 ストラクチャーキーの識別子の仕様を変更しました。→ bad4ea6
AtsEx.
始まりからAtsEx::
始まりになりました(例:AtsEx.ScriptLanguage.CSharpScript
→AtsEx::ScriptLanguage.CSharpScript
)。
- 【破壊的変更】 拡張地上子スクリプトが距離程順に実行されない不具合を修正しました。→ 995b7a2
- 拡張地上子スクリプトの実行順序が変わります。
- 【破壊的変更】 TrainDrawer.OriginalMemberSet クラスを削除しました。→ e84dee1
- BveTypeSet クラスと機能が重複していたためです。
- (クラスラッパー)
CarInfo
を追加しました。→ 9eaf341- 動力車、付随車それぞれの質量、両数、慣性係数、制輪子の想定摩擦係数(ShoeFriction) を取得・変更できるようになりました。
- Dynamics クラスから取得可能です。Dynamics は Scenario.Vehicle.Dynamics プロパティから取得可能です。
- (クラスラッパー)
Section
、SectionManager
を追加しました。→ 4fe519a- 各閉塞の位置、信号現示、定義されている信号現示インデックスの一覧、列車の在線状況を取得できるようになりました。
- SectionManager は Scenario クラスから、Section の一覧は Route クラス、SectionManager クラスから取得可能です。Route は Scenario.Route プロパティから取得可能です。
- (クラスラッパー)
DrawDistanceManager
を追加しました。→ ecf453a / 212e73a / 055ed96- マップファイル内での最長描画距離指定とユーザー設定の双方を加味した描画距離を取得できるようになりました。
- 前方、後方それぞれの描画距離を分けて取得できるようになりました。
- ユーザーが前方を向いているときと後方を向いているときで描画距離の設定が変動しています。
- (クラスラッパー)Route クラスに
GetTrackMatrix
メソッドを追加しました。→ 165e4b6- 3D モデルを軌道上の指定した距離程に設置するためのワールド変換行列を求めるメソッドです。
- その他、多数のクラスラッパーを追加しました。
- Harmony のパッチ処理をオブジェクト指向的に扱えるようにするクラス
ObjectiveHarmonyPatch
を追加しました。→ d2fe5e2
マッププラグイン:他列車操作サンプル
- 他列車が存在しないときのエラーを分かりやすくしました。→ 7a2776d
マッププラグイン:他列車操作サンプル EX
マッププラグイン:走行抵抗係数編集サンプル
- 以前の更新でバージョンを上げ忘れていたため、バージョンを 0.15.20819.1 としました。→ 74f1dea
近日実装予定
正式版リリースまでに実装するもの
- もう少しできることを充実させる(余裕があれば)
- 従来のATSプラグインと同等の機能は少なくとも実装する
- 運転台パネル関係→ #13
- 電流、圧力関係
- デバッグ
編集できるようにするもの(クラスラッパー)
- サウンドの詳細を編集できるようにする
- 車両のパラメータ類
その他
- クラスラッパーの無意味な
sealed
/protected
を変更する
把握している不具合
ScenarioInfo.ScenarioFileLoadErrors
が実装ミスで動作しない
サンプルプラグイン一覧
車両プラグイン
- シンプルな ATS サンプル
- 状態取得・設定サンプル
マッププラグイン
- 駅リスト編集サンプル
- 他列車操作サンプル
- 他列車操作サンプル EX
- 走行抵抗係数編集サンプル
- 空の C# スクリプトプラグイン
- 空の IronPython プラグイン
ダウンロード
AtsEX本体+サンプルシナリオ
下のAssetsより「AtsEX_v0.15.20819.1.7z」をダウンロード・解凍し、シナリオフォルダに配置してください。
AtsEX本体に加えて、車両プラグイン・マッププラグインの動作を確認できるサンプルシナリオを同梱しています。
AtsEX SDK
サンプルプラグインのソースコードのセットです。
下のAssetsより「AtsEX_v0.15.20819.1_SDK.7z」をダウンロード・解凍してください。
ビルドには別途AtsEX本体のダウンロードが必要です。
解凍には7-zipなどの解凍ソフトが必要です。
beta0.14 - v0.14.20811.1
本バージョンはβ版です。頻繁に破壊的変更を行う可能性があるので、まだ本番環境での採用は推奨しません。
AtsEXについての更に詳細な情報はこちら→ AtsEX ATSプラグイン拡張キット - 岡オカ営業所
beta0.13(v0.13.20806.1)からの主な更新内容
AtsEX本体
- 【重要】 AtsEx.dllが所定のディレクトリに配置されておらず、AtsEX本体が車両・マップに組み込まれていると思われる場合、警告が表示されるようになりました。→ 7a4a840
- AtsEX本体を最新のバージョンに維持するため、車両・マップ毎に組み込むことは推奨されません。 AtsEX ATSプラグイン版をご利用の場合は1つのシナリオフォルダに1つのみ配置してください。正しい配置先は警告に記載されています。
- 【破壊的変更】 将来的な拡張性を確保するため、プラグインのTickメソッドの戻り値の仕様を変更しました。→ 3bdf5cf
- 戻り値がHandleCommandSetからTickResultに変更となりました。HandleCommandSetはTickResultのメンバーです。
- 【破壊的変更】 IBveHackerを抽象クラスBveHackerに変更しました。→ f420d5e
- 【破壊的変更】 IExtendedBeaconSetインターフェイスをExtendedBeaconSet抽象クラスに変更しました。→ e65d140
- 【破壊的変更】 IAppのVehiclePluginsプロパティ、MapPluginsプロパティをPluginsプロパティに統合しました。→ f63b272
- PluginType列挙型をベースにしたプラグインの管理をしやすくするためです。
- 【破壊的変更】 IApp.AtsExAssemblyプロパティをAtsExCoreAssemblyに改名しました。→ 8ade400
- 実際にはAtsEx.Coreが設定されており、名前と値が一致していなかったためです。
- 【破壊的変更】 DiagramUpdaterをヘルパーからBveHackerの拡張メソッドに変更しました。→ 1e3d6dc
- 【破壊的変更】 LoadErrorManagerをヘルパーからBveHackerのメンバーに変更しました。→ e525a70
- 【破壊的変更】 PassedEventArgsのScriptVariableをVariableに改名しました。→ 69c9eb4
- プラグインに紐づける変数の追加を見据えて、紛らわしくならないようにするためです。
- 負の距離程に設置した拡張地上子は、シナリオ読込直後に実行されるようになりました。→ 41643e8
- 拡張地上子からプラグインに紐づけた変数を作成できるようになりました。→ 5e7b393
- 使用法、従来の「拡張地上子に紐づいた変数」との違いなどは拡張地上子スクリプトのサンプルに記載されています。
- C#スクリプトのコンパイルエラーの詳細がBVEの読込中ダイアログに出力されるようになりました。→ 1ae74c6
- IAppからAtsEx.dllのAssemblyを取得できるようになりました。→ a069098
- IronPythonのスクリプトで戻り値を返せない不具合を修正しました。→ 3f605bd
- 変数
__return__
に代入された値が戻り値として認識されます。
- 変数
- その他、軽微な不具合の修正、コードの改善等を行いました。
車両プラグイン:シンプルな ATS サンプル
- 上記の変更に伴いコードを書き換えました。
車両プラグイン:状態取得・設定サンプル
- 上記の変更に伴いコードを書き換えました。
マッププラグイン:駅リスト編集サンプル
- 上記の変更に伴いコードを書き換えました。
マッププラグイン:他列車操作サンプル
- 上記の変更に伴いコードを書き換えました。
マッププラグイン:走行抵抗係数編集サンプル
- 上記の変更に伴いコードを書き換えました。
マッププラグイン:空の C# スクリプトプラグイン
- 上記の変更に伴いコードを書き換えました。
マッププラグイン:空の IronPython プラグイン
- 上記の変更に伴いコードを書き換えました。
近日実装予定
正式版リリースまでに実装するもの
- もう少しできることを充実させる(余裕があれば)
- 従来のATSプラグインと同等の機能は少なくとも実装する
- 運転台パネル関係→ #13
- 電流、圧力関係
- デバッグ
編集できるようにするもの(クラスラッパー)
- サウンドの詳細を編集できるようにする
- 車両のパラメータ類
その他
- クラスラッパーの無意味な
sealed
/protected
を変更する - クラスラッパーの
MemberInfo
を子クラスに移動する
把握している不具合
ScenarioInfo.ScenarioFileLoadErrors
が実装ミスで動作しない
サンプルプラグイン一覧
車両プラグイン
- シンプルな ATS サンプル
- 状態取得・設定サンプル
マッププラグイン
- 駅リスト編集サンプル
- 他列車操作サンプル
- 走行抵抗係数編集サンプル
- 空の C# スクリプトプラグイン
- 空の IronPython プラグイン
ダウンロード
AtsEX本体+サンプルシナリオ
下のAssetsより「AtsEX_v0.14.20811.1.7z」をダウンロード・解凍し、シナリオフォルダに配置してください。
AtsEX本体に加えて、車両プラグイン・マッププラグインの動作を確認できるサンプルシナリオを同梱しています。
AtsEX SDK
サンプルプラグインのソースコードのセットです。
下のAssetsより「AtsEX_v0.14.20811.1_SDK.7z」をダウンロード・解凍してください。
ビルドには別途AtsEX本体のダウンロードが必要です。
解凍には7-zipなどの解凍ソフトが必要です。