見出し画像

AIと作る「自動配置システム」と「BlockTennis」をガッチャンコ

blockの自動配置

前回は、AIと一緒にBlockの配置の自動生成を作った。
今回は、以前AIと作った「BlockTennis」とガッチャンコしてみる。

Block Tennis


アドバイザーのAIはCopilotさん


BlockTennis×ブロック自動配置システム

さっそく、BlockTennisとブロック自動配置システムをガッチャンコ。
前回作ったobj_generateを「既存のものを追加」で、BlockTennisに取り込んで、ルームに配置するだけの簡単移植。

「既存のものを追加」で取り込んでルームに配置
Block Tennis × 自動配置システム

こんな風に、毎回違うブロック配置をしてゲームができるようになった。
ここから、遊べるように調整していく。

ブロック数とx方向の範囲を調整

黄色い部分がブロックの自動配置範囲

今の設定
画面の大きさは、640x360。(16:9というテレビの画面比率)
ブロックの大きさは20x20。
グリッドは10x20。
X軸は真ん中から左右に60ドットで120ドットの範囲(12グリッド)における。Y軸は、18グリッド。
ブロック数は左右10個づつで20個に設定。
つまり、12x18の中に20個置く形。

プレイした感じ、ブロックに阻まれて、片側のフィールドだけでブロック崩しをやっている感じで、両方のフィールドにいけない。
この問題を修正するために、以下を調整してみる。

調整項目
・ブロックの数が多すぎるので減らす 20→18
・x軸の範囲を広げる        60→60
・ブロックの反射を変える      Copilotさんに聞いてみる

Copilotさんにボールの反射を相談

move_bounce_all関数は、GameMakerにおいてオブジェクトがすべてのタイプのオブジェクトに衝突した際に反射する動作を実現するための関数です。この関数を使うと、固体オブジェクトだけでなく、すべてのオブジェクトに対して反射することが可能です。
move_bounce_all(false)は、オブジェクトが反射するようにします。falseは基本的な反射処理であり、trueにすると高度な反射処理が行われます。

Copilotさんの回答
move_bounce_all(true); // 今回は高度な物理反射処理を採用

調整後、反射が自然になって、相手の陣地にも行く用になってきた。

調整後

しかし、ブロックが上下どちらかに偏ってしまうので修正だな。


次回は、ブロックを偏らずに配置する。ヒントは対称。


いいなと思ったら応援しよう!

この記事が参加している募集