さて、制作記録も3回目になりました。
今回は制作状況に加えてイベントにも参加してきたので、そちらの内容にも触れたいと思います!
それではどうぞ!
今回制作したもの
まずは今回制作したものからです!
今回の実装で、よりゲームらしい画面になってきました!
不思議のダンジョンの定番! ミニマップ描画!
前回まででダンジョンの自動生成はできていたので、そのダンジョンのマップを画面上に表示してみました。
ミニマップとして、ダンジョンの構造を画面上に可視化できた時は結構テンション上がりましたね〜。
この機能の実現には、EbitengineのStrokeLineという関数を使っています。
要は線を引く関数です。
どういう仕組みでミニマップを描画しているかというと、部屋や廊下のマスを見て「上下左右が壁ならマス目の境界に線を引く」という処理で実現しています。
具体的に例を示すと、以下の図のような感じです。
壁
壁□壁
壁
壁
コ壁
壁
壁
壁匚
壁
1番目の図は上下左右が全部壁の場合で、この場合は4方面に境界を引きます。
2番目は図は左側が空いているので、それ以外の3方面に境界を。
3番目も同様に、右以外の3方面に境界を引いています。
(もちろん0〜2方面のパターンもあります)
これを「部屋・廊下等のプレイヤーが歩けるマス」全てで行うことで、ミニマップを描画しています!
探索済みの箇所だけ表示! ミニマップ更新機能!
さて、先ほどまでは全部のマップを画面上に出してしまっていましたが、ゲームなので探索したところだけマップを表示する必要がありました。
マップ情報の管理には二次元スライス(二次元配列みたいなもの)を使っているのですが、この機能の実現のためにもう1つ二次元スライスを用意しています。
新しく用意した二次元スライスは、各マスが探索済みかどうか記録しておくためのもので、行ったことのあるマスはここに記録されていきます。
(具体的には、画面上に表示されているマスと、自分の居る部屋の周囲1マスが記録される)
この二次元スライスに記録されているマスだけを対象に、先ほどの線を引く処理を入れることで、探索状況に合わせて更新されるミニマップを実現しています!
UI実装でゲーム感アップ! ステータス等の各種情報表示!
ラストはこれです! UI実装!
これは見たまんまですね。
ダンジョンの階数やレベル、HP、満腹度、所持金なんかの基本的な情報が見られるようになりました。
HPバーは実は画像は使っていなくて、DrawFilledRectという「四角形を描画する関数」を組み合わせて実装しています。
Ebitengine ぷちConf #2
以上で作ったものは終わりなんですが、これらの制作物を引っ提げて「Ebitengine ぷちConf #2」でLT発表してきました!
私の発表資料はこちら!
こういうIT系のイベントで発表する機会ってなかったんですが、Ebitengineに関することなら何を話してもいいゆるい会だったこともあり、気楽に参加できました!
他の方の発表が気になる方は、主催者のeihighさんの記事にイベント全体の内容がよくまとまっています。
また、配信のアーカイブもあります!
発表後の懇親会では、
- 技術的に難しそうだな〜と思っていた「セーブデータ」や「モバイルでのキーボード入力」なんかのお話をEbiten開発者の星一さんとできたり
- 他のゲーム制作者の方のコードを見せていただいたり
- 逆に私のゲームの実装方法について説明したり
など、色々な方と交流できて楽しい時間でした。
また、「アイテム一覧等で使えるようなスクロールを簡単に実装できたらいいな〜」みたいな話を星さんにしたのですが、まだ2日しか経っていないのにスクロールのサンプルを作ってくださいました!
仕事が早い! 流石というしかない笑
すごく有意義な交流会だったと思います。
このイベントの企画・準備をしてくださった方々、本当にありがとうございました!
おわりに
今回はミニマップやUIの実装、それとぷちConfへの参加をしてきました!
次回はいよいよ敵キャラを実装していく予定です!
乞うご期待!!
コメント