2019年10月14日月曜日

【ゲーム】simutrans 自作マップ 高度についてバージョンと設定値での違い

先日simutransの自作マップでの、マップの色と高さの関係を書きました。
【ゲーム】simutrans 自作マップ
そこに、結論じみた形で高さとクレースケールの表を書いたのですが、どうもそれだけではなくて、simutransのバージョンや設定で違いがある事がわかりました。のでそれを書きます。

まずバージョンによって違います。すべてのバージョンで確認したわけではないのですが、
  simutrans 102.2.1
  simutrans 120.4.1 <現時点での最新
少なくとも上記2バージョンで違いがあるです。
先日書いたのは、simutrans 120.4.1での値になります。

そこでいろいろ試してみようと思ったのですが、よく考えたらsimutransはソースが公開されてます、そうです、シムトランスはsourceが公開されているんです。なのでソースコードを確認してみる事にしました、source codeはSVNで管理されているようで、GitHubでも公開されています。(SVNとGitHubどっちが本流本元なのかな、たぶんSVNのような感じです。)

確認したのは下記2バージョンです。
・simutrans 102.2.1
 https://github.com/sanna/simutrans
 /simworld.cc : karte_t::get_height_data_from_file()
 設定による違いは無いです。ので1つです。

・simutrans 120.4.1
 https://github.com/aburch/simutrans/tree/master/simutrans
 /dataobj/height_map_loader.h : rgb_to_height()
 設定により違います。
 [height_map_conversion_version_new ON/OFF]
 [pak_height_conversion_factor == 2 / != 2]
 4通りあります。

この5つの違いを確認すべく、確認プログラムを作ってそれぞれ0~255の結果をテキストで出力しました。結果はテキストファイルとして公開しますね。公開結果テキストはココです(ついでに確認プログラムのソースも公開しておきます。単にsimutransのソースと同じ計算してprintf()してるだけですが。)あ、値はなぜかsimutransのゲーム画面で表示されるものより1少なかったりしますがたぶん後の処理で表示は+1されるんでしょということで気にしない方向で(笑い)  まあ、区切りがわかればいいという程度で。

簡単に結論を書くと

・simutrans 102.2.1は、11区切りか10区切り。
 0~10が-14、11~21が-13、22~31が-12、、、235~245が8、246~255が9
 (区切りとはこんな感じですので、以下は値範囲の具体的な記述を省略します。
  詳しくは結果テキストをご覧ください。)

・simutrans 120.4.1は、
 [height_map_conversion_version_new ON/OFF](以下verと呼びます)と
 [pak_height_conversion_factor == 2 / != 2](以下convと呼びます)の設定で変わります。
 ver OFF  conv == 2 :5区切りか6区切り。
 ver OFF  conv != 2  :11区切りか10区切りで、simutrans 102.2.1と同じ。
 ver ON   conv == 2 :4区切りで、252~255が29(ゲームでは高さ30になります)
 ver ON   conv != 2  :8区切りで、【ゲーム】simutrans 自作マップ で書いたのはこれ。

となりました。

ver ON   conv == 2で高さ30まで表現できるのはいいなぁと思いますた。
height_conversion_factorの設定を2にして海-20 高さ30まで表現可能
height_conversion_factorの設定を2にして海-20 高さ30まで表現可能


2019年10月11日金曜日

【ゲーム】simutrans 自作マップ

simutransのマップを自作する時のメモです。

simutransのマップは自作出来ます、自作したマップはいったん読み込ませてゲームデータに変えたら編集は出来ないみたいです。つまり自作したマップでゲーム開始時の状態を設定できますが、その後はゲーム内で編集する事になります。

simutransのマップはppmかbmpの画像ファイルで、1マスが1ピクセルで、そのピクセルの8bitグレースケールの値が高さを表します。よく『simutransのマップは明度が高さを表す』と言われますが、ppmもbmpもRGB色空間(赤緑青)なので、わざわざHSV色空間(色相、彩度、明度)に変換して明度を得て使っているとも思われず("明るさ"を"明度"と言っているだけかもですが、明度という用語を使うとHSVのと混同しやすいので、なんともです)、、、まあ 8bitグレースケールの値を使っているだけのようです。

