2024年2月20日火曜日

路線の「各駅待機状況表示」の改良について考える #その4

 フォーラムに新たに報告されたバグに対応したり
色々平行作業したり躓いたりあったけど、とりあえず進捗状況(´・ω・`)

本当はExtendedに提出しないでおこうと思っていた機能を、ある程度は提出することにした。
理由は
(1) Extended バージョン15.0のために、UIコードの特にテーブル関係で綺麗にデザインできるようになんとか書き換えたくて、そうすると色んな部分で競合発生しまくるので面倒。
しばらくぶりにSimutransのUIを見ると古臭ささと見にくさが非常に気になったのと、Ex15と私家版との差で14.0には実装されてない変更点がかなり多く、これがコードの競合の原因になっている。
例えば編成詳細、車庫画面、工場系ダイアログ。
Simutrans GLでのUIの機能拡張が進んでて、それをExtendedへの取り込めるなら取り込みたいとか難しい問題も出てきている。

(2) ひめしに(先輩方の忠言を無視して)コードをOTRP/MTICBの実験台にされ、スパゲティ化されて、プロジェクトのメンテもバグ修正も大変な状態にされたExtendedがあまりに可哀そうで不憫すぎる。
バグ修正投稿したら普通にすぐに対応されたのでそういう気持ちがより強くなった。

(3) 休止してる数か月とここ最近の海外の人達からの応援メッセージに励まされた


なのでこれらの変更点は、Extendedに組み込まれる
というか結構な進捗があって既にいくつか組み込まれました。


  1. 貨物をクラス別に分ける表示オプションを追加
  2. 表示待機数をその路線を待っている貨物だけに絞り込む
この2つは既に1年半くらい前に私家版のほうでほぼ同様の機能が実装されていたのを
忘れていたみたい(´・ω・`)
そこから必要な関数を引っ張ってきて、あとはUIにオプション追加ですぐに実装完了。

2. はかなり有用なオプションで、私家版はむしろこれに固定されてたのを忘れた(´・ω・`)
Ex15対応が忙しくなったタイミングだったみたい

例えば、これまではどの路線のデータからこの情報にアクセスしても
(a)「大阪駅で電車を待っている乗客は何人ですか?」というのを表示していた。
つまりあるカテゴリのその駅の待機量全部を拾っている。
実際にその路線に乗るかは関係ない。
それを(b)「大阪駅で"新快速"を待っている乗客は何人ですか?」というもうちょっと便利に使える値を拾うオプションが追加された。

しかし新快速は東西を往復しているので、2回大阪駅を通り、東へ向かう客と西へ向かう客が居る。
同じ路線でもどっち向きに走っている編成に乗りたいかが異なる。
(c)「大阪駅で(上り/下り)方面の"新快速"を待っている乗客は何人ですか?」
これを区別できて満点(´・ω・`)
とは言え、現状が(a)なのだから、それが(b)にアップデートされるだけでも
前進していることは間違いないよね。


このあたりの改良はまだまだ続くよ(´・ω・`)

2024年2月4日日曜日

路線の「各駅待機状況表示」の改良について考える #その3

じゃあ機能拡張をやっていこうかしら(´・ω・`)


思いついている改良案

  1. 貨物をクラス別に分ける表示オプションを追加
  2. 表示待機数をその路線を待っている貨物だけに絞り込む
  3. その路線の駅間に何編成が移動中かのリアルタイム表示を追加する
これ以外でちょっと微妙かなと思っているアイデアが、
待機量に応じた横棒を表示して待機量の多さを見た目で補完できるようなもの。
路線の最大積み込み可能量を100%にすると編成が多すぎるとバーが全体的に短くなるし
駅の最大容量の場合でも駅によって容量も違えば、
貨物は各カテゴリで共用だし、クラス含めても同じカテゴリ内に複数の貨物種類があるので
どのようにバーを表示させるか、というところでいい実装案がない(´・ω・`)

それとこの表示の既存の問題として同じ駅を何度も経由する場合に
同じ駅が何度も表示されてリストが混乱している、という問題があるのだけど
上記3の機能を実装するなら、この問題は相反する。
加えて乗客の行きたい方向によっても区別される必要もあると思っている。
シミュトランス(≠ジムトランス)のコード知識から言えば、路線絞り込みは間違いなくできるのだけど
同じ駅で路線内の運行の向きを考慮して待機数を出すのは、ちょっと手間がかかりすぎるかもしれない。


とりま、この3つは上から簡単そうな順に並べたので、
次回以降それを掘り下げていきますか。  (´・ω・`)つづく

