shingoushori's dialy

音信号処理を専ら研究していた元博士後期課程の学生によるメモ

Simutransのセーブデータ (非圧縮xml のみ) の路線情報を編集してみた ~ 路線番号を各社ごとの数字に振り直し

[趣旨]
Simutransのセーブデータ弄りであるとか、もちろん信号処理のなにやらづくりに向けて、デスクトップからファイルをドラッグする処理 〜 を準備します。

 

今回は、Simutransのセーブデータ (非圧縮xml のみ) をパースしてエディットして、また書き出しです。

路線情報を悪戯してみます。路線番号を各社ごとの数字に振り直します。
Simutrans本体にて新規路線を作ると、全社跨いで通しの数字が振られているようです。
そんな数字を、各社ごとでの通しの数字に置き換えます。[路線編集]ウィンドウで見た時に、ちょっと気持ちいい。

↓ Simutransのセーブデータ (非圧縮xml のみ) をドラッグアンドドロップすると、「ダウンロード」と書かれたリンクが追加されます。"output.sve"としてダウンロードできるはず。開発環境は、macchrome

Drop files here

                                   

 

 

本記事は、やっていることの整理のための脱線です。元々検討していた内容が泥沼にハマり、ディスプレイ上で燻り続けているわけです。
それは、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をパースする

XML Parser

Blob - Web API インターフェイス | MDN

HTML非表示・使用不可メモ(Hishidama's disabled/visibility/display Memo)

Simutransのセーブデータ (非圧縮xml のみ) を読み込み->書き出し ~ 「年代設定」をOFF

[趣旨]
Simutransのセーブデータ弄りであるとか、もちろん信号処理のなにやらづくりに向けて、デスクトップからファイルをドラッグする処理 〜 を準備します。

 

今回は、Simutransのセーブデータ (非圧縮xml のみ) をパースしてエディットして、また書き出しです。

ちょっとしたエディットとして、「年代設定」をOFFにします。

↓ Simutransのセーブデータ (非圧縮xml のみ) をドラッグアンドドロップすると、「ダウンロード」と書かれたリンクが追加されます。"output.sve"としてダウンロードできるはず。開発環境は、macchrome

Drop files here

             

 

 

「年代設定」をOFFにする。これが一連のxml弄りonはてなブログの発端です。

ただし、非圧縮xmlでだけできるようなツールでは微妙。
アンケートを募ったところ、全然使われていないっぽい。

サーブデータ弄り本編には関係ない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をパースする

XML Parser

Blob - Web API インターフェイス | MDN

HTML非表示・使用不可メモ(Hishidama's disabled/visibility/display Memo)

Simutransのセーブデータ (非圧縮xml のみ) のversionとpakを取得してみた

[趣旨]
Simutransのセーブデータ弄りであるとか、もちろん信号処理のなにやらづくりに向けて、デスクトップからファイルをドラッグする処理 〜 を準備します。

 

今回は、Simutransのセーブデータ (非圧縮xml のみ) をパースし始めてみました。

パースといっても、一番上の階層のAttributeだけです、まずは。

ドラッグアンドドロップされたSimutransのセーブデータの、 version と pak を表示します。

Drop files here

 

[参考文献]

クライアントサイドJavaScriptでXML文書のDOMをパースする

XML Parser

デスクトップからファイルをドラッグする処理を、はてなブログに直接書いてみるテスト

Simutransのセーブデータ弄りであるとか、もちろん信号処理のなにやらづくりに向けて、デスクトップからファイルをドラッグする処理 〜 を準備します。

↑ こちらのページのソースをコピペしてみました ...

ドラッグアンドドロップされたファイルの、 name と type と size と lastModifiedDate を表示するサンプルであるようです

↓ 動きました はてなブログ 万歳!

Drop files here

memo : Google、歌詞->旋律の機械学習を特許出願

 機械学習するにあたり、「うわぁ」な記事がきました。

aidiary on Twitter: "グーグル、歌詞に合わせてメロディを自動作曲する機械学習システム--公開特許に https://t.co/Cl1oDVzNxT"

 

[公開特許]

「公開特許公報」って何? - 発明plus

特許申請された内容が公開された。まだ特許として認められてはいない。
特許になるにあたり、この内容より増えることはない。
... おそらく記事は日本での特許制度についてのものだと思いますが。

 

この手の「うわぁ」な話題としては、WaveNetがありました。

 


月刊パテントなる論文誌があるんですね。日本弁理士会だそうで。

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 が手軽そうだったので、やってみました。

 

vroid.pixiv.net

とりあえず、こんなこになりました。眼鏡と頭身とセーラーの実装に期待。

f:id:shingoushori:20180807002755p:plain

v0.1.1 を8/3(金)の夜にDLしだいたい掴んでから寝て、
起きた8/4(土)に v0.2.0が出ていて作り直しました。

 

そういえば、「バ美肉」、「受肉」なる用語ができたようですね。読み方もわからないのですが...。

VRoidで表情をいじっていての発見がこちら。
なんとなく、行き交う人たちの表情って、これくらいのパラメータじゃないでしょうか。

f:id:shingoushori:20180807003125p:plain

私自身が、周囲から注意を受ける感じで不機嫌な表情でいるのが普通なので、その認知バイアスかもしれませんが。... 眼鏡だったり頭痛に腹痛に運動不足にカフェイン中毒に出不精で出かけているときは大体不機嫌とかいろいろなんですけども。

1アプリケーションでのパラメータというだけですけども。
そのパラメータが「怒り」「悲しい」というあたりで、妙に納得したのでした。

 

以下、Twitter -> YouTube にこの記事までにあげたものです。

FaceVTuber に関しては、2018/8/7 現在では 0.1.1 で出力したVRMファイル(dwangoが提唱するVTuber用のファイルフォーマット VRM - dwango on GitHub )なら、目が抜けませんでした。いや、角度によっては抜けていますね ... 。

こちらは VDRAW ( Ogura Laboratory Shop - BOOTH(同人誌通販・ダウンロード) ) ↑の動画時にはディスプレイ1枚で試運転でした。2枚使うのが推奨だそうで。手軽におしゃれで素敵です。

声質変換は、とりあえず ↓ を試してみました。が、↑の動画の通り、しばらく話しているうちに録音が止まる、繰り返しているうちに録音が開始されない...といったなんがあって、まだ使えていません。

voice-changer.userlocal.jp

 

www.youtube.com

www.youtube.com

 顔のトラッキングは、眼鏡をかけているよりも外した方が追従していそうです。
そりゃそうか、と思いつつ...。
VRゴーグルを被らなくとも、眼鏡に厳しい分野ですね...。