Article by: Serhii Snitsaruk
最初の安定版リリースを経て、Sentry Godot SDK が Windows / Linux / macOS / iOS / Android をサポートし、一般利用いただける状態になったことをお知らせし致します。1年前、いくつかのプロトタイプから本格開発をスタートし、ついにここまでたどり着きました。実績のある Sentry プラットフォーム SDK 群の上に構築されており、Godot プロジェクトに簡単に追加できる GDExtension アドオンとして提供されています。
はじめて Sentry を知る方のために説明すると、Sentry はゲームの開発中・QA 中・リリース後を通じて「健全性」を管理するためのアプリケーションモニタリングツールです。クラッシュや実行時エラー、ログ、さらにはプレイヤーからのフィードバックまで自動的に追跡できるため、バグ追いに費やす時間を減らし、そのぶん「おもしろい体験」を作ることに集中できます。
このあと、Godot SDK に含まれる主な機能をご紹介していきます。
クラッシュとエラー
Sentry はエラーやクラッシュのレポートを収集し、それらを「Issue」としてダッシュボード上に自動でグルーピングします。これにより、どの問題から優先的に修正すべきかを判断しやすくなります。
Godot Engine のランタイムエラーやスクリプトエラーを自動で捕捉し、詳細なスタックトレースを表示します。必要に応じてローカル変数やメンバー変数の情報、さらに可能な場合はその前後のスクリプトソースコード行まで確認することができます。

C++ レイヤーで発生したクラッシュについては、Sentry が minidump を収集・送信できます。これにより、ゲームがいつ、Godot のソースコードのどこでクラッシュしたのかを把握できます。この情報をもとにクラッシュの原因を理解したり、スタックトレース(または minidump ファイル)を Godot の開発者と共有したり、自分たちで問題を修正したりすることが可能になります。

デバッグにもっとコンテキストを
世の中には、ほぼ無限と言っていいほど多様なハードウェア構成があります。そのせいで、「一部のプレイヤーだけが遭遇していて、自分の環境では再現できないバグ」の原因を突き止めるのは、とても骨の折れる作業です。
Sentry は、プレイヤーが使用しているハードウェアやソフトウェアに関する詳細なコンテキストを提供することで、この問題を助けてくれます。各 Issue には、そのイベントが発生したときの環境情報が含まれているため、「どんな構成で問題が起きたのか」を正確に確認できます。
それだけではありません。SDK はランタイムログやエンジンの統計情報、シーンツリーのスナップショット、さらには Issue が発生する直前のゲーム内スクリーンショットまで送信することができます。
構造化ログ
Godot SDK でも構造化ログが利用できるようになりました。これにより、ゲーム内でのクラッシュやパフォーマンス問題と、ログ出力を結び付けて確認することができます。
SDK はログ出力を自動で取り込みます。コード内で print() を呼び出したときや、エンジンが何かを出力したとき、その内容はすべて構造化ログとして Sentry に送信されます。これらのログエントリは、Issue 画面から直接閲覧・検索できます。
そのため、たとえばプレイヤーがシーン切り替え中にスタックしてしまったり、リソース読み込み直後にクラッシュしたりした場合でも、失敗に至るまでのログの流れを、Issue やトレースビューからそのまま辿ることができます。

User Feedback
User Feedback にも対応しました。これにより、プレイヤーは発生したエラーの詳細だけでなく、ゲーム体験全般についてのフィードバックも直接送れるようになります。スタックトレースなどの技術情報に加えて「実際のプレイヤーの声」を並べて確認できるので、どの修正を優先すべきか判断しやすくなり、プレイヤー体験をコードの外側からも理解する助けになります。
addons/sentry/user_feedback フォルダには、すぐに使える User Feedback 用の UI が同梱されています。そのまま使うことも、プロジェクトのスタイルに合わせてカスタマイズすることも可能です。実際に動かすと、ちょうど次のような見た目になります。



テスト周りの改善
一般提供に向けて SDK を仕上げていく中で、テストのこともきちんと押さえました。
この領域での一番の成果は、イベント JSON コンテンツの厳密なバリデーションを追加したことです。これにより、プラットフォーム間の小さな不整合を解消できただけでなく、いくつものバグを事前に発見することができました。
これを可能にするために、私たちは 高度な JSON コンテンツテストのための fluent API を提供する GDScript モジュールを開発しました。多くのユーザーが SDK の API とやり取りするのは GDScript 経由であるため、GDScript からテストを書き始められることはとても重要です。
このアプローチにより、「リリース前に潜在的なリグレッションをきちんと検知できるだけの土台がある」という確信を持ってリリースプロセスに臨めるようになりました。

この表現力の高い構文により、JSON 構造に対して「何を期待するか」を正確に定義しつつ、テストコード自体は読みやすく簡潔に保つことができます。
テストの出力も分かりやすく、どの呼び出しチェーンのステップで失敗したのかに加え、関連する JSON の一部もあわせて表示してくれるため、原因の特定がしやすくなっています。
メジャーバージョンでの変更点
メジャーリリースは、これまでを振り返りつつ改善する良い機会でもあります。
今回の最大の変更点は、SDK の初期化プロセスを再設計したことです。以前は、ライフサイクルが少し分かりづらい設定用スクリプトに依存していましたが、今後はゲーム側の都合に合わせて、好きなタイミングで手動で SDK を初期化・設定できるようになりました。これにより、プロジェクト構成やゲームのフローに合わせた、より柔軟な組み込みが可能になります。

SDK を手動で初期化できるようになった今、推奨はとてもシンプルです。できるだけ早いタイミングで初期化してください。最適なのは、プロジェクトのメインループ用スクリプト内です。
あわせて、「もう SDK が不要になったタイミングで、クリーンに接続を閉じるためのメソッド」も追加しました。これにより、SDK のライフサイクル全体がより分かりやすく、扱いやすく整えられています。
対応プラットフォームと始め方
Sentry Godot SDK は、現時点で Windows / Linux / macOS / iOS / Android をサポートしています。今後の予定としては、Web と C# エクスポートの対応, および W4 コンソール系フォークのサポート を追加する計画です。
PlayStation と Switch 向けのクラッシュレポートについては、すでに Sentry がサポートしており、Godot 用 SDK は不要です。
始め方としては、まず GitHub から SDK をダウンロードし、Docsを参照しながらセットアップしてください。質問やフィードバックがあれば、GitHub の Discussions からお送りいただけます。
まだ Sentry を使ったことがない場合は、インタラクティブに試せる Sentry Sandbox を触ってみる、またはまずは無料サインアップしていただくのがおすすめです。
Original Page: Introducing Logs, User Feedback, and more in the Sentry Godot SDK
IchizokuはSentryと提携し、日本でSentry製品の導入支援、テクニカルサポート、ベストプラクティスの共有を行なっています。Ichizokuが提供するSentryの日本語サイトについてはこちらをご覧ください。またご導入についての相談はこちらのフォームからお気軽にお問い合わせください


