Pyxelでスマホ向け戦略シミュレーションゲームを作る(2)
Pyxelで三国志ゲー、制作続けています。
気づいたら3週間経ってるのかあ。
時間が少しでもあれば制作に注ぎ込んでいたので、noteで記事を書いている余力がありませんでしたが、noteだけ見てくださっている方もいらっしゃるのでXでの進捗報告(これも週1ペース・・)と少しだけ+αの制作所感を。
進捗:1/28
「Pyxelで8ビット風三国志」の進捗。軍議で提案を選んでターンを回して、といった基本の流れができてきました(選べるコマンドはまだ一部)。
— frenchbread (@frenchbread1222) January 27, 2024
課題としてはやっぱり画面が地味すぎるんですよね。武将の顔グラがあると映えるのだけど250人とかになるし・・あとは地図のビジュアルとかですかねー🧐 pic.twitter.com/PDqZfjkr6w
進捗:2/3
Pyxelで8ビット風三国志、まだまだ機能は不完全なんですがCPUが自律的に行動できるようになってきました。デモモードでひたすらCPUの行動を見てルーチンを調整中⚔️
— frenchbread (@frenchbread1222) February 3, 2024
いまのところ史実と異なり曹操が各勢力からボコボコに叩かれながら耐える展開になりがち。これはこれでリアリティがある・・かも? pic.twitter.com/QCQS2UQUzO
進捗:2/10
Pyxelで三国志、タイトル画面用にエリむーとさん(@Emt_mezzo)に孫権・曹操・劉備の素敵なイラストを描いていただきました!
— frenchbread (@frenchbread1222) February 9, 2024
劉備は私のこだわりで演義の聖人イメージではなくヤクザっぽくしてもらってます😎
動画はタイトル〜シナリオ・プレイ勢力選択してゲームスタートまで。 pic.twitter.com/WVJZ0ErIUA
直近のポストのとおり、この記事のヘッダーにもしている皇帝三人衆のイラストはエリむーとさんに描いていただいたものです。僕のイメージを汲み取ってくださってとても嬉しい。
パフォーマンス問題に悩む
制作のほうでは主にAIのアルゴリズムに注力しているのですが(ゲーム自体は極めて地味なので)、意外に苦戦させられているのがパフォーマンス問題です。
AIが適切な行動をとるために相当量のループや計算をしているので、まあ現代のコンピュータなら余裕っしょ、と最初はズブズブなソースコードを書いていたのですが、PCはいいのですが計算性能がやや劣るスマホでテストプレイすると処理落ちしまくってBGMがノイズだらけになってしまいました。
このゲームは30fpsで作っているのですが、アクション性や凝ったアニメーションは一才ないので、雑に15fpsとかにして対処することもできるっちゃできます。
しかし、さすがにこの程度のゲームにもかかわらず現代のスマホの性能で30fpsで処理落ちさせるというのはプログラマーとして恥ずかしいので、どうにかして対処しています。
ゲーム設計上、勢力内に60人とかいる武将全員がそれぞれの居場所や性格にもとづいて「現状で一番良いコマンドは何か」を考えているので無駄に計算量が多いのですよね。
もっと割り切ったAIのアルゴリズムにすることも全然できるはずで、昔のスーファミやファミコン、もしくは今よりはるかに性能が低いPCでそれなりに快適に動く信長の野望や三国志を作っていたKOEI様はやはりすごいというか、AIの思考に時間がかかりすぎないような試行錯誤も相当されていたのだろうと想像します。
ChatGPTに助けてもらう
こんなときもChatGPTさんは優秀で、時間がかかっていそうな関数のコードをぺたっと貼り付けて「これ、処理効率悪いっすかね?」などと聞くと、「問題点がAとBとCの3つあります。改善コード案を提示します。」とものの数分で完全に動作する上位互換のコードを出してくれたり、あるいは考え方(この部分は切り出して事前に計算しておいたほうがいいんじゃない、とか)を提示してくれます。
おかげでかなり楽をさせていただいています。
たとえばこんな感じ。

ちなみにこの例ではあまり言及されていませんが、「武将が」とか「軍勢が」とか、こちらが意図したゲーム上での変数の意味をちゃんと汲み取って発言してくれたりするのが地味にテンションが上がります。
まあ確かに、人間の優秀なプログラマーに見せても「え、お前これなに?信長の野望でも作ってんの?」と見破られるかもしれませんが、GPTさんの優秀さには本当に舌を巻きますね。
と、大したことない内容でしたが状況報告でした!
次の記事