路線の「各駅待機状況表示」の改良について考える #その2

 前回の続きで進捗状況...


弄っているとバグが見つかって、表示がオーバーラップする場合があった。

どうしてこういうことが起こるかというと、
例えば「0」という表示が「旅客 10」という表示になると表示サイズが変化するわけで
その際に(エクセルで言うところの)セルの最小サイズがちゃんと切り替わっていなくて、
表全体の最小サイズも正しく処理されない
みたいな感じで、こういうところも考えながら、正しくプログラム組んでいかないといけないし
そういうバグが見つかったら、正しく書き直さなければならないわけ(´・ω・`)




とりあえず何が原因か手探りで色々弄って
結局、ほぼほぼコード書き直すことに(´・ω・`)
直っただけ良かった。
ついでだから枠組デザインに変わってちょびっと見やすくなったと思う。

アプデを繰り返していくゲームでは、日々のメンテナンスが重要なんす(´・ω・`)

そういうのを全部丸投げして、
『バグが見つかっても自分じゃなおしません(だって取り込んだ人の責任でしょ)
ってスタンスなのがひめしというクズ日本人。しかも小さなバグどころのレベルではない。
奴らの尻拭いにらんらんや海外のコーダー達がこれまで一体何十時間費やしたか。
それでも問題はほとんど除去されていない。
もちろんらんらんだってじぇーむ寿司や他の人たちに一杯助けてもらっているけど、
シムトラ学会などというイベント開いてそこで堂々とコードメンテナンスを海外の人らに丸投げ宣言して、有言実行してるのがひめしという奴。まさに反面教師の鑑。

しかもそのクズ行為を参加者に薦めている・・・。
シムトラ学会とやらは、
やってはいけないことを拡散する勉強会なの?(´・ω・`)

そういう自分が起こした問題の責任を一切取る気が無いニンゲンは、
他人様のプロジェクトにパッチなんか提出するな、と教えるべき(´・ω・`)

今後そこらへんの事実を分かりやすくまとめていくので。
それがらんらんに与えられた役目(´・ω・`)

とにかく機能を拡張する前段階で、コードの修正をしたよ(´・ω・`)
次はこれをどう味付けしていくか考えよう。 つづく

2024年2月2日金曜日

路線の「各駅待機状況表示」の改良について考える #その1

いつもはパッチが完成してから、フォーラムに投稿するという工程を踏んでいたけど、
今回はアイデアを練って実装作業を進めるところからやっていく。

Simutrans Extendedでは路線一覧にStandardには無いタブが追加されてて
そこから路線管理に便利な情報にアクセスできる。

その中でこの「待機状況」タブは、
路線の各駅にどれだけ乗客や貨物が溜まっているかを一目でチェックできる。

これはらんらんが以前に追加したものだけど、正直詳細を忘れてしまっている(´・ω・`)
まぁたくさんUI改変したものね。
久しぶりに見てみると便利ではあるけど正直イマイチで、
(最近力を入れているテーブル表示形式がいいとかそういう話ではなくて)
明らかに表示機能や内容的にまだまだ改善の余地がある(´・ω・`)

Extended ver15が進むかどうか分からないけど、
それについてはじぇーむ寿司次第なので今はそっち側はあまりやれることがないし、
今の段階でExpert(仮)向けの追加機能を作っても、Ex15の進捗があった場合にまた競合の解消に苦しむことになるので、影響の少ないUIの改良を進めることにする。

だって久しぶりにUIを見たら本当にSimutransのUIは古臭いというか、
特に枠線だのテーブルだの背景だのがあまり無くてので、
テキストが浮いたように配置されてることが多くて
一般的なUIと比べて全体的に情報の見やすさに対する工夫がされていないと感じる(´・ω・`)

その一例がこの各駅待機状況表示なのだけど、まだヘッダとメインデータの間に線が引いてあるだけでもSimutransの中ではマシな部類(´・ω・`)
もっと言えば駅番号貨物の種類を表すの色の箱が配置されてるだけでもかなりグラフィカルになっている部類...

とにかくSimutransは昔からウィンドウの見やすさが酷い。
ほんまにゴミレベル(´・ω・`)
「フォントのサイズ」とか「文字の太さ」とか「斜字」とか
そういう根本的な部分を弄るのは現実的ではなく無理なので、
できることをやっていくしかないのだけど。

