見出し画像

Pyxelでスマホ向け戦略シミュレーションゲームを作る(2)

Pyxelで三国志ゲー、制作続けています。

気づいたら3週間経ってるのかあ。
時間が少しでもあれば制作に注ぎ込んでいたので、noteで記事を書いている余力がありませんでしたが、noteだけ見てくださっている方もいらっしゃるのでXでの進捗報告(これも週1ペース・・)と少しだけ+αの制作所感を。

進捗:1/28

進捗:2/3

進捗:2/10

直近のポストのとおり、この記事のヘッダーにもしている皇帝三人衆のイラストはエリむーとさんに描いていただいたものです。僕のイメージを汲み取ってくださってとても嬉しい。

パフォーマンス問題に悩む

制作のほうでは主にAIのアルゴリズムに注力しているのですが(ゲーム自体は極めて地味なので)、意外に苦戦させられているのがパフォーマンス問題です。

AIが適切な行動をとるために相当量のループや計算をしているので、まあ現代のコンピュータなら余裕っしょ、と最初はズブズブなソースコードを書いていたのですが、PCはいいのですが計算性能がやや劣るスマホでテストプレイすると処理落ちしまくってBGMがノイズだらけになってしまいました。

このゲームは30fpsで作っているのですが、アクション性や凝ったアニメーションは一才ないので、雑に15fpsとかにして対処することもできるっちゃできます。
しかし、さすがにこの程度のゲームにもかかわらず現代のスマホの性能で30fpsで処理落ちさせるというのはプログラマーとして恥ずかしいので、どうにかして対処しています。

ゲーム設計上、勢力内に60人とかいる武将全員がそれぞれの居場所や性格にもとづいて「現状で一番良いコマンドは何か」を考えているので無駄に計算量が多いのですよね。
もっと割り切ったAIのアルゴリズムにすることも全然できるはずで、昔のスーファミやファミコン、もしくは今よりはるかに性能が低いPCでそれなりに快適に動く信長の野望や三国志を作っていたKOEI様はやはりすごいというか、AIの思考に時間がかかりすぎないような試行錯誤も相当されていたのだろうと想像します。

ChatGPTに助けてもらう

こんなときもChatGPTさんは優秀で、時間がかかっていそうな関数のコードをぺたっと貼り付けて「これ、処理効率悪いっすかね?」などと聞くと、「問題点がAとBとCの3つあります。改善コード案を提示します。」とものの数分で完全に動作する上位互換のコードを出してくれたり、あるいは考え方(この部分は切り出して事前に計算しておいたほうがいいんじゃない、とか)を提示してくれます。
おかげでかなり楽をさせていただいています。

たとえばこんな感じ。

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

と、大したことない内容でしたが状況報告でした!

次の記事


この記事が気に入ったらサポートをしてみませんか?