![見出し画像](https://assets.st-note.com/production/uploads/images/10419372/rectangle_large_type_2_589bd946b76e4284024b4c62691966e5.png?width=1200)
Pyxelでパズルゲームを作ったのでメモ書き
昨日は「東ゲ部もくもく会」に参加してPyxelでミニゲームを作ってきました。
これはどういうゲームかというと、テトリミノをうまくフィールドに当てはめて、ニャンコをゴールまで導くゲームです。
というわけで、なぜこのゲームを作ったのかまでの思考のメモを書きます。(かなり個人的な内容です)
■「テトリスの仕組み」を使った何かを作ってみたかった
このゲームのアイデアは東ゲ部もくもく会の前日に考えました。もくもく会に参加するなら何か作らねば……という切実な問題があって、それならテトリスの仕組みを応用して何かできないか……というでっち上げの発想から出発しています。
ただ、漠然とテトリスについて考えても何も思い浮かびません。そこで、休日でぼんやりしていた頭を強引に働かせるため、適当にゲームジャンルを組み合わせて、何か生まれないかを考えてみました。
* ジャンプアクションテトリス
* 探索ゲームテトリス
* マッチ3テトリス
* お絵かきテトリス
* RTSテトリス
* タワーディフェンステトリス
* 経営シミュレーションテトリス
* サウンドノベルテトリス
* 弾幕シューティングテトリス
* アルカノイドテトリス
* レースゲームテトリス
* ドットイートテトリス
* RPGテトリス
* しりとりテトリス
* ステルスゲームテトリス
* 3Dダンジョンテトリス
* シューティングテトリス
* ローグライクテトリス
* 音ゲーテトリス
* 対戦アクションテトリス
* ベルトスクロールテトリス
かなり適当ですね……。この中から、自分のイメージに合うものを選んでみました。
* しりとりテトリス
* ローグライクテトリス
* 探索ゲームテトリス
* ドットイートテトリス
* RPGテトリス
* ステルスゲームテトリス
* 3Dダンジョンテトリス
これらのイメージから連想して、ダンジョン探索的なテトリスが良さそう……と考えました。結論としては、3DSのすれちがい通信で遊んだ「すれちがい迷宮(誰かとすれ違うとテトリミノを受け取って、それを使って迷宮を探索できるゲーム)」が面白かったことを思い出して、それを作ることに決定。
最初は「しりとり」を使って、配置した文字にテトリミノがつながるゲームを考えましたが、つながる単語の判定が難しそうなのでやめました。
では、文字ではなくて色をつなげても良いのでは……?
このような色をつなげるルールを考えましたが、「複雑すぎて理解しずらい……」と思ってボツにしました。
考えるうちに、結局「すれちがい迷宮」のようにプレイヤーが存在するエリアに接する場所に置くことができる、というルールの方がシンプルでわかりやすいと思い、その方針で進めることにしました。(このあたりまでが、朝会場に着くまでの電車の中で考えたこと)
■障害となる敵の存在
ただゴールへ移動するだけでは、ゲームとして面白くありません。そこで敵を配置しました。
これまた「すれちがい迷宮」と同じ仕様で、配置したブロックが敵に接触すると、敵がプレイヤーに接近してきます(すれちがい迷宮の場合はここでエンカウントとなりバトルが始まりますが、本ゲームではゲームオーバーとしています)
バトルシステムを実装するには時間が足りないので、敵に見つからないように「ステルス」するゲームも良いかなと思ったのですが、何かしら敵を倒す要素があるといいかなと思いました。そこで "本家テトリスのルール" を応用して「横一行」もしくは「縦一列」を全て埋めると、そこに存在する敵を倒すことができる仕組みにしました。
しかしこのルールはあまり直感的でなく、何が起きているのかわかりづらいものとなっています。理由としては、一回の行動で「移動」と「攻撃」が同時に発生していて情報が多くなりすぎているからかもしれません。もう少し演出を変更すればわかりやすくなるかもしれませんが、時間切れでここまでの実装となりました。
■この後どうするか
個人的な感想としては、「まあまあ面白いけれど、このままではステージ数を増やした時に、アイデアを膨らますことが難しい。また『すれちがい迷宮』とほぼ同じゲームシステムで新規性もない」と判断して、お蔵入りにする予定です。
ただ、ローグライクをまた作ってみたい欲求があるので、それを作る時にフィールドの移動をこのシステムにしてみるのはアリかもしれない……、などと思いました。
■さらなる個人なメモ
▼このシステムでローグライクを作る場合
* この手のゲームは配置の自由度が低く、配置できないがために、行動を制限させられてしまうのが問題
* ブロックを既存の部分に重ねたらペナルティでHPが減る……として自由に配置する余地を用意するのも良いかもしれない
* 配置の形状を利用してバトルを有利にできるシステムが良いかも
* まとめて(1ブロック)で複数の敵と戦うとボーナスが入るようにする。獲得アイテム増加、ターン経過によるペナルティ軽減(食料が減らない)など
■ソースコード
ソースコードは github にアップしています。
https://github.com/syun77/TetrisPuzzle
実行には Pyxel のインストールが必要です。また現状はブロックをどこにでもおけてしまうので、ちゃんとしたゲームにするには、配置の制限を実装する必要があります。
この記事が気に入ったらサポートをしてみませんか?