B블로그

보드에서 바로 가져오는 스크린샷과 프레임 통계

에디터가 연결된 보드의 화면을 스크린샷으로 찍고, 얼마나 빠르게 돌아가는지 묻고, 포트도 스스로 찾습니다.

게시일
작성자
DevKirbyrawr
읽는 시간
약 2분

마이크로컨트롤러로 작업할 때는 보통 보드를 눈을 가늘게 뜨고 들여다봐야 합니다. 스크린샷을 찍을 수도 없고, 디버거를 설정하지 않으면 얼마나 빠르게 돌아가는지도 알 수 없습니다. Deki 0.18.2는 그 차이를 조금 좁힙니다. 보드는 플래시할 때 쓰는 USB 케이블로 몇 가지 요청에 응답하고, 에디터는 그 요청을 보낼 줄 압니다.

보드의 스크린샷

에디터는 연결된 보드가 화면에 표시하고 있는 프레임을 PNG로 저장할 수 있습니다. USB로 다시 읽어 온 실제 프레임 버퍼이며, 전송이 잘못되면 저장하지 않고 잡아내도록 검사합니다. 약 1초가 걸리지만 게임은 그 1초를 세지 않으므로, 시간에 맞춰 움직이는 것들이 그 뒤에 앞으로 건너뛰지 않습니다.

보드가 화면에 표시하던 데모 메뉴를 USB로 저장한 모습. 구석에 보드 자체의 프레임 레이트가 표시되어 있습니다

패널에서 보이는 글리치가 엔진이 그린 프레임에 있는 것인지, 패널로 가는 도중에 생기는 것인지 가장 빨리 확인하는 방법입니다.

얼마나 빠르게 돌아가는가

보드에 물어보면 초당 프레임 수, 평균 프레임에서 업데이트·렌더링·전송에 걸린 시간, 남은 메모리를 알려 줍니다. 더 자세히 보려면 렌더링 시간을 컴포넌트 타입별로 나눠 볼 수 있고, 요청하면 아무 씬이나 열 수 있어서 스크립트 하나로 모든 씬을 측정할 수 있습니다. 60 fps 작업도 이렇게 측정했습니다.

설정할 것이 줄었습니다

  • 포트를 스스로 찾습니다. 포트를 지정하지 않고 플래시하면, 시리얼 포트가 하나뿐일 때는 그 포트를, 여러 개일 때는 ESP32로 응답하는 첫 번째 포트를 고릅니다.
  • 빌드 출력을 바로 그 자리에서. 빌드나 플래시의 출력과 결과가 에디터의 Activity 패널에 표시되고, 에셋 익스포트가 실패하면 어떤 에셋인지 알려 줍니다.

스크립트에서, 또는 에이전트에서

이 모든 기능은 에디터의 MCP 서버로도 쓸 수 있습니다. 실행 중인 에디터에 에이전트를 연결하면, 사람이 중간에 끼지 않고도 펌웨어를 빌드하고, 보드에 플래시하고, 보드에서 씬을 열고, 프레임 레이트를 읽고, 화면을 확인할 수 있습니다. 이번 릴리스의 디바이스 작업 대부분이 바로 그 루프로 이루어졌습니다.

요청은 시리얼 포트로 주고받는 평범한 텍스트 줄이므로, 시리얼 포트를 열 수 있는 것이라면 무엇이든 쓸 수 있습니다. 콘솔이 칩 자체의 USB 포트나 UART인 ESP32 보드라면 어디서든 동작합니다.

← 모든 글