オレンジブログ

オレンジブログ

GameMakerのちょっとしたTipsとか

【GMS2】アセット紹介: Logbertを使ったログ管理

はじめに

ゲーム開発中、デバッグ作業を効率的に行うためにはログの管理は結構重要ですよね。
GameMaker Studio 2(以下GMS2)にもshow_debug_messageとかでログを出せますが、正直読みにくいのが現状です

そこで今回は、便利なログビューアーを使って効率的にログを管理する方法を紹介しようと思います。
正直GMS2のデフォルトのログは読みにくいので、ログを頻繁に使う人にとっては必須レベルの機能です。

Logbertの導入

今回はログビューアーとして、Logbertを使いたいと思います。

github.com

Logbertとは

Logbertとは、log4netlog4jなどのログフレームワークに対応した高度なログビューアです。
複数のログレシーバをサポートしており、UDPTCP、ファイル、ディレクトリベースのログを受信して表示することができます。
特にログメッセージのフィルタリングや検索機能が充実していて、大量のログを効率的に管理できます。

自分も使ったんですけど、結構見やすいです。ログレベルを設定出来たり、フィルタ機能が優秀なのが良いですね。

めっちゃ見やすい

Logbertのインストール

下記のリンクにアクセスします。
github.com

インストーラーをダウンロードします。

x64で良さげ

ダウンロードしたインストーラーを起動します。

ダブルクリック

特殊な設定は無いので、Nextを押してインストールをしてください。
この画像が出たらインストール完了です。

Finishを押す

アセットの導入

LogbertとGMS2を連携させる仕組みですが、なんとアセットを無料公開してくださっている方がいるので
そちらを使わせていただきましょう。(こんな便利なアセットを無料公開とは...本当、頭が上がりません。ありがとうございます)

GMLogger Log Exporterのインストール

こちらのリンクに飛んでください。
marketplace.gamemaker.io

[Download for Studio2]ボタンを押してパッケージをダウンロードします。

文字が読みにくい...

もしこのボタンが無かったらログインできていない可能性があります。
右上のログインボタンを押してログインしてからアクセスしましょう。

右上に小さくあるコイツ

GMS2にインポート

GMS2を起動して「ツール」「ローカルパッケージをインポート」を選択します。

日本語だと「ローカルパッケージをインポート」と書かれている

エクスプローラーが開くので、先ほどダウンロードしたパッケージを選択します。

Meseta.loggerと書かれているやつです

そしたらインポート画面が開くので、「すべて追加」をクリックして「インポート」を押します。

真ん中の「すべて追加」をクリック
すると、右にインポートするファイルが並ぶので、その状態で「インポート」をクリック

※注意 コードの修正

パッケージをインポートした後ビルドしようとすると、ビルドエラーが出ます。

エラーの内容

エラー内容通りにloggerスクリプトの61行目を見に行くとこんなコードがあります。

Scriptsのlogger scriptsの中にあります
この行でエラーが出ている

このエラー内容は 「[method]って名前の関数は既に存在するから変数として宣言しないでくれや」 と言った感じです。
なので、このmethod変数を別の名前にして、利用個所も全て変更してしまいましょう。

まずはエラーが出ていた61行目と、その下の64行目のmethodを別の名前にします。

安直ですが、「_method」と言う名前にしました

次は96行目の部分です。
文字列で黄色くなっている方ではなく、関数として呼ばれているオレンジ色の方のみを修正してください。

左の文字列の方は修正しない

修正するとこうなります

これでビルドをすると成功するはずです。

使い方

Logbertのセットアップ

まず、Logbertを起動しましょう。

検索したらすぐ見つかります。コイツです。

起動したら、Log4Net UDP Receiverを選択します。

一番上のやつ

そしたら新しいウィンドウが出てくるので、portが7071になっていることを確認してOKを押します。
もし7071以外の数字が入力されていたら、7071に変更してください。

portには7071を指定

このような画面になったらセットアップ完了です。

真っ白

ログの送信

ついにログを出力してみましょう!
とは言え使い方は非常にシンプルで、logger関数を呼び出して、ログレベルとログ内容を記述すれば送信されます。

logger(LOGLEVEL.INFO, "hogehoge");

選択すると下に情報が出てきます。便利~~

第一引数でログレベルを設定することができます。

