Simutrans 2018年の取り組み - セーブデータいじりWebアプリ 編
本記事は、Simutrans Advent Calendar 2018 〜 12/13 セーブデータいじり1.9 です
Simutrans っていう、最高なフリーでオープンソースな交通シミュレーション
それについての、2018年の私のたぶん独自な取り組みについて書きます
Part 2 として、セーブデータいじり1.9 ... セーブデータいじりWebアプリです
なぜ 2.0 ではなく 1.9 かというと ... 致命的に残念だからです
[bzip2.jsがあればいいのに ...]
Simutrans のセーブデータには、私が知る限り 6タイプあります
引用 : Simutransポータル日本語版 -> 設定ファイル/simuconf.tab - Simutrans日本語化・解説
zipped ... zip圧縮保存
bzip2 ... bzip2圧縮保存。zipよりもファイルサイズが小さくなるため、ネットワークゲームに適しています。ただし圧縮解凍はzipよりも若干遅くなります。(102.2.2以降)
binary ... 圧縮せずに保存
xml ... xmlで保存(101.0以降)
xml_zipped ... xmlでzip圧縮して保存(101.0以降)
xml_bzip2 ... xmlでbzip2圧縮して保存(102.2.2以降)
内訳としては、2タイプ x 3タイプ となるわけですな
で、私が作れているセーブデータいじりWebアプリでは、非圧縮xml のみです
これがどれくらい残念なのか調べてみました ...
Simutrans やってる方に質問です
— shingoushori (@shingoushori) August 21, 2018
セーブデータの圧縮形式はなに使ってます?
投票の数が足らないので、私がツール作りやすそうなやつ優先でまとめました
あれ、肝心のアンケートが見れない?!
ちなみに、乱開発の神 128な人 (@128Na) | Twitter 様は bzip2 だそうです ...
なぜ bzip2 ではできず、xml だけなのか
一番の間違いは、はてなブログの記事としてコンテンツを作ろうとしていること です
はてなブログの記事として書いているので、HTML5 + JavaScript でやっています
JavaScript で Webアプリ用のライブラリの公開は、最近は Node.js をはじめとした
サーバーサイド?なるものが流行っています
それだと、はてなブログの記事で呼び出せない事が多いのです 呼び出せるものもありますが
で、一番の泣き所なのが、bzip2 に圧縮できるライブラリで、呼び出せるものが見当たりません
なんてこった ...
ちなみに、問題は解凍圧縮だけでもありません
困ったことに、xmlとバイナリで変数の桁数が違うとか、スペーサーと思しき空データが違うとか
非圧縮と圧縮とでなんか違うとか、どうせバージョンで違うとか
わざわざ本体からJavaScriptに移植してメンテしようとすること自体が、間違っているだろう!
... と、思います、はい ...
とはいえ、セーブデータのタイプさえ変えてしまえばいいわけで
それはずっとである必要は全くないのです
セーブデータいじりしたい時だけでも、手軽にタイプを変換できるように ...
それはJavaScriptでフォローする必要もなく、それこそ本体改造でやれば良いのです
そのうちやります
---
以下、これまでに作ってみたやつを列挙します。
情報取得編
---
編集編
---
大規模に開発するとなると、次のような整理をやりたくなります
Simutrans は、大規模開発に耐えられるUIが間に合っていないですよね
バスプレイに必要なのは忍耐力とネーミングセンス…まだまだ修行中#simutrans pic.twitter.com/8Ch0u2L5WZ
— ウィルソン (@wilson_simu) December 12, 2018
そういうのをやるのに、本体改造でやるのが ... まぁ ... 主流だと思いますが、
私にはどうにも冗長に思えるのです UIを追加する本体改造は ...
なので、簡単に作れて、簡単に提供できて、簡単に使えて、簡単に遺したい ...
セーブデータいじり2.0 を目指して、今後も細々と続けていきます
Simutransのセーブデータ (非圧縮xml のみ) を読み込み->書き出し ~ 全駅公共駅化
[趣旨]
Simutransのセーブデータ弄りであるとか、もちろん信号処理のなにやらづくりに向けて、デスクトップからファイルをドラッグする処理 〜 を準備します。
今回は、Simutransのセーブデータ (非圧縮xml のみ) をパースしてエディットして、また書き出しです。
駅のリストを取得してみます。
ついでに、全駅を公共駅にしちゃいます。
↓ Simutransのセーブデータ (非圧縮xml のみ) をドラッグアンドドロップすると、「ダウンロード」と書かれたリンクが追加されます。"output.sve"としてダウンロードできるはず。開発環境は、macのchrome。
[参考文献]
クライアントサイドJavaScriptでXML文書のDOMをパースする
HTML非表示・使用不可メモ(Hishidama's disabled/visibility/display Memo)
Simutransのセーブデータ (非圧縮xml のみ) のマップサイズを取得してみた
[趣旨]
Simutransのセーブデータ弄りであるとか、もちろん信号処理のなにやらづくりに向けて、デスクトップからファイルをドラッグする処理 〜 を準備します。
今回は、Simutransのセーブデータ (非圧縮xml のみ) からマップサイズを取得してみました。
'einstellungen_t' っていうのの、0番目と13番目がそれっぽいです。
'einstellungen' は、ドイツ語で'設定'らしいです。 それっぽいですね。
しかし、n番目っていうあたりが不安。セーブデータのバージョンによって変わりそうですね。
↓ ドラッグアンドドロップされたSimutransのセーブデータの、 version と pak と マップサイズを表示します。
なぜ version と pak も表示するかと言えば ...
↓ この記事からの拡張だからです 1つずつできることを積み上げていきます
[参考文献]
クライアントサイドJavaScriptでXML文書のDOMをパースする
HTML非表示・使用不可メモ(Hishidama's disabled/visibility/display Memo)
memo : SilentVoice: Unnoticeable Voice Input by Ingressive Speech
2018年10月ごろの話題 のメモ
SilentVoice: Unnoticeable Voice Input by Ingressive Speech
〜 息を吸いながら発話 小さい音量での発話でも音声認識できる
https://www.microsoft.com/en-us/research/uploads/prod/2018/10/UIST2018_SilentVoice_cameraready.pdf
日本語の紹介記事
音声認識のために発話方法までも発想するとは、清々しい!
Simutrans 2018年の取り組み - Squirrel AI Player 編
本記事は、Simutrans Advent Calendar 2018 〜 12/6 リス です
Simutrans っていう、最高なフリーでオープンソースな交通シミュレーション
それについての、2018年の私のたぶん独自な取り組みについて書きます
Part 1 として、リス!
[ リス?!]
Simutrans には、なんと AI Player がついています。しかも2種類も。
そのうちの1種類は、Squirrel なる謎の言語で自作できるらしいです。
Squirrel は英語で リス だそうです。
そう、つまりこの記事の趣旨は、「Squirrel AI Player を作り始めてみた」 です。
Squirrel は ... なんか ... そう ... プログラミング言語です。
ボーカロイドのスクリプトの Lua のお友達みたいです。
よくわからないけど、なんとなくニュアンスで?
C言語も覚束ないのに、必要に応じてC++やJavaScriptやPythonもいじる〜
のノリでできます。できました。・ワ・
ご安心ください。作らなくても、Simutrans に同封されています。
[使ってみる]
ここをこうして
こんな画面が出てくるので、選べば出来上がりです。
私はちょっと作ってみたので色々ありますが、本体についてくるのは "sqai" だけです。
新規マップで走らせてみると、
こんな感じで産業施設に群がった路線をいきなり作ります。
割と高確率でそのまま破産します。
乗車率100%になるまで動かないバスで詰まるバス停を幹線道路に作りまくります。
挙げ句の果てに、破産時に道路が接収されたついでに元からある幹線道路の交差部分を巻き込み削除させます。AI、まじでやばい。シンギュラリティ感じる。
そういえば、このブログ内では ↓ こんな記事をすでに書いていました。
乗車率100%になるまで動かないバス路線を作らせているのは、AI のスクリプトな訳です。だから、そういう設定を弄ってしまえばいいんです。
運行頻度が上がるので、もちろん倒産します。
[リファレンス]
英語です。ぶっちゃけわかりにくい。なんか足りないような気がします。
Simutrans-Squirrel-API: Main Page
そしておそらく Simutrans の GUIでできる全ての操作が API 化されていないのでは?
その辺り、AI Playerでできることも増やしていきたいところ。
[余談]
Simutrans本体についているAI Playerだと、"AI 旅客" がオススメです。
こんな感じで、いい感じに各街にバス網を作りつつ、隣町に順々に伸ばしていきます。
そして ... 倒産していますね ... なんてこった。
[いざ、自作]
... (GitHub の使い方に悩んだりしているため、省略) ...
とりあえず、こんな感じで すぐには破産しないバス網を作る AI Playerが組めてます
↓ ちなみに、AI Player 自作の経過を YouTube のプレイリストにまとめてます
[Simutrans] expr : Squirrel AI Player - YouTube
[余談]
マップ最初期のバス路線網の今のところのオススメは次のようなものです
AI Player で検討して赤字で倒産させまくって到達した現在の見解です
・できるだけ直線コースになる既設道路を使った経路 かつ できるだけ遠いところ
を選んで路線を組む
・乗り換え需要に期待し、隣り合う街を遠い街で乗り換えさせる
・それなりに新車が出ても遅くてペネルティが課せられにくいスペックのバスを選ぶ
[まとめ]
Simutrans の AI Player は、すぐ倒産してかわいい。
[余興]
@ #SimutransAdventCalendar2018 にエントリーされた皆さま
— ひめし @冬コミ二日目東T06b (@himeshi_hob) December 1, 2018
今思いついた突発企画、「アドオンをリクエストしようキャンペーン」を開催します!アドベントカレンダーの記事の中に「今自分が欲しいアドオン」を書いてみましょう!
えーっと ... リス! ... 井の頭自然文化園 の リスの小径 です。
市内建築の公園、博物館、文化施設、謎施設 ... 税金の無駄遣い ... 曰く付き物件 ...
が増えるといいですね。街が大きくなった時の駅名候補も増えるので。
なんと、ストリートビューがありました。
memo : DKA法
代数方程式の解を、
"Aberthの初期値を用い,DK式を反復計算することで, 個の根を得る方法をDKA(Durand-Kerner-Aberth)法と呼ぶ.(引用 : DKA法 - PukiWiki for PBCG Lab)"
複素数を考慮するのがポイント
エクセルで操る!デュラン・ケルナー・アバース法(DKA法)による高次代数方程式の解計算
https://www.jstage.jst.go.jp/article/sicetr1965/34/6/34_6_607/_pdf/-char/ja
"midiglue" - Programmable MIDI/CV Controller & Effects Unit
"midiglue" - Programmable MIDI/CV Controller & Effects Unit
... のバッカー?になりました
midi信号をプログラマブルでエフェクターしちゃうもの?です
デモではアルペジエイターです 発想しないとですね
ところでMIDI規格は、なんとこれから大幅アップデートが行われるらしいです
RA: ニュース: MIDIの”大幅アップデート”に向け、Ableton、Native InstrumentsらがMIDI規格団体に加入
となると、このようにMIDIを応用しようという道具の登場が嬉しい
個人的趣味としては、
右上のエフェクターが BOSS FZ-3 っぽいところにグッときました
BOSSのFuzzだとFZ-5のみが現行商品 つまみの数はFZ-3と同じなものの、左下の COSM のロゴがあります この画像だとそれがないので、FZ-3じゃないかな!
↓ ここのページの画像が比較しやすいと思う
BOSSのファズ3種 | さすらいのギター日記
なんか好きなんですよ FZ-3 が