veirosが何か言いたげにこちらを見ている

FIREしたい!FIREする!!FIREを目指す!!!

箱庭諸島開発のためのメモ

hako-turn.phpの改造の肝

施設の成長

1630行あたりから「成長および単ヘックス災害」というのがある。ここがターン中に発生する各種イベントになるのだが
case $init->landFarm:
// 農場の成長
if($lv < 40) {
$landValue[$x][$y]++;
}
break;
とか追加すると、毎ターン、規模40以下のすべての農場規模が1増えていくよ
勝手に生産地形が成長していくという嬉しい仕様である。
工場も同様に簡単に成長仕様を追加できる。
森林の成長をコピペして改変するだけである。

埋め立て制限撤廃

784行目あたりに、全部海だから埋め立て不能というのがあるやん。
これはつまり、埋め立ては陸に接していなければならないという制限だけど、
/*
if($seaCount == 7) {
// 全部海だから埋め立て不能
$this->log->noLandAround($id, $name, $comName, $point);
$returnMode = 0;
break;
}

/

こんな感じで /* */ でくくると簡単に無効化できる。
離れ小島とか作り放題になって芸術度が高まるのでお勧め。

巨大隕石落下によるHEX制限

2075行目に巨大隕石判定がある。
if(Util::random(1000) < $init->disHugeMeteo) {
こういう条件になってるけど、この行を、
if ($island[‘area’] > 260) {
に差し替えると、「260HEXを越えると巨大隕石落下」になる。
地盤沈下よりマイルドでロムレー先生もお気に入り。
if((Util::random(1000) < $init->disHugeMeteo)||($island[‘area’] > 260) ) {
こうすると「通常の巨大隕石落下判定」+「260HEXを越えると巨大隕石落下」の両方になる。

レッセフェール

1691行目。「周りに農場、町があれば、ここも町になる」ってあるけど、
case $init->landPlains:
// 平地
if(Util::random(5) == 0) {
// 周りに農場、町があれば、ここも町になる
if($this->countGrow($land, $landValue, $x, $y)){
$land[$x][$y] = $init->landTown;
$landValue[$x][$y] = 1;
}
if(Util::random(10) == 0) {
// 周りに農場、町があれば、ここも農場になる
if($this->countGrow($land, $landValue, $x, $y)){
$land[$x][$y] = $init->landFarm;
$landValue[$x][$y] = 1;
}
if(Util::random(10) == 0) {
// 周りに農場、町があれば、ここは工場になる
if($this->countGrow($land, $landValue, $x, $y)){
$land[$x][$y] = $init->landFactory;
$landValue[$x][$y] = 1;
}
}
break;
こんなふうにコピペ改変すると、住民が勝手に農場や工場を作るようになるよ。

援助コマンド改善

1561行目に資金援助コマンド、食料援助コマンドがある。
ここに、
// 援助量決定
if($arg == 0) { $arg = 1; }
という部分がある。これは「数量0で実行すると数量1として扱う」
という意味なのだが、
// 援助量決定
if($arg == 0) { $arg = 100; }
に変更するだけで、「数量0で実行すると数量100として扱う」ようになる。
ロムレー先生発案。とても気持ちいいのでお勧めの改造である。
なお、これだけだと開発画面には反映されないので、
hako-html.phpの1237行にある、
if(c[3] == 0){ c[3] = 1; }
を、
if(c[3] == 0){ c[3] = 100; }
に変更しよう。

記念碑飛ばし凶悪化

1013行。記念碑飛ばしってさあ・・・なにかとてつもないのが降ってくるじゃん・・・?
でもたった一個だけって、結局海ポチャになって全然怖くないじゃん。
インフェルナの記念碑飛ばしって、とてつもない巨大隕石が5つ降ってきたんだよね。
どうやって5つも降らせたかの改造方法はこれだっ!
改造前: $hako->islands[$tn][‘bigmissile’]++;
改造後: $hako->islands[$tn][‘bigmissile’]++;
$hako->islands[$tn][‘bigmissile’]++;
$hako->islands[$tn][‘bigmissile’]++;
$hako->islands[$tn][‘bigmissile’]++;
$hako->islands[$tn][‘bigmissile’]++;
を増やすだけで増やすも減らすも自由自在よ。

施設成長によるマップチップ外見変更

hako-main.phpはマップチップの表示に関わるファイルである。
表示はその名の通り見てくれであり、インパクトが大きいので、わずかな改造で大きな効果を得られる。
case $init->landFarm:
// 農場
$image = ‘land7.gif’;
$naviTitle = ‘農場’;
$naviText = “{$lv}0{$init->unitPop}規模“;
if($lv > 14) {
// ドーム型農場
$image = ‘land7a.gif’;
$naviTitle = ‘養鶏場’;
}
if($lv > 24) {
// ドーム型農場
$image = ‘land7b.gif’;
$naviTitle = ‘養豚場’;
}
if($lv > 34) {
// ドーム型農場
$image = ‘land7c.gif’;
$naviTitle = ‘牧場’;
}
if($lv > 44) {
// ドーム型農場
$image = ‘land71.gif’;
$naviTitle = ‘ドーム型農場’;
}
break;
このように規模に合わせて名称やマップチップを切り替えることができる。

埋め立て結果ランダム

hako-turn.php 765行 埋め立て
浅瀬を埋め立てると「荒れ地」になるわけだが、それだけだと人間は飽きてしまう。
常に意外性を持たせたい。そう思うならばこれだ。
・798行の空白部分に、
if(Util::random(100) < 20){
// 目的の場所を村にする
$land[$x][$y] = $init->landTown;
$landValue[$x][$y] = 1;
}
if(Util::random(100) < 30){
// 目的の場所を森にする
$land[$x][$y] = $init->landForest;
$landValue[$x][$y] = 1;
}
if(Util::random(100) < 10){
// 目的の場所を山にする
$land[$x][$y] = $init->landMountain;
$landValue[$x][$y] = 0;
}
if(Util::random(100) < 5){
// 目的の場所をミサイル基地にする
$land[$x][$y] = $init->landBase;
$landValue[$x][$y] = 0;
}
を追加する。すると埋め立てするとランダムで荒れ地の他、村、森、山、ミサイル基地ができあがるようになる。偶然でてきた地形を活かすか潰すかという選択肢が生まれる。
べろ箱では低確率で記念碑が出てきたりもした。

箱庭経済モデルを考えるのは楽しいけど難しい

「資源が増えると、必然的にそれを扱う施設も増やす必要がある」
消費財 なんだけど「農場から直接とれる食料」っていうのはダメだね
消費財は加工品であるべきね
材料集めて自前で作るの面倒や、輸入しよー っていうくらいがいい