やっつけ都市計画 〜 ちょっとした本体改造編
こちら、↓ こちらへの投稿を目論んでの記事になります。
=======================================================
[口上]
フリーの交通?シミュレーション
Simutrans(http://japanese.simutrans.com)が, 素晴らしい.
それでもって私は人工地盤っぽいことをやっています。
Simutransで人工地盤してみる - shingoushori's dialy
大規模な都市開発をさっさとやるべく、Pythonでセーブデータをいじっています
=======================================================
[要旨]
みなさん、乱開発、捗っていますか!
思い思いの高架、快適に作れていますか?
Pythonでセーブデータをいじっても、
時々刻々と発展していくマップにちょこちょこと手を加えたい衝動には、抗えませんよね。
そう、私もついに、本体を改造しないと、解決できない不満に行き着いてしまったのです。
本体改造のハードルが高かった私は、安直に Pythonによるセーブデータいじり に勤しんでいました。
(こちらにまとめました → やっつけ都市計画 〜 Pythonによるセーブデータいじり編 - shingoushori's dialy)
その成果によるセーブデータの特異性により、本体改造の必要性が高まってしまったのです。
本稿では、私が2017年にやってきた、
ちょっとした本体改造についてまとめます。
=======================================================
各アイデアごとにコミットしています。
サンプルのシンプルな動画をYouTubeにあげてまして、
主のコミットには、そのアドレスを貼り付けてあります。
↓ それでは、個別に紹介していきます ↓
=======================================================
・高架にするとマーカーがガシガシ上にズレていくように見える件
についての応急処置
ソースコード改造でやりたかったこと その1 がなんとなくできたっぽい 1枚目:オリジナル 2枚目:改造 高架にするとマーカーがガシガシ上にズレていくように見えるので、イライラしていたのです... #Simutrans pic.twitter.com/Jg88ttjfyR
— shingoushori (@shingoushori) 2017年10月10日
セーブデータいじりで、
マーカーを追加したり、文字列を置き換えたり、オーナーを変更したりは、最早できるのです。
しかし、そのマーカーの表示位置は、GUIによるものです。
標高が高くなるにつれて差が激しくなります。
セーブデータいじりによって、天空にバス停を設置しまくったがためのイライラでした。
↓ 特定のプレイヤーだけにしたり、外したりする系 ↓
スクリプトで追加し放題だからといって、極端なプレイヤーを作ってしまいますと、邪魔です。
仕方がないので、そのプレイヤーだけ外したりでもするモードを追加しました。
・表示するマーカーを、アクティブなプレイヤーのものだけに絞ってみた
本体改造の実験 ... 表示するマーカーを、アクティブなプレイヤーのものだけに絞ってみた #Simutrans pic.twitter.com/CawrKUtCvn
— shingoushori (@shingoushori) 2017年10月11日
・アクティブなプレイヤー以外の 売上ポップアップ を消してみた
こんな感じで
— shingoushori (@shingoushori) 2017年10月12日
アクティブなプレイヤー以外の 売上ポップアップ を消してみましたhttps://t.co/EgKMNOlMn1 #Simutrans
・路線図に、特定のPlayerだけを非表示にできるようにしてみた <お気に入り!>
路線図に、特定のPlayerだけを非表示にできるようにしてみた 試しにAI Playerをたくさん走らせてみた https://t.co/eTBVbCgy3d #Simutrans
— shingoushori (@shingoushori) 2017年11月3日
・待機状態, 駅名/都市名含むコメントをアクティブプレイヤーのものだけに表示を絞れるようにしてみた <お気に入り!>
・道路/線路の削除を 接続解除と削除の二つに分けてみた <!おすすめ!>
道路/線路の削除を 接続解除と削除の二つに分けてみた https://t.co/XDPTEuT76w #Simutrans
— shingoushori (@shingoushori) 2017年10月14日
正直、全然ウケなくてしょんぼりしています ...
Pythonでセーブデータいじるのが酷すぎたのかな ...
せっかく積み上げた高架を調整する時とか、
バス停をなんとか配置しないといけないとか、
削除だと行き過ぎで、もう一度作り直すのが苦しいことって、私には結構あります
だから、これが動いた時は本当に嬉しかったです
・マーカーを使って 信号の接続方向を調整できるようにしてみた <!うけた!>
オフセットも併用すると、ちょっと複雑なものも作れます。
当初、マップ回転に非対応でした。遅れて対応した時のがこちら ↓
マーカーを使って 信号の接続方向を調整できるようにしてみた改造、
— shingoushori (@shingoushori) 2017年11月8日
マップの回転に対応させてみましたhttps://t.co/REQJTvG5ODhttps://t.co/DbLpM0d7fS
ざっくりした方法なので、ちょっと心配ではありますが #Simutrans
↓ ひめしさんの記事で取り上げていただけてます。恐縮です。↓
himeshi.hateblo.jp
・早送りを、とても早送りにする改造 <お気に入り!>
早送りを、とても早送りにする改造してみました x2, /2 で効かせて直ぐ限界値に持っていけます しかも早送りモードもx2, /2 さくさく月日が飛んで行って楽しい https://t.co/jih721uEQo #Simutrans
— shingoushori (@shingoushori) 2017年10月28日
標準の早送りだけだと、不自由じゃないでしょうか?
早送りじゃない方については、実は調整できます。
しかし、試してみたら微調整程度の利き方でしょんぼりしました。
そこで、人間の感覚は対数的なので、x2, /2 で効かせるのがいいだろう!と思い立ったわけです。
・ハイトカット表示モードに新モード 'L' を追加してみた <お気に入り!>
ハイトカット表示モードに新モード 'L' を追加してみた https://t.co/pSuFhThUN9で設定したレベルを表示できる https://t.co/3DwfqzNEnl #Simutrans
— shingoushori (@shingoushori) 2017年11月5日
天空にバス停を配置しまくった結果、地上がさっぱり見えづらくなってしまいました。
仕方がないので、ハイトカット表示モードにしっぱなしにするようになったのです。
しかし、レベルの設定が使いにくいと思いました。カーソル位置で設定されても ...
ということで、プリセットできるようにしてみました。
・駅を作った時に、
ちょっと離れたところにある駅にも接続して作れるようにしてみた <!おすすめ!>
https://t.co/q7BY5tjKaT AI Playerが好き勝手作る時に,StationCoverage{範囲内|範囲x2内}にある駅に接続して作れるようにできた 期待したより混沌が解消されてない... #Simutrans
— shingoushori (@shingoushori) 2017年11月15日
ちょっと離れたところに作るために、わざわざ一時的に作り、壊す...
そのために、間にある建物や木を破壊せざるを得ない...
AI Playerが近いところに作りすぎてカオス...
これらを解決するには、やはり本体改造です。
苦戦したのが AI Player です。どうも、別プロセス?になるんでしょうか。
このため、本体で適当に追加した変数の変更を AI Player で読み取らせるために、
なにやら怪しい実装をやったような覚えがあります。
さらに、実際に AI Player に使わせたところ、間抜けなことが起きました。
近接した産業間の輸送用の路線が作られた時、同一バス停を結ぶ路線となり、
さっぱり運転されない!そして、そのまま破産してしまいました ...
・AI Player を眺めていたら、そのうちにセーブデータが読み込めなくなった件
についての応急処置
sqai の persistent とかいうのが、大きくなりすぎたらしい
— shingoushori (@shingoushori) 2017年12月12日
試しに xml データの CDATA の中身を空にしたところ、読み込めはした
だから本体改造し、文字数が2048を超えた時は、中身が空であるとしてスルーさせるようにしてみた persistentってなんだろう
skip "loadsave_t::rdwr_str() string too long" · shingoushori/simutrans@de85c83 · GitHub
AI Player だけじゃない、何か別のところの問題も直せるような気がしないでもないです。
そういうケースが他に見つかっていません。
他のセーブデータのロードでのエラーも拾っていきたいところです。
=======================================================
[我流 バスの追い越し拡張 現況 ...]
本当は、ひめしさんのOTRPatchのマージ → 自リポジトリでの細々とした保持を狙っていました。
が、GitHubの機能がよくわからなかったので、挫折しています。
とりあえず、回り道として我流でちょっと追い越し条件の緩和をやってみています。
我流 バスの追い越し拡張 現況 ... https://t.co/6vxS2dxb1r #Simutrans
— shingoushori (@shingoushori) 2017年12月14日
[追い越し条件の拡張骨子]
— shingoushori (@shingoushori) 2017年12月10日
(1) 追い越し終了地点に他のバスがいる場合、そのバスの先を終了地点にできないか検討させる
(2) 交差点があった場合、その1マス前の接続が1方向のみ(=進入禁止看板がある のつもり)の場合、交差点を終了地点とする
あー、これは難しい。実は、追い越しが必要になるプレイを全くしていませんでした。
だから、新しいプレイスタイルを模索し、新しいマップを用意するところからやっています。
新しいマップが形になってくると嬉しいですね!
しかも、新しいマップの方が一応たくましくなっている分、楽しいんだと思う、
うん、しょうがない。
=======================================================
[さて]
どうでしょう、本体改造。
どれもちょっとした改造ですが、結構便利そうじゃないでしょうか。
まだまだ改造のしどころがありそうじゃないでしょうか、Simutrans。
ちょっとした改造に抑えるためには、色々と諦める必要はあります。
ボタンで操作したい!
→ 処理本体で苦戦した後で、GUIでもう1ラウンド苦戦したくない ... であるとか。
そこは柔軟に、やりやすい方法をソースコードと相談してもいいと思います。
印象的だったのが、マーカーの便利さです。
不格好ですが、うまく表示を制御することも含めて考えるのも、面白いのではないでしょうか。
ドイツ語混じりで意味が取りづらく苦戦したり、
なにより私はテキストエディタ ( macでmiを用いています )で無理やりやっているので、
頭を抱えることも多いです、正直。GitHubもよくわかりません、正直!
とはいえ、まあ、なんとかできています。動くと楽しいですよ!
動かなくても、変な表示も楽しいですよ! 異常終了も、うん、まぁ、荒ぶれる!
皆さんも是非改造してください!
期待しています。
ありがとうございました。