2012年11月17日土曜日

OpenTTDの第一次産業の生産量について

OpenTTDの第一次産業の生産量について良く分かってなかったので調べてみた。
調べたのは本家海外のwiki
第2、3次産業は良く分からん。原料運んだだけ生産されてる…のかな?

まず前提として
  • 「拡張設定>経済>スムーズな経済を仕様」がオン。(smooth economy)
  • 難易度設定で「経済の傾向」が「安定的」。(steady)
こんな設定であるうえでの話。
スムーズ経済はデフォルトでオンだと思うし、
難易度Hardじゃなければ経済は安定的かと。

本題

wikiによれば、まず最初に毎月全産業のうち4.5%に産出量の変化がおきる
たぶん第一次産業全体での話だと……思う。

次に、産出量が増えるか減るかはその産業のサービスの質で決まる
サービスの質って要は「○○%運送済み」って書いてあるやつ。
これが60%未満だとサービスの質がpoor、
これ以上80%未満だとgood、
80%以上だとexcellentとみなされる。

これをもとに、
  • poorだと33%の確率で産出量が増大し、67%の確率で減少する。
  • goodだと67%の確率で増大し、33%の確率で減少する。
  • excellentだと83%の確率で増大し、17%の確率で減少する。
ってな風になってるんだと。

つまり、上の画像の「Mount Magnetゴム園」は67%運送済みであるから、
4.5%x67% = 3.0%の確率で増大して、
4.5%x33% = 1.5%の確率で減少するってことやね。

次に、産出量の変化は3%〜23%の間で変化するんだって。
このとき極端に少ない生産量の産業(12~40ton/monthとか)は多めに変化するとか。

各産業には基本産出量(base value)ってのがあって、月に8,9回この量だけ生産される。
基本産出量15の炭鉱なら120tonか135tonの石炭が毎月掘れると。
ちなみに最大値は255らしいので最大で2295tonの石炭が取れるらしい…sugeeee。
ちなみに森林は月に10回生産らしいのでもっと多いんだとか。

産出量が2倍になるのはいつか

で、これでメカニズムが分かったのでwikiではどれくらいで産出量が何倍になるのか?って計算が書いてあった。
それによると質がgoodな炭鉱で、
  • 20年で59.6%増大。
  • 50年で321.8%、つまり3.22倍に。
  • 100年で10.35倍になる。
これがexcellentになると、
  • 20年で2.54倍。
  • 50年で10.32倍!!
  • 100年で106.62倍!!!!
と、ものすごい上昇率になっている。
産出量が2倍になるのはgoodで29.6年後、excellentで14.8年後。
運送量が20%違うだけで結構違うもんだねえ。
ただ注意点があって、これはあくまで平均値で計算した場合。
実際のゲーム中では体感では結構違ってくるらしいのであまり意識しすぎないほうが良いらしい。
何十年って長いスパンで見たらこうなるって話。

というわけで、OpenTTDの第一次産業の産出量の変化のメカニズムでしたとさ。
正直全然理解してなかったなあw
上の画像は今までのプレイデータでどうなってたか見返してみたもの。
確かに自分が手をつけてるゴム園は他のに比べて産出量が多いのが分かるね。
しかし400年近くプレイしてこれだから、よほど意識しないと10倍とかはいかないっぽいなあ。
もっと道路運送使ったり、列車の本数増やすなりして、継続的に輸送しないと運送率は上がらなそうだ。

あーあと、自分は画像のプレイデータ以降はFIRSを導入してるんですが、
この場合1次産業は運送率じゃなくて、別途必要な物資を届けないと成長しないみたい。
農場なら「farm supplies」、鉄鉱山なら「engineering supplies」 になるかな。
妙にFIRS入れてから利益上がらないなあと思ったらそういうことだったのね。


このゲームおもしろいんだけど、ゲームに関する資料が大体英語なのよね。
ちょっと日本人が少ないのはそれで敬遠されてる部分があるんじゃないかなあ。
自分がこういう記事を書くことでプレイヤーが増えたら嬉しいね。
今度はFIRSのwikiを読もうかなあ。最近英語読んでないし、触れねば。

2012年11月3日土曜日

サイトのヘッダとフッタ分割

タイトルこれでいいのか悩む。
うちのサイトではページの上部にメニューがあって、こいつはどのページでも共通する部分。
だから変更を加えると全ページに渡って変更作業をしなきゃいけなかったのね。
そこで、ここだけ独立して管理して、あとから他のページに貼付けるようなことができないかなーと常々思ってたわけです。
(ちょっと紛らわしいけど、ここで言うヘッダってheadタグじゃなくてメニュー含むそれより上部に記述してある部分だと思ってね。)

当然PHPだわな…。

というわけでいろいろググってみたんだけど、どれもしっくりしない。
インラインフレームを使う方法なんかはもう前時代的だと思うしやりたくない。
ソースが外部にあるからSEO的にもよろしくないしね。
他にももろもろあったけど、いろんなデメリットを抑えられる方法が…PHPっすかー。
まあ予感はしてたけどね。しかし忍者ホームページさんは残念ながらサーバサイドのアプリは使えない…。困った。

しょうがないからオフライン環境でなんとかする方法を模索。
最初はド正直にcatコマンドとか使って本当にそのまんま分割htmlファイルを繋ぎあわそうとか思ってたのね。
でもこれにはひとつ問題点があったのよ。
うちのサイトで言えば、現在開いてるページはメニューのデザインが変わるようにしてある(ボタンが押されたような感じ)。
開いてるページに対応するli要素に、デザインを変えるためにクラスを設定してるわけ。
つまり、完全にはメニュー部分が全ページで一致してないのが問題として残っちゃう。

m4とMakefile

この時点で3時間ぐらい粘ってたんだけど、ついに解決法を発見。
watanet Personal Side-C
プリプロセッサでHTMLファイルの生成 – m4 Makefile html
まさに同じことで悩んでる人を発見!

詳細はリンク先を見てくれれば分かるけど、
m4とやらはテキストファイル厨に別のファイルの内容を挿入したり、
とある文字列を別の文字列に置き換えたりする機能をもってるそうで。
変数の宣言っぽいこともできるらしい。

これらの機能のおかげで、まず各ページの上部にメニュー部分を外部ファイルから挿入することができるようになった。
そのとき各ページによって変数の値を変えることで、先ほどの問題もクリア!

おまけでMakefileを使えばmakeコマンド一発で全ページ自動生成だよ!
いたれりつくせり。これは便利。

m4の概要を理解するのに1,2時間かかったり、
Makefileの記法(自動変数ェ…)を理解?するのに2時間ぐらいかかったり結構手こずっちゃったけど、相応の価値はあったね。

なにはともあれこれで目的は達成できた。
ほとんどないけどフッタの部分もついでに外部ファイル化。
あとmetaタグで更新日時を自動設定できるようにとかしてみた。
あとで入れようと思ってるjQueryの導入も一文書くだけで済むようになったじぇ。

唯一気になるのはemacsでのインデントが崩れちゃうことかな。
最終的に統合したhtmlを作った後にindent-regionをかける方法が分からなかった。
誰か知ってたらおしえてくだしゃー。