Bブログ

Deki はオープンソースになりました

エンジン、エディター、そしてすべてのパッケージを Apache 2.0 で GitHub に公開しました。エディターは Windows 用と Linux 用をダウンロードでき、コンパイラーも同梱しています。

投稿日
著者
DevKirbyrawr
読了
約 3 分
デモプロジェクトを開いた Deki エディター。ヒエラルキー、シーンビュー、インスペクター、コンソールが並んでいます。

今日から、Deki のすべてがオープンソースです。すでに公開していたパッケージに続いて、エンジンとエディターも github.com/dekiengine に加わりました。すべて Apache 2.0 です。

エディターもダウンロードできるようになりました。Windows 用と Linux 用にアーカイブが 1 つずつあり、それぞれにコンパイラーが入っています。展開して DekiEditor を実行すれば、もう作り始められます。ダウンロードはこちら。

できること

Deki は、あらゆるサイズの画面向けにゲームやアプリを作るためのものです。マイコンにつながった 320×240 のパネルから、デスクトップのウィンドウまで対応します。エディターでシーンを組み、再生を押せば動きます。デバイスで動くのと同じレンダラーが、その画面の実際のサイズとカラーフォーマットで動きます。あとはビルドを押せば、ボードに書き込まれます。

実行中に編集

プレイ中に値を変えると、次のフレームでゲームが反応します。C++ を変えると、エディターがそれをビルドし直し、シーンを動かしたまま差し替えます。

プレイ中のエディター。インスペクターでジェムの揺れ幅を上げ、ジェムが足場よりずっと高い位置にある

1 つのプロジェクトで、どんな画面にも

同じゲームが 16:9 の画面、9:16 の画面、536×240 の細長い画面、320×240 のパネルで動いている様子

自分のコンポーネントを数行で

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;
};

この 2 つのフィールドが、上の画像のスライダーです。インスペクターに表示され、シーンと一緒に保存され、元に戻すこともできます。ほかに登録するものはありません。

必要なものだけを

レンダリング、スプライト、入力、パーティクル、トゥイーン、ステートマシン、GPS、LoRa、Wi-Fi、オーディオ、そして各ボード。どれもパッケージになっていて、デバイス向けのビルドでは、プロジェクトが使わないものは外されます。今のところ 29 個あります。

何が作れるか

まずはゲームです。ゲームエンジンですから。ただ、シーンはオブジェクトとコンポーネントの集まりにすぎないので、同じツールでデバイスの UI、小さなパネルに出すダッシュボード、GPS トラッカー、LoRa メッセンジャー、さらには画面のないサービスまで作れます。

動く環境

ESP-IDF が対応している ESP32 ならどれでも動き、SPI、パラレル、QSPI のパネルを LovyanGFX で駆動します。Windows と Linux では SDL3 を使い、エディター自体も SDL3 の上で動いています。レンダラーを外したヘッドレスでも動きます。320×240 のゲームは ESP32-S3 で 60 fps で動きます。そこに至るまでは別の記事にまとめました。

0.x の意味

API はマイナーリリースの間でもまだ変わります。破壊的な変更とその移行方法は、すべて changelog に書いています。Windows 版はまだコード署名していないので、初回の実行前に SmartScreen が一度確認してきます。そして、やることはまだたくさんあります。ボードもパッケージも増やしますし、それにふさわしいドキュメントも必要です。

参加するには

どのリポジトリでも Issue とプルリクエストを受け付けています。CONTRIBUTING には、コードの構成とビルド方法が書いてあります。質問やアイデア、作ったものは Discord へどうぞ。Deki は私が 1 人で、仕事のあとに作っています。役に立ったなら、寄付がそのための時間になります。

最初のボードを送ってくれた LilyGO と、ウェイトリストにメールアドレスを残してくれた皆さんに感謝します。

← すべての記事