そりゃあ前世紀から続いていて、その開発も非常にゆっくりだから仕方ない。
世界的に見ても超ドマイナーなので貢献者も少ない。


とにかく今回はこの「各駅待機状況表示」を改造できるかどうか分からないけど
(Ex15の作業と並行して)進めてみようと思う。 つづく


追記
このUIテストしてたら文字が重なって表示される場合がある等、現状でも色々問題があることが判明(´・ω・`)
ほんとバグ報告してくれる人ってレアよね...(´・ω・`)

2024年1月31日水曜日

Simutrans Extended ver15のスケジュールUIを弄る


ひめしやふぃすたむと、ひめしの影響を受けた日本人達に自分の趣味プロジェクトを荒らされて、
らんらんまでやりかけで退場したら、じぇーむ寿司があまりにも気の毒すぎ(´・ω・`)

なので、色々実装してみたいアイデアが溜まっていたところだったのだけど、中断して
やりかけのEx15のUIの作業を進めてみる。

ネロデンというExtended開発に大きく携わってた人が2023年に色々機能追加をやってたみたいで、その影響でビルドが通らなくなってるので修正(´・ω・`)

マスターで大丈夫なのにex15ブランチではコンパイル失敗する理由がよくわからない。
明らかにオーバーライドのエラーなのに(´・ω・`)


作業中の新スケジュールUI。



デバッグモード?でUI上の各コンポーネントの枠線が表示される。
これを参考にしつつUIのパーツを並べたり組み替えたりしていく。

スケジュールUIのデザインもこんな感じに一新されるので、やっぱりver15はちゃんと実装されて欲しい(´・ω・`)

あのゴミ日本人どもが足引っ張らなければと思うと怒りがこみあげてくる(´・ω・`)
1年間完全に停滞したし、将来のstandardからの組み込みや将来渡るコードの保守、都市回りの機能追加、道路回りの機能追加、こういった部分に甚大なダメージを与えた。
それでもらんらんは奴らの尻拭いに何十時間も費やしたし、もちろん他のコーダーも。
それでもまだ甚大な被害が残ってる。(´・ω・`)はあまじ

シムトラ学会だのアドベントカレンダーだのやっておいて、その成果がこの惨状よ?
そういう連中が本国(日本)では偉そうにしてるの見たら腹が立って当然でしょ?

2024年1月29日月曜日

Simutrans Extendedで路線の輸送断面表示UIを作る #その1

Simutrans Expert(仮)向けの改造案件


以前からアイデア自体はあったのだけど、とりまバグ修正の提出も終わったので
コーディングのリハビリ兼ねて、新しい統計表示を追加してみる。

輸送断面?っていうの?駅間輸送密度表示を追加してみよう。
なんちゃら線が赤字で廃線の危機、とかいう話題になるとこういう特定区間の輸送密度だのって話はでてくるからね。



昨日の記事で書いたみたいに、結局これも別のUIを参考にして、あれができるならこれもできるんじゃないのっていう着想。
部品をバラしてそれを集めて再構成し、別のUIを作りあげる。パクりの集大成。

コーディング初心者はこの手法でどんどん小さなパッチを作って、
コードに触れて理解を深めて着実にステップアップしていくのが大事。

具体的にはシミュトランスではスケジュール管理ウィンドウや編成ウィンドウにある「運転時分履歴」タブで駅間の移動時間を計測できるから、じゃあ輸送量も同じように計測できるよねっていう理屈。

正直「運転時分履歴」って、明らかに異常な遅延や迂回が発生しているかどうかの探知に使える程度で、らんらん的にあんまし要らない機能だったんだけど、今回は大変役に立ちました。ありがとう(´・ω・`)


輸送密度っていうのは

https://www.jrhokkaido.co.jp/corporate/region/pdf/koumoku/01_01.pdf

こういう統計で、路線の各駅間でどれくらい利用されているのかっていう統計データ。

路線全体の輸送密度なら、シミュトランス側は以前のらんらんのパッチで計測するようになりました。路線の総輸送キロ営業キロで割るだけだからね。

各駅間の輸送密度は路線を運営・管理していくにはめっちゃ重要な統計なんだけど、残念ながらこんな有用な統計がジムトランスにもシミュトランスにもない!!!

これがないと路線が全体赤字なら人が一杯乗ってる区間も含めて全区間が廃止されちゃうかも?

はっきし言って、

輸送ゲーなのにこの統計がないって、
このげえむ作ったのは
馬と鹿のハーフ
なんですかね?(´・ω・`)はぁまじくそげ


