箱庭共通マップ S — CORE-B リリース
2026-09-13 / dataVersion 32(7カ国入り初期世界)/ 共有マップ version=3、90×90、セル30桁hex。 N 1.51系を基準にしたSの改変版です。本番で使用済みの製品版1.54を起点に、以後は0.01ずつ進めます。版名からNセーブとの互換性を推定しないでください。
確定済みのSHA256は配布物の実測値です。未確定の値は配布元の RELEASE_NOTES.md で確認してください。同じ版・同じ日付でも再ビルドすれば値は変わります。従来のhakoS-NN表記だけでは同日中のパッチ差分を識別できないため、ビルド日時・commitと、ダウンロード時のアーカイブSHA256も照合してください。version.cgi が無い旧配布物もあります。
version1.65.3 (2026-09-28)
version1.65.2 から、食料不足の国が漁業の前に国庫と民間の帳簿を合わせると世界のターン更新が止まる問題を直しました。国庫の食料が負でも、出どころ別の在庫は実際にある量の 0 までだけ引きます。国庫の負値はそのターンの飢餓処理へ渡します。ほかの資源が負になった場合も同じように扱います。保存形式と dataVersion(33)は変えません。
1.65.1 から直接当てる更新も用意しました。その更新には 1.65.2 の臨時の弾薬配布も含まれます。すでに 1.65.2 を当てた世界では、配布済みの印を保ったまま更新してください。
version1.65.2 (2026-09-28)
version1.65.1 からの変更は臨時の弾薬配布だけです。更新後の最初のターン更新で1度だけ、滅んでいないすべての国(人間・CPU)の国庫へ弾薬を200ずつ加えます。消滅予定の国は除き、国庫の資源上限で止めます。
配布は自国産として数え、資源帳簿に外部からの流入として記録し、世界の歴史に3言語で1行知らせます。data/ammo-grant.1.65.2 を印にし、配れた国が0でも印を残します。版が進んでも再配布しません。1.64の経済配布の印とdataVersion(33)は変えません。
version1.65.1 (2026-09-27)
アーカイブ: hakoS-1.65.1-20260927.tar.gz / SHA256(先頭16文字): acfff139f218538e
version1.65 からの変更。dataVersion は 33 のままで、保存の形は変えていません。当てた後の最初のターン更新で 1 度だけ動く処理はありません。
CPU の陣営の援軍
- 陸で隣り合わない正式な陣営の仲間が宣戦されたとき、CPU の国は予備兵を軍艦で送るための軍港と駆逐艦を造ります。軍港が無ければ軍港、軍艦が守りに残す数より 1 隻多くなるまで駆逐艦で、1 ターンに 1 つです。仲間が攻められている間は、蓄えの下限を割っても、造るのに要る分があれば造ります。
- 仲間の近くに上陸できる中立地があるうちは、海兵を上陸させて兵站基地を置き、陸路でつなぐことを先にします。海兵を運ぶ船は援助に使いません。軍艦を持たない国も、陸路づくりのための船を造ります。陸でつながれば、予備兵は陸路で送ります。
- 海兵の部隊を置く所が無いときは、自国の平地に兵站基地を建てます。平地が無ければ荒地か森を整地し、それも無ければ、首都を除いていちばん人の少ない町を整地して建てます。人口の地形が 5 マスより少ない国は、町を整地してまで海兵を出しません。
- 自分から戦争に加わった国も、遠い仲間へ予備兵を送ります。自国が宣戦されたときと、敵の部隊が近くに見えるときは送りません。守りに残す兵の決まりは今までどおりです。
- 港の隣の水が 1 マスの入り江でも、空いていれば船が入って兵を積み、降ろします。仲間の軍港にも降ろせます。迎えに行く船は近い船から選びます。
- 船が向かう岸は、海の道でたどり着ける所を近い順に探します(1 隻 1 ターンに 4 か所まで)。海兵の部隊も、その岸の隣まで陸を歩いて落ち合います。
画面
- 命令の分類を整理しました。おすすめは優先・開発・建設・攻撃・運営・海軍・交易・外交の 8 分類です(命令が 1 つだけの分類と「深さ」をなくしました)。目的ごとの 9 分類と今までの並びも、開発画面の「命令の分け方」で選べます。残骸の回収も命令の一覧から選べます。
- スマホの幅で画面を組むようにしました(今までは約 980 ピクセルで組んでから縮めていたので、字が小さくなっていました)。パソコンでは国一覧などの表を地図と同じ幅で中央にそろえ、スマホでは表の形のまま、入らない欄を次の段へ折り返します。開発画面の「画面の幅」で、自動(おすすめ)・パソコンの表のまま・今までどおりを選べます。
- 枠の中のスクロールを、全部の画面でなくしました(中身に合わせて伸びます)。トップの世界の歴史は新しい 10 行ほどを出し、残りは「もっと見る」で開きます。
直し
- 普通の隕石が、ハンデ B 以上の国(2 か国以上から宣戦され、相手の国力の合計が自国の 1.5 倍以上)にだけ落ちていたのを直しました。巨大隕石と同じく、ハンデ B の国を避けて、ほかの国に落ちます。説明書のハンデの一覧に隕石を足しました。
- 防衛施設の自爆の費用の説明を、3 倍から実際の 4 倍に直しました。
- 対人ミサイルの説明書に、ほかの国の部隊には軍事技術の分だけ多く効くこと、船には効かないこと、海底都市は海になることを書き足しました。
version1.65 (2026-09-27)
アーカイブ: hakoS-1.65-20260927.tar.gz / SHA256(先頭16文字): 58cc316871723e62
version1.64.3 からの変更。dataVersion は 33 のままですが、帳簿に 1.65 の新しい仕組み(包囲網・長い約束・遠洋漁業・養殖場など)の欄が増え、漁船の帳簿の形が変わります。当てる前に稼働中の data/ を丸ごと控えてください。当てた後の最初のターン更新で 1 度だけ起きることと、1.64.3 に戻すときの注意は、末尾の「管理人向け」にまとめました。
包囲網
- 一強の覇者が現れたときだけ、ほかの国が「包囲網」を組むようにしました。覇者は、中立地を含む世界のすべての陸地の 3 割以上を持ち、かつ 2 位の国の陸地の 2 倍以上を持つ国です。覇者が戦争中の相手から陸地を取る(1 マス 1 点)か、自分から宣戦する(1 回 10 点)と点がたまり、点は 48 ターンかけて 0 に減ります。覇者の点が 30 点以上になると包囲網ができ、覇者でなくなると解けます(点が減っただけでは解けません)。今の本番の世界(ターン 97 の写し)では、いちばん大きい国でも世界の陸地の 3.5% で、覇者はいません。
- AI の国(ルールの AI と LLM の国)は自分で入ります。人間の国には誘いの知らせが届き、命令 134(包囲網に加わる)で入り、命令 135(包囲網から抜ける)で抜けます。どちらも費用 0 で、ターンを使いません。覇者と同じ陣営の国と、覇者と友好の条約がある国は入れません。軍事の陣営の決まりが包囲網より先です。
- 包囲網の国と覇者の間では取引が止まり、互いの港に入れません。覇者が包囲網の国に宣戦すると、包囲網のほかの国(人間の国も)がその戦争に加わります(覇者と同じ陣営の国は加わりません)。包囲網の国力(人口 ÷ 100 + 陸軍の強さ)の合計が覇者を上回ると、AI の国は一緒に宣戦し、人間の国には知らせが届きます(宣戦するかは自分で決めます)。次の共同の宣戦は、覇者との戦争が全部終わり、前の共同の宣戦から 24 ターンたってからです。
- 包囲網の守りの参戦と共同の宣戦は、受ける宣戦の上限(3 か国)に数えません。ふつうの宣戦は今までどおり 3 か国までです。
- 包囲網があるときだけ、トップの陣営の表の下と、観光・開発画面の国の表に 1 行を出します。外交記録に、包囲網の結成・加入・脱退・解散・参戦の 5 つの種類を足しました。数は設定一覧の「包囲網」にあります。
民間の長い約束
- 民間どうしが、民間の船で運ぶ長い供給の約束を自動で結ぶようにしました。2 ターン続けて品物が足りない国と、2 ターン続けて 16 単位以上余っている国の間で結びます。値段は結んだときの取引の値段のまま変わらず、代金は届いたときに払われます。1 回の量は船 1 隻に積める量と、買い手の民間が今の現金で全部の回の代金を払える量までで、航路の往復のターン数(4 ターン以上)おきに 2 回届けます。約束の便はふつうの取引より先に出ます。船が詰まっていて今出航できない相手とは、そのターンは結びません。
- 各回の期限(間隔に 3 ターンの猶予を足したもの)までに届かなければ、届けられなかった側(ふつうは売り手)が残りの代金の 1 割を違約金として相手の民間に払い、約束はそこで終わります。違約は公開の外交記録に残ります。戦争・禁輸・港の閉鎖などでふつうの取引ができなくなったときは、違約金なしで止まります。約束の荷が海賊に奪われたときは違約にせず、買い手は届いた分だけを払い、約束は続きます。
- 開発画面の「貿易と港」で、自国の約束の一覧を見て、結んでよい相手(国ごと)と品物(品物ごと)を選べます。最初はすべて許しています。変えても、結んだ後の約束は終わりまで続きます。約束の一覧は「すべての取引」の頁でも見られます。続いている約束は世界で 32 件、1 国 3 件まで、1 ターンに新しく結ぶのは 4 件までです。国どうしの定期輸送(1.64)は今までどおりです。
競売
- 競売を、国庫の品物を出す形で再び動かしました。競売に出品(命令 92)では、国庫の品物(8 種類の資源と食料)・量・最低の値段(全体の額)・期間(3〜24 ターン)を決め、実行したときにその量を国庫から預かります。競売に入札(命令 93)では、額と運賃の分(額の 1 割)を国庫から預かり、ほかの国がもっと高く入れると、その場で返ります。上乗せは前の最高額の 5% 以上(少なくとも 1 億円)です。どちらの命令もターンを使わず、開発画面の「貿易と港」の競売の欄から入れます。出品は取り消せません。
- 締め切りのターンに、いちばん高い額の国が落札します。締め切りまで 2 ターンを切ってから入札があると、締め切りを延ばします(6 回まで)。品物は国どうしの外交輸送と同じく陸路か民間の船で運び、届いたら代金を売り手へ渡します。運賃は買い手が払い、使わなかった分は買い手へ返ります。運ぶ途中で海賊に荷の一部を奪われたときは、届いた分だけの代金になります。運べなかったときは、品物は売り手へ(沈んだ分を除く)、代金と運賃の残りは買い手へ返ります。入札が無ければ品物を売り手へ戻します。
- 戦争中・戦争の準備中・禁輸の相手や、港を閉じている相手には入札できません。1 国が同時に出せるのは 3 件、世界では 40 件までです。受け付け中の出品は、トップにも締め切りの近い順に 12 件まで出します。
- AI の国(ルールの AI と LLM の国)も、余っている品物を出品し、足りない品物に入札します。LLM の国は命令 92・93 を自分で出すこともできます。前の形の競売(港の倉庫の中身を出すもの)は使いません。
漁業
- 近くの漁船が、母港と 3〜4 マス沖を行き来するようにしました。漁船は民間の小型商船と同じ船体で、1 港に 1 隻です。沖で漁をするのは最長 5 ターン、1 ターンに 10、積める量は 50 で、魚は母港に着いたときに自国原産の食料として民間の在庫に入ります。行き来には民間の燃料を使います。戦争中も近くの漁船は攻撃されません。
- 地図の漁場のマス(止まった漁船のマス)をなくしました。魚の豊かさと残りは港ごとに覚えます。海に出ている漁船の上は、ほかの船が通り抜けられます。港にいる漁船は港の中で待ち、地図のマスを使いません(地図に出るのは海に出ているときだけです)。港を選ぶと、その港の漁船の行き帰りと魚の残りが分かります。
- 民間が養殖場を造るようにしました。自国の陸に接した浅瀬(開けた海だけ。港・軍港のまわり 2 マスと、川・細い水路を除く)に、もうかる見込みのときだけ造ります。船は通れませんが、陸軍や海兵は浅瀬と同じように上陸できます。獲れる量は毎ターン 4 で減りません。建造費 40 億円、毎ターンの費用 1 億円(払えないターンは獲れません)、1 国 3 か所までです。まわりの陸の持ち主が変わっても、造った国の民間のものとして残ります。埋め立てなどで浅瀬でなくなったときはなくなり、その国に知らせます。
- 漁船が漁をするマスと養殖場は、まわりの水路を分断する所には置きません。後から地形が変わって養殖場がそういう所になったときは、その養殖場をなくして知らせます。
- 遠洋漁業を足しました。海流の潮目(暖流と寒流が近くにある所)と寒流沿いの開けた海に、どの国も使える共有の漁場ができます(世界で 16 か所まで)。魚は取るほど減り、毎ターン満杯の 5% が戻ります。残りが 2 割を下回ると休みになってどの国も取れず、5 割まで戻ると開きます。遠洋漁船は民間がもうかる見込みのときに自動で造り(建造費 200 億円、1 国 4 隻・世界 32 隻まで)、港と漁場を行き来して 1 ターンに 30 取り、300 まで積んで帰ります。燃料を使い、戦争中の国の軍艦や中立の海賊船に襲われることがあります。禁輸は漁に関わりません。
- 開発画面の地図の選び方に「漁場表示」を足し、潮目・寒流沿い・休みの漁場を色で出します。開発画面の民間の欄に、自国の遠洋漁船と世界の漁場の表を足しました。数は設定一覧の「遠洋漁業」などにあります。
船と港
- 中立の海賊船が、民間と国の商船(遠洋漁船を含む)も、遊覧船と同じ決まりで襲うようにしました。まわりに海賊船がいると、くじで沈められるか、積み荷の一部を奪われます。外交の荷は、片道の輸送(援助・競売)の荷だけが奪われ、交換と定期輸送の荷は奪われません。
- 狭い港が船でふさがらないようにしました。荷を待つ民間の商船は、入口の水のマスが 1 つしかない港では入口に止まらず、港から 2 マス以内の空いた水のマスで待ちます。漁船は港の中で待ちます(「漁業」の節)。
- 母港へ帰る道が 6 ターン見つからない民間の商船は、2 マス以内の空いた自国の港へ向かい、無ければ荷を下ろした港を仮の母港にします。荷を積んだままの船は、近くの自国か港を開いている国の港に荷を預けます(預けた荷は持ち主の民間の荷のままです)。仮の母港にするのは、その船のほかに空いた水のマスがある港だけです。仮の母港の船は 6 ターンおきに母港への道を探し直します。
- 遊覧船は、目的地に近づけるマスが無いときだけ回り道を探し、行き先は水でつながる港から、着くまでの短い港を先に選びます。出入り口の水のマスが 1 つしかない港には遊覧船を造りません。
- 軍艦は、軍港の隣のうち、外の海(川を含む)につながる水にだけ造れます。外の海につながらない入り江では、断った理由を出します。CPU の国が造る場所も同じです。
- 地図の漁船・遊覧船・商船の絵を替え、大型商船・遠洋漁船・養殖場の絵を足しました。
CPU の国
- CPU の国(ルールの AI と、LLM の国の代打ち)が、地図の資源を開発するようにしました。自国のマスと、領土に接する持ち主のないマスの埋蔵に採掘場を建てます。資源が足りていても、お金と働き手に余りがあれば、3 ターンに 1 回まで採掘場を建てるか鉱山・油田の段階を上げます(ほかにすることが無いターンは間隔を待ちません)。中立地へ広がるときは、陸の埋蔵に近い所を選びます。
- CPU の国は、食料が人口と兵の食べる量の 30 ターン分を超えている間は畑を増やさず、鉱山と工場(精製所・軍需工場を含む)が、畑と町の人の農業より先に働き手を取ります。30 ターン分以下に戻れば、今までの順番に戻ります。人間の国の決まりと操作は変わりません。
- CPU の国が、資金繰りで休んでいたターンに代わりの手を選ぶようにしました。持ち主のない陸へ広げる、隣の国の平地・農場・工場・荒地を建設・増設・整地の命令で取る(陣営・友好条約・商業同盟・包囲網の仲間と、仲の良い国からは取りません)、海の向こうの持ち主のない陸へ部隊を船で送る、港が少なければ港を造る、部隊のいない国境の平地を森にする、の順に見ます。
- CPU の国が、国境を備えるようにしました。隣の国に取られうる国境のマス(平地・農場・工場・荒地)に部隊を置いてそこに残し、兵が足りなければ兵站基地と部隊を用意します。部隊のいない国境には、平地・農場・工場を新しく作りません。
- 宣戦のやり取りが無いあいだも、CPU の国が最低限の守りを持つようにしました。国境ごとに、国境のマスから 2 マス以内に部隊を 1 つ以上・強さの合計 50(5,000 人)以上置き、首都から 2 マス以内にも、国境とは別に強さ 50 以上を置きます。足りなければ兵站基地に部隊を置き、基地が無ければ建て、予備兵が足りなければ今の決まりの範囲で大きい町から徴兵します。宣戦されたら、1.64.3 の宣戦された国の備えに任せます。
- CPU の国が計画を立てるとき、予備兵と地図の上の自国の部隊を兵の数に入れるようにしました(今までは 0 と見ていました)。兵が多すぎるかの確かめと、食料の減りの見積りに、兵の食べる分が入ります。
- CPU の国が仲の良い国(土地を取らない・国境を備えない相手)を見分けるのは、受諾済みで期限内の公開の友好条約だけにしました。
陣営の援助と外交の記録
- 遠い陣営の仲間へ、自国の軍艦で予備兵を送れるようにしました。外交援助(命令 123)の品目に「予備兵」を足しました。送れるのは同じ正式な陣営の仲間だけです。陸で隣り合う国へは陸路で送り、遠い国へは、自国の軍港の隣にいる空の自国軍艦に積み、艦隊の移動の命令で仲間の港の隣へ向かわせると自動で降ろします。1 箱は 100 人で、1 回は 200 箱(2 万人)までです。沈んだときは 3 割が送り手に戻り、残りは失われます。届く前に陣営が分かれたり戦争・禁輸になったりしたときは、積む前なら送り手へ戻し、航海中なら港へ引き返します。届いた予備兵の経験は人数で平均します。
- 物の援助(命令 123)の海の運びに、送り手の港まで海路 6 マス以内にいる空いた民間の商船も雇えるようにしました(呼び寄せの追加の運賃は 1 マス 5 億円)。
- CPU の国もこの形で送ります。陸で隣り合わない、宣戦された仲間へは自国の軍艦で予備兵を送り(自国の守りに要る兵と軍艦は残します)、物の援助では広げた範囲の船を雇います。陸でつながれば陸路に切り替えます。
- 外交援助(命令 123)と交換(申込 124・承諾 125)で、送る国と受け取る国の持ち主だけに見える記録に、相手・物・量・着く見込みを書くようにしました(3 言語)。公開の記録は今のままです。
画面
- 開発画面と観光の国の表を、表の形にしました。「国の状況」と「資源在庫」は見出しの行と値の行に並べ、研究の段階は「0/5(次 100億円)」のように短く出します。観光の「市場需要・港」と開発画面の「貿易と港」のタブは、市場・家計向けの単価・港と関所・働き手と工場の 4 つの表にし、市場の価格の表は品目を列にしました。説明の文(見積の注意・端数の扱い・価格が変わる理由など)は設定一覧へ移しました。関税率が重なって出ていた所、「。。」、「遊休(idle)」、石油の量と単位の間の空白も直しました。
- トップの国ごとの資源の表を 5 列 × 2 段(上: 資金・食料・木材・石材・鉱石、下: 石油・燃料・工業品・弾薬・鋼鉄)にし、表の下の「資源在庫:」の行を外しました。
- 開発画面の欄の置き場所の隣に「国の表の形」を足し、「表(おすすめ)」と「今までどおり」から選べるようにしました。選んだ形はブラウザが覚え、開発画面・観光・トップの表に効きます。
- 開発画面の「記録と交流」のタブからコメント更新と観光者通信を出し、開発画面の下(タブの外)に置きました。タブの名前は「記録」になりました。
そのほか
- 陸の開発で、船は「隣の自国の領土」に数えません。 整地・埋め立て・掘削・建設(兵站基地などを含む)で、自国の領土に接しているかを数えるとき、自国の商船・軍艦のいる海のマスを数えないようにしました(前は、商船が隣にいるだけで陸に接した中立の荒地を開発できました)。沖合の埋蔵(油田の候補の海)は、今までどおり隣に自国の船がいれば建設できます。
- 計画都市建設・産業施設拡張・遷都の記録を出します。 前は、成功しても中止しても記録が 1 行も出ませんでした。成功は整地などと同じ「〜で計画都市建設を行いました」、中止は資金不足か、理由(予定地が自国の平地ではない、石材・木材・工業品のどれかが足りない など)を書きます。
- 新しいシーズンの国は、建国した国と同じく軽工業で始まるようにしました(今までは先端工業で始まっていました)。
- 公開の地図で、人口の順位が変わった国の町の名前が抜けることがあったのを直しました。
- 観光者通信で、前に入れた名前をブラウザが覚えて入れ直すと、ブラウザによっては書き込むたびに名前が文字化けしていったのを直しました。文字化けしたまま保存された名前は、戻せるものだけ 1 度だけ元に戻します(「管理人向け」)。
- 設定一覧の言い回しを直しました(海流の表の 1/0 を「する/しない」などの言葉に、資源の偏りの注記が自分を指していた所、工業政策の「既存国」の言い方など)。説明書(3 言語)と設定一覧に、1.65 の新しい仕組みの段を足しました。
- 説明書(3 言語)を、元になった箱庭の説明書と比べて書き足しました。hakoN の説明書にある陸の軍隊と開発の決まり(開発の細かい決まり・部隊の置き方と動かし方と育ち方)と、「箱庭諸島 海戦」の説明書にある軍艦の決まり(12.3 の終わりの「艦種ごとの役割と動き方」: 狙える相手・浅瀬と港・動く順・潜水艦・外れた弾・機雷・乗船と上陸・海賊船と海の怪獣など)です。書き足した決まりは、今のコードと照らして確かめました。港を通り抜けられる軍艦は駆逐艦だけであること、弾で傷つく海の怪獣はクジラだけで、巡航と停船の艦は撃たないことを、説明書と設定一覧に合わせて直しました。
速さ
- ターン更新を軽くしました。船の道探し、公開ログの頁の組み立て(記録のかたまりを取っておいて使い回す)、世界の保存と読み込み、AI の準備、国ごとの処理、起動のときの部品の読み込み、公開の地図 3 言語の書き出しの手間を減らしました。どの直しも、本番の写しで直す前と出来上がりが同じことを確かめています(帳簿の数の書き方が変わる所は「管理人向け」)。設定一覧と統計の頁を開くときの手間も減らしました。
- 本番の写し(ターン 95→96)を手元で交互に 3 回ずつ回した中央値で、ターン更新を起こしたアクセス 1 回の CPU 時間は 1.64.2 の 3.85 秒から 2.42 秒(約 37% 減)、ターン更新の本体は 3.31 秒から 1.91 秒、記録に出る負荷計測は 2.78 秒から 1.76 秒になりました。測ったのは計算量の直しを終えた時点のコードで、その後の点検の直しの後には測り直していません。サーバや盤面によって時間は変わります。
管理人向け
- 当て方はふつうの更新と同じです(UPDATE.md)。dataVersion が変わらないので、Python の道具で当てるときの
--data-backup-takenは要りません。ただし 1.64.3 に戻すときに data/ の控えが要るので、メンテナンスモードを入れてから、稼働中の data/ を丸ごと控えてください(UPDATE.md「設置者:更新する前に」)。 - 1.65 では、版ごとの一度きりの配布と補充をもう一度は行いません(ユーザ決定)。民間への現金の配布、民間の在庫と国庫の補充、燃料の配布、中立の山への石炭の追加は、1.64 を当てたときに data/ に書いた印(
fuel-grant.1.64など)をそのまま見ます。産業が燃料を使い始めたターン(使う量を 10 ターンかけて満額にする起点)も 1.64 の印のままで、数え直しません。1.64.3 で 1 度だけ行った海兵の戻しと、陣営への宣戦の知らせも、もう一度は行いません。 - 当てた後の最初のターン更新で 1 度だけ、港の隣にいた近くの漁船を、母港の中で待つ行き来の漁船に置き換えます。その港の漁場の記録(豊かさ・残り)は、その港の沖の魚に引き継ぎます。沖に漁をするマスが 1 つも無い港の漁船はやめ、造った費用(100 億円)を民間に返して、その国の近況に出します。
- 同じく最初のターン更新で 1 度だけ、観光者通信で文字化けしたまま保存された名前のうち、戻せるものを元に戻します(本番の写しのターン 97 では 7 件のうち 2 件。途中で切れているものは触りません)。印は
data/lbbs-name.1.65です。同じく 1 度だけ、中立の森の値が 0 のままのものを補います(1.64 と同じ処理。印はdata/forest-value.1.65)。 - 船の道の表(
data/civil-sea-routes.json)は、中の名札(どの条件で作った表かの印)の形が新しくなり、最初のターン更新の終わりに新しい名札で書き直します。1.64.3 の表は、読み替えて使えるときは使い、使えなければ道を探し直します。どちらでも手当ては要りません。 - data/ に 2 つのファイルが新しくできます。
log-html-parts.datは公開ログの頁(最近の出来事)の本文を記録のファイルごとのかたまりで取っておくもの、civil-sea-seen.jsonは船の道探しの覚え書き(ターン更新の終わりに書き、次のターン更新の初めに読む)です。どちらも無くても動く控えで、消しても作り直されます。持ち主だけが読める形で書き、本番の写しでそれぞれ 0.2〜0.4MB ほどです。 - 世界のファイル(
data/hakojima.dat)の物流の帳簿(LOGISTICS1 の行)で、前のターンの取引の記録(出し手・受け手・量)と資源の帳簿の記録(国)の数が、"1"のような文字の形から1のような数の形で書かれるようになります。値は同じで、遊びの動きは変わりません。1.64.3 と 1.65 の data/ を見比べると、この違いが出ます。 - 管理人室の「公開地図を作り直す」で、海流と川の表も作るようにしました。新しく設置した直後でも、最初のターン更新を待たずに海流の矢印が出ます(作れなかったときは管理人の記録に
RIVER_SKIPを残し、次のターン更新で作ります)。 - 1.64.3 に戻すときは、コード一式と、当てる前に控えた data/ の両方を戻してください。1.65 で進めた data/ は、漁船の帳簿の形などが変わるため、1.64.3 では読めない見込みです(1.64.3 のコードで 1.65 の data/ を読む試しはしていません)。控えに戻すと、1.65 を当ててから進んだターンの分はなくなります。
分かっている残り
- 海外の一部の接続元から開発画面に入れない件があります。サーバ側の制限によるもので、1.65 の変更とは関係ありません。調べています。
version1.64.3 (2026-09-26)
アーカイブ: hakoS-1.64.3-20260926.tar.gz / SHA256(先頭16文字): 3e3ced86452a133d
version1.64.2 からの変更。保存形式は変えていません。dataVersion は 33 のままです。
- ターン更新が止まることがあったのを直しました。開戦している国が世界から弾薬を 1 ターンに 5 以上買うと、保存の前の確かめで止まっていました。
- 宣戦された CPU の国(ルールの AI と、LLM の国の代打ち)が、開戦前の 5 ターンから備えるようにしました。相手と接する国境・相手が船で来られる岸・首都に兵を置き、前線に兵站基地を置いて軍団を付け替え、防衛施設を建て、足りなければ徴兵し、開戦前から弾薬と燃料を先に買います。開戦後は、自国の土地や首都の隣に来た敵の兵を、勝てる見込みがあれば攻めます。ミサイル基地を建て、自国に入った敵の兵へ撃つこともあります。
- 陣営に入っている CPU の国は、陣営共有地図と同じ所を見て判断するようにしました。仲間が宣戦されたら、攻めてきた国へ宣戦して加わり(宣戦の上限の中で)、攻めてきた国と接していれば国境を守り、海兵と軍艦を送り、物の援助を海でも送ります。
- 陣営の仲間が宣戦されたとき、陣営の全員にその知らせが届くようにしました。1.64.3 を当てる前からの宣戦も、最初のターンに 1 度だけ知らせます。
- 外交のある世界でも、予備兵援助(命令 50)を、同じ陣営で陸で隣り合う国へは送れるようにしました(すぐ届きます)。陸で隣り合わない国へは、まだ送れません。
- 船は、兵のいるマスに入らず、そのマスには造られません。兵は、自分の動きでは船のマスに入りません(乗るのは乗船の命令だけ)。民間の船が動くときに、同じマスの兵を消していたのを直しました。
- ターン 95 に民間の商船と重なって消えた海兵(1 か国、2 隊、3 万 2 千人)を、1.64.3 を当てた最初のターンに 1 度だけ戻します。
- 艦隊の一括命令が、同じ艦隊に民間の商船や遊覧船がいると止まっていたのを直しました。陸を囲んで取るときに、船のマスを数えないようにしました。
- 町の火災で、マスが荒地にならず、人口が減るようにしました(村・町・都市・大都市は半分、ニュータウンと現代都市は 3 割)。森・記念碑の隣と首都で起きないのは今までどおりです。工場と倉庫の火災は今までどおりです。
- 現代都市の最大人口を 3 万人に、海底都市の最大人口を 1 万 5 千人にしました。
- 宣戦の命令のときに、管理の記録に警告が出ていたのを止めました。
version1.64.2 (2026-09-25)
アーカイブ: hakoS-1.64.2-20260925.tar.gz / SHA256(先頭16文字): d5423dde9aeb31b0
version1.64.1 からの変更。保存形式は変えていません。dataVersion は 33 のままです。
- ターン更新が止まることがあったのを直しました。民間の商船が他国の岸の隣に数ターン止まっていると、まわりを囲む国の持ち物に書き換わり、保存の前の確かめで止まっていました。船のいるマスは、まわりを他国の土地に囲まれても取られません(軍艦・国の商船・遊覧船も同じです)。
- 商業同盟の名前を日本語で入れると、「貿易と港」のタブと開発画面のコマンド入力の欄が文字化けしていたのを直しました。
- 川と海流の決まりを変えました。川は、まわり 2 マスの範囲の水の多さで決めます(川の合流点や細い水路が川として扱われます)。海流は、緯度の帯ごとの流れ(熱帯と寒帯は西向き、温帯は東向き、赤道のすぐ北に東向きの反流)と、大陸の縁で曲がる暖流(東岸を極の向きへ)と寒流(西岸を赤道の向きへ)の形にしました。船は流れに沿って進むと速く、逆らうと遅くなります。地図の海流の矢印は 6 方向で、暖流を赤、寒流を青で描きます。
- 民間は、遊覧船と漁船をもうかる見込みのときだけ造るようにしました。遊覧船は世界に多いほど寄港の収入が下がり、20 ターンで元が取れるときだけ造ります。漁船も 20 ターンの獲れ高の見込みで決めます。
- 開発画面の「直近の取引」と「輸送中」には、自国が売り手か買い手の取引だけを出します(直近は新しい順に 10 件)。世界の民間の取引は、新しい頁「すべての取引」で見られます(ページの上の案内の行から開けます)。
- 開発画面の欄の置き場所から「地図の右」をなくしました(自動・切り替え・下の 3 つ)。「地図の右」を選んでいた場合は自動になります。
- 開発画面と観光の画面の国の表で、雇用状況の列だけがはみ出していたのを直しました。
- 漁船のいるマスの印の絵が出ず、壊れた絵が表示されていたのを直しました。
- ターン更新と画面の表示を軽くしました。帳簿と統計の読み込みを速くし、船の道探しに回数の上限を設け、地形が変わっていなければ覚えた道を使います。開発画面の民間の欄は、ターン更新が保存した海の道の表を読むだけにしました。
version1.64.1 (2026-09-25)
アーカイブ: hakoS-1.64.1-20260925.tar.gz / SHA256(先頭16文字): 93c3e7898a4a8538
version1.64 からの変更。ゲームの決まりと保存形式は変えていません。dataVersion は 33 のままです。
- 開発画面のコマンドを選ぶ行から、商業同盟の番号と名前の欄を外しました。商業同盟の設立・加盟・脱退は「貿易と港」のタブの欄から行います。コマンドの一覧からも「商業加盟」の種類を外しました。
- コマンドの一覧で長かった 2 つの項目の費用の書き方を短くしました(鉱山・油田の段階上げは「段階×100億円ほか」、発電所建設・増設は「建設300億円ほか」)。費用の内訳は、コマンドを選んだときの説明に書いてあります(発電所の説明に建設と増設の費用を足しました)。
- この 2 つで、コマンドの欄が横に広がり、地図の右側が画面の外にはみ出して見えなくなるのを直しました(画面の幅が 1440 あれば、地図の右端まで収まります)。
- トップのシーズン欄にあった上限ターンの採点の説明(次のシーズンから経済資産で数えること・経済資産の記録開始のターン)を、設定一覧のシーズンの説明の後ろに移しました。
- トップ画面と開発画面から、設定一覧や説明書に置けばよい記述と、開発の事情を書いた言い回しを外しました。トップのランキングの見出しを日本語にし、「新開発モード(β)」を「新開発モード」にしました。開発画面では、民間への回し方の「今までの量」を「決めた量を回す」に、国の買い戻しの「今まで(手元に残す量まで)」を「手元に残す量まで」にし、コマンドの説明から古い数量の書き方などを外しました。船級の表は、新しく造れない互換商船を、持っている国にだけ出します。
- 開発画面と観光の画面の外交記録の欄から、「記録開始ターン」と「外交記録はまだ開始されていません」の表示を外しました。出来事が無いときは「記録された出来事はありません」だけを出します。
- 設定一覧の説明から、仮の印・中の仕組みの名前や単位・版の経緯を外し、今の決まりだけを書くようにしました(3 言語)。止めている仕組みには「(この設置では使いません)」と出します。陸地の埋め立ての方針も、設定の語ではなく文で出します。
- 同盟・商業同盟の名前を受け付ける処理を、とても長い名前(空白の続く文字列)が送られても重くならないようにしました。名前の前後の空白を消す前に長さを確かめます。ブラウザのクッキーと案内役の計画の行の読み取りも同じように直しました。
- 版の番号が 1.64.1 のような小さな直しで変わっても、1.64 で行った一度きりの配布と読み替え(燃料・民間・在庫の配布、中立の山への炭坑の追加、森の値など)はもう一度は行わないようにしました。
- 保存形式が変わる更新の手順書(UPDATE.md)で、「最初の読み込みで dataVersion が書き換わる」としていた説明を直しました。書き換わるのは最初に保存されるとき(ふつうは最初のターン更新)で、それまで管理人室には版が一致しないという警告が出ます。
version1.64 (2026-09-25)
アーカイブ: hakoS-1.64-20260925.tar.gz / SHA256(先頭16文字): eb7e2f695f2ea264
version1.63.1 からの変更。保存形式の dataVersion は 33 になります(資源の位置 7 をウランから鋼鉄へ、読み込むときに一度だけ書き換えます)。当てる前に稼働中の data/ を丸ごと控えてください。33 に書き換わったデータは 1.63.1 では読めないため、1.63.1 に戻すときはコードと控えた data/ の両方を戻します(手順は UPDATE.md の「保存形式が変わる更新」)。
経済と貿易
- 民間の国際貿易に国ごとの資源価格を導入しました。納品して精算した輸出入で次のターンの価格が変わり、取引がなければ世界相場へ近づきます。市場には世界の基準価格と自国の貿易価格を並べて表示します。国庫・家計の価格と輸送中の契約単価は従来どおりです。
- 民間の買い付けでは、同じ売り手・資源に複数の買い手がいる場合、高い値を付けた買い手を優先します。船・港・陸路の容量は資源別のコンテナ換算で数え、陸路の運賃を民間から自国の国庫へ支払います。
- 民間の目標在庫を最近の消費の4ターン分にし、大型船を使えない場合は小型船・陸路も試します。AI と「必要に合わせる」を選んだ人間の国は、国庫が民間から買い戻す資源を増やし、食料を20ターン分未満から補います。食料を民間へ売るのは24ターン分を超えた分だけです。
- 家計への工業品・食料・燃料の販売では自国産と出どころ不明の古い荷を先に使い、輸入品が残りやすくなりました。市場の表示も実際の販売単価に合わせました。
- 商業同盟を設立・加盟・脱退できるようにしました。加盟国どうしは友好国限定の港を使え、中継料が半額になります。戦争・禁輸・港の閉鎖は優先されます。
- 資源の「ウラン」を「鋼鉄」に替えました。読み込むときに一度だけ保存を書き換えます(dataVersion 33)。国庫・民間・運送中・保税・倉庫・地図の積み荷にあったウランは、1 につき燃料 3 に換えます。返事待ちの交換の依頼で欲しい品に入っているウランも、同じく燃料 3 に換えます。弾道ミサイルの材料は弾薬 4+燃料 3 になります。ウラン鉱山は、精製の技術を得るまで何も産出しません。
- 農業・工業・商業が、出来高に応じて燃料を使うようにしました。燃料が足りないと、その産業の出来高が足りない割合だけ減ります(止まりはしません)。使う量は 10 ターンかけて満額になります。版が上がった最初のターンに人間の国へ燃料を 20 ターン分配り、中立の山に小さな炭坑の埋蔵を足します。
- 鉱山・油田の段階を上げる命令(128)を足しました。鉱山・油田は枯れませんが、落盤で段階が 1 つ下がることがあります。
- 国庫の食料は、自国で作った量の 18 倍を超えた分が毎ターン 0.5% 腐ります。
- 国どうしの定期輸送(命令 129〜131)を足しました。決まった品物を決まった間隔で送る約束で、間隔は陸路の日数か、商船が海路を進む日数から決まります。約束から 36 ターンは取り消せません。受ける港ごとに本数の上限があります(普通の港 10、大規模港 20)。
- 民間が世界市場から買うのは、最近の消費から出した分だけにしました。持ちたい量の下限の分は、ほかの国の売り手からだけ買います。
- 地質調査は、山では新しい埋蔵を見つけなくなりました。荒地では石油の埋蔵が見つかります(海か浅瀬から 2 マス以内は 20%、それ以外は 10%)。荒地に建てた油田は「油田」として陸の絵で出します。沖合の埋蔵には、隣に自国の船か自国のマス(建てた油田を含む)があれば油田を建てられます。
- 石材・鉱石・石油の産出は、気候帯で変わらなくなりました(地質で決まるため)。気候帯で変わるのは食料と木材だけです。
- 世界市場から来た品物の出どころを、国として扱わないようにしました。AI の記録と外交輸送の禁輸の判定で、世界市場を国と取り違えていた不具合です。
- 鉄鉱石の鉱山と大鉱山は、鋼鉄を直接産出するようにしました。自国の炭坑の隣にある鉄鉱石の鉱山は、鋼鉄が 5 割増しになります。露天鉱脈は鉱石(レアアースの意味)を今までの 2 倍の倍率で産出します。軍需工場の材料は工業品 1+鋼鉄 2 になりました。
- 国の工業の方式(命令 132)を選べるようにしました。軽工業(食料 2→工業品 1)・重工業(鋼鉄 2→工業品 1+弾薬 1)・先端工業(鉱石 2→工業品 1)の 3 つで、方式ごとに工場の力と燃料の使う量が違います。重工業は生産の研究 1 段階、先端工業は 3 段階で選べます。今ある国は先端工業から、新しい国は軽工業から始まります。
- 発電所(命令 133)を足しました。自国の平地に建て、段階を 10 まで上げられます。国の発電所の段階の合計 1 つにつき工業の出来高が 4% 増え、合計 20 段階(+80%)まで効きます。材料の量は変わらず、出来高だけが増えます。段階 1 つにつき毎ターン燃料を使い、足りないと効き目が減ります。国の状況の「発電規模」に 1 段階 4 万 kW で出し、段階 3(12 万 kW)以上は大型発電所の絵になります。
- ウラン鉱山は、生産の研究が 3 段階になった国で燃料を産出します(炭坑の 5 倍、1 回の採掘は 100 まで)。
- 農業・工業・商業の出来高に、それぞれで働く人の割合による効率を掛けるようにしました。今のふつうの割り振り(働く人のうち農業 73%・工業 26%・商業 0%)で 100% になり、そこから偏らせるほど上がります(最大 +35%、下限 90%)。
- 家計が工業品を買う量を、人口と豊かさに応じて決めるようにしました。工業化した国の民間の売上が増えます。
- 農業・工業・商業が使う燃料の量は、本番の写しで 10 ターン回して確かめて決めました。出来高の値打ちに対して、農業 45%・先端工業 75%・軽工業 45%・重工業 150%・商業 30% を、燃料の基準価格で割った量です。最初のターンに配る燃料(20 ターン分)も、この量に合わせて増えます。
- 定期輸送の申込の画面で、相手と受取港を選ぶと、所要ターン(間隔)の見積もりを見られるようにしました。申込を受け付けるときと同じ計算で、陸路か標準の商船の海路かも出します。
民間
- 新しい人間の国は、国庫の余りを民間へ回す設定が既定になります。開発画面で従来の量や停止に切り替えられます。
- 中立の金融窓口で、民間が預入・引出し・借入・返済を行うようにしました(ターン末に自動。国の持ち主が手で指示する命令はありません)。貸付は預金の半分までで、引出し用の現金が足りない分は順番待ちになります。利子・期限・返済の状況を自国画面に表示します。
- 民間の遊覧船が自動で建造・運航し、新しい寄港で観光収入を得ます。近くの中立海賊による襲撃と損失も起こります。民間漁船は自動で建造され、漁獲・休漁・回復と港の漁業状態を確認できます。
- 旧倉庫の建設・預入・引出し命令を停止しました。港が壊れたときは預かり荷の損失を記録し、港の所有国が変わっても荷主の権利を保ちます。
- 中立の金融窓口への民間の預け入れは、ターン末に現金が 10,000 億円を超えた分だけにしました。現金が足りないときは自分の預金を先に引き出し、足りない分だけ借ります。手元に残す元手は、前の 4 ターンの支出の合計と 2,000 億円の大きい方です。
- 借入の審査で、収入・担保(民間の在庫)・これまでの返済を見るようにしました。期限に返せなかった国は 12 ターン借りられません。人間の国の借入の命令も同じ審査を受け、断られた理由を金融の欄に出します。
- 民間の銀行口座への手の指示(預金操作 114・借入返済 115)を止めました。前から計画に入っていても実行されません。開発画面の金融の欄は、預金・借入・利子・期限・配当の様子の表示だけになります。
海軍
- 軍艦一隻ごとの一時待機・六方向の操艦と、艦隊の旗艦指定を追加しました。造船時に所属艦隊を選べ、造船には艦種ごとの資金と工業品が必要です。
- 巡洋艦・戦艦・航空母艦は射程内の陸の怪獣、交戦国の軍事施設・町・農場・工場を攻撃できます。自国・交戦国の機雷も一斉攻撃で除去できます。軍艦は命中・撃沈で経験を得て、最大耐久力が増えます。
- 軍艦が沈むと、艦種と元の所有国を記した残骸が10ターン残ります。港・軍港は、所有国と交戦していない船が停止せずに通過できます。
- 軍艦の建造には、今までの工業品と同じ数の鋼鉄を使います。沈んだ軍艦の残骸を回収すると、造船に使った鋼鉄の 20% が戻ります。軍港と商船の費用は変わりません。
陸軍と技術
- 自国の山にトンネルを造れるようにしました。陸軍はトンネルを通常の陸地と同じ速さで通れます。偵察命令では指定地点の半径2を次のターン中だけ本人画面で確認できます。
- 陸軍は弾薬不足でも剣と槍で攻撃・反撃でき、弾薬を消費せず被害は4分の1になります。
- 生産・海運・軍事の技術研究を追加しました。生産技術は農業・採掘・伐採・工場の産出、海運技術は商船の速さと積載、軍事技術は陸戦・海戦・ミサイルの数値被害に反映されます。
- 固定の気候帯に応じて産出量と兵種の陸戦被害が変わります。雨・雪からの陸戦被害、雷の地点へのミサイルの誤差、軍艦の補給時の回復にも天気・気候を反映しました。
AI
- AI は土地が足りなくなると、性格と姿勢に応じて戦争か海外進出を検討します。海外進出では軍港・軍艦・占領部隊を順に準備し、部隊を船で運んで上陸します。宣戦予告中はトンネルの出口を守る候補も選びます。
- AI は弾薬の備蓄と軍需工場の増設を判断し、戦争準備の徴兵でも働き手・食料と性格別の兵力上限を守ります。陸で接する国からの交換は、損をせず必要な備蓄を残せる場合に限って応じます。
- AI が盟主の陣営は申請国の最近の公開記録を見て加盟を判断します。LLM 国の外交要約にも公開記録を渡します。
- AI は鋼鉄を軍艦と軍需工場のために残し、鉄鉱石の鉱山を育て、足りなければ買います。
地図と画面
- 公開地図を公開ログと同時に保存し、トップ・全体地図・観光で完成したターンを表示します。管理人室から公開地図を作り直せます。
- 開発地図では希望する場合だけ固定の気候帯を5色で表示します。掲示板の通常一覧は分類ごとに上下10件ずつ表示し、分類別の全件一覧へ進めます。
- 新しい世界を作る際は、既存の鉱物を残したまま、固定の気候帯によって鉱物の追加配置率を変えます。
- 観光・開発画面を開いたときの地図の中心を、その国の首都にしました。首都が無ければ最大の現代都市・ニュータウン、それも無ければ人口の最も多い地形です。
- 開発画面の地図の下の欄を、5 つのタブ(軍・民間と金融・貿易と港・外交と方針・記録と交流)にまとめました。置き場所は「自動・地図の右・地図と切り替え・地図の下」から選べ、ブラウザごとに覚えます。自動では、画面の幅が 1,700 ピクセル以上なら地図の右、狭ければ地図と切り替えになります。
- 地図の下にあった説明文を、説明書と設定一覧へ移しました。命令 91 の説明を直しました。
- 地図の上の技術研究の表を外し、国の状況の技術の欄を研究の段階の表示にしました。トップの一覧から、まだ使っていない 5 つの列を外しました。
- 観光画面の価格の表を国の状況の表の中から出して、表のすぐ下に置きました。世界の基準価格と、その国の貿易基準価格を並べて出します。相対契約の表も同じく表の下に移しました。
- 開発画面で欄を地図の右に置いたとき、欄が地図の右端に重なっていた不具合を直しました。「自動」は、地図と命令入力の実際の幅に、欄の最低幅が入るときだけ右に置きます。
- 地図の表示の切り替えに「天気表示」と「海流表示」を足しました。天気表示はマスごとの天気(晴れ・曇り・雨・雪・雷)を、海流表示は商船の速さに効く海流の向き(← →)を出します。
外交と記録
- 国の情報欄に、宣戦・陣営の離脱や解散・外交の取消や輸送失敗などの公開記録を表示します。導入前の出来事は補いません。
- 民間商船の積み下ろし・帰り荷・保税の受け渡しを、関係国だけの機密記録で確認できます。命令の結果・入力元・LLM 代打ちを非公開で記録し、終了済みシーズンの振り返り表を管理人が作れるようにしました。
- シーズンの採点では、今のシーズンは旧配点を維持し、1.64 導入後に始まるシーズンから資金15%を経済資産15%へ替えます。シーズン終了時には経済資産と交易量の首位も表彰します。
計算量と更新直後の処理
- 公開用の3言語の地図は盤面を一度走査して作るようにしました。本番写しの同一入力で行った比較では、地図の内容は変更前と一致し、ターン本体の CPU 中央値は約2.93秒から2.86秒になりました。測定値は盤面や機械で変わります。
- 1.64 の最初のターンだけ、旧倉庫の蓄えと預かり荷を国庫・民間・港へ移し、倉庫を平地に戻します。移行済みの印を保存し、次のターンに繰り返しません。
- 版更新後の最初のターンだけ、人間の国の民間現金を8,000億円まで、工業品・食料・燃料を所定の目標まで補充します。現金と在庫には版ごとの印を残し、同じ版で繰り返しません。
- 1.64 の最初のターンだけ、各国の国庫に工業品・弾薬が50未満なら50まで補充します。補充した版の印を残し、次のターンには繰り返しません。
version1.63.1 (2026-09-24)
アーカイブ: hakoS-1.63.1-20260924.tar.gz / SHA256(先頭16文字): c412fac80cc16975
version1.63 からの変更。ゲームの決まりと保存形式は変えていません。dataVersion は 32 のままです。
処理の軽量化と表示の直し(10件)
- 覚えた海の航路を、荒地・平地・町・森など陸の細かい違いだけで捨てないようにしました。海と陸の入れ替わり、港や軍港の変更は引き続き検知します。探索の上限で打ち切った失敗は次のターンへ持ち越しません。
- 海の道探しで、1マスごとにかかる手間を減らしました。探す順番と航路の決まりは同じです。
- マスの成長処理では、その国のものではなく処理も不要なマスを先に飛ばすようにしました。
- 統計ページを書き出すときに、保存した直後の集計を使い、同じ集計を作り直さないようにしました。
- 統計の表示で、同じターンの記録を重ねて読み直さないようにしました。
- 民間経済の帳簿全体を確かめる処理を、読み込み時と保存直前にまとめました。検査・管理人の点検・
HAKOS_DEEP_VALIDATE=1・$HcivilHDeepValidateの指定時には、途中の各段階でも全部を確かめます。 - トップの小さい地図は同じ世界の内容なら使い回し、
data/minimap-<指紋>.jsonに置くようにしました。通常は1ターンに1度だけ作り、新しい8個を残します。同じターンでも世界の内容が変われば作り直します。世界のロックを取れなかった読み取り・言語切替・指定ターンで停止中の世界では、控えの書き込みや整理を行いません。 - トップなどを見るだけのときは、ターン更新用の部品20本を読み込まないようにしました。開発画面では表示に必要な部品だけを明示して読み込み、言語切替で管理記録を書き換えないようにしました。未読込の関数が呼ばれた場合はその場で読み、管理人の記録に
LAZY_LOADを1行残します。 - ページの下にあった古い広告を外しました。
- 更新の見出しに文字として出ていた「\n」を取り、貼り付け用一覧の見出しのタブと改行を直しました。
本番の写し(ターン88)を使った手元の最終測定では、ターン更新の負荷計測は 3.38 → 2.68秒(21%短縮)、要求全体は 4.31 → 3.45秒、ふつうのページ1枚は 0.59 → 0.43秒(27%短縮)でした。サーバや盤面によって時間は変わります。
Discord と説明書
- 共通リンクの末尾とトップの注意文の直後に、日常の雑談・連絡のための Discord 案内を追加しました。日本語・英語・繁体字中国語に対応します。
- 3言語の説明書の通信の段落にも、同じ案内を1文追加しました。設定を確認できたときだけ表示します。ゲームの決まりの説明は変更していません。
管理人向け
- 招待先は
hako-init.cgiの$HdiscordInviteで管理します。local-init.cgiで上書きでき、$HdiscordInvite = '';とすると共通リンク・トップ・説明書の案内がすべて非表示になります。HTTPS の招待URLを指定してください。 - 1.63 に戻すときは、
data/minimap-*.jsonを消してもかまいません。無くても動く派生ファイルです。civil-sea-routes.jsonの形式は1.63でも読み込めるままです。旧版の陸の印をまとめる変換は1.63.1の読み込み時に行い、1.63へ戻した直後には必要な航路を再計算します。 - 配布・更新の道具を
1.63.1の版番号に対応させました。更新一式にdata/、手元の計測道具、報告書、引き継ぎ資料、小さい地図の控えは含めません。
version1.63 (2026-09-21)
アーカイブ: hakoS-1.63-20260921.tar.gz / SHA256(先頭16文字): cbe956abdd55789c
version1.62 からの変更。dataVersion は 32 のままです。版を戻すときの注意と新しい設定は、末尾の「管理人向け」にまとめました。
経済(民間・国庫・相場)
- 国庫が、自国の民間から必要な備蓄を自動で買うようにしました。不足する資源を目標の 6 ターン分まで買い、代金を民間へ渡します。国庫から民間へ売るときは必要な取り置きを残し、同じターンに買った資源を売り戻さないようにしました。
- 民間から買っても不足する燃料・弾薬・工業品は、世界相場の 1.25 倍で、1 資源につき 1 ターン 4 単位まで自動購入します。複数単位を買ったときに支払う代金が少なくなる計算も直しました。
- 家計に売る工業品と燃料の価格を、これまでの 0.8 倍にしました。食料と外国向けの見積もりはこれまでどおりです。
- ターンの終わりに、国庫の上限の 90% を超えた資金を自国の民間へ移すようにしました。
- 世界相場の 1 ターンの変化を、上げ下げとも 10% までに抑えるようにしました。
- 工場・精製所・軍需工場で、1 回の生産に満たない人手を次のターンへ持ち越すようにしました。工業に回る人手の小数と持ち越し分も表示します。
- 村・町・都市の農業に回る人手の係数を、それぞれ 0.65・0.35・0.1 にし、自給農業に回る人手の最低値を 45,000 人にしました。
- 精製所は油田との距離に関係なく国庫の石油を使い、命令 88 でレベル 3 まで拡張できるようにしました。AI の国も石油が 6 以上あれば、普通の平地を建設候補にします。
- 軍需工場の 1 回の生産でできる弾薬を 2 から 6 に増やし、命令 88 でレベル 3 まで拡張できるようにしました。
- 新しくできる国の弾薬と工業品を、それぞれ 50 にしました。既存の国にも、版を上げたときに 1 回だけ、50 に足りない分を補充します。
物流・海運
- 陸路で運べる量の上限を、国境の組み合わせごとに 1 ターン 16 単位から 64 単位へ広げました。
- 港がいっぱいで入れない商船を、2 マス以内の空いている別の港へ回すようにしました。行き先と同じ国の、船の大きさに合う港を使います。交易の計画にも、規模の大きい順に 2 つの港を使い、2 つ目の港での建造・出航も選べるようにしました。
- 川を下る商船は速く、さかのぼる商船は遅く進むようにしました。航海の見積もりと補給にも同じ川の流れを使います。川の流れは、地形が変わった次のターンに作り直します。
- 新しい人間の国の民間向け輸出上限を、それぞれ 3 倍、合計 36 から 108 にしました。すでに設定してある国の上限は変えません。往復の燃料を確保できない場合は、商船を建造しないようにしました。
- 商船の帰り荷を追加しました。荷を届けた先で帰りに積む品物を選びます。直行便で荷を全部届けた次のターンに 1 品目を積んで母港へ帰り、儲かる品物がなければ空荷で帰ります。出発時に帰りの見込みの半分を行きの採算に足し、行きだけでは運び賃で赤字になる直行便も出航できるようにしました(
$HcivilBackhaulEstimatePermille = 500。0 なら見込みを足しません)。
海戦(艦隊操作)
- 第 1〜16 艦隊の所属軍艦と目的地を確認し、編成・移動先・目的地の解除を計画欄から操作できるようにしました。一隻ずつ、または艦隊ごとに「通常・巡航・退治・停船」を切り替えられます。停船と目的地の解除は別の操作です。
- 一斉攻撃を追加しました。射程などの条件を満たす自国の軍艦が、指定地点を優先して攻撃します。対象は選んだ艦隊だけでなく自国の全軍艦で、異なる地点を指定した場合は計画欄で先にある命令を優先します。
- 陣営作戦本部の国別の欄で、同盟国の艦隊一覧を見られるようにしました。
- 前回のターン更新での目標・着弾・沈没の印を、地図に重ねて見られるようにしました。近況とトップの「最近の出来事」には、「すべて/戦闘だけ」の切り替えを付けました。
画面
- 開発画面の軍情報・輸出上限・AI 方針・港の設定・自動入力・友好申請への返事・コメント・都市名・計画の繰り上げ・掲示板を、画面を読み直さずに送れるようにしました。ブラウザでこの送り方が使えないときは、これまでどおり画面全体を読み直します。
- 天気が場所とターンで変わるようになりました。熱帯から寒帯までの気候帯と季節、海からの近さ、山の風下、動く低気圧・高気圧で決まります。トップと国の画面の「天気」は、その国の首都の天気です。今は表示だけで、戦闘や収入には影響しません。
- 近況は最新の 2 ターンだけを開き、それより前は見出しを押すと開くようにしました。
- コメント欄で「交易歓迎」など 5 種類の意思表示の札を付けられるようにしました。札はトップの国一覧に出ます。
- 開発画面の経済欄に、民間の活動が止まっている主な理由を 1 文で表示します。前のターンに売り買いしなかった国だけを対象に、現金・仕入れる物・売り先・価格の順で、最初に当てはまる理由を出します。
- 資金・食料・燃料が 10 ターン以内に尽きる見込みと、補給できなかった艦の隻数・艦隊を機密ログに出すようにしました。国庫の収支も、収入・食料換金・民間売買・外交・上限処理・その他の内訳と合計で見られます。
- 市場需要・港の欄と政府表明の行が、画面の幅で折り返すようにしました。
- 設定一覧に、兵種ごとの能力・移動・相性・地形の効き方の表と攻撃・反撃の計算、ミサイルの射程・災害の確率・建国直後の制限・援助の上限・ターン杯の間隔を戻しました。
トップ・統計
- トップの国一覧に、1 国を 1 行で出す「簡易表示」の切り替えを付けました。選択はブラウザが覚えます。
- 陣営表の国数・人口・兵力・面積・資産に、前のターンからの増減を矢印で出すようにしました。統計の画面では、同じ 5 項目の陣営ごとの推移を直近 120 ターンのグラフで見られます。記録のないターンは、0 としてつながず線を切ります。
- 民間の海路・陸路交易で実際に届けた量を、売り手と買い手の両方の国の交易量に加えるようにしました。
- 陣営の所属一覧の「クリップボードにコピー」が、今のブラウザで動くようにしました。
- トップの国一覧を作るときに同じ地図を何度も調べていた処理をまとめ、表示を軽くしました。ターン杯のアイコンには、何ターンの杯かを出すようにしました。
掲示板
- 陣営・同盟掲示板を、話題ごとに書き込みをまとめるスレッド方式にしました。本文は 50 件ずつ表示し、番号を押すと参照した書き込みへ移れるようにしました。新着 10 件の一覧、NEW 印、引用の色分けを加え、空白と改行もそのまま表示します。
- 掲示板を白いカードの表示にし、スマートフォンでは 1 列に並ぶようにしました。旧デザインへの切り替え、陣営色、アイコンも引き続き使えます。
- 盟主だけでなく、陣営の正式なメンバーも外交文と返信を送れるようにしました。盟主の文には公式の印を付けます。
- 「外交・雑談掲示板」を追加しました。陣営に入っていない国も投稿でき、観光者も読むことができます。分類で話題を絞り込め、自分の書き込みは編集・削除できます。
- 開発画面の[トップへ戻る]の左に[陣営・同盟掲示板]、右に[外交・雑談掲示板]を置きました。掲示板の書き込みも、画面を読み直さずに送れるようにしました。
不在の国の引き継ぎ
- 命令を入れないまま放棄のターン数に達した国は、消さずにルール AI が引き継ぐようにしました。持ち主が戻って命令を送ると人間の操作に戻り、次のターン更新で復帰を知らせます。持ち主が自分で選んだ別の AI への委任は、そのまま維持します。
不具合の修正
- 中立の森の値が 0 のままになっていたものを、1 回だけ 40 に直します。次のシーズンに作る森にも適用します。
- 災害の免除判定が、国の番号にかかわらず正しい国の値を参照するようにしました。
- 対人ミサイルが町や部隊に命中したときの記録を加え、命中したのに「被害なし」も出ることがある不具合を直しました。
- 海兵などが浅瀬から上陸できない・浅瀬づたいに進めない不具合を直しました。
- 機密ログの資金・食料の増減を、換金・上限の処理・民間への資金移転が済んだ後の残高に合わせました。
- ターン更新の警告が、更新を始めた人の画面に混ざることがあったのを直し、警告はサーバの記録へ出すようにしました。情報変更の送信と新規登録後の開発画面で出ていた、以前からの警告 6 か所も直しました。
- 中立の船や海の怪獣の出現周期に当たらないターンは、出現のために地図を調べる処理を省くようにしました。
- 英語・繁体字中国語の画面の一部(陣営の所属一覧・陣営の部屋)に、日本語が混ざって出ていたのを直しました。
- シーズンの記録の再生で、裏で警告が出ていたのを直しました(表示は変わりません)。
説明書
- 民間の経済の説明を、国庫の自動購入、家計向けの価格、工場の人手の持ち越し、農業・生産・陸路の変更に合わせました。
- 日本語のよくある質問「国庫の燃料を民間から買えますか」を、毎ターン自動で買う説明に直しました。日本語・英語・繁体字中国語の説明書に、AI の国は外交の交換の申し込みに自動では応じないことを書き足しました。
- 遷都(命令 89)の説明を、英語版・繁体字中国語版にも載せました。
- 繁体字中国語の経済の表示に混ざっていた日本語の中黒「・」を、読点「,」に直しました。
管理人向け
- 管理人室から開く画面をボタンで開くようにし、管理パスワードがアドレス欄や履歴に残らないようにしました。管理パスワードにカンマや「&」が入っていても「変更」が正しく動くようにし、「あずかり」「地形」の画面を開いたときの警告も直しました。
- 管理人室でお知らせを書き、トップに表示できるようにしました。文字と改行だけを表示し、空にすると欄ごと消えます。掲示板の記事とスレッドも、管理人室から削除できます。
- 管理人室で最新 500 行のアクセス記録を見られるようにしました。日付・国・接続元で絞り込め、同じ接続元から別々の国へ入った行と新規登録の行に印を付けます。同時に記録を書いたときに行が消えないよう、書き込み方も直しました。
- 同じ接続元から 2 つ目の国が登録されると、管理人向けの記録とアクセス記録の画面に知らせを出します。画面には新しい順に最大 20 件を出し、登録自体はこれまでどおり受け付けます。
版を上げるときは、次の点を確認してください。
- 版を上げたときの民間への一回給付(1 国 2,000 億円)は、既定で止めました。
$HcivilReleaseGrantの既定値は0です。配りたいサーバーはlocal-init.cgiに$HcivilReleaseGrant = 1;を書いてください。同じ版で二度配らない扱いはこれまでどおりです。 - 新しい設定は、
$HgiveupToAi = 1(不在の国をルール AI が引き継ぐ。0なら従来どおり放棄)、$HreleaseStockGrant = 1(既存国の弾薬・工業品を 50 まで 1 回補充)、$HhouseholdPriceRatio = 0.8(家計向けの工業品・燃料の価格倍率)、$HcivilTreasuryOverflowRate = 0.9(民間へ移す国庫の境目)、$HmarketStepMax = 0.10(世界相場の 1 ターンの変化の上限)が既定値です。 - 港の計画の設定は
civilHTradeRulesにまとめ、planning_port_limit=2(使う港は 2 つ)、sea_mode_order=['direct','relay'](直行、次に中継)の順を既定にしました。帰り荷の追加日数はcivilHSeaTuningのbackhaul_extra_turns=1(1 ターン)です。 - 川の設定は
hako-naval-logistics.cgiの%HriverTuneにまとめました。既定はsea_component='largest'(最大のつながった水域を海の判定に使う)、open_neighbors=3(隣の水が 3 マス以上ある場所から流れを決める)です。移動に使う数値はscale=2、deep=2、shallow=4、down=3、up=5(移動できる量を 2 倍の数値で数え、深海 2・小型船の浅瀬 4・下流 3・上流 5)、minimum_upstream_step=1(進入できるなら上流でも最低 1 マス)が既定です。 - 天気の調整値は
hako-io.cgiの%HweatherTuneにまとめました。既定は低気圧 5 個・高気圧 3 個、強さ 3〜8、寿命 6〜10 ターンです。艦の行動はinit-navy.cgiの@HnavyActionRulesにまとめ、通常と退治は条件を満たす敵艦・海の怪獣を狙いながら移動、巡航は攻撃せず移動、停船は攻撃も移動もしない動きが既定です。 - dataVersion は 32 のままですが、1.63 で動かした世界を 1.62 に戻すと読めない所があります。帳簿の新しい流れの種類や帰り荷の印などが加わっています。更新前のプログラムと世界データの控えを残し、戻す場合は更新前の組み合わせで戻してください。
- アップロード中はメンテナンスモードにしてください。新旧のファイルが混ざった状態で、ターン更新や書き込みが走らないようにしてください。
version1.62 (2026-09-19)
アーカイブ: hakoS-1.62-20260919.tar.gz / SHA256(先頭16文字): b676178678e127c5
version1.61 からの変更。dataVersion は 32 のままで、保存形式は変わりません。
不具合の修正
- 「最近の出来事」と開発・観光画面の「近況」で、直前のターンより前の記録がまとめて消えることがある不具合を直しました(本番のターン 77・80 で発生)。ターン更新は最初に過去の記録を 1 つずつ後ろへずらします。1.61 は、途中で止まったターン更新のずらしを元に戻さないまま次のアクセスでやり直していたため、止まった回数だけ記録がずれて、古いものから消えていました。1.62 は、途中で止まった跡があれば、次の読み込みで保存済みの写しから記録を元に戻してから進めます(1.60 と同じ動き)。跡が無い普段は何もしないので、ターン更新の速さは変わりません。
- 同じターンを 2 つのアクセスが同時に処理しないようにしました。ターン更新を始めるときに「このターンは処理中」の札(データフォルダの
turn-claim.<ターン>)を 1 つしか作れない形で作り、作れなかった側は前の盤面を表示します。止まった更新の札は、その処理が終わっていればすぐに、確かめられない場合は 120 秒で片付けます。
消えた過去ログを戻す
- データフォルダに
recovered-logs.json(ターンごとの過去ログ。バックアップのworldlogs.datから作る)を置くと、次のターン更新から、ずらした直後の空いている欄へ同じターンの記録を戻します。表示の範囲(16 ターン)から全部外れると、このファイルは自動で消えます。置かなければ何もしません。
管理人向けの記録
データフォルダの generation-admin.log に次の行を足しました。サーバのエラーログを見なくても、ターン更新の様子が分かります。
TURN_START/TURN_DONE: ターン更新の開始と完了(かかった秒数)。同じターンにTURN_STARTが 2 回あれば、重なりかやり直しです。TURN_ERROR/ERROR: 画面に出たエラーの文面。ターン更新中は段階(stage=start / rotated / backup / flush / save)も書きます。TURN_SIGNAL: ターン更新中にサーバから止められた(TERM・HUP・XCPU)。LOG_RESTORE: 途中で止まったターン更新の跡を見つけ、記録を元に戻した(止まった処理の番号・段階つき)。TURN_OVERLAP/TURN_CLAIM_STALE: 同じターンを処理中の別のアクセスがいたので始めなかった/止まった更新の札を片付けた。LOG_BACKFILL:recovered-logs.jsonから戻した欄の数。
画面
- 開発画面・観光画面・全体地図の「国別色/陣営別色」を、ページを移動せずにその場で切り替えられるようにしました。地図の上の「既定」「国別色」「陣営別色」の3つのボタンを押すと、今見ている地図の色がすぐ変わり、凡例も色に合わせて切り替わります。開発画面で押しても観光画面へ移らなくなりました。選んだ色はブラウザが画面ごとに覚え、次に開いたときも同じ色で表示します。
説明書
- 説明書に「4.7 民間の経済(自動)」を足しました(日本語・英語・繁体字中国語)。民間がお金と品物をどう動かすか、国が決められることと決められないこと、よくある質問(民間の船は動かせない、工場があっても工業品ができない理由、国庫の燃料の手に入れ方)をまとめました。4.4〜4.6 の冒頭には、指値・取引所・相対契約・常備航路などの国の取引命令がいまは実行できないことを書き足しました。
version1.61 (2026-09-17)
アーカイブ: hakoS-1.61-20260917.tar.gz / SHA256(先頭16文字): 96da766f48c8d9e1
version1.60 からの変更。dataVersion は 32 のままで、保存形式は変わりません。
陣営会議室
- 陣営会議室を箱庭海戦の陣営掲示板の設計に作り替えました。陣営のマーク・色つきの題名、折りたたむ投稿欄、画像・文字色、記事ごとの返信、ページ送り、検索、過去の投稿の閲覧、スキン切替が使えます。名前・色・画像・スキンはブラウザに覚えさせられます。
- 盟主からの連絡は先頭に1件を固定表示します。外交文は、相手の陣営と自分の陣営の会議室の両方に載ります。盟主は相手を選んで陣営を代表する文を送り、同じ話題へ双方から返信できます。正式メンバーは読むことができます。
- 自分の記事は削除キーで修正・削除でき、盟主は自分の陣営の記事を管理できます。親記事を消しても返信は残ります。限定文は自陣営のメンバーだけに表示します(hakoS には友好国の区分がありません)。
- 1.60 の投稿は引き続き読めます。追加された名前・題名などがない古い記事は、その項目を空欄にします。投稿は従来と同じ非公開の置き場所に UTF-8 で保存します。
民間の海の取引
- CPUは性格や方針にかかわらず、最初の港と、次に最初の工場を優先します。港の用地がなければ整地や埋め立てを進めます。
- 外国から買う側は商品代だけで取引でき、船代と運賃は運ぶ側が用意します。
- 森林を整地・地ならしすると、その森林の量に応じた木材が国庫に入ります。
- 商船は船代だけで建てられ、工業品は不要になりました。仕入れでも船代と1往復分の見積費用を残し、最初の出航に備えます。
- AIが港の建設を考えるとき、食料目標が省略された入力で止まる不具合を直しました。
- 古い在庫で生産国の記録がない品も、持っている国の品として輸出できるようにしました。相手がその国を禁輸している場合は取引しません。生産国が分かる品は、これまでどおり元の生産国の禁輸も確認します。在庫や帳簿の保存記録は書き換えません。
- 離れた港への航路を、もう少し先まで探すようにしました。90×90の地図に対して早く打ち切っていた探索を、256回から1,024回へ広げました。出航後も目的の港へ向かって探し、自国の空いている商船で自分の出航路が遠回りになる不具合を直しました。
- 民間に売り物があり、まだ港がない国では、AIが最初の港を優先します。安全で食料に余裕があり、他国の港へつながる建設場所を選びます。船を建てて取引するかは、運ぶ費用・利益・資金などを確かめて決めます。
- 民間船の運ぶ費用を下げました。自前の船に重ねていた用船料をなくし、現金の維持費を半額にしました。追加の船は船代を24航海で回収できるかで判断します。
- 国から依頼される運送の料金は据え置きです。燃料・食料・品物の売買価格は変えていません。
- 商船の速さを 1 ターン 2 マスから 8 マスにしました。32 マス先の港なら片道 4 ターン、浅瀬の多い航路でも 6 ターンほどで着き、長い航海で維持費と食料に差益を食われなくなります。
- ターン更新の海路の計算を軽くしました。港と港の間の航路は覚えておき、船が通り過ぎただけでは探し直しません。同じ盤面の 1 ターンで、航路探索にかかる時間が約 4 秒から約 1 秒に減りました。
- 港と港の航路は、探す前に「同じ海にあるか」を確かめるようにしました。同じ海なら遠回りでも見つかるまで探して覚えます(本番写しで、毎ターン探し直しては見つからなかった 43 組が、すべて一度で見つかります)。別の海なら探さずに「通れない」と覚え、海と陸の形が変わらない限り探し直しません。
- 16か国の本番写し 10 ターンで、航路の探し直しは 1 ターン 31〜45 回から、港が増えたり港の規模が変わったりしたターン以外は 3〜7 回になりました。
民間の経済
- 版が上がって最初のターン更新に各国の民間へ 2,000 億円を 1 回配る設定を、既定でオンにしました。配らないサーバーだけ local-init.cgi に
$HcivilReleaseGrant = 0;を書きます。1.61 を当てた次のターン更新で 1 回配られます。配る順は初期資金と同じ番号順(ターンで回す)で、帳簿の並びが国の処理順で変わりません。 - 家計が民間から食料と燃料も買うようになりました。これまで民間が現金を得る道は家計への工業品の販売だけでしたが、各国の都市の消費(市場容量ぶん)を民間の収入にします。買う量は、食料が人口の食料消費の 4 分の 1 まで(市場容量を下回らない)、燃料が工業品と同じ市場容量までで、民間が国内で売れる在庫(船の食料・燃料の取り分けを除く)の範囲です。
- 値段は食料が民間の食料価格、燃料が世界相場で、工業品と同じく都市の効率を掛けます。国の人口による食料消費は変わりません。家計の購入は都市の消費として、これまでの工業品と同じ帳簿(家計向け販売)と取引記録に品目ごとに載ります。
- 現金ゼロで工業品を持たない国の民間が、手持ちの食料・燃料で稼げるようにするための変更です。船や工業品の仕入れの前に、まず現金を作れます。
首都
- 首都のマスは自然災害(火災・地震・噴火・隕石・津波)を受けなくなりました。設計書にある「首都では災害が起きない」を実装したものです。ミサイルや怪獣の被害は従来どおりです。
- 首都の町が災害などで失われても、そのマスが自国領のままなら、残っている自国の町へ自動で首都を移します。このとき抵抗力は下がらず、陥落中にもなりません。首都を移したことはその国のログに出ます。他国に奪われたときは、これまでどおり陥落中になり、抵抗力が一度だけ2下がります。
- 遷都(命令89)の説明を説明書に加えました。200億円・1ターンで、自国の町系の土地へ首都を移せます。
- 陥落中の CPU 国は、自国の町が残っていれば次のターン更新でそこへ首都を戻します(費用なし)。プレイヤーの国は従来どおり遷都命令で戻します。1.60 までに火災などで首都を失ったままの CPU 国も、これで戻ります。
命令送信
- 陣営会議室の私有ディレクトリ(
$HallyPrivateRoot)を設定しているサーバーでも、ブラウザからの命令送信(JavaScript モード)が 1.60-9 の軽い経路(地図・帳簿・記録を読まずに受け付ける)を通るようになりました。16か国の本番写し(同じ端末で前後を交互に5回、最小値)で、私有ディレクトリありの命令送信(単独)は 0.773秒 → 0.245秒 になり、設定なしの場合と同じ速さです。 - 会議室の用意が済んでいない陣営があるとき(陣営を作った直後に会議室の作成に失敗したときなど)だけ、従来どおり全部読む経路を通して会議室を用意します。
ターン更新
- ターン更新の保存で、ログの写し(worldlogs.dat)を読み解く回数を 4 回から 1 回に減らしました。写しは 1MB ほどあり、1 回に 0.4〜0.6 秒かかっていました。JSON::XS が入っているサーバーではそれを使って読み解き、無ければ従来どおりです。
- 16か国の本番写し 10 ターンで、1 ターンの更新にかかる計算時間は、JSON::XS なしのサーバーで 74 ターン目 3.5 秒 → 3.5 秒、79 ターン目 5.8 秒 → 4.0 秒、83 ターン目 5.2 秒 → 3.7 秒、JSON::XS ありなら 83 ターン目 4.7 秒 → 2.8 秒になりました。
画面
- トップの世界相場の表を、右側の細い列から順位表の直前へ移し、画面の幅に合わせて折り返すようにしました。横に見切れず、スクロールも要りません。
- 観光画面の地図(25×25)をブラウザ側で描くようにしました。地図の元になるデータは画面を開くときに 1 回だけ受け取り、「←5 ←1 ↑5 ↑1 ↓1 ↓5 →1 →5」の移動ボタンと座標の入力は、サーバに問い合わせずに手元で描き直します。移動のたびに 625 マス分の HTML を作り直していた分が無くなり、観光画面の受信量は約 570KB から約 130KB に減りました。移動後もアドレス(?Sight=…&VIEWX=…&VIEWY=…)を書き換えるので、これまでどおり場所を共有できます。
- 観光画面のデータはトップの世界地図と同じ「観光客向け」のもので、軍艦(36〜40)と部隊は入っていません(商船はこれまでどおり見えます)。国別色・陣営別色の切替と、マスにカーソルを載せたときの地形の説明は、これまでと同じ内容です。色つき表示の塗り方はトップの 9×9 と同じ(マス全体を所有国の色で塗り、地形の絵を 1px 内側に)になりました。JavaScript を切っていると地図が出ないので、その旨を表示します。
- 開発画面の地図を、次の版でブラウザ側に描くための下準備として、自国から見える盤面(自国の施設・部隊・艦隊、視界に入った他国の部隊と軍艦、命令の番号)を 1 回で送る仕組みを追加しました。見える範囲の決め方は今の開発画面と同じ関数を使い、観光客向けのデータには引き続き軍艦と部隊を載せません。この版では画面の見た目は変わりません。
- 開発画面の地図(25×25)もブラウザ側で描くようにしました。自国から見える盤面のデータ(自国の施設・部隊・艦隊、視界に入った他国の部隊と軍艦)を画面を開くときに 1 回だけ受け取り、「←5 ←1 ↑5 ↑1 ↓1 ↓5 →1 →5」の移動ボタンと座標の入力は、サーバに問い合わせずに手元で描き直します。マスにカーソルを載せたときの地形の説明と命令の一覧、クリックで命令欄の座標が入ること、部隊数・ミサイル・抵抗力・国別色分けの表示切替は、これまでと同じです。開発画面はパスワードを送って開く画面なので、移動しても画面のアドレスは書き換えません。開発画面の受信量は約 980KB から約 740KB に減りました。
- 移動ボタンで描き直したあとも、選んでいた表示(ミサイル・抵抗力・国別色分け)は新しく描いたマスにそのまま反映されます。これまでは移動のたびに画面を読み直していたので、選び直す必要がありました。
- トップの「地形の詳細」の 9×9 の拡大図にも「←5 ←1 ↑5 ↑1 ↓1 ↓5 →1 →5」の移動ボタンを付けました。観光画面と同じく、押すとその場で描き直し、地図の端は反対側につながります。サーバには問い合わせません。
- ワールドマップは、セルを 1 回クリックすると選択を固定し、同じセルをもう 1 回クリックすると解除するようにしました。これまではカーソルを載せたセルに選択が付いてくるため、右側の「地図を表示」や「周辺を32pxの地図で見る」へマウスを動かす途中で選択が変わっていました。固定中は座標の横に「固定中(もう一度クリックで解除)」と出て、固定したセルの枠を太くします。別のセルをクリックすると固定先が移り、移動ボタン・矢印キー・座標の入力で選んだ位置も固定されます(Esc で解除)。
- 陣営共有情報の地図も、観光画面・開発画面と同じ 25×25 のブラウザ描画にしました。これまでは 90×90 の全マスをサーバが描いて送っていたので画面が大きく、受信量も約 7.1MB ありました。陣営から見える盤面のデータを画面を開くときに 1 回だけ受け取り、「←5 ←1 ↑5 ↑1 ↓1 ↓5 →1 →5」の移動ボタンと座標の入力は、サーバに問い合わせずに手元で描き直します。最初の中心は自国の最初のマスです。16か国の本番写しで、陣営共有情報の受信量は約 7.1MB から約 220KB に、表示にかかる時間は約 1.14 秒から約 0.51 秒になりました(最小値)。画面の並びも変え、左に所属国ごとの計画(国名のタブで切り替え。最初は自国)、右に地図を置きました。幅の狭い画面では縦一列(タブが上、地図が下)になります。矢印の横の「全体を表示」を押すと、同じデータから 90×90 の全体を描き(サーバに問い合わせません)、並びを一段にして地図を先頭に置き、画面の幅に合わせて縮小して全体を一目で見られます(枠の中でスクロールはしません)。全体表示のあいだ矢印と座標入力は休み、「25×25 に戻す」で元の並びと中心に戻ります。
- 見える範囲(陣営で共有する部隊の視界と軍艦の視界、味方の兵站基地の中身、味方の部隊だけに付く向き)は、これまでの陣営共有情報と同じ関数で決めています。陣営別の色分けと凡例、マスにカーソルを載せたときの地形の説明は従来どおりです(これまで陣営共有情報では説明の表示先が無く、カーソルを載せても何も出ませんでした。この版から出ます)。パスワードを送って開く画面なので、移動しても画面のアドレスは書き換えません。
- トップの「ワールドマップ」の下に「全体地図(フルサイズ)」のリンクを付けました。別画面(
hako-main.cgi?WorldMap=1)で 90×90 の全マスを表示します。既定では画面の幅に合わせて縮小して全体を一目で見られ、「画面幅に合わせて縮小」を外すと 1 マス 32px の原寸になりページをスクロールして見ます(枠の中でのスクロールはありません)。地図の元になるデータはトップの世界地図と同じ観光客向けのもの(軍艦 36〜40 と部隊は入らず、商船は見える)を 1 回だけ受け取り、ブラウザ側で描きます。国別色・陣営別色の切替、凡例、マスにカーソルを載せたときの地形の説明は観光画面と同じです。 - この画面は読むだけで、パスワードも国の選択も要りません(ターン更新中でも待たずに、公開済みの盤面を表示します)。16か国の本番写しでサーバの処理は約 0.36 秒・受信量約 130KB で、トップページ(約 0.54 秒・約 270KB)より軽い画面です。
深層検査で見つけて直した不具合
- 季節の猶予期間中のトップ一覧と地図の断片が表示できなくなる不具合を直しました。1.60-9 の画面ごとの読み込みで、猶予期間の画面が陣営の色を出す部品を読み忘れていたものです。
- 設定より先に翻訳を用意する順に戻しました。1.60-7 で順番が入れ替わり、辞書に無い語があったときの記録が増えていました。表示は変わりません。
- 民間船の航路の覚え書きが毎ターン捨てられていた不具合を直しました。船が乗っているマスの記録が空のまま保存され、読む側が全体を無効にしていたため、毎ターン航路を探し直していました。直後のターン更新から覚え書きが効き、更新が軽くなります。
1.60 公開後の手直し(1.61 に統合)
1.60 の公開後に本番で見つかった不具合と重さの直しです。番号は作業順で、すべて 1.61 に入っています。
1.60-1(2026-09-17)
地図にカーソルを乗せたとき、右側の地形の説明の高さが変わって画面が揺れていたのを直しました。
1.60-2(2026-09-17)
命令を保存した直後にロックを放すようにし、通常の命令送信では、変わった島と必要な世界ヘッダだけを保存するようにしました。変わらない島・市場・ログは書き直しません。保存前に同じ世界を読み直す処理や、変更していない帳簿の再検査も省きました。ターン更新時の検査と保存は続けます。
16か国の本番写しで、単独送信の保存は 0.380秒 → 0.079秒、ロックを握る時間は 0.810秒 → 0.672秒でした。3本同時の最大待ち時間は 1.641秒 → 1.531秒。共通マップ N 並みの目標(0.1〜0.2秒)にはまだ届いていません。読込に単独で 0.553秒かかっており、次の改善対象です。全体の応答時間は 1.373秒 → 1.457秒でした(同じ端末で他の作業も実行中、各条件1回)。
保存途中で止まった場合に前の世界へ戻す仕組みも維持しています。世界ヘッダが各ファイルの世代を記録するため、hako-main.cgi と hako-generation.cgi は、処理中の CGI がいない状態で一緒に差し替えてください。更新後のデータを旧版の CGI にそのまま戻すことはできません。旧形式の読込や陣営チャットの連携処理が必要な場合は、従来の保存を使います。
1.60-3(2026-09-17)
ミニマップに鉱山などの記号が出なくなっていたのを直しました。
1.60-4(2026-09-17)
保存や表示のたびに走っていた確認(相場の範囲・陣営の整合・一式の整合)を通常の経路から外し、点検用の関数と管理画面に残しました。陣営を変える操作やターン更新で必要な確認は続けます。相場が下限・上限を外れていても、読込・表示・命令送信を止めません。価格を上下限に収める処理はターン更新だけで行います。
ブラウザからの通常の命令送信では、地図・民間の帳簿・公開ログの中身を読み解かず、必要な国と計画を保存します。民間の新機能の確認はターン更新に残しています。ただし、表示や民間の画面操作から共通の帳簿点検を呼ぶ箇所は、今回の変更範囲外のファイルに残っています。
保存はファイルごとの一時ファイルからの差し替えにし、毎回の前世代コピーと自動復旧をやめました。読込側は世代番号の一致を確かめ、保存途中なら読み直します。巻き戻しは管理画面から定期バックアップを使います。1.60-2 に記載した前世代への自動復旧は、この変更で廃止しました。
16か国の本番写しで、命令送信は 1.122秒 → 0.454秒、3本同時の平均は 2.072秒 → 0.667秒でした。トップ表示は 1.459秒 → 1.878秒、開発画面への入室は 1.290秒 → 1.253秒で、トップ表示の高速化は確認できていません。同じ端末で他の作業も実行中、各条件1回の測定です。共通マップ N の命令送信は 0.210秒で、目標の1.5倍以内(0.315秒)にはまだ届いていません。
1.60-5(2026-09-17)
観光画面と開発画面から世界相場の表を外しました(トップ画面の下/統計で見られます)。
1.60-6(2026-09-17)
- トップ・観光・開発画面を開く際、全ての国の島ファイルや全ログを読み集めて、保存時期・数量・陣営・民間の帳簿を照合する処理を外しました。表示に使う公開盤面と、選んだ国の計画・掲示板、国情報表の出品一覧を読みます。
- 世界地図では、海・平地・森など同じ説明になるマスの説明文と画像情報を使い回します。都市名・鉱床・船荷など、場所ごとに違う表示はそのままです。
- 観光・開発画面の独立した世界相場の表を外し、トップの地図の下にまとめました。需要・関税・契約の表示と入力欄は残しています。
- 同じ本番写しを各1回測定した全体時間は、トップ 1.380→1.247秒、観光 0.710→1.203秒、開発 0.943→1.701秒でした。読み込みはそれぞれ 0.385→0.160秒、0.354→0.188秒、0.365→0.158秒に減りましたが、観光・開発の全体時間短縮は確認できていません。
- 共通マップNは40×40、Sは90×90で面積は5.0625倍です。Nの実測と面積から求めた目安はトップ0.604秒・観光2.164秒・開発4.663秒で、トップは未達です。起動や画面準備の時間が残っており、併走処理の影響も未確定です。
1.60-7(2026-09-17)
- プログラムの部品(.cgi ファイル)の読み込みを 1 か所にまとめました。読み込んだ場所を絶対パスで覚えるので、作業ディレクトリを変えたあとに読んでも壊れず、同じ部品を二重には読みません。172 か所の読み込みを置き換えました。
- この整理で「翻訳を用意してから設定を読む」順が入れ替わっていたため、1.61 で元の順に戻しています(上の「深層検査で見つけて直した不具合」)。
1.60-8(1.61向け)
- 国一覧の「市場規模」を都市と市場施設を合わせた「商業人口」に変え、地形の説明も農業・商業・工業の同じ内訳に揃えました。
- 右側の地形詳細では、各マスに所有国の色の枠を付け、隣り合う国の領土が分かるようにしました。選択地点の白枠はそのままです。
1.60-9(2026-09-17)
- 画面ごとに必要なコードだけ読み込むようにしました。ブラウザからの命令送信(JavaScript モード)は、開発画面を描くコード(hako-js / hako-map)と命令の説明文の辞書を読まずに受け付けます。競売・外交の輸送と検査・版の表示・一時ファイルや日時整形の Perl モジュール(File::Temp / POSIX / Unicode::Normalize / File::Path)は、使う処理の中で初めて読みます。タグを含まない文言は HTML の補助辞書を読まずにそのまま escape します(表示は同じ)。トップ・観光・開発画面は LLM 画面のコード(hako-llm.cgi)を読まなくなりました。ターン更新は従来どおり全部読みます。
- 命令送信で読む CGI は 33 → 26 ファイル、辞書は 7 → 2 になりました。16か国の本番写し(同じ端末で前後を交互に3回、最小値)で、命令送信(単独)は 0.305秒 → 0.245秒、3本同時は 0.312/0.422/0.538秒 → 0.267/0.354/0.464秒、トップ 0.536 → 0.512秒、観光 0.460 → 0.418秒、開発画面の入室 0.651 → 0.683秒(誤差の範囲)でした。命令送信は共通マップ N(0.210秒)の1.5倍(0.315秒)以内に入りました。
- 陣営会議室の私有ディレクトリ(
$HallyPrivateRoot)を設定しているサーバーでは、命令送信は従来どおり全部読む経路を通るため、この短縮は当てはまりません。
version1.60 (2026-09-16)
アーカイブ: hakoS-1.60-20260916.tar.gz / SHA256(先頭16文字): 75d5169f01691b14
version1.59 からの変更。dataVersion は 32 のままで、保存形式は変わりません。 「更新中です」がほとんど出なくなります。読むだけの画面はロックを待たず、統計と設定一覧は静的ファイルで配り、右側のミニマップはブラウザ側で組み立てます。陣営には外交スレッドと重要投稿欄が加わります。
ロックを待たない・断らない
- 読むだけの画面(トップの地図・観光・開発画面の入室・地形の詳細・陣営情報・統計・観光者通信)は、他の人が更新中でも公開済みの盤面で応答します。これまでは誰かがロックを握っているだけで「更新中です」と断っていました。書く側は原子的に公開している(全ファイルを tmp+rename で置き、世代番号を刻む)ので、読む側は最新の一式をそのまま読めます。世代が食い違えば少し待って読み直します。
- 命令の送信・登録・設定変更など書き込む操作は、ロックが空くまで待ちます(既定15秒、
$HworldLockWait)。上限を超えたときだけ従来の「更新中です」を返します。 - 統計は、読み終えた時点でロックを放し、描画とキャッシュ書き込みをロックの外で行います。取れなければ書かずに次の閲覧者に回します。
統計と設定一覧は静的ファイルで
- ターン更新の最後に
stats.html(全体・人口順・日本語)を、設定変更後にsetup.htmlを書き出し、ヘッダのリンクはそれらを指します。閲覧で CGI もロックも使いません。他の並び順・国別・他言語は従来どおり CGI です(こちらもロックを待ちません)。
トップの右側のミニマップはブラウザで組み立てます
- 世界地図にカーソルを乗せるだけで、右側の 9×9 と地形の説明が追従します。90×90 ぶんの地形・所有者・画像名をページに1回埋め、そこから組み立てるので、動かすたびに CGI を呼びません。画像はブラウザがキャッシュします。
陣営:外交スレッドと重要投稿欄
- 陣営会議室に「重要投稿欄(盟主から)」と「陣営間の外交」を追加しました。外交は箱庭海戦の外交掲示板を母体に、陣営ペアに1本のスレッド(双方が同じものを見る)にしました。送るのは盟主だけ(陣営を代表します)、読むのは双方の正式メンバーです。送った控えは同じスレッドに残り、片方だけ書けて片方失敗する事故がありません。
- 会議室の置き場所が移っていた場合に部屋が作られず入れなかった不具合を直しました。ディレクトリごと無いときだけ新規に作り、中身が欠けているときは壊れているとして止めます(投稿履歴を黙って作り直しません)。
民間の経済
- 民間が現金を全額仕入れに使い切らず、船1隻分(100,000 milli)を残すようになりました。1.59 の本番では最初のターンで現金の93.7%を仕入れに使い、港ができても船を建てられず、輸出の道が閉じていました。
- 版が上がって最初のターン更新で、各国の民間へ初期資金と同額(2,000億円)を1回配れます(テスト運用向け)。既定は配りません(
$HcivilReleaseGrant = 0)。配るサーバーではlocal-init.cgiに$HcivilReleaseGrant = 1;を書いてください。配った版はdata/civil-grant.<版>に記録し、同じ版で二度は配りません。 - 追加資金が検査に引っかかって届かない不具合を直しました。どの国にも配れなかった場合は配布済みにせず、次のターンにもう一度試みます。
- 複数の資源を続けて仕入れても、船1隻分(100億円)を仕入れに使わないようにしました。資源を買うたびに残金を確かめ、実際に請求される金額で買える量を決めます。
- 民間が買いそろえる目標を、資源ごとに小型商船1隻分(128単位)にしました。食料だけを1,024単位まで買い込み、資金が在庫のまま動かなくなることを抑えます。すでに持っている在庫は減らしません。
- 国どうしの在庫の差が、取引価格に反映されやすくなりました。従来は512単位を超える差がないと価格が折り合いませんでしたが、今は64単位を超える差から取引の候補になります。実際の取引には、港や国境、運ぶ費用、買い手の資金などの条件も必要です。
CPU国家と地形
- CPU国家が、収入の上限(工場+採掘場の規模)に人口が引っかかっているときは工場を優先して建てるようになりました。これまでは町だけを増やし、収入が増えないまま維持費だけ増えていました。
- 鉱山・採石場・炭坑・露天鉱脈・ウラン鉱山・大鉱山は、怪獣に踏み潰されず、他国の整地・地ならしでも奪われなくなりました(山と同じ扱い。自国の鉱山を畳むのは廃山を使います)。
画面
- 兵站基地の画像が軍団9番以降で壊れていたのを、固定画像と右上の軍団番号に変えました。部隊が乗っていればその軍団番号を優先します。
- 農業規模の表示に、地形の農業人口を含めました(失業率の計算と同じ出どころ)。
- 陣営共有情報の地図を六角形の並びに直しました。
- 最新ログ(hakolog.html)に CSS が当たるようにしました。
- 画面に混ざっていた警告(表示モードの初期値、管理画面の更新時刻設定)を直しました。
- ターン更新直後に建国適地の一覧が無い盤面で画面が壊れていたのを直しました。
- 建国直後の国がターン杯の回(25 の倍数のターン)に居ると、ターン更新の出力に警告が混ざっていたのを直しました(新しい国の統計を建国時から 0 で持ちます)。
- あずかり中の国の収入処理と、国名変更の履歴行で、更新のたびにエラーログへ警告が出ていたのを直しました(出力される内容は同じです)。
- 相場が下限や上限に着くと世界が読めなくなっていたのを直しました。
version1.59 (2026-09-15)
アーカイブ: hakoS-1.59-20260915.tar.gz / SHA256(先頭16文字): 6b7ad8ade8038237
version1.58 からの変更。dataVersion は 32 のままで、保存形式は変わりません。 民間の経済が動き出します。あわせてコマンドのターン消費を整理し、CPU国家が外交と港の運営を自分で判断するようになります。画面の表示も13件直しました。
民間の経済が動き出します
これまで民間の倉庫は空のままで、商船も1隻もなく、国どうしの交易が一度も起きていませんでした。原因は3つあり、すべて直しました。
- CPU国家が、備蓄を超えた分の資源を民間へ出すようになりました。これまでは「民間へいくら出すか」の設定が全資源0のままで、誰も設定していなかったため、民間の手元に何も渡っていませんでした。守りの国は燃料と弾薬を多めに抱え、商人気質の国は多く出す、という差が出ます。
- 人間の国も、建国時に控えめな初期値が入るようになりました。すでにある国には、更新後の最初のターンで入ります。一度でも自分で設定した国の値は変えません。設定画面(民間への供給)でいつでも増やせます。
- 民間が、仕入れの前に維持費と船代を取り分けるようになりました。これまでは手元の資金を全額仕入れに使ってしまい、運ぶ船を用意できませんでした。
あわせて、小型商船の性能と費用を見直しました。積載量を64→128に増やし、燃料・維持費・船代を下げています。これまでは往復の運賃が荷物の儲けを上回り、どんな航路でも赤字になっていました。
- 民間が、実際に建てられる船を選ぶようになりました。これまでは一番儲かる案だけを見ていたため、買えない大型船を選び続けて1隻も建ちませんでした。
- 航海の途中で燃料や食料が尽きた船が、その場で補給を受けられるようになりました。これまでは自国の港のすぐ隣にいるときしか補給できず、外洋で止まると二度と動けませんでした。
- 荷降ろしできない状態が続いた船が、6ターンで引き返すようになりました。戦争や禁輸で行き先の港が使えなくなったとき、これまでは荷物を積んだまま待ち続けていました。相手との関係が戻れば、引き返さずに航海を続けます。
民間は国のコマンドを使いません。儲かる取引を見つけると自分で商船を建造し、航路を決めて運びます。国がすることは、港を建てること、民間へ出す量を決めること、港の開放度・関税・通行料を決めることだけです。
そのほかの遊びかたに関わるもの
- 地形を変えないコマンドが、ターンの枠を使わなくなりました。倉庫の出し入れ、関所の政策、陣営の申請取消・承認・脱退・除名・盟主移譲・作成・管理、補給修理、契約の申込・承諾・破棄、港の中継料、保税の預入・転送、外交の援助・交換申込・交換承諾・輸送取消の21件です。開発と同じターンに出せます。資金繰り・誘致活動・国の放棄は、これまでどおり枠を使います。
- CPU国家が友好を打診するようになりました。領土が4ヘクス以内にある国だけが相手です。同じ陣営の国や、すでに友好・交戦中の相手には送りません。
- CPU国家の宣戦布告が、距離と国力で相手を選ぶようになりました。近くて自国より弱い相手を選びます。すでに戦争をしている国は、新しい宣戦をしません。同じ陣営の国も対象外です。
- CPU国家が港の開放度・関税・通行料を決めるようになりました。実際に港を持っていて、自国に脅威がないときだけです。商人気質の国は開放的に、軍事重視の国は友好国だけに開く、という差が出ます。
画面
- ゲームの説明の勝利条件が、実際の設定と合うようになりました。シーズンを有効にしているのに「終了ターンの上限はありません」「人口順位1位」と表示されていました。今は最短・最長ターン、単独と陣営の領土率、所属期間、上限ターンでの配点(領土・人口・資金)が、設定値から表示されます。
- 倉庫の「自国」の数が、実際に引き出せる量になりました。他国が買い取り済みの分まで自国として数えていたため、30と表示されていても10しか引き出せない状態でした。所有者の一覧にも、旧競売で買い取られた分が出るようになりました。
- 港の開放政策の選択欄が、今の設定を選んだ状態になりました。「閉鎖」なのに選択欄が「非交戦国に開放」になっていたため、確認のつもりで押すと開放する計画を送ることになっていました。
- 外交の食料が「食料 8 00トン」と表示されていたのを直しました。「食料 800トン」と出ます。
- 外交で届いた申込に、期限が表示されるようになりました。いつまでに承諾すればよいか分かります。
- 出航した商船の一覧に、積荷の品目・数量と届け先が出るようになりました。これまでは「20/64」としか出ず、何をどこへ運んでいるか分かりませんでした。民間は国のコマンドなしで動くので、見えないと何が起きているか分かりませんでした。
- 市場・陸路物流の画面に出ていた内部データを、読める表に変えました。取引がないときは「いまは取引がありません」と表示します。
- 会議室の投稿時刻が、読める形になりました。
1800000000という内部の数字が出ていました。閲覧している端末の時刻で表示します。 - 会議室に入れなかったときの案内が、読める言葉になりました。
alliance: authenticationという開発者向けの文字列が出ていました。 - 設定のスタイル名に余分な文字が入っていたのを直しました。「デフォルト\n」と表示されていました。
- 統計の説明から、内部の項目名を消しました。国力は推移グラフで見られる旨を表示します。
- 国の登録と国名変更に失敗したときの画面が、英語・繁体字中国語でも表示されるようになりました。満員・国名未入力・禁止文字・重複名・オーナー名未入力・パスワード未入力・資金不足の7画面が日本語のままだったため、日本語以外では何を直せばよいか読めませんでした。
- シーズンの案内・履歴・リプレイが、英語と繁体字中国語でも表示されるようになりました。履歴の一覧に言語を指定するとエラーになっていたのも直しました。
- トップのリリース表示から更新履歴へ移動できなかったのを直しました。リンクが
image/ver.htmlを指していました。
設置・更新
- 差分アップデートの手順は同梱の手順書のとおりです。
data/は差分に含まれません。
version1.58 (2026-09-14)
アーカイブ: hakoS-1.58-20260914.tar.gz / SHA256(先頭16文字): 12c21b8a256b005f
version1.57 からの変更。dataVersion は 32 のままで、保存形式は変わりません。 1.57 を入れた後で見つかった、遊びにくい点と表示の乱れを直します。
遊びかたに関わるもの
- 造船で数量を変えると、コマンド名が変わるようになりました。これまでは数量を変えても「造船」としか出なかったため、数量0のまま実行して意図せず軍港が建つことがありました。今後は「軍港を建設」「駆逐艦を建造」〜「潜水艦を建造」「商船を建造」と、何ができるかが送信前に分かります。
- 軍港に整地・地ならしを行うと、浅瀬に戻るようになりました。これまでは平地になっていたため、海だった場所が陸地に変わってしまっていました。誤って建てた軍港を元に戻せます。
- 陣営加入申請が、コマンドの枠を使わなくなりました。これまでは申請を入れると後の開発計画が1ターンずつ後ろにずれていました。開発と同じターンに申請できます。申請の確定がターン末になる点は変わりません。
画面
- 開発計画の画面に警告文が出ていたのを直しました。アイテムを持っていない枠を数えようとして起きていたものです。
- アイテム装備の欄が、記号の羅列で表示されていたのを直しました。
- 計画一覧で、陣営加入申請の行にも色が付くようになりました。
設置・更新
- 差分アップデートの手順は同梱の手順書のとおりです。
data/は差分に含まれません。
version1.57 (2026-09-14)
アーカイブ: hakoS-1.57-20260914.tar.gz / SHA256(先頭16文字): c5a93af7b8a09e05
version1.56 からの変更。dataVersion は 32 のままで、保存形式は変わりません。
遊びかたに関わるもの
- 総職場数に、地形から得る農業人口が入るようになりました。これまで農場・工場・採掘場の規模だけを足していたため、地形の農業人口が丸ごと抜けていました。同じ国で 24,000人 → 72,100人 になる例があります。あわせて雇用の表示も変わり、「失業率58.69%」と出ていた状態が「労働力不足24.10%」と表示されます。数値が急に増えたように見えますが、これまでが少なすぎました。
- 正式に同じ陣営の味方が駐留していても、割譲・徴兵・農工業の集計を妨げなくなりました。敵・無所属・友好関係だけの国・加入申請中の国が駐留している場合は、従来どおり妨げられます。
- 高速農場・高速工場は自国領にしか建てられなくなりました。拒否されたときは地形も所有者も資金も変わりません。通常の農場・工場は従来どおり他国領にも建てられます。
- 味方の包囲で領土を失わなくなりました。地形の抵抗力を計算するとき、土地の所有国から見て正式に同じ陣営の国と友好国を、駐留による占領からも包囲の圧力からも除きます。敵と味方が混ざった包囲にも適用されます。
- 進軍は指定した方向を攻撃するようになりました。砲兵は指定方向の直線2セル先も射程に入ります。攻撃と移動は従来どおりです。
- 誘致とハンデを併用できるようになりました。人口増の増分が両方に効きます。食料不足のときの扱いは変わりません。
- 海兵が他国領・中立地から海や海底基地へ出られるようになりました。陸から陸への移動制限は従来どおりです。
- 新しく設置した部隊が、消滅した部隊のレベルと装備を引き継がなくなりました。
- 海と浅瀬は占領できなくなりました。海はターン終了時に中立へ戻ります。海底基地・海底都市・平地の占領は従来どおりです。
- 撤退予定の部隊がいる土地を「部隊がいる」と数えなくなりました。焦土戦術での悪用を防ぎます。
- 中立の陸地が、安全限界の面積集計から漏れていたのを直しました。
- AIが開拓ばかりする偏りを直しました。平時は内政と貿易にも最低限の行動を割り当てます。戦時はこの下限を外します。
画面
- 地形の情報表示がカーソルに追従するようになりました。これまで画面左下に固定されていました。画面の右端・下端では反転して収まります。
- 陣営マップの表示欠落を3件直しました。
- 観光画面で相手の部隊が見えてしまう問題を直しました。
- トップの案内文を実際の運用に合わせて書き直しました。実装されていない「違反国家の凍結」「登録後1時間でコメント未設定なら自動削除」の記述と、設置していない外交掲示板への案内を削除し、テスト版であることを明記しました。日本語・英語・繁体字中国語の3言語。
- 更新履歴のページ
ver.htmlと、箱庭共通マップNとの違いをまとめたabout-s.htmlを同梱しました。トップのリリース表示から更新履歴へ移動できます。 - 統計画面が開けなかったのを直しました。市場の基準価格の設定が統計画面から見えず、価格の範囲検査に必ず失敗していました。シーズン機能を使っている場合に照合が合わなかった問題もあわせて直しています。
内部
- ターン更新が約42%速くなりました(同じ盤面で10.9秒 → 6.3秒)。
- 全ファイルを
use strictへ移行しました。その過程で既存の不具合を複数直しています。 use warningsが出していた警告111件を解消しました。うち9件は未定義値の握り潰しではなく、構造の不具合でした(敵国がいない場合の集計初期化漏れ、代入元のない変数を国名に連結、新シーズンで存在しない履歴ファイルの読み取りなど)。- 主要なファイルを名前空間(
package)に整理しました。保存形式・出力は1バイトも変わりません。
設置・更新
- 差分アップデートの手順は、差分に同梱する
<版>-INSTALL.mdのとおりです。 data/は差分に含まれません。
version1.56 (2026-09-14)
アーカイブ: hakoS-1.56-20260914.tar.gz / SHA256(先頭16文字): 372af09c682bd4ad
version1.55 からの変更。dataVersion は 32 のままで、保存形式は変わりません。
遊びかたに関わるもの
- ルールAIが兵種の相性を考えて戦うようになりました。三すくみや対空の得意・不得意を 見て、観測した敵に合う兵種と攻撃方向を選びます。
- 兵種を変えるときは、後方の軍団で前線の穴を埋めるようになりました。 その場で変更できない装甲系の部隊は撤退を含めて判断します。占領を担当する軍団まで 占領できない兵種に変えてしまわないよう、役割と残る部隊も確認します。
- 砲兵の2ヘクスの射程を、攻撃にも味方の支援にも使うようになりました。 敵を撃てる位置と、味方を支援できる位置の両方を考えて配置します。
- 少数の部隊でも敵の前進を止める配置を選ぶようになりました。 部隊の周囲への移動を制限するZOCを使い、国境に防衛線を作ります。
- 軍団ごとに「攻撃・進軍・移動・防衛」を使い分けるようになりました。 前線で戦う軍団、占領に向かう軍団、自国内で再配置する軍団、守備を続ける軍団に 合う命令を選びます。人間が残した防衛命令からも、状況に応じて動き出せます。
- 占領が終わるまでのターン数を見積もって、目標を選ぶようになりました。 兵力によって抵抗力を削る速さが違うことを考慮します。
- 平時にも軍を動かし、中立地を押さえて視界を広げるようになりました。 首都と国境を守りながら展開し、脅威があれば引き上げます。
- 複数の軍団が別々の方向へ展開できるようになりました。AIが建てる兵站基地に 別々の軍団番号を割り当てます。一度に動かす軍団は平時16・戦時32までになりました。
- 自国の土地を平地にするときは、ターンを使わない「地ならし」を選ぶようになりました。 資金が足りないときは「整地」に切り替えます。
画面
- 軍団の配置や命令に、上のAI判断が反映されます。新しい操作項目の追加はありません。
説明書
- 兵種の相性、砲兵の射程・支援、ZOC、軍団命令、占領は、既存の戦闘ルールに従います。 今回はルールAIがこれらを使うための更新です。
設置・更新
- 稼働中のversion1.55には、1.55 → 1.56の差分を使ってください。
data/、hakos-private/、local-init.cgi、認証情報は更新対象外です。 会議室の秘密鍵は差し替えません。フル版の初期世界を稼働データに上書きしないでください。 - 更新前は
FROM.json、更新後はTO.jsonで全管理ファイルを照合します。 詳しくは差分に同梱する手順書を参照してください。
version1.55 (2026-09-13)
アーカイブ: hakoS-1.55-20260913.tar.gz / SHA256(先頭16文字): b6fe15610e75d4b2
本番で動いている version1.54 からの変更をすべて含みます。dataVersion は 32 のままで、 保存形式は変わりません。既存サイトの data/ hakos-private/ local-init.cgi は更新対象外です。
不具合の修正
- 建国しても世界の歴史に残らなかったのを直しました。同盟の記録を重複除去する処理に 取りこぼしがあり、建国・改名・管理人あずかりの記録が「重複」と判定されて捨てられていました。 本番で8カ国すべての建国記録が失われていたのはこのためです。 これまでに失われた記録は戻りませんが、今後の建国は記録されます。
遊びかたに関わるもの
- 軍艦が見えなくなりました。索敵範囲の外にある駆逐艦・巡洋艦・戦艦・航空母艦・潜水艦は、 海にしか見えません。所属もHPも艦隊も分かりません。商船・海賊船・遊覧船は今までどおり見えます。 陣営に入っていれば、陣営専用マップで仲間の視界が合わさります。
- 鉱山が自動で掘るようになりました。毎ターン命令を出さなくても、人手があれば掘ります。 人手は「農業 → 鉱業 → 工場 → 市場」の順に取られ、前が使い切れば後ろは動きません。 埋蔵量は少しずつ自然に回復します。労働力を工場へ回したいときは鉱山を山に戻せます (埋蔵も蓄積も残るので、また鉱山に戻せます)。
- 資源のない山には採掘場を建てられなくなりました。掘るものが無いためです。 山は今までどおり視界2ヘクスを持ち、兵種によって通れない地形です。
- 鉱山が雇用と収入を生むようになりました。これまで鉱山・採石場・炭坑・露天鉱脈・ ウラン鉱山・海底油田は数に入っておらず、2箇所持っていても「規模なし」と表示されていました。
- 大都市・現代都市・ニュータウンは農業をしなくなりました。都市化した土地の住民が 工業に回ります。村・町・都市・海底都市は今までどおりです。
画面で分かるようになったもの
- 推移グラフを統計画面に追加しました。人口+兵力・人口・兵力・面積・国力の5種類を、 最大120ターン分たどれます。外部のサービスは使いません。
- 地形をなぞると、その土地が何をしているかが出ます。「2000人 / 農業1400人」のように、 人口と主な産業の規模が分かります。
- トップページに首都名が出ます。首都が陥落しているときはその旨も出ます。
- 毎ターンの収支に資源が加わりました。石材・木材・石油・燃料・工業品・弾薬・ウランの増減が、 自国だけが見られる記録に出ます。減っているものは赤字です。観光の画面には出ません。
- コマンド欄で何を建てるか分かります。「交易施設建設」ではなく「精製所を建設」 「港をレベル2に改修」のように、数量欄で選んだ内容が出ます。6種類の命令が対象です。
- コマンド欄の色分けを直しました。ターンを使う命令と使わない命令が区別できます。
- 国旗が24種類になりました。設定画面から選べます。20カ国が同じ旗になることはありません。
- 市場画面の農業人口に内訳が出ます。土地由来と農場由来を分けて表示します。
説明書
- 日本語・英語・繁体字中国語の説明書と、ゲーム内ヘルプに次を追記しました。 軍艦の視界、陣営での視界共有、敵対していない艦の通過、推移グラフ、 自給農業のしくみ(人口が少ないうちは全員が自給に回ること)、人手が取られる順序。
設置・更新
- 変更されたファイルだけをアップロードできるようになりました。版ごとの差分をまとめ、 プレイ中の国・会議室・設定は対象に含めません。手順は差分に同梱する
<版>-INSTALL.mdにあります。 - 更新の前後でファイルを照合できます。SHA256の一覧を版ごとに持ち、Perlだけで検査できます。 openssl は不要です。アップロードが途中で切れても気づけます。
- 設置手順から openssl を外しました。データフォルダ名の生成にPerlを使います。
- 版番号を
version.cgiの1行で管理するようにしました。表示は従来どおりversion1.55の形です。 - 配布物から、開発機の作業記録が入っていた初期ログを空にしました。
- 再生成される公開ログを配布対象から外しました。
version1.54
本番で動いていた版です。ここから上が今回の更新分になります。
ここから下の hakoS-24 / 26 / 27 / 30 / 32 は従来の配布名・データ形式に沿った履歴です。内容と記録済みSHA256を保持しています。新しい製品版は上の version1.xx 節へ新しい順に追加します。
hakoS-24 (2026-09-06)
アーカイブ: hakoS-24-20260906.tar.gz / SHA256(先頭16文字): 77305bb5011d445f
この版に入っているもの(前版からの追加・修正。以前の版の内容も含みます):
- 陣営レジストリ、加入・移籍・解散手続き、共同資源、会議室と権限検査。
- 世界市場、産業連関、物理輸送、指値・常備航路・関税、相対契約。
- 木材・石材・鉱石・石油・燃料・工業品・弾薬・ウランの資源管理。
- 軍団32、艦隊16。海軍、乗船、索敵、艦艇補給を共有90×90マップへ統合。
- 山や海を自然地形として保持し、埋蔵資源の種類・豊富さを別属性として保存。
- hakojima.datと市場・計画ファイルを揃えた世代コミット、直前世代復旧、管理バックアップ。
- 建国適地リストに加え、中心と周囲6セルの地形・所有者を現況で再検証。中心は森林/荒地、周辺は許容地形。山・海・浅瀬や使用済み領土への建国を拒否。
- 入出力をUTF-8へ統一。国別領土マップ・資源表示・都市段階を追加。
- 切断耐性と復旧記録:SIGPIPE無視・コミット後の応答送信、復旧証拠の退避と詳細ログ、管理画面からの退避一覧・削除。
初回配布・設置対応
- CGI入口のumask 0077、公開HTMLの0644、local-init.cgiの読込み、CORE-B用shebang/LF、設定から認証ファイルを初期生成する補助、データ・会議室・CGIライブラリの保護設定、設置チェック、初期世界と手順書を追加しました。CGIのCSP応答ヘッダーで、旧テンプレートに残るHTTP素材の取得先をHTTPSへ切り替えます。今回の再生成では、CGI引数由来のdiamond readをSTDIN専用へ変更、POSTを1 MiBに制限、CookieへSecure/HttpOnly/SameSite=Laxを付与、設定表示のXSSを防止、既定パスワードと旧式の無認証初回設定を拒否し、診断画面とエラー表示のパス情報を伏せました。また、応答欠落とロックファイル汚染を起こすプロセス内gzipを削除し、圧縮はWebサーバ側に委ねます。hako-init.cgiの既定値、戦闘・経済等のゲームロジックは変更していません。
- sampleはHTTPSの
https://nations.ssssjima.net、6時間更新、途中参加上限20です。$HlegacyPublicSite=0で固定HTTPチャット・旧旗アップロードを無効にし、$HdemoMode=0で観光者への各国収支・部隊命令行の公開を止めます。旧デモ設定は使いません。公開ログ以外の生成データは0600、非公開フォルダは0700です。 - 初期世界は
c10_big7_forest55_v2のworld.map / world.resources / world.sitesから生成した0国・ターン1・コミット世代1です。builderが必要とするworld.txtも同梱しています。demo/data、既存パスワード、アクセス記録、過去のプレイ状態を同梱していません。
hakoS-26 (2026-09-08)
アーカイブ: hakoS-26-20260908.tar.gz / SHA256(先頭16文字): 4effaaa9b4294077
この版に入っているもの(前版からの追加・修正。以前の版の内容も含みます):
- AIプレイヤー3段: LLMモード画面(
hako-llm.cgi)、ルールAI(hako-ai.cgi/hako-plan.cgi)、未入力計画の穴埋め連携と共通処理(hako-ai-common.cgi)を同梱。 - 日本語・英語・繁体字中国語のUIと
hako-i18n.cgi、3言語の辞書・用語集、構造化ログ定義を同梱。初期公開ログはhakolog.html/hakolog.en.html/hakolog.zh-TW.htmlの3種類。 - 国名・元首名・コメントの任意en/zh欄と
hako-names.cgiを追加。保存形式はdataVersion 26。 - 統計(
hako-graph.cgi/hako-stats.cgi)と観光者通信一覧(lbbslist.cgi/hako-lbbs-view.cgi)、公開画面共通処理(hako-public.cgi)、設定一覧の作り直しを反映。 - 統計HTMLキャッシュは
<dataDir>/stats-cache/に言語別で実行時生成。上限128件で、未知の国IDは404・キャッシュ生成なし。空ディレクトリは同梱せず、data配下のアクセス拒否を継承。 help/index.html/help/index.en.html/help/index.zh-TW.htmlは準備中ページ。各サイト運営者が説明を書く。ヘッダーの配布元2件はWebアーカイブへ変更し、冷蔵庫開発元・外交掲示板のリンクを削除。- 公開CGI入口は
hako-main.cgi/hako-mente.cgi/hako-graph.cgi/hako-editorN.cgi/lbbslist.cgi/deploycheck.cgiの6件。AI・翻訳・統計等のライブラリCGIとlang/のHTTP直接アクセスを拒否。公開ログ・ヘルプ各3種類は許可。hako-log-generation.cgiも非公開のライブラリ。 - 配布用初期化で構造化ログのライブラリを読み込み、単独の地図エディタ・管理画面でもヘッダーの言語別ログリンクを解決。クリーン展開で再現した
logRecentFile未定義による500を解消。
2026-09-08 レビュー修正
- 言語別国名を地図のイベント属性へ連結せず、データ属性と共通イベント処理で表示。国名・陣営プレビューの保存型XSSを修正。
- AIは1国1 CPU秒・AI準備全体60 CPU秒の予算を処理中のチェック地点で検査。超過した国は資金繰り(命令41)の簡易計画を使い、世界は続行。全体予算超過後は残りの対象国も簡易計画。次ターンは通常計画へ再試行し、旧版の20ミリ秒超履歴による次ターン停止を撤廃。
generation-admin.logのAI_BUDGETに対象国・予算範囲・CPU時間を記録。予算超過だけなら復旧操作は不要で、停止したい国はhako-mente.cgiの「国を AI 化/解除」で国ID・マスタパスワードを入れ、「解除(人間)」→「操作種別を変更」を押す。予算以外の例外はエラーとして扱う。 - AI引継ぎ時の前所有者メモ漏出を防止し、LLM画面の言語別国名をJSON引用。
- 辞書の欠落・構文エラー・返却形式不正でも日本語で表示を続行。日本語辞書も使えなければ組込みの日本語案内を表示し、内部キーを出さない。不正な構造化ログの内部情報も公開しない。辞書復元と診断ログの見方は
INSTALL.md手順13を参照。 hako-log-generation.cgiを追加。ログ本文をworldlogs.datに世代保存し、公開hakolog3言語を.hakolog-currentで一括切替。世代巻戻し時は本文から再生成。ログを持たない旧世代は旧ログをlog-orphans/に退避して空の履歴を公開。- 静的ヘルプ・公開ログは言語別ファイルへのリンクで切替え、戻り先CGIへ言語を引き継ぐ。長い翻訳文の折返しを調整。ヘルプ本文は運営者が執筆する。
- 設置チェッカーは必須辞書41ファイルの存在・読込み・形式と、3言語トップの正常要素・HTML/HTTPの言語を検査。HTTP 200のエラー画面を合格にせず、成功時の総合CSSもOKへ切り替える。初期認証では両欄とも
ChangeMe/ChangeSpを拒否し、入替えも不可。
2026-09-08 最終版: POST言語切替・エスケープ監査・訳語調整
hako-i18n-switch.cgiを同梱。開発画面などの言語切替は表示専用POSTで認証と未送信の計画・パスワード欄・コメント欄を引き継ぎ、切替時に計画送信や管理操作を再実行しません。通常リンクのGETフォールバックも保持します。このCGIは非公開ライブラリとしてhtaccess.txtで直接アクセスを拒否します。- 翻訳結果・言語別国名等を要求内でキャッシュし、要求境界でリセット。HTML本文・属性・JavaScript・JSONの出力文脈に応じてエスケープを監査し、翻訳やプレイヤー入力を実行コードとして連結しないよう整理しました。
- ra5js-warとの対照に基づき、繁体字の農場整備・資金援助・食料援助・運営の訳語と、英語・繁体字の記帳操作/完了文を調整。関連する説明文・LLMコマンド辞書も統一し、採用・維持の理由を
lang/glossary.mdに記録しました。日本語の文言とゲームの定数は変更していません。
hakoS-27 (2026-09-08)
アーカイブ: hakoS-27-20260908.tar.gz / SHA256(先頭16文字): 187eb80d155988e9
この版に入っているもの(前版からの追加・修正。以前の版の内容も含みます):
hako-ai-policy.cgiを追加。国ごとに重点(性格に従う・開拓・交易・軍事・均衡)、軍事姿勢(守勢・中立・攻勢)、優先資源(なし・木材・石材・鉱石・石油・燃料・工業品)、対象国(なし・現存国)を選択できます。所有者の開発画面・LLM画面、管理人室の各国フォームで保存し、その国の次回AI計画生成・AI提案に使います。設置チェッカーも方針辞書を含む14モジュール×3言語とログ定義2ファイル(44ファイル)を検査します。自由文の指示ではなく、資源・地形・交戦状態などの制約も引き続き適用されます。- 人間国ではAI代行が起きないため、設定しても即座には効かず、操作種別も変わりません。
rule国の各ターンの生成、llm国の未提出・空計画等の穴埋め時に反映します。攻勢を選んでも方針だけで宣戦布告はしません。変更ログは所有者向けです。
AI プレイヤーの運用
管理画面(hako-mente.cgi)にマスタパスワードでログインし、「国を AI 化/解除」または各国フォームで「AI化(ルール)」を選択して保存します。方針だけなら操作種別を維持し、人間へ戻す場合は「解除(人間)」を選びます。ai_kind の保存値は rule / llm / human の3種類です。ルールAI国は放置削除の対象外ですが、LLM国・人間国の放置判定や人口消滅等は別です。詳細は INSTALL.md 手順14を参照してください。
適用状況の表示
- ビルド時の
version.cgiと共通表示ライブラリhako-release.cgiを追加。version.cgiには同梱CHECKSUMS.sha256自身のSHA-256を記録し、管理画面とチェッカーで照合します。実行時にgitは呼びません。 - 共通フッター、認証後の管理画面、設置チェッカーに版情報を表示。追加ラベルは日本語・英語・繁体字です。
- 管理画面とチェッカーは保存済みデータの版を読み、配布物の版との不一致を警告します。診断表示だけではデータを昇格しません。
dataVersion 24 / 25 / 26 → 27 の移行とバックアップ
v24/v25/v26から上げる前に必ずバックアップを取ってください。 旧データは起動・読込み時に互換処理され、最初の通常保存でv27へ自動昇格します(読込みだけでは保存版を変更しません)。手動変換は不要です。旧版にないAI方針は「性格に従う・中立・優先資源なし・対象国なし」で補い、既存の操作種別・計画・言語別名称は保持します。新しいCGIと lang/ 一式・ヘルプ3言語を一緒に配置し(独自ヘルプは保持、不足言語のみ追加)、配布の空data・初期ログ・sampleを既存データに上書きしません。戻す場合は旧CGIと更新前データをセットで復元します。具体的な手順は INSTALL.md の「dataVersion 24 / 25 / 26 → 27 の移行」を参照してください。
hakoS-30 (2026-09-09)
アーカイブ: 未ビルド / SHA256(先頭16文字): 未ビルド
この版に入っているもの(前版からの追加・修正。以前の版の内容も含みます):
- 物流C:陸路契約を追加。国有領域が1hexでも接する非交戦国間で、双方の関所が開いていれば輸送できます。国ペアの双方向・全契約を合わせて16在庫単位/ターンが上限です。対象は資源0〜7(木材・石材・鉱石・石油・燃料・工業品・弾薬・ウラン)と8=食料。関所政策(91)と買主国の関税率(103)を使い、同陣営間は免税です。海上貨物の対象は引き続き資源0〜7です。
- 物流D:商船の艦級を追加。積載上限は互換級255・小型64・大型255在庫単位です。既存船は互換級として扱います。小型は浅瀬を航行でき、大型は浅瀬を通れず大型港が必要です。商船艦級建造・港大型化(118)と、航路ごとに最大8点を設定できる経由点(119)を追加し、航行距離に応じた燃料消費を反映しました。
- 物流E:港ごとの積卸し等の処理能力を通常港256・大型港1024在庫単位/ターンとし、処理しきれない貨物は翌ターン以降へ繰り越します。未使用の処理枠は蓄積しません。荷主別の保税倉庫と、通過料(120)・保税預託(121)・保税転送(122)を追加。預託貨物は受入国の自由在庫に加えず、荷主と最終配送先を保持して中継します。操作は
INSTALL.md手順15を参照してください。 - 物流G:ルールAIが陸路契約、商船艦級の選択、港の通過料設定、保税転送を利用します。判断には自国の状態と他国の公開情報を使い、他国の非公開在庫・計画・船の積荷等は参照しません。
- 設定一覧の「ターン処理の順序」を日本語・英語・繁体字中国語で訂正。第3文で逆に記載していた陸軍と通常艦艇の順序を、実装どおり「通常艦艇の処理が先、陸軍の移動・戦闘が後」に修正しました。実際の処理順を変えた更新ではありません。
- LLM画面にhex隣接規則、国境接触国と関所・関税、近隣の公開港最大12件と海路距離、自国領土の地形別集計を追加しました。人間国でLLM計画の提出・AI案採用、AI方針の変更、空でないプロフィール更新を受理すると、操作種別を
humanからllmへ自動変更し、AI_SWITCHに記録します。閲覧・検証だけでは切り替えません。また、人間へ戻す際は残っているLLM由来の計画枠を「何もしない」に置き換え、LLM計画を残したまま人間表示で遊べる抜け道を塞ぎました。 - 開発者向けに
t/run-tests.shを追加。時間制限を検査するテストを直列、残りを別の実行で並列化し、時間計測への競合を避けます。
利用者に影響する不具合修正
- 戦争難民のログ人数:平地への入植時に、1セルにつき500人を余分に表示していた集計を修正。以後の受入ログは実際に増えた人口を記録します。過去の該当ログは実際の受入人数より多く表示されていました。
- 移民の所有者判定:A国からB国への移民処理が、第三国の町の人口まで増減させる不具合を修正。出発国・受入国の所有地を確認するようにしました(既存の中立平地への入植例外は維持)。過去の移民ログに記録された人数と、実際に出発国・受入国の地図上で増減した人口は一致しない場合があります。過去のログ・人口を遡って補正する処理は含みません。失業暴動が国境を越えて他国施設を破壊する挙動は仕様であり、変更していません。
- 保税転送の過積載:小型商船などの艦級別積載上限を超えて貨物を積める不具合を修正。転送時も艦級別の上限を適用し、積めない残量は保税倉庫に保持します。
dataVersion 27 → 30 の移行とバックアップ
v27以前・v28/v29から上げる前に必ずバックアップを取ってください。 旧データは読込み時に互換処理され、最初の通常保存でv30へ直接自動昇格します(読込みだけでは保存版を変更しません)。手動変換やv28・v29を経由した保存は不要です。v28(陸路)は既存の世界共通物流データを拡張し、国レコードの行数は増えません。v29(港湾通過料)・v30(商船艦級・航行状態・経由点)で国レコードを順に1行ずつ追加します。旧版にない値は、契約の輸送方式を海路、通過料を0、既存商船を互換級、経由点を空として補います。新しいCGIと lang/ 一式を揃え、配布の空data・初期ログ・sampleを稼働データへ上書きしません。戻す場合は旧CGIと更新前データをセットで復元します。具体的な手順は INSTALL.md の「dataVersion 27 → 30 の移行」を参照してください。
hakoS-32 (2026-09-13)
アーカイブ: hakoS-32-20260913.tar.gz / SHA256(先頭16文字): ea2527d03447f877
7カ国入り配布世界(2026-09-13)
- ターン68・世代149のデモ世界を引き継ぎます。ID 8「あろあろ国」はhuman、ID 1・3・4・5・6・7はrule。外部API鍵は不要です。
- 世界地図・配置・国の資産・パスワード・所有者名・現役ログは保持。最終更新時刻だけビルド時刻に合わせます。過去版の「0国・ターン1」は今回の初期世界には該当しません。
- 配布用dataのSHA256、7カ国のID集合とAI種別、現行dataVersion、ターン、世代を検査します。ビルド時にlive demoを読むことはありません。公開ログ3言語もコピーした内容を同梱します。
- 3陣営の会議室は空で開始します。現行の
room-secretと、ゲームのallianceRoomSync()→allianceRoomMigrate()が生成するroom.json(投稿0件)・room.lockを同梱します。過去の会話ログ・旧保存先のファイルは取り込みません。data/alliance.jsonのroom_state=readyと一致し、会議室を再作成せずに利用できます。設置時はhakos-private/を内容ごと指定の非公開保存先へ配置してください。
シーズン対応(同梱)
- シーズン管理・アーカイブ・世界再生成の3ライブラリ、cron用
tools/season_tick.pl、13候補×4ファイルを配布対象に追加。候補の入力元をリポジトリ内world/candidates/に統一し、配布検証も明示一覧と原本を照合します。 - 候補名は13件、盤面SHA256は12種類です。
c10_big7_forest55とc10_big7_forest55_v2は同じ盤面です。初回採用は同盤面の複数候補名を許容し、resources/sitesの一致を優先して名前を特定します。次シーズンは現在と同じ盤面SHA256の全候補を抽選から除外します。 - sample の既定は単独60%・陣営70%、最低100・上限360ターン、12時間更新、終了後14日/7日待機、陣営在籍14ターン、AI4陣営、gzip無効です。既存世界は初回採用し、導入前の履歴は再構築しません。シーズン有効中は旧1国終了判定を使わず、早期終了は最低100ターン以降の領有率条件、時間切れは360ターンで判定します。
season.datを世代コミットのsidecar(schema 1)へ追加。dataVersion 32は維持しますが、旧実行コードでは新manifestを読めないため、コードだけの巻戻しはできません。- 履歴は保護された
data/seasons/に保存し、終了後にCGI経由で公開します。画像の相対参照先は現在のimage/であり、画像・描画更新により過去の見た目も変わり得ます。古い履歴の自動削除は行いません。 - バックアップ、候補配置、設定コピー、初回採用、10分間隔cron、終了済み履歴の手動整理について
INSTALL.md手順16に記載しました。cron登録は運営者が行います。
この版に入っているもの(前版からの追加・修正。以前の版の内容も含みます):
- 物流H(民間経済):H0〜H8を実装・マージしました。基準の確定、保存形式、会計、公開情報による判断、陸路・海路、外交、旧入口の切替と資産移行、全体検収を含みます。
- 民間部門が国とは別に現金・在庫・勘定を持つようになりました。国庫・民間現金・原産地別内訳の整合を
civilHValidateが毎ターン検査し、台帳残差が0であることを確認します。 - 民間が自分で売買を判断し、実際に取引します。判断には公開情報だけを使い、他国の国庫・命令・軍事・パスワードは読みません。
- 陸路輸送と国別禁輸に対応しました。禁輸は取引・輸送の認可時点で適用します。
- 海路輸送・商船建造・港に対応し、民間が自分の船を出します。民間船は軍艦と別枠で、1国あたり8隻が上限です。
- 外交の援助・交換をコマンド番号123以降に追加しました。援助・交換は輸送が必須で、無税です。 援助でも船か陸路が必要なため、封鎖によって輸送が止まります。
- H7で旧方式の交易入口145件を閉じ、取引・資産管理を民間部門へ移しました。既存契約・国有商船・常備航路の扱いは、下記の移行節を確認してください。
- H8では7か国・60か国の実世界データで、全台帳の残差0、輸送容量、同時要求での二重確定防止、64ターンの長期停滞、世代復旧を検査しました。CORE-B実機の性能は未測定です。
利用者に影響する不具合修正
- 国の消滅時の商船検証:国に死亡フラグが立ってから退場処理までの間、まだ存在する船を「旗国が存在しない」と判定し、ターンが停止する不具合を修正。退場処理が済むまで船と旗国の対応を維持し、保存時には通常の検証を行います。
- 国の放棄時の国庫照合:国庫の現物がまだ残っている段階で、民間側が管理する国庫の原産地別内訳だけをゼロにし、不一致でターンが停止する不具合を修正。国の削除まで現物と内訳の対応を維持します。
- 放棄後に残る倉庫:放棄した国の倉庫が中立地形として残ると、所有者を判定できずターンが停止する不具合を修正。倉庫内の既存の所有権・原産地と、代金を支払い済みの他国の権利を保持します。
- 旧命令の拒否ログ:閉鎖した旧命令を拒否した記録が表示できない不具合を修正。保存済みの該当ログも日本語・英語・繁体字中国語で表示します。
dataVersion 30 → 32 の移行とバックアップ
v30から上げる前に必ずバックアップを取ってください。 v30からv32へ直接移行でき、未配布のv31を経由する必要はありません。新しいCGIと lang/ 一式を揃え、配布の空data・初期ログ・sampleを稼働データへ上書きしません。戻す場合は旧CGIと更新前データをセットで復元します。
既存契約・国有商船・常備航路は、そのまま継続せず返金・返送の対象になります。 契約は解除して預託金を返し、常備航路は解除します。貨物を返送し、旧国有商船は所有国の港へ戻して強制的に解体し、建造資材を返却します。
旧国有商船の解体はプレイヤーの選択ではありません。移行補償として、艦級別の建造費を資金・工業品とも100%返し、HPによる減額はしません。 強制移行によって損をさせないための措置です。
| 艦級 | 返却(資金+工業品) |
|---|---|
| 互換255 (class 0) | 200 + 20 |
| 小型64 (class 1) | 120 + 10 |
| 大型255 (class 2) | 400 + 40 |
この補償はH7移行に限った規則で、通常運用の除籍(コマンド73)には適用しません。
港が無い国の移行は完了しません。no_port が残る世界は運用上の有効化条件を満たしません。 H8では故意に港を除いた停滞試験で64ターン no_port を保持し、港復元後に解体・移行の完了を確認しました。未完了の荷物・権利を捨てて移行済みにする処理ではありません。更新前の世界のコピーで移行を確認し、未解決の返送・預かり・権利が残っていないことを確かめてください。
未実装・試験の範囲
既知の多言語表示の制約
サイト独自のタイトル・管理者名は、local-init.cgi の任意の英語・繁体字欄を設定すると切り替わります(空欄なら主言語)。建国・自動削除・強制削除の新規履歴を構造化し、凍結・凍結解除も既存の管理人あずかりの文面で記録します。放棄・人口消滅は従来の構造化ログを継続使用します。日本語文面と旧形式ログは保持します。既存ログ・プレイヤーの入力・サイト独自文言を自動翻訳する機能ではありません。
AIは上記の実装範囲を同梱します。外部LLMサービスへの接続・課金・継続運用の検証は配布煙試験には含みません。
物流 C・D・E・Gは実装・マージ済みで、hakoS-30から引き続き同梱します。物流H(民間経済)はH0〜H8すべて実装・マージ済みで、hakoS-32の対象です。予約の発電・砲弾・船体・宇宙関連は引き続き未実装です。予約値や表示フラグの存在は、本機能の実装を意味しません。
市場調整率、価格・需要、工場レシピ、採掘・枯渇、輸送費、戦闘・補給費、陣営費用等の定数は十分な対人プレイテストをしていません。既存の採用済み価格設定(燃料17・工業品38・弾薬43)をそのまま継承しています。配布作業では数値を再調整していません。
構文・既存テスト・空世界からの建国と計画送信・AI方針を変更した各2ターンの煙試験は、満員時の性能、長期運営のバランス、本番Apacheの設定適合性を保証しません。本番接続・アップロードは行っていません。180 CPU秒・同時CGI20の実環境での確認は設置時に行います。
適用状況の確認方法
配布ビルドでは、同梱ファイルから CHECKSUMS.sha256 を確定し、そのファイル自身のSHA-256(64桁)を $HreleaseManifestSha256 として version.cgi に記録してからアーカイブを作成します。展開した同梱ファイルだけで照合でき、外付けファイルの上書きは不要です。循環を避けるため、一覧自身と version.cgi、外側の管理一覧 RELEASE.json は一覧の対象外です。同梱ファイル数にはこの3ファイルも含めます。更新時は差分に同梱する手順書の RELEASE.json を使って全管理ファイルを検査します。
「同梱物の照合」は、実際に読んだ CHECKSUMS.sha256 のSHA-256と版情報の一致を示します。不一致は「不一致」、manifestの欠落・読取不能や版情報のハッシュ不正は「未確認」です。manifestの一致だけでは、個々のファイルの欠落・変更や版情報自体の改変までは検出できません。設定前の展開先で shasum -a 256 -c CHECKSUMS.sha256 を使い、一覧の全件を検査してください。稼働後に変わるdata・設定等は、この初期検査と区別します。
アーカイブ自身のSHA-256は dist/*-archives.sha256 に全64桁、配布元の RELEASE_NOTES.md の版ごとの節に先頭16文字を記録します。圧縮後の値なので同梱ノートの当該欄は未確定です。ダウンロードしたtar.gz・zipはそれぞれ *-archives.sha256 で検証します。画面にはアーカイブ名を表示し、アーカイブのハッシュは表示しません。
hako-mente.cgiにマスタパスワードでログインし、冒頭の「リリース情報」を確認します。配布物の版・ビルド日時(JST)・commit・アーカイブ名・同梱ファイル数を配布時の記録と照合します。「同梱物の照合」が「一致」であることも確認します。Perlのバージョンとlang/の.plファイル数も表示します(3言語辞書と共通定義を含む実数。辞書の完全性はチェッカーで確認)。- 共通フッターに
リリース: 1.55 (2026-09-13)のように製品版を表示します。従来の配布はhakoS 27の形です。英語はRelease、繁体字は發行版本。version.cgiがない開発ツリーや旧配布物では、この行は表示しません。表示される日付はビルド日のJSTです。 - 更新した
deploycheck.cgiをゲームCGIと同じ場所に置き、ブラウザで開きます。冒頭の版情報と「version.cgi」「同梱物の照合」(一致ならOK、それ以外はNG)「配布物の版とデータ版の一致」を確認します。この判定は配布物が要求する保存形式(32)と実際の保存形式を比べます。製品版1.xxと32を比較するものではありません。?lang=ja/?lang=en/?lang=zh-TWで追加ラベルの言語を選べます。既存の設置検査も実行し、確認後はチェッカーを削除します。 - 配布27・データ26などの警告は、ファイル更新後に通常保存がまだ行われていない場合にも出ます。
INSTALL.mdの更新手順に従い、完全バックアップを確保し、作業者のみアクセス可能な状態でメンテナンスを解除して通常の計画保存を完了し、再確認します。読み込みだけでは保存版は上がりません。データ版の行を手作業で書き換えたり、配布の空dataを上書きしたりしないでください。 - 通常保存後も一致しなければ、CGI一式・辞書・版ファイルの配置先、
local-init.cgiが参照する稼働data、CGIエラーログと「世代の整合検査」を確認します。データ版の方が新しい場合も警告します。部分的な差戻しを避け、旧版に戻すときは対応するCGIと更新前データをセットで復元します。データ版の読み取り不能は「未確認」と表示し、一致扱いにしません。版ファイル欠落時は管理画面の版情報を表示せず、チェッカーでは「未確認」になります。