Making a game in PICO-8: Bashing against collision

これは私の 3 番目の部分です日記初めてのゲームの作成についてピコ-8[公式サイト]。 No Frog Left Behind にはマップが追加され、プレイヤーを移動できるようになりました。しかし、私は現在 3 回目の大きなセッションを行っているところですが、そこで何らかのゲームが行われるまでには長い道のりがあります。

実際のゲームを実行するための鍵は、プレイヤーが通行できない水、カエルが弾丸、カエルが箱など、物が衝突したときに対処することです。これはカエルを弾丸の入った箱に押し込むゲームだからです。そしてコリジョンは私のアジンコートです。

適切なゲームのコードを見てもよく理解できなかったので、これを自分なりのひどい方法で解決しなければならないことはわかっていますが、ゲームがどれが固体オブジェクトであるかを認識するために、スプライトに「フラグ」がよく使用されていることがわかります。 。もう少し調査すると、fget() と呼ばれるものを使用して、ゲームで特定のスプライトのフラグを参照できることがわかりました。そして、mget() と呼ばれる別のコマンドがあります。これは、エディターでゲーム用に描画したマップ シート内の場所を調べます。

計画があるんだ。私たちは水域に旗を立てて、そこに移動できないことを示します。ゲームに、プレイヤーの位置の横、上、下にどのようなタイルがあるかをマップ上で継続的に調べさせ、通行不能のフラグが立てられている場合、プレイヤーは移動できません。

以下に続くのは、大きな間違いです。まず、入れ子になった恐怖の方程式に正しい数の括弧を入れて、自分の発言を適切に終わらせることができません。次に、マップの小さな 16x16 縮尺と画面の 128x128 縮尺を適切に結合できず、マップ上の間違った場所が検索されます。何時間もかけてすべてを検討するうちに、ゲームがプレイヤーの周囲を通行可能 (FALSE) と通行不能 (TRUE) と判断したものを、プレイヤーの座標とともに画面上に書き出すようになりました。

これは、左側のチェックのために私がたどり着いた解決策のネズミの巣です。

if btnp(0) and (fget((mget((((player.x-32)/8)-1), ((player.y-32)/8))),0)) == false then
    player.x -= 8
end

相互にチェックする必要があることにも留意してください。これが完全なホラーショーであることは承知しており、深くお詫び申し上げます。しかし、それはうまくいきます!私のキャラクターがスイレンの葉の上を歩くようになりました。 (ただし、ここのカエルは完全にランダムかつ自由に動き回っています。まだその部分を実行していないためです。)

私の小さな内部システムは機能しています。とても良い気分です。この時点で、私は成功に頭が上がり、まったくの気まぐれで、ゲームをターン制にしようと決めました。そうすれば、あなたが移動した後にのみ物事が起こるようになります。このようなものは、ゲームをアクションから戦略へと完全に変えます。ボタンを押すたびにリセットされる小さなカウンターを使用するため、実装には約 15 秒かかります。ゲーム開発は簡単だということを実感しています!

こうして私はカエルの仕事に取り掛かり、私の大きな懲らしめが始まるのです。

同じ原則をカエルにも適用しようとしました。リアリズムなんてクソ、カエルも水の中に入ることができませんが、プレイヤーの入力を受け取る代わりにランダムに動きます。信じられないかもしれませんが、おそらく不可能です。 AI システムをプログラムする。ランダムな方向を選択させて、そこに移動できるかどうかを確認します。それができない場合は、フロッギースタイルの予測不可能性のためにその場に留まることになります。

最初から実際に動作するわけではありません。斜めに移動することもあります(下に2回変数を使ったため)。明らかな理由もなく水に浸かってしまいます(間違ったフラグを確認していました)。ようやく正しく動作しているのを確認したとしても、まだ信頼できないので、周囲にあると考えられるものについてのデバッグ テキストも作成しました。

しかし、それはまったく意味がなく、カエル自身の動きと完全に矛盾しています。狂気のパターンが見当たらず、自分のスパゲッティ コードに目を凝らしてみました。 45 分ほど頭を抱えた後、テキストがカエルの最後の動きを報告していることに気付きました。これは、私がご覧の動きの前にカエルの位置に関する情報をキャプチャしていたからです。

ゲーム開発は大変ですが、それはいつも私のせいです。そして次はカエルに向けて発射する弾を作らなければなりません。崖面がどんどん切り立っていくような気がします。

全シリーズはこちら、クリスマスの一週間にわたって毎日公開します。また、PICO-8 は現在、Humble GameDev ソフトウェア バンドル、興味があれば試してみてください。