路線の末端だけガラガラなんてことはよくあるし、そういうデータをプレイヤーがはっきり見れるに越したことないよね。むしろこれが見れない理由がない。プログラマーの手抜き!


冗談よ(´・ω・`)

駅間のデータを全部記録してたらセーブデータがどれくらい大きくなるか、ちょっと分からないんだよね。らんらんは計算苦手なので。

でも「運転時分履歴」で各駅間で計測時間を3回分保存してるくらいだから大丈夫よねっていう、これもほぼ他UIのパクりコピーだからいけるよね理論。


計測で記録がちゃんとできていれば、記録したデータを使える形にして見やすく表示してやればいい。


制作進捗...



(´・ω・`)おほーっ!!

なんと、各路線で各貨物カテゴリ各運賃クラス、分けて記録されます。
駅も路線も編成も統計(チャート)はクラス毎に分けて記録されないのに、
らんらん製駅間輸送密度計測ではグリーン車各駅間利用率までしっかり確認できちゃう優れもの!!

路線輸送密度と平均混雑(利用)率は駅間のデータを用いてちゃんと計測する必要があります。
混雑(利用)率を計測する場合に、
A駅 ─ 99km ─ B駅 ─ 1km  C駅
こういう路線があったとする。

AB間の乗車率が100%BC間の乗車率が5%だった場合。
AB間の乗車率が5%BC間の乗車率が100%だった場合。

距離を考慮しないで考えた場合①と②は同じ混雑(利用)率に見えてしまう。
これに距離を掛け合わせることでこの路線がどれくらいの割合で埋まっているか、というのが分かるわけ。
特定の区間だけ混んでるというのも明確に。
ちなみに駅間混雑率が100%超えるとバーが紫色になるよ。

Extendedプレイヤーならすぐ分かるだろうけど、バーとかは全部他のUIでも使ってるもの。
つまり全て既存のものの組み合わせ。

あとはこの統計データのセーブデータへの読み書き処理と、画面の更新フラグと更新処理を実装するだけです。
意外とあっさり完成しそうなのだけど?(´・ω・`)

本当になんでこれが無かったの。
そして今までやらなかったの(´・ω・`)はあまじはあ
(´・ω・`)優先度?


果たしてこの機能は完成するのか?

つづく(´・ω・`)

おまけ
今回スクショにあるダークテーマは2/1まで公開

2024年1月28日日曜日

UI改修:テーブル表示にするだけの変更

 Before



After










以前に自分で作った関数に置き換えるだけなので5分でできる修正。

これだけの変更でもずいぶん見やすさが変わるよね。


プログラム改造のヒント:

「何ができるか」を知っていると簡単な改造案件が見つかりやすい。

「何ができるか」は『あれこれを組み合わせれば』ってコードを見ずとも予想できる場合が多いよ。

ExtendedのUIではこの手のテーブル式表示を増やしているので、ここやここもこのタイプにできそうだよね。という具合に。


余談:

ちなみにヘッダーとテーブル以外に枠を表示する機能が今のところないし、左ボーダーだけ表示とか個別に設定とかも無理なので、区切りの縦線が欲しいところだけど諦めた(´・ω・`)

基本的にStandardのコードを改変してるだけだし。

左側に縦線表示はできそうと思ったけど、現状のコードだと子コンポーネントから親コンポーネントのサイズが分からないので(テーブルサイズが固定ではなく、ダイアログサイズに合わせて変化する仕様なので)、縦の長さを適切に設定ができないと思う。

はっきし言ってSimutransのUIは各列でアラインメントが取れてなくて、見にくい部分が多いウインドウが多いウンチUI(´・ω・`)
編成一覧(スケジュール一覧)とかね。
あれは仕様頻度高いのでなんとかしたいね(´・ω・`)


路線の「各駅待機状況表示」の改良について考える #その4

 フォーラムに新たに報告されたバグに対応したり 色々平行作業したり躓いたりあったけど、とりあえず進捗状況(´・ω・`) 本当はExtendedに提出しないでおこうと思っていた機能を、ある程度は提出することにした。 理由は (1) Extended バージョン15.0のために、UI...