logger(LOGLEVEL.TRACE, "hogeTrace");
logger(LOGLEVEL.DEBUG, "hogeDebug");
logger(LOGLEVEL.INFO, "hogeInfo");
logger(LOGLEVEL.WARN, "hogeWarn");
logger(LOGLEVEL.ERROR, "hogeError");
logger(LOGLEVEL.FATAL, "hogeFatal");

これが本当に良い

ログレベルを設定すると、ログが色分けされるだけでなく、フィルタもかけることが出来るので非常に便利です。
積極的に活用していきましょう!

クリックで切り替え

▶ログレベルの使い分けメモ ざっくりとした使い分けです。
必ずこれに従う必要はありませんので、プロジェクト毎に使い分けてください。

ログレベル使い分け

1. ALL

  • 説明: すべてのログメッセージを出力
  • 用途: デバッグ作業中に、すべてのログ情報を確認したい場合に使用。最も詳細なログレベル

2. TRACE

  • 説明: 非常に詳細なログメッセージを出力。プログラムのフローを追跡するための情報を提供
  • 用途: プログラムの詳細な実行フローや状態を追跡したい場合に使用。通常は開発者向け

3. DEBUG

  • 説明: デバッグ情報を出力。通常の操作では不要な、追加の詳細情報を含む
  • 用途: 開発中にプログラムの動作を確認し、バグを発見・修正するために使用

4. INFO

  • 説明: 一般的な情報メッセージを出力。プログラムの正常な動作に関する重要な情報を提供
  • 用途: システムの運用中に、重要な状態変化や動作を記録するために使用

5. WARN

  • 説明: 警告メッセージを出力。今後問題が発生する可能性がある状況を示す
  • 用途: 注意が必要な状況や、潜在的な問題を記録するために使用。すぐに対処は不要だが、後で確認が必要な場合に役立つ

6. ERROR

  • 説明: エラーメッセージを出力。プログラムの一部が失敗した場合に使用される
  • 用途: システムの動作に支障をきたす問題が発生したときに使用。即時の対処が必要

7. FATAL

  • 説明: 致命的なエラーメッセージを出力。プログラムが続行できない重大なエラーを示す
  • 用途: プログラムのクラッシュや、即時に対応が必要な重大な問題が発生したときに使用

8. NONE

  • 説明: すべてのログメッセージを無効にする
  • 用途: ログ出力を完全に無効にしたい場合に使用。リリース時にログを無効にする際に役立つ

ログの削除

何度もゲームを起動すると同じログがたまって読みにくくなります。
そこで、現在表示中のログを全て削除するボタンがあるので、ゲームを起動するたびに削除しておきましょう。

何とかして自動化できないのかしら?

フィルタ機能

もう一つ、Logbertで外せない機能はフィルタ機能です。
下の方にある「Filter」をクリックしてください。

見にくい

そしたら下のウィンドウがフィルタに切り替わります。
この状態で左のプラスボタンを押しましょう。

小さい

そうするとフィルタ設定ウィンドウが新たに表示されるため、ここでフィルタを設定します。
今回は「ログ内容」に「Error」が含まれるものだけ表示させるように設定します。

  1. Column to filterをMessageに変更
  2. Expression to filter for: に Error と入力
  3. OKを押下

設定画面

すると、hogeErrorだけが表示されて他は非表示になりました!

フィルタ成功!

フィルタ設定後も、下のチェックボックスを外せばフィルタを無効化することができます。

無効にする

複数フィルタ設定を作り、オンとオフを切り替えれるので非常に心強い機能です!

リリース時の注意点

開発中は非常に便利なこのログ機能ですが、ゲームをリリースする際には無効にすることを忘れないでください。
logger_set_level()NONEに設定することでログ機能を無効にできます。

if(!debug_mode){
    logger_set_level(LOGLEVEL.NONE);
}

これを怠ると、プレイヤーがログビューワーを使ってゲームの内部メッセージを監視することが可能になるので注意が必要です。

まとめ

LogbertとGMLogger Log Exporterを使用することで、GameMaker Studio 2でのログ管理が飛躍的に向上します。
今回紹介した以外にも、ブックマーク機能やCSVへの出力機能なども備わっています。
ログレベルを指定してのログ表示、詳細なフィルタリング、検索機能など、多くの便利な機能を活用して、開発中のデバッグ作業を効率化しましょう。