Deki のエンジン単体は、わざと小さくしてあります。オブジェクト、コンポーネント、ライフサイクル、アセットシステムだけです。目に見えるものも、ハードウェアとやりとりするものも、すべてパッケージです。Package Manager を開いてパッケージを追加すれば、そのコンポーネントがインスペクターに並びます。外せば、ファームウェアには入りません。

現在あるのは次のとおりです。
ものを動かす
- 2d:スプライト、テキスト(ビットマップフォントと、エディターで焼き込む TTF)、スプライトシートアニメーション、グラデーション、9-slice パネル、ボタン、スクロール、クリッピング、ローラー。
- 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 を、それぞれ 1 つのインターフェースで扱います。無線はボードが提供します。
- 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 ファームウェアの中のアプリにします。単独で書き込むのではなく、Tactility のホーム画面から起動します。
- lilygo-boards:すぐにビルドできる 2 つのボード、T-Deck Plus と T-Display S3 AMOLED。ボードもパッケージで、ボードを追加する作業の大半は、そのハードウェアを記述することです。
プロジェクトへの取り込み方
プロジェクトが使うパッケージを指定すれば、残りはエディターが取ってきます。各パッケージは自分が必要とするものを列挙していて、それらも一緒に入ります。パッケージは registry に載っている git タグからインストールされるので、プロジェクトは来年も今日と同じようにビルドできます。デバイス向けにビルドするときは、プロジェクトのどこからも使われていないパッケージの機能はファームウェアから外されます。
どのパッケージも Apache 2.0 の独立したリポジトリで、カタログにそれぞれのページがあります。欲しいものが見つかりませんか? パッケージは package.json と少しの C++ が入ったフォルダーです。既存のパッケージがいちばんの手本になります。