で、その高さと値の対応ですが、日本語wikiや海外のサイトに載っています、載っていますがなんだか釈然としない値です。



うーん、なんだか規則性が見れませんし、実際にその値でやってみても微妙にずれる事があったりします。で、いろいろやって調べてみました。

まずは、グレースケールBMP(8bitBMP)で、上記サイトの値を使っていろいろな高さを試してみましたが、うまくいきません。たとえば海外サイトの情報でやると、
高さ14,13,12,10,9,8,7,5,4,3,1,0,-1,-3,-4,-5,-7,-8,-9,-11,-12,-13,-15,-16,-17
となり、11,6,2,-2,-6,-10,-14が無く、間が二段階の坂で繋がれてしまいます。

そこで、0x00~0xffまでの値を連続的に変えたBMPファイルを作りそれをsimutransに読み込ませてみました。

256×256のサイズで、1ライン目は00、2ライン目は01、3ライン目は02、、、256ライン目はFFとなるBMPファイル
256×256のサイズで、1ライン目は00、2ライン目は01、3ライン目は02、、、256ライン目はFFとなるBMPファイル

これをsimutoransに読み込ませてみます。
map高さ調査simutoransでの表示(海-2)
map高さ調査simutoransでの表示(海-2)

map高さ調査simutoransでの表示(海-20)
map高さ調査simutoransでの表示(海-20)
おお、ちゃんと一段ずつ表示されました。
どうも高さと値の関係は以下のようであるようです。
高さ   グレースケール値
-17     0 ~   7
-16     8 ~  15
-15    16 ~  23
-14    24 ~  31
-13    32 ~  39
-12    40 ~  47
-11    48 ~  55
-10    56 ~  63
 -9    64 ~  71
 -8    72 ~  79
 -7    80 ~  87
 -6    88 ~  95
 -5    96 ~ 103
 -4   104 ~ 111
 -3   112 ~ 119
 -2   120 ~ 127
 -1   128 ~ 135
  0   136 ~ 143
  1   144 ~ 151
  2   152 ~ 159
  3   160 ~ 167
  4   168 ~ 175
  5   176 ~ 183
  6   184 ~ 191
  7   192 ~ 199
  8   200 ~ 207
  9   208 ~ 215
 10   216 ~ 223
 11   224 ~ 231
 12   232 ~ 239
 13   240 ~ 247
 14   248 ~ 255

なんのことはない単に8区切りでした、、、

注:この結果ですが、simutrans 120.4.1で、
  [height_map_conversion_version_new ON]
  [pak_height_conversion_factor != 2]
  の時の値です。まあ今後デフォルトで使う限りこの値ではあります。
  
  simutransのバージョンや設定での違いを次に書きました。
  【ゲーム】simutrans 自作マップ 高度についてバージョンと設定値での違い



2019年10月9日水曜日

【ゲーム】simutransのインストール

simutransはフリーの交通系経営シミレーションです。なかなか面白いゲームで、自由度も高くいろいろな楽しみ方が出来ます。ソースコードも公開されていますし、いろいろ拡張も可能で、まあ暇つぶしにでもプレイしてみる事をお勧めします。

僕はUbuntuにインストールして遊んでましたが今はwindows版でプレイしています。windowsの場合はインストーラーが用意されていてインストールは自動です。Linuxも"apt-get/aptitude"コマンドでインストールなので、これまた楽です。

【インストールの方法】
下記webがわかりやすいです。
---------------------------------
インストール - Simutrans日本語化・解説
http://japanese.simutrans.com/index.php?%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB
---------------------------------

linuxでのコマンドラインインストールの結果を下に記します。
1.まずは"apt-get update"で用意です。
コマンド実行の様子はLinCity NG 2.0 で遊ぶ(インストール編)を参考にして下さい。

2."sudo apt-get install Simutrans"でインスト―ルします。

