Deki 엔진 자체는 일부러 작게 만들었습니다. 오브젝트, 컴포넌트, 라이프사이클, 에셋 시스템이 전부입니다. 눈에 보이는 것과 하드웨어와 통신하는 것은 모두 패키지입니다. 패키지 매니저를 열고 패키지를 추가하면 그 컴포넌트가 인스펙터에 나타납니다. 빼면 펌웨어에 들어가지 않습니다.

지금 있는 패키지는 다음과 같습니다.
움직이는 것 만들기
- 2d: 스프라이트, 텍스트(비트맵 폰트, 그리고 에디터에서 베이크하는 TTF), 스프라이트 시트 애니메이션, 그라디언트, 9-슬라이스 패널, 버튼, 스크롤, 클리핑, 롤러.
- particles: 모양, 중력, 저항, 파티클 수명에 걸친 모디파이어를 갖춘 이미터를 노드 그래프로 만듭니다.
- tween: 30여 가지 이징 곡선을 인스펙터에서도, 코드에서도 쓸 수 있습니다.
- fsm: 캔버스 위에 그리는 상태 머신으로, 상태마다 고유한 액션 흐름이 있습니다.
- input: 터치, 마우스, 키, 트랙볼, I2C 키보드를 입력이 필요한 컴포넌트에 전달합니다.
- rendering: 다른 패키지들이 그리는 데 쓰는 카메라와 렌더러입니다.
- 3d: 실험적 기능으로, 소프트웨어로 래스터화한 메시가 2D 프레임 버퍼를 함께 쓰며
.obj임포트를 지원합니다. - nodegraph: 파티클과 상태 머신을 그리는 그래프 캔버스로, 필요한 패키지라면 어디서든 쓸 수 있습니다.
- tiledmapeditor-integration: Tiled로 만든 맵을 넣으면 청크 단위로 스트리밍됩니다.
바깥 세상과 통신하기
- gps: 모든 NMEA 수신기를 지원합니다. 수신기의 속도를 스스로 찾아내고, 위치뿐 아니라 위성 수와 고도도 알려 줍니다.
- lora: 이번 릴리스에서 새로 추가되었습니다. Semtech SX1262로 송수신하며, 듀티 사이클을 지킵니다.
- **wifi**와 ble: Wi-Fi와 Bluetooth LE를 각각 하나의 인터페이스로 제공하며, 무선 모듈은 보드가 제공합니다.
- **http**와 json: 무언가를 가져와서 읽습니다.
- imu, rtc, audio, sdcard: 모션, 시간, 소리, 저장소입니다.
- i2c, i2s, uart, gpio: 나머지 패키지가 올라가는 버스로, 보드마다 한 번만 설정합니다.
어딘가에서 실행하기
- esp32-integration: 에디터에서 ESP-IDF로 빌드하고 플래시합니다.
- lovyangfx-integration: SPI, 패럴렐, QSPI 디스플레이와 그 터치 패널입니다.
- **sdl3-integration**과 desktop-integration: Windows와 Linux에서 창, 입력, 파일을 제공합니다.
- tactility-integration: Deki 게임을 단독으로 플래시하는 대신 Tactility 펌웨어 안의 앱으로 만들어, 홈 화면에서 실행합니다.
- lilygo-boards: 바로 빌드할 수 있는 보드 두 종, T-Deck Plus와 T-Display S3 AMOLED입니다. 보드도 패키지이며, 보드를 추가하는 일은 대부분 하드웨어를 기술하는 것입니다.
프로젝트가 패키지를 가져오는 방법
프로젝트는 사용하는 패키지의 이름만 적고, 나머지는 에디터가 가져옵니다. 각 패키지는 자신에게 필요한 것을 나열하고, 그것들도 함께 설치됩니다. 패키지는 레지스트리에 등록된 git 태그로 설치되므로, 프로젝트는 내년에도 오늘과 똑같이 빌드됩니다. 디바이스용으로 빌드할 때는 프로젝트에서 아무도 쓰지 않는 패키지 기능이 펌웨어에서 빠집니다.
모든 패키지는 Apache 2.0의 독립된 저장소이며, 카탈로그에 패키지마다 페이지가 있습니다. 원하는 패키지가 없나요? 패키지는 package.json과 약간의 C++가 들어 있는 폴더이며, 기존 패키지들이 가장 좋은 예제입니다.
