Heliodor 2020/09/18 21:35

デバッグメニュー

今回はプログラム話というか、ライブラリネタです。

開発中のゲームには、テストを効率よく進めるための小細工があったりします。
いわゆる、デバッグモードとかデバッグメニューとかいうやつですね。

で、問題はこのデバッグメニューをどうやってゲームに組み込むかです。


以前作ったゲームではファンクションキーなどにいろいろな機能を割り当てて、例えば F8 でプレイヤーが無敵なるだとか、F9 でアイテムが増えるだとか、そういうことをやっていました。
ところが割り当てる機能が多くなってくると、キーを覚えられなくなるんですよね。当たり前ですけど。適当なボタン押して大惨事になりますなった

Python によるコマンドラインを入力できるようにして、ゲームウィンドウの下にこっそり出てくるコンソール領域にコマンドテキストを打ち込むことでデバッグコマンドを実行できるようにしたこともあったのですが、まあ面倒なだけでしたね。すぐに廃止しました。


あるとき、ゲームウィンドウのメニューバー(ウィンドウタイトルの下に並んでるやつ)を普通に使えばいいんじゃね? ということにやっと気づきまして、それ以降はウィンドウメニューにデバッグ項目を並べて使うようにしていました。

でもこれには欠陥がありまして、フルスクリーンでプレイしている時にはメニューが出せなかったんですよね。
なので、デバッグコマンドを使ってテストプレイしたければ必ずウィンドウモードでやる必要がありました。

それで結局、ウィンドウモードだろうがフルスクリーン中だろうが使える、ゲーム内メニューを復活させることにしました。
が、どうせ復活させるなら数値の調整ができたり、色の指定ができたりといった細かいデバッグができるようにしておきたいですよね。

そんなわけで探してきたのが AntTweakBar でした。
これは C で簡単に組み込むことのできる GUI ツールキットで、これをゲームに組み込んでおいて、ある程度自由にゲーム内容をいじれるようにしていました。
というか、あまり凝らないのでであればゲームそのもののUIとして使っても良いぐらいです。


ウインドウズのメニューの下に追加されたデバッグ用メニュー。これならフルスクリーンでも使える

AntTweakBar
http://anttweakbar.sourceforge.net/doc/

この AntTweakBar はとにかくシンプルで使いやすく、とても気に入っていたのですが……1つ難点がありまして、リアルタイムでのツリー表示に対応してなかったんですよ。

一応 TwDefineStruct を使えばそれっぽいことはできるのですが、これは実行前にその構造が確定しているもの向けであって、ゲーム中のオブジェクトツリーなど実行時に変化する物には使えなかったんです(すごく頑張ればできそうではある)

というわけで AntTweakBar の代わりに探してきたのが ImGui です。これは大のお気に入りでして、それ以降に作ったゲームは全て Dear ImGui によるデバッグシステムを入れてあります。


Dear ImGui
https://github.com/ocornut/imgui

Google で画像検索すれば、どんな感じなのかすぐにわかると思います。
古い画像も混ざっていますが、2年ぐらい前のアップデートですごくモダンな見た目になりました。ちなみに、ライブラリはほぼ毎週更新されています。

ちなみにこの方は日本に住んでいたことがあるみたいで、Twitterなどで日本語で質問してもちゃんと反応してくれます。
そのせいなのか、日本語などの東アジア言語によるテキスト表示にもちゃんと対応してくれているのが良いですね。お世話になっています。ありがてえありがてえ……。





今回のフォロワー特典は、本記事とは全然関係無いあやかし紅白戦のテスト中に起きた事故のスクリーンショットです。

フォロワー以上限定無料

まずは無料プランで様子見を。 お気軽にフォローしてみて下さい。

無料

【 500円 】プラン以上限定 支援額:500円

このバックナンバーを購入すると、このプランの2020/09に投稿された限定特典を閲覧できます。 バックナンバーとは?

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索