--------------------------------------------
Simutransをインストールする(64のみ)
--------------------------------------------
mana@m-ubuntu-32:~$ sudo apt-get install Simutrans
[sudo] password for mana: 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  simutrans-data simutrans-pak64
以下のパッケージが新たにインストールされます:
  simutrans simutrans-data simutrans-pak64
アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 824 個。
4,665 kB のアーカイブを取得する必要があります。
この操作後に追加で 19.5 MB のディスク容量が消費されます。
続行しますか? [Y/n] Y
取得:1 http://jp.archive.ubuntu.com/ubuntu/ trusty/universe simutrans-pak64 all 111.3-1 [2,669 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ trusty/universe simutrans-data all 111.3.1-1 [1,019 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu/ trusty/universe simutrans i386 111.3.1-1 [978 kB]
4,665 kB を 19秒 で取得しました (239 kB/s)                                     
以前に未選択のパッケージ simutrans-pak64 を選択しています。
(データベースを読み込んでいます ... 現在 169473 個のファイルとディレクトリがインストールされています。)
Preparing to unpack .../simutrans-pak64_111.3-1_all.deb ...
Unpacking simutrans-pak64 (111.3-1) ...
以前に未選択のパッケージ simutrans-data を選択しています。
Preparing to unpack .../simutrans-data_111.3.1-1_all.deb ...
Unpacking simutrans-data (111.3.1-1) ...
以前に未選択のパッケージ simutrans を選択しています。
Preparing to unpack .../simutrans_111.3.1-1_i386.deb ...
Unpacking simutrans (111.3.1-1) ...
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu1) ...
Processing triggers for bamfdaemon (0.5.1+14.04.20140409-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for mime-support (3.54ubuntu1) ...
Processing triggers for man-db (2.6.7.1-1) ...
simutrans-pak64 (111.3-1) を設定しています ...
simutrans-data (111.3.1-1) を設定しています ...
simutrans (111.3.1-1) を設定しています ...
mana@m-ubuntu-32:~$ 

以上でインストールできていてプレイできます。
しかし、もしさらにpak128も入れたいのなら

--------------------------------------------
Simutransをインストールする(64とか128とか)
--------------------------------------------
--------------------------------------------------------------------------------
$ sudo aptitude install simutrans-makeobj simutrans-pak64 simutrans-pak128.britain
$ sudo apt-get install simutrans-makeobj simutrans-pak64 simutrans-pak128.britain
--------------------------------------------------------------------------------
mana@m-ubuntu-32:~$ $ sudo aptitude install simutrans-makeobj simutrans-pak64 simutrans-pak128.britain
$: コマンドが見つかりません
mana@m-ubuntu-32:~$ sudo aptitude install simutrans-makeobj simutrans-pak64 simutrans-pak128.britain
[sudo] password for mana: 
sudo: aptitude: command not found
mana@m-ubuntu-32:~$ sudo aptitude install simutrans-makeobj simutrans-pak64 simutrans-pak128.britain
sudo: aptitude: command not found
mana@m-ubuntu-32:~$ sudo apt-get install simutrans-makeobj simutrans-pak64 simutrans-pak128.britain
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
simutrans-pak64 は既に最新バージョンです。
simutrans-pak64 は手動でインストールしたと設定されました。
以下のパッケージが新たにインストールされます:
  simutrans-makeobj simutrans-pak128.britain
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 824 個。
16.6 MB のアーカイブを取得する必要があります。
この操作後に追加で 149 MB のディスク容量が消費されます。
続行しますか? [Y/n] Y
取得:1 http://jp.archive.ubuntu.com/ubuntu/ trusty/universe simutrans-makeobj i386 111.3.1-1 [63.7 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ trusty/universe simutrans-pak128.britain all 1.09-1 [16.6 MB]
16.6 MB を 53秒 で取得しました (310 kB/s)                                      
以前に未選択のパッケージ simutrans-makeobj を選択しています。
(データベースを読み込んでいます ... 現在 170990 個のファイルとディレクトリがインストールされています。)
Preparing to unpack .../simutrans-makeobj_111.3.1-1_i386.deb ...
Unpacking simutrans-makeobj (111.3.1-1) ...
以前に未選択のパッケージ simutrans-pak128.britain を選択しています。
Preparing to unpack .../simutrans-pak128.britain_1.09-1_all.deb ...
Unpacking simutrans-pak128.britain (1.09-1) ...
Processing triggers for man-db (2.6.7.1-1) ...
simutrans-makeobj (111.3.1-1) を設定しています ...
simutrans-pak128.britain (1.09-1) を設定しています ...
mana@m-ubuntu-32:~$ 
--------------------------------------------------------------------------------

以上でpak128がインストールできていてプレイできます。
しかし、もしさらにjapan128等の"apt-get/aptitude"未サポートなpakも入れたいのなら、まずは解凍コマンド"cabextract"を用意して、下記コマンドメモを参考に入れてください。

---------------------
wget [pakのcabファイルが置いてあるURL]
cabextract [解凍したいcab]
sudo cp -r [pakファイル] /usr/share/games/simutrans

pakjapanの場所URL:http://pak128.jpn.org/souko/pak128.japan.110.0.1.cab
---------------------

--------------------------------------------
解凍用のcabextractをインストールする
--------------------------------------------
mana@m-ubuntu-32:~$ 
mana@m-ubuntu-32:~$ 
mana@m-ubuntu-32:~$ where cabextract
コマンド 'where' は見つかりませんでした。もしかして:
 コマンド 'gwhere' - パッケージ 'gwhere' (universe)
where: コマンドが見つかりません
mana@m-ubuntu-32:~$ gwhere cabextract
プログラム 'gwhere' はまだインストールされていません。 次のように入力することでインストールできます:
sudo apt-get install gwhere
mana@m-ubuntu-32:~$ which cabextract
mana@m-ubuntu-32:~$ 
mana@m-ubuntu-32:~$ cabextract
プログラム 'cabextract' はまだインストールされていません。 次のように入力することでインストールできます:
sudo apt-get install cabextract
mana@m-ubuntu-32:~$ 
mana@m-ubuntu-32:~$ 
mana@m-ubuntu-32:~$ sudo apt-get install cabextract
[sudo] password for mana: 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  cabextract
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 824 個。
41.6 kB のアーカイブを取得する必要があります。
この操作後に追加で 146 kB のディスク容量が消費されます。
取得:1 http://jp.archive.ubuntu.com/ubuntu/ trusty/universe cabextract i386 1.4-4 [41.6 kB]
41.6 kB を 8秒 で取得しました (4,898 B/s)
以前に未選択のパッケージ cabextract を選択しています。
(データベースを読み込んでいます ... 現在 172938 個のファイルとディレクトリがインストールされています。)
Preparing to unpack .../cabextract_1.4-4_i386.deb ...
Unpacking cabextract (1.4-4) ...
Processing triggers for man-db (2.6.7.1-1) ...
cabextract (1.4-4) を設定しています ...
mana@m-ubuntu-32:~$ 


--------------------------------------------
インストールの確認
インストールは"dpkg -l"コマンドで確認できます。
--------------------------------------------
mana@m-ubuntu-32:~$ dpkg -l simutrans*
要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持
| 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
|/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常)
||/ 名前                         バージョン          アーキテクチャ      説明
+++-============================-===================-===================-=============================================================
ii  simutrans                    111.3.1-1           i386                transportation simulator
ii  simutrans-data               111.3.1-1           all                 transportation simulator (base data)
ii  simutrans-makeobj            111.3.1-1           i386                data file compiler for Simutrans
ii  simutrans-pak128.britain     1.09-1              all                 transportation simulator (data files)
ii  simutrans-pak64              111.3-1             all                 transportation simulator (data files)
mana@m-ubuntu-32:~$ 



3.起動とかセーブデータの場所とか
アプリ―ケーションのデスクトップアイコンは"/usr/share/applications"にあります。それをクリックすれば起動します。
保存したセーブデータの場所は下記です。
/home/[ユーザー名]/.simutrans/save
/home/[ユーザー名]/.simutrans/save/book-empire_01_整地だけ.tab.sve


以上です。

楽しんで下さい(^^)