Deki는 모듈식 C++ 엔진입니다. 코어는 작고, 렌더링부터 Wi-Fi, 플랫폼 자체까지 나머지는 모두 넣거나 뺄 수 있는 패키지입니다. 그래서 게임, 기기의 인터페이스, 도구, 화면이 없는 서비스까지 필요한 것은 무엇이든 만들 수 있습니다.
임베디드 기기를 먼저 생각해 만들었습니다. 휴대용 게임기, 배지, 대시보드, 가젯, 센서. 데스크톱 게임 엔진 같은 비주얼 에디터가 있고, Build 버튼이 프로젝트를 보드용 펌웨어로 만들어 구우며, 같은 프로젝트가 데스크톱에서도 돌아갑니다.
할 수 있는 것
- 비주얼 에디터(Windows와 Linux): 장면, 인스펙터, 보드가 그리는 그대로 그리는 Play 뷰, 실행 취소, 핫 리로드.
- 동작은 C++로. 컴포넌트는 작은 C++ 클래스입니다. 필드는 인스펙터에 나타나고, 장면과 함께 저장되며, 실행 취소할 수 있습니다. 따로 등록할 것은 없습니다.
- 바로 쓰는 2D: 스프라이트와 애니메이션, 어떤 글꼴로든 쓰는 텍스트, 그라데이션, 버튼, 스크롤 목록, 롤러, Tiled 맵, 파티클, 트윈, 상태 머신. 간단한 3D에는 소프트웨어 3D 패키지.
- 작은 칩에서의 속도. 데모의 모든 장면이 LilyGO T-Deck Plus와 T-Display S3 AMOLED에서 초당 60프레임으로, 찢어짐 없이 돌아갑니다. 화면 대부분이 멈춰 있으면 바뀐 부분만 그려서 보냅니다.
- 플랫폼은 패키지. 프로젝트 하나가 패키지가 있는 모든 플랫폼용으로 빌드됩니다. 새 칩이나 OS는 새 플랫폼 패키지이지, 새 엔진이 아닙니다.
- 기능도 모두 패키지. 렌더링, 입력, 오디오, Wi-Fi, BLE, HTTP, GPS, LoRa, SD 카드, I2C, SPI, GPIO. 게임이 쓰는 것만 넣고 나머지는 빼면, 빌드에는 넣은 것만 들어갑니다.
- 무료 오픈 소스. Apache 2.0 라이선스입니다.
돌아가는 곳
| 지금 있는 플랫폼 | ESP32 계열(ESP-IDF), Tactility OS, Windows, Linux |
| 바로 쓰는 보드 | LilyGO T-Deck, T-Deck Plus, T-Display S3 AMOLED |
| 직접 만든 보드 | 화면, 핀, 버스를 에디터에서 설명 |
| 새 칩이나 OS | 그것만의 플랫폼 패키지 |
| 실제 하드웨어에서 돌려 본 것 | ESP32-S3. 빌드는 ESP32, ESP32-S2, -C3, -C6, -H2도 대상 |
| 화면 | ILI9341, ILI9488, ST7735, ST7789, ST7796, GC9A01, SSD1351과 두 가지 AMOLED 컨트롤러. SPI, 쿼드 SPI, 병렬. 데스크톱에서는 창 |
Deki는 부동소수점을 많이 쓰므로 하드웨어 FPU가 있는 칩에서 가장 잘 돌아갑니다.
다른 것과의 차이
- LVGL은 사용자 인터페이스 라이브러리입니다. C로 쓰는 위젯, 레이아웃, 테마로, 메뉴와 대시보드를 위한 것입니다. Deki는 장면 에디터가 있는 게임 엔진으로, 매 프레임 놓고 움직이는 오브젝트, 스프라이트, 맵, 파티클이 있고 UI는 그 일부입니다. Tactility에서 Deki는 LVGL 옆의 앱으로 돌아갑니다.
- Arduino 화면 라이브러리(TFT_eSPI, LovyanGFX, Adafruit GFX 등)는 선, 텍스트, 이미지를 그립니다. 게임 루프, 장면, 에셋은 직접 써야 합니다. Deki는 그 위의 엔진이고, 직접 구동하지 않는 화면에는 LovyanGFX를 쓸 수 있습니다.
- 데스크톱 엔진(Unity, Godot 등)은 장면, 인스펙터, 컴포넌트라는 Deki와 같은 방식으로 일하지만, 마이크로컨트롤러에서는 돌아가지 않습니다. Deki는 그 방식을 임베디드 기기로 가져오고, 데스크톱도 그대로 지원합니다.
시작하기
에디터를 내려받고, 데모를 열거나 새 프로젝트를 만든 다음 Play를 누르세요. 가이드와 API는 문서에, 패키지 목록은 패키지에 있습니다. 궁금한 것은 Discord에서 물어보세요.
자주 묻는 질문
마이크로컨트롤러용으로 비주얼 에디터가 있는 게임 엔진이 있나요?
있습니다. Deki에는 데스크톱 게임 엔진처럼 장면, 인스펙터, Play 뷰가 있는 데스크톱 에디터가 있고, Build 버튼이 프로젝트를 보드용 펌웨어로 만들어 굽습니다. 같은 프로젝트를 데스크톱용으로도 빌드할 수 있습니다.
Deki는 어떤 하드웨어에서 돌아가나요?
패키지가 있는 플랫폼이면 어디서든 돌아갑니다. 플랫폼마다 패키지이기 때문입니다. 지금은 ESP-IDF를 통한 ESP32 계열, Tactility OS, Windows, Linux입니다. 바로 쓸 수 있는 보드는 LilyGO T-Deck, T-Deck Plus, T-Display S3 AMOLED이고, 직접 만든 보드(화면, 핀, 버스)를 에디터에서 설명할 수도 있습니다. 새 칩이나 OS는 새 플랫폼 패키지이지, 새 엔진이 아닙니다. Deki는 부동소수점을 많이 쓰므로 하드웨어 FPU가 있는 칩에서 가장 잘 돌아갑니다.
Deki를 ESP32에서 쓸 수 있나요?
네, ESP32 계열은 Deki의 플랫폼 중 하나입니다. 빌드는 ESP-IDF로 ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C6, ESP32-H2를 대상으로 합니다. 지금까지 실제 하드웨어에서 돌려 본 것은 ESP32-S3로, LilyGO 보드와 Tactility 위에서입니다.
어떤 화면을 지원하나요?
Deki는 화면을 직접 구동합니다. ILI9341, ILI9488, ST7735, ST7789, ST7796, GC9A01, SSD1351과 두 가지 AMOLED 컨트롤러를 SPI, 쿼드 SPI, 8비트와 16비트 병렬 버스로 지원하고, 흔한 터치 컨트롤러에서 터치를 읽습니다. 프레임은 찢어짐 없이 보내지고, Deki가 아직 모르는 화면은 LovyanGFX 패키지로 쓸 수 있습니다. 데스크톱에서는 창에 그립니다.
Deki는 무료인가요?
네. 에디터, 엔진, 패키지는 Apache 2.0 라이선스의 무료 오픈 소스이며, 상업용 게임과 제품에도 쓸 수 있습니다.
C++를 알아야 하나요?
직접 동작을 쓰려면 필요합니다. 컴포넌트는 작은 C++ 클래스이고, 그 필드는 에디터의 인스펙터에 알아서 나타납니다. 장면, 스프라이트, 텍스트, UI, 맵, 파티클, 애니메이션은 코드 없이 에디터에서 조립합니다.
게임 말고 앱이나 화면 UI도 만들 수 있나요?
네. 2D 패키지에는 버튼, 스크롤 목록, 롤러, 어떤 글꼴로든 쓰는 텍스트가 있고, Wi-Fi, BLE, HTTP, GPS, LoRa, SD 카드, I2C, SPI, GPIO 패키지도 있습니다. 화면 없는 프로젝트로 돌릴 수도 있습니다.
마이크로컨트롤러에서 얼마나 빠른가요?
데모의 모든 장면이 LilyGO T-Deck Plus와 T-Display S3 AMOLED에서 초당 60프레임으로, 찢어짐 없이 돌아갑니다. 화면 대부분이 멈춰 있으면 바뀐 부분만 그려서 보내므로, 멈춘 화면은 거의 비용이 들지 않습니다.
보드 없이 해 볼 수 있나요?
네. 에디터의 Play 뷰는 보드 화면의 크기와 색 형식으로 게임을 돌리고, 같은 프로젝트를 Windows와 Linux용으로도 빌드할 수 있습니다.