ヤバウチといっしょ

マジで誰も見てないブログ

自作ゲーム 進歩⑥

無職になって2ヶ月、ヤバウチだ。

更新していなかった先週はPhaser3を触っていた。

phaser.io

vscodeやnodejsや、webpackの設定は以前からしていたので、環境構築には手間取らなかった。そしてPhaser3の概要を掴むために↓のイントロダクションをやった。

phaser.io

コールバックを理解していないとちょっと難しいとは思うものの、かなり宣言的にプログラミングができる。簡単に最初のPhaser3のゲームを作ることができた。

  • この画像をテクスチャに使うぞ!
  • この物理ボディにこのテクスチャ使うぞ!
  • この物理ボディは画面端で跳ね返るぞ!速度はこうで、弾性はこうだぞ!
  • プレイヤーと足場は衝突するぞ!衝突した時のハンドラはこれだぞ!
  • アニメーションを作るぞ!この設定オブジェクトから作ってくれな!

...こんな感じでしたいことを並べていけばいい、そしてそのしたいことの詳細は一切知らなくていい...そんな感じ。すげええええと思った。

もうPhaser3でゲーム作れるじゃん!と浮かれた俺は、APIリファレンスや豊富なデモを参考に数日色々試した。

しかし、色々試すうちに「使いこなすの難しいな...」と苦しむようになってしまった。

あんまり深入りせずに素直に使うなら、用意されたメソッドに既定の設定を与えて使うだけでいいけども、少しだけ既定とは違う設定にしようとしたときに、APIリファレンスを結構読まないと、意図した動きにならなかったりする。dynamicBodyとか。設定が山ほどある。どれがどれだかわからないぐらい沢山あるので大変だ。

パーティクルシステムとかも特にわかりづらく思える。sceneのメソッドやプロパティから直接パーティクルエミッターを触る方法とかが調べても調べてもわからなかった。

sceneに色々textureやらsoundやらanimやらのManagerがぶら下がってるのになんでparticleのManagerはないんだろう?と思った。

...先週はそうやってPhaser3を触り、自作のゲームフレームワークの方は触っていなかった。

今週は自作ゲームフレームワークを触っていた。

インベントリシステムを作ろうと頑張っていた。そして考えあぐねてもいた。所持アイテムをインベントリビューで一覧表示するやつ。ソートしたりアイテムクリックで使用したり、アイテムをドラッグして場所を変えたりするやつ。最低限の機能は作り終えたけれども、悩んでいるのはアイテムの使用。アイテムを使うってどういうことなんだろうか。

あと、動的にゲームオブジェクトを追加する仕組み。サンドボックスゲームみたいにアイテムをフィールドに設置するやつ。今までは初期化時に全部のゲームオブジェクトを用意する処理を書いていた。その意味で静的だった。ボタンをぽちっと押したらキャラが上から降ってくるような(新たにゲームの世界にキャラが生成されるような)デモを次の更新であげたい。

綺麗な処理を書きたい(少なくとも俺にとって自然に思える処理)を書きたいので、なるべく相互参照みたいな実装をしたくなく、そのたびに考えてしまう。このせいで、ちょっと進みが鈍くなっている。でも、下位のオブジェクトからマネージャーへの参照があればいいのになと思う場面が増えてきている。オブザーバーパターンにすればいいのか。マネージャーは集約しているオブジェクトすべてを購読する...