前回、レトロターン制戦略ゲームにマップエディタを実装した。
今回は、マップの保存と読み込みを実装する。
また、テスト用にゲームボーイウォーズのマップを再現して、プレイできることを確認する。
マップの保存と読み込み
マップエディタで、右クリックのメニューから、マップの保存と読み込みができるようにした。
質問:
EditorSceneで、右クリックメニューからマップの保存と読み込みができるようにしたい。 どのように実装すればよいか検討してください。
回答:
おすすめは、右クリックメニューの UI は MainWindow、ファイル状態は ScenarioEditorDocument、表示更新は EditorScene に分ける形です。 ...(略)
そのまま実装を指示して、問題なく実装できた。
ゲームボーイウォーズのマップの変換
ゲームボーイウォーズの全マップを画像で掲載しているサイトがあったので、その画像を元に、テンプレートマッチングで地形をデータ化して、今回実装したマップのJson形式に変換を行った。
Codexが使用上限になっていたので、ChatGPTでPythonスクリプトを実装した。
サンプルのJsonを与えるだけで、変換方法は何も指示していないが、変換スクリプトが実装された。
{
"width": 16,
"height": 16,
"day": 0,
"currentSide": "red",
"forcedWinner": null,
"funds": [
0,
0
],
"tiles": [
{
"coord": {
"col": 0,
"row": 0
},
"terrain": "sea",
"owner": null,
"originalOwner": null,
"capturePoints": 0
},
(略)このような形式に変換できた。
ゲームボーイウォーズのマップ読み込み
コマメ島のマップが読み込みできた。

テストプレイ
テストプレイしたところ、ゲームルールの実装がいろいろ間違っていることがわかった。
- ゲーム開始時に所持金が0になる
- 首都や工場で正しいユニットが生産できない
- ユニットを作ると相手が全滅になってゲームが終了する
- 輸送ヘリが森や山で降車できる
- ユニットが与えるダメージが明らかにおかしい
ダメージや降車については、GeminiのDeep Researchの結果が怪しいので、ChatGPTでWebで調べて検証を依頼したところ、間違いが散見された。
GeminiのDeep Researchは信用できない。
ChatGPTでDeep Researchをやり直して、結果をWebで検証させることで、仕様を修正した。
修正版の仕様を元に、Codexで実装に反映した。
実際に最後まで遊んでみる
コマメ島のマップで最後まで遊べるか確認した。
AIが弱く、戦車Bしか作成しない。
あっさり首都を占領して勝てた。
AIが弱すぎて面白くないが、最後までゲームボーイウォーズと同じ挙動でプレイできることは確認できた。

まとめ
マップエディタに保存・読み込み機能を実装した。
ゲームボーイウォーズのマップを画像からテンプレートマッチングで変換し、実際に読み込み・プレイ可能にした。
テストで仕様や実装の誤りを修正し、最終的に一通り遊べる状態を確認した。
AIが弱すぎるので、次はAIをある程度強くしたい。
マップの自動生成も行えるようにしたい。