Skip to content

beta0.17.7 - v0.17.30127.1

Pre-release
Pre-release
Compare
Choose a tag to compare
@automatic9045 automatic9045 released this 27 Jan 12:56
· 573 commits to main since this release

本バージョンは β 版です。頻繁に破壊的変更を行う可能性があるので、まだ本番環境での採用は推奨しません。

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 を追加しました。→ 3515fd4
    • AtsEx.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等を複数使用できない不具合が改善されています。

クラスラッパー

  • 電空協調制御関連のクラス・メンバーを追加しました。→ aa2c853
  • 地上子関連のクラス・メンバーを追加しました。→ 66c6429

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 から、シナリオに依存するメンバー、プラグインの一覧をそれぞれ別クラス NativePluginSet に分離しました。→ 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
  • (クラスラッパー)ObjectPassedEventArgs クラス、PluginLoader クラス、ValueEventArgs クラスを追加しました。→ 28a676c
  • (クラスラッパー)PistonArea を扱うための型・メンバーを追加しました。→ 430a569
  • XML ドキュメントが更に充実しました。→ 101c30c / 5a348b0 / fc97e18 / 01320db / 242e42f
  • 全アセンブリに AssemblyCompany を設定しました。→ c75cc14
  • 一部エラー発生時のエラーメッセージが分かりやすくなりました。→ 015c47773df58d
  • 非同期処理中に発生した例外 (AggregateException) でも詳細なメッセージが表示されるようになりました。→ befdb58
  • VehicleState から現在時刻も取得できるようになりました。→ b987579
  • リソースの過不足を自動で検出するようになりました。→ 6aeebb5 / 48a9be2 / 44a73f8
  • AtsEX 本体の更新情報に任意のメッセージが表示できるようになりました。→ 3d5ff85
    • 今後の更新では、この機能を利用して更新に当たっての注意点などをご案内する予定です。
  • (クラスラッパー)ScenarioInfo.ScenarioFileLoadErrors プロパティが動作しない不具合を修正しました。→ 2d0aafb
  • (クラスラッパー)MainForm.KeyProvider プロパティが動作しない不具合を修正しました。→ e95de94
  • (クラスラッパー)Section が MapObjectBase を継承し忘れていた問題を修正しました。→ a0b9eb4

サンプル

  • Excel の自動変換が動作しないよう、停車場キーを変更しました。→ 836b750

同梱プラグイン一覧

拡張機能

  • AtsEX コア拡張機能
    • ContextMenuHacker
      • メインフォームの右クリックメニューを編集するための機能を提供します。
    • DiagramUpdater
      • 時刻表、ダイヤグラムなどの行路に関わるオブジェクトの更新機能を提供します。
    • PreTrainPatch
      • 先行列車の走行位置を自由に変更できるようにするパッチを提供します。
    • SignalPatch
      • 閉塞の信号現示を自由に変更できるようにするパッチを提供します。
    • StructureModelFinder
      • ストラクチャーの 3D モデルを簡単に検索するための機能を提供します。
    • TrainDrawPatch
      • 他列車を自由に移動・回転できるようにするパッチを提供します。
  • DXDynamicTexture
    • 拡張地上子

車両プラグイン

  • シンプルな ATS サンプル
  • 状態取得・設定サンプル

マッププラグイン

  • DXDynamicTexture 連携サンプル
  • 先行列車操作サンプル
  • 信号現示操作サンプル
  • 駅リスト編集サンプル
  • 他列車操作サンプル
  • 他列車操作サンプル EX
  • 走行抵抗係数編集サンプル
  • 空の C# スクリプトプラグイン
  • 空の IronPython プラグイン

ダウンロード

AtsEX 本体+サンプルシナリオ

下の Assets より「AtsEX_v0.17.30127.1.7z」をダウンロード・解凍し、シナリオフォルダに配置してください。
AtsEX 本体に加えて、車両プラグイン・マッププラグインの動作を確認できるサンプルシナリオを同梱しています。

AtsEX SDK

サンプルプラグインのソースコードのセットです。

下の Assets より「AtsEX_v0.17.30127.1_SDK.7z」をダウンロード・解凍してください。
ビルドには別途 AtsEX 本体のダウンロードが必要です。

解凍には 7-zip などの解凍ソフトが必要です。