B블로그

Deki가 오픈 소스가 되었습니다

엔진, 에디터, 모든 패키지가 Apache 2.0으로 GitHub에 공개되었습니다. 에디터는 컴파일러가 들어 있는 Windows와 Linux용 다운로드로 제공됩니다.

게시일
작성자
DevKirbyrawr
읽는 시간
약 3분
데모 프로젝트를 연 Deki 에디터: 하이어라키, 씬 뷰, 인스펙터, 콘솔.

오늘부터 Deki 전체가 오픈 소스입니다. 이미 공개되어 있던 패키지에 이어 엔진과 에디터도 github.com/dekiengine에 합류했으며, 모두 Apache 2.0입니다.

이제 에디터도 다운로드할 수 있습니다. Windows용과 Linux용 아카이브가 하나씩 있고, 각각 컴파일러가 안에 들어 있습니다. 압축을 풀고 DekiEditor를 실행하면 바로 만들기 시작할 수 있습니다. 여기에서 다운로드하세요.

무엇을 하는가

Deki는 마이크로컨트롤러의 320x240 패널부터 데스크톱 창까지, 어떤 크기의 화면에서든 돌아가는 게임과 앱을 만듭니다. 에디터에서 씬을 만들고 플레이를 누르면 바로 실행됩니다. 디바이스에서 돌아갈 것과 같은 렌더러로, 화면의 실제 크기와 색상 포맷 그대로입니다. 그다음 빌드를 누르면 보드에 플래시됩니다.

실행 중에 편집하기

플레이 중에 값을 바꾸면 다음 프레임에서 게임에 반영됩니다. C++를 바꾸면 에디터가 다시 빌드해서 교체하고, 씬은 계속 실행됩니다.

플레이 중인 에디터: 인스펙터에서 보석의 흔들림 폭을 키워, 보석이 플랫폼보다 훨씬 높이 떠 있습니다

프로젝트 하나, 어떤 화면이든

같은 게임이 16:9 화면, 9:16 화면, 536x240 가로로 긴 화면, 320x240 패널에서 실행되는 모습

직접 만드는 컴포넌트, 몇 줄이면 충분합니다

class Bobber : public Deki::Component
{
public:
    DEKI_EXPORT DEKI_SLIDER(0, 64)
    float amplitudePx = 12.0f;

    DEKI_EXPORT DEKI_SLIDER(0, 4)
    float speedHz = 0.6f;

    void Update() override;
};

이 두 필드가 위 그림의 슬라이더입니다. 인스펙터에 나타나고, 씬과 함께 저장되고, 실행 취소도 됩니다. 그 밖에 등록할 것은 없습니다.

필요한 것만 가져가기

렌더링, 스프라이트, 입력, 파티클, 트윈, 상태 머신, GPS, LoRa, Wi-Fi, 오디오, 모든 보드가 각각 패키지이며, 디바이스 빌드에서는 프로젝트가 쓰지 않는 것을 뺍니다. 지금까지 29개가 있습니다.

무엇을 만들 수 있는가

우선은 게임입니다. 게임 엔진이니까요. 하지만 씬은 오브젝트와 컴포넌트일 뿐이라서, 같은 도구로 디바이스의 인터페이스, 작은 패널 위의 대시보드, GPS 트래커, LoRa 메신저, 화면이 아예 없는 서비스도 만들 수 있습니다.

어디에서 돌아가는가

ESP-IDF가 지원하는 모든 ESP32에서 돌아가며, LovyanGFX를 통해 SPI, 패럴렐, QSPI 패널을 구동합니다. Windows와 Linux에서는 SDL3로 돌아가며, 에디터도 이 위에서 실행됩니다. 렌더러를 뺀 헤드리스로도 돌아갑니다. 320x240 게임이 ESP32-S3에서 60 fps로 실행되며, 어떻게 거기까지 갔는지는 별도의 글에 있습니다.

0.x의 의미

API는 아직 마이너 릴리스마다 바뀌며, 호환성이 깨지는 변경과 그 마이그레이션 방법은 모두 변경 로그에 적혀 있습니다. Windows 빌드는 아직 코드 서명이 되어 있지 않아서, 처음 실행할 때 SmartScreen이 한 번 확인을 요청합니다. 그리고 앞으로 할 일도 많습니다. 더 많은 보드, 더 많은 패키지, 그리고 그에 걸맞은 문서입니다.

참여하기

모든 저장소에서 이슈와 풀 리퀘스트를 받고 있으며, CONTRIBUTING에 코드 구성과 빌드 방법이 나와 있습니다. 질문, 아이디어, 만든 것은 Discord에 올려 주세요. Deki는 한 사람이 퇴근 후에 만들고 있습니다. 쓸모가 있었다면 후원이 개발 시간이 됩니다.

첫 보드를 보내 준 LilyGO와, 대기자 명단에 이메일을 남겨 주신 모든 분께 감사드립니다.

← 모든 글