Bブログ

ボードから直接、スクリーンショットとフレーム統計

エディターは、接続したボードが表示している画面のスクリーンショットを撮り、どれくらいの速さで動いているかを尋ね、ポートも自分で見つけられます。

投稿日
著者
DevKirbyrawr
読了
約 3 分

マイコンでの開発といえば、たいていはボードに目を凝らすことになります。スクリーンショットは撮れませんし、デバッガーを用意しないと、どれくらいの速さで動いているかもわかりません。Deki 0.18.2 では、その差を少し縮めました。ボードは書き込みに使うのと同じ USB ケーブル越しにいくつかのリクエストに応え、エディターはその尋ね方を知っています。

ボードのスクリーンショット

エディターは、接続したボードの画面に出ているフレームを PNG として保存できます。USB 越しに読み戻した本物のフレームバッファで、転送に失敗したものは保存せずに検出できるよう、チェックしています。1 秒ほどかかりますが、ゲームはその 1 秒を経過時間に入れないので、時間で動くものがあとで先に飛んでしまうことはありません。

ボードが画面に表示していたデモのメニュー。USB 越しに保存したもので、隅にボード自身のフレームレートが出ている

パネル上に見える不具合が、エンジンが描いたフレームの中にあるのか、パネルに届くまでの途中で起きているのかを見分けるには、これがいちばん手っ取り早い方法です。

どれくらいの速さで動いているか

ボードに尋ねると、1 秒あたりのフレーム数、平均的なフレームが更新・描画・送信にかけた時間、空きメモリーの量を報告します。さらに詳しく見たいときは、描画時間をコンポーネントの種類ごとに分けることもできます。また、要求に応じて任意のシーンを開けるので、1 つのスクリプトですべてのシーンを計測できます。60 fps への取り組みも、こうして計測しました。

準備を減らす

  • ポートは自動で見つかります。 ポートを指定せずに書き込むと、シリアルポートが 1 つだけならそれを、複数あれば最初に ESP32 として応答したものを選びます。
  • ビルドの出力は手元に。 ビルドや書き込みの出力と、それがどう終わったかは、エディターの Activity パネルに表示されます。アセットのエクスポートに失敗したときは、どのアセットかを教えてくれます。

スクリプトから、エージェントから

これらはすべて、エディターの MCP サーバーからも使えます。動いているエディターにエージェントをつなげば、ファームウェアのビルド、ボードへの書き込み、ボード上でのシーンの読み込み、フレームレートの読み取り、画面の確認まで、人の手を介さずにこなせます。このリリースのデバイス関連の作業の大半は、まさにこのループで進めました。

リクエストはシリアルポート上の単純なテキスト行なので、シリアルポートを開けるものなら何からでも使えます。コンソールがチップ自身の USB ポートか UART になっている ESP32 ボードなら、どれでも動きます。

← すべての記事