Simutransのセーブデータ (非圧縮xml のみ) の路線情報を編集してみた ~ 路線番号を各社ごとの数字に振り直し
[趣旨]
Simutransのセーブデータ弄りであるとか、もちろん信号処理のなにやらづくりに向けて、デスクトップからファイルをドラッグする処理 〜 を準備します。
今回は、Simutransのセーブデータ (非圧縮xml のみ) をパースしてエディットして、また書き出しです。
路線情報を悪戯してみます。路線番号を各社ごとの数字に振り直します。
Simutrans本体にて新規路線を作ると、全社跨いで通しの数字が振られているようです。
そんな数字を、各社ごとでの通しの数字に置き換えます。[路線編集]ウィンドウで見た時に、ちょっと気持ちいい。
↓ Simutransのセーブデータ (非圧縮xml のみ) をドラッグアンドドロップすると、「ダウンロード」と書かれたリンクが追加されます。"output.sve"としてダウンロードできるはず。開発環境は、macのchrome。
本記事は、やっていることの整理のための脱線です。元々検討していた内容が泥沼にハマり、ディスプレイ上で燻り続けているわけです。
それは、xml形式のセーブデータ弄りではなく、binary形式、binaryのbzip2圧縮した形式のセーブデータの読み込み/書き出しでした。これが全然できない上に、どうも泥臭く元々のソースコードを丸々JavaScriptに移植する羽目になりそうでした。
そのサイズともなると、はてなブログの記事に書くのが怖くなりました。GitHubの出番でしょう。
そんなわけで、できる範囲の中で価値がありそうなネタを捻り上げてみたのでした。
なお、苦労。
xml の "CDATA" っていうのが、xmlでも特殊でパーサーがパースしてくれない!!
というわけで、以下のような置き換えを行なっています。
[読み込み時]
var xml = e.target.result;
// CDATA対策
xml = xml.replace(/<!\[CDATA\[/g,'')
xml = xml.replace(/\]\]>/g,' ')
// XMLのDOMをパースする
var parser = new DOMParser();
var dom = parser.parseFromString(xml, 'text/xml');
[書き出し時]
var xmlString = serializer.serializeToString(dom);
xmlString = xmlString.replace("><", ">\n<");
// CDATA対策
xmlString = xmlString.replace(//g,'<!\[CDATA\[')
xmlString = xmlString.replace(/<\/CDATA>/g,'\]\]>')
xmlString = xmlString.replace(/<CDATA\/>/g,'<!\[CDATA\[\]\]>')
[参考文献]
クライアントサイドJavaScriptでXML文書のDOMをパースする
HTML非表示・使用不可メモ(Hishidama's disabled/visibility/display Memo)
Simutransのセーブデータ (非圧縮xml のみ) を読み込み->書き出し ~ 「年代設定」をOFF
[趣旨]
Simutransのセーブデータ弄りであるとか、もちろん信号処理のなにやらづくりに向けて、デスクトップからファイルをドラッグする処理 〜 を準備します。
今回は、Simutransのセーブデータ (非圧縮xml のみ) をパースしてエディットして、また書き出しです。
ちょっとしたエディットとして、「年代設定」をOFFにします。
↓ Simutransのセーブデータ (非圧縮xml のみ) をドラッグアンドドロップすると、「ダウンロード」と書かれたリンクが追加されます。"output.sve"としてダウンロードできるはず。開発環境は、macのchrome。
「年代設定」をOFFにする。これが一連のxml弄りonはてなブログの発端です。
ゆるぼ 年代設定オンで始めたマップを年代設定オフにする方法 #Simutrans
— Hyper@ゆかりさんと実況プレイ (@HyperSimu) August 21, 2018
ただし、非圧縮xmlでだけできるようなツールでは微妙。
アンケートを募ったところ、全然使われていないっぽい。
Simutrans やってる方に質問です
— shingoushori (@shingoushori) August 21, 2018
セーブデータの圧縮形式はなに使ってます?
投票の数が足らないので、私がツール作りやすそうなやつ優先でまとめました
サーブデータ弄り本編には関係ないxmlをいじる準備は、まだまだ続きます。
なお、苦労。
xml の "><" の間にちゃんと改行がないと、 Simutrans 読んでくれない!!
というわけで、以下のような置き換えを行なっています。
var xmlString = serializer.serializeToString(dom);
// !!! this is the essential, 'cause Simutrans's xml-parser is pretty neat !!!
xmlString = xmlString.replace("><", ">\n<");
[参考文献]
クライアントサイドJavaScriptでXML文書のDOMをパースする
HTML非表示・使用不可メモ(Hishidama's disabled/visibility/display Memo)
Simutransのセーブデータ (非圧縮xml のみ) のversionとpakを取得してみた
[趣旨]
Simutransのセーブデータ弄りであるとか、もちろん信号処理のなにやらづくりに向けて、デスクトップからファイルをドラッグする処理 〜 を準備します。
今回は、Simutransのセーブデータ (非圧縮xml のみ) をパースし始めてみました。
パースといっても、一番上の階層のAttributeだけです、まずは。
↓ ドラッグアンドドロップされたSimutransのセーブデータの、 version と pak を表示します。
[参考文献]
デスクトップからファイルをドラッグする処理を、はてなブログに直接書いてみるテスト
Simutransのセーブデータ弄りであるとか、もちろん信号処理のなにやらづくりに向けて、デスクトップからファイルをドラッグする処理 〜 を準備します。
↑ こちらのページのソースをコピペしてみました ...
ドラッグアンドドロップされたファイルの、 name と type と size と lastModifiedDate を表示するサンプルであるようです
↓ 動きました はてなブログ 万歳!
memo : Google、歌詞->旋律の機械学習を特許出願
機械学習するにあたり、「うわぁ」な記事がきました。
aidiary on Twitter: "グーグル、歌詞に合わせてメロディを自動作曲する機械学習システム--公開特許に https://t.co/Cl1oDVzNxT"
[公開特許]
特許申請された内容が公開された。まだ特許として認められてはいない。
特許になるにあたり、この内容より増えることはない。
... おそらく記事は日本での特許制度についてのものだと思いますが。
この手の「うわぁ」な話題としては、WaveNetがありました。
wavenetの特許とのことらしい / Processing sequences using convolutional neural networks https://t.co/BwAWfutTQg
— mat (@ballforest) April 18, 2018
月刊パテントなる論文誌があるんですね。日本弁理士会だそうで。
「CiNii 論文 - ディープラーニングと著作物 (特集 次世代知財システム)」
https://system.jpaa.or.jp/patent/viewPdf/2741
Simutrans OTRP を元に改造するリポジトリの作り方 備忘録
素敵な交通シミュレーション Simutrans !!
Simutrans - Transport Simulator ~ FrontPage - Simutrans日本語化・解説
の...日本発の素晴らしい本体改造 OTRP ... を元に改造するリポジトリの作り方 です
GitHub - teamhimeh/simutrans at OTRP
あくまでも私が試行錯誤しながらなんとかなった git のコマンドの備忘録です
あまり信用しないでください
git clone https://github.com/{アカウント名}/{リポジトリ名}.git {ディレクトリ名}
git remote add teamhimeh https://github.com/teamhimeh/simutrans.git
git fetch teamhimeh
git pull teamhimeh master
git reset --hard teamhimeh/master
git checkout -b OTRP teamhimeh/OTRP
git push origin OTRP
こんな感じです。
次に、元のOTRPのリポジトリの最新の状態をマージするコマンドです。
git fetch teamhimeh
git merge teamhimeh/OTRP
git push origin OTRP
OTRPには、私が考案した改造がいくつか採用いただいております!
おそろしや OTRPを導入した際には、それらの改造もご活用いただきたく ...
それにしても、Git / GitHub は難しい ...
以下、参考文献
git cloneしてきたプロジェクトの名前を変えてクローンしてくる方法
https://qiita.com/ko_coon/items/f7a555a1f57fa49e0ff9
[GitHub]別リポジトリの更新を取り込む
https://qiita.com/ktaguchi/items/e37d8807935ad4d94a86
gitでリモートのブランチにローカルを強制一致させたい時
https://qiita.com/ms2sato/items/72b48c1b1923beb1e186
リモートのgitブランチをローカルにチェックアウトする
http://sessan.hatenablog.com/entry/2012/11/04/132746
Gitでブランチをリモートに送る時の注意点
https://rcmdnk.com/blog/2014/01/31/computer-git/
リモートのブランチをマージする
http://kray.jp/blog/git-pull-rebase/
VRoidでVTuberになりました、たぶん
VRoidでVTuberになりました、たぶん。
いまいち、VTuberの定義がよくわからないのですが。
YouTubeに動画もあげたので、VTuberだと思います。
名前は...まだない。とりあえず、shingoushoriです。
shingoushoriっていうのもおこがましいですけれども。
これからまた信号処理していこうという気持ちで。
VRoid が手軽そうだったので、やってみました。
とりあえず、こんなこになりました。眼鏡と頭身とセーラーの実装に期待。
v0.1.1 を8/3(金)の夜にDLしだいたい掴んでから寝て、
起きた8/4(土)に v0.2.0が出ていて作り直しました。
そういえば、「バ美肉」、「受肉」なる用語ができたようですね。読み方もわからないのですが...。
VRoidで表情をいじっていての発見がこちら。
なんとなく、行き交う人たちの表情って、これくらいのパラメータじゃないでしょうか。
私自身が、周囲から注意を受ける感じで不機嫌な表情でいるのが普通なので、その認知バイアスかもしれませんが。... 眼鏡だったり頭痛に腹痛に運動不足にカフェイン中毒に出不精で出かけているときは大体不機嫌とかいろいろなんですけども。
1アプリケーションでのパラメータというだけですけども。
そのパラメータが「怒り」「悲しい」というあたりで、妙に納得したのでした。
以下、Twitter -> YouTube にこの記事までにあげたものです。
#VRoid 微妙な表情させるの楽しい 可愛い 楽しいのゲージを100->0に下げて真顔のするのがツボ pic.twitter.com/4u5RdBQ9FS
— shingoushori (@shingoushori) August 4, 2018
#VRoid → #FaceVTuber してみた 目の周りが抜けてしまった うーむ pic.twitter.com/5AVMOGuHOR
— shingoushori (@shingoushori) August 4, 2018
FaceVTuber に関しては、2018/8/7 現在では 0.1.1 で出力したVRMファイル(dwangoが提唱するVTuber用のファイルフォーマット VRM - dwango on GitHub )なら、目が抜けませんでした。いや、角度によっては抜けていますね ... 。
Simutrans OTRP での範囲指定のデモを、VRoidで出したモデルでやろうとしてみた Ctrlキー押してる感は伝わるかな ? pic.twitter.com/icwIAoXv8L
— shingoushori (@shingoushori) August 5, 2018
こちらは VDRAW ( Ogura Laboratory Shop - BOOTH(同人誌通販・ダウンロード) ) ↑の動画時にはディスプレイ1枚で試運転でした。2枚使うのが推奨だそうで。手軽におしゃれで素敵です。
声質変換は、とりあえず ↓ を試してみました。が、↑の動画の通り、しばらく話しているうちに録音が止まる、繰り返しているうちに録音が開始されない...といったなんがあって、まだ使えていません。
顔のトラッキングは、眼鏡をかけているよりも外した方が追従していそうです。
そりゃそうか、と思いつつ...。
VRゴーグルを被らなくとも、眼鏡に厳しい分野ですね...。