DEKI/ENGINE ドキュメント
Deki 0.19.0
組み込みディスプレイとデスクトップのためのモジュール式 C++ 2D エンジン
読み取り中…
検索中…
一致する文字列を見つけられません
画面

1 つのプロジェクトがどんな画面でも動きます。どのデバイスも自身のネイティブ解像度で描画し、ワールドをどれだけ映すかはカメラが決めます。

カメラ

設定 動作
平行投影の高さ カメラが上から下まで映すワールドの量で、単位はメートルです。幅は画面の縦横比に従います。ピクセルモードでは、インスペクターは 1 メートルあたりのピクセル数で換算して表示します。16 px/m で 11.25 m なら 180 px と表示されます。
ピクセルパーフェクト 整数倍でのみ拡大し、カメラと描画されるすべてをアートのピクセルグリッドにスナップします。ピクセルアート向けです。
投影 平行投影 (平面的、2D 向け) または透視投影 (垂直方向の 視野角 を持つ、3D メッシュ向け)。

同じ縦横比のより大きな画面では、同じワールドがより大きく描画されます。横に広い画面では左右がより多く映り、狭い画面ではより少なく映ります。寄って映すには、平行投影の高さを小さくします。

1 メートルあたりのピクセル数 (プロジェクト設定 > 単位) は、アートの密度を表します。16 px/m では、16 px のスプライトの幅は 1 メートルです。

各画面に映る範囲

平行投影の高さが 11.25 m のカメラの場合:

画面 映る範囲
1280x720 (16:9) 20 x 11.25 m
1920x1080 (16:9) 20 x 11.25 m、1.5 倍で描画
320x240 (4:3) 15 x 11.25 m: 16:9 の表示の左右が切り取られます
2560x1080 (21:9) 26.7 x 11.25 m: 左右がより多く映ります
240x320 (縦向き) 8.4 x 11.25 m

重要なものは対象とする最も狭い画面の内側に収め、その外側にも広い画面向けに少しワールドを作っておいてください。そうしないと、その部分にはカメラのクリアカラーが見えてしまいます。

画面に固定する

HUD はワールドではなく画面に属します。左上隅のハート、右上のスコアなどです。オブジェクトに スクリーンアンカー を追加し、そのグリッドで点を選びます。隅、辺の中央、または中心です。オフセット はその点からの距離で、単位はメートル、Y は上向きです。つまり、左から 0.875 m 内側、上から 1 m 下にあるハートは、左上でオフセット (0.875, -1) になります。

するとオブジェクトは、どの画面でも、カメラが動いている間も、その点にとどまります。ほかのすべてと同じくメートル単位でサイズが決まるので、カメラに合わせて拡大縮小します。320x240 と 536x240 の画面では同じサイズ、720p では 3 倍のピクセル数になります。

  • トランスフォームの位置はアンカーによって設定され、グレーアウトして表示されます。回転とスケールは引き続きトランスフォームから得られ、子は通常どおりアンカーされたオブジェクトに従います。
  • シーンビューでは、オブジェクトはプレイビューが表示している画面上での位置に置かれます。その画面を切り替えると移動します。ドラッグするとオフセットが変わります。選択したオブジェクトとその点は線で結ばれます。
  • シーンファイルはオフセットを保存するので、画面によって変わることはありません。

レシピ

2D ピクセルアート。 平行投影の高さをアートのネイティブの高さに設定します。たとえば 16 px/m で 240 px なら 15 m です。ピクセルパーフェクトをオンにします。640x480 の画面ではアートの各ピクセルを 2x2 で、1280x720 では 3x3 で、400x300 では 1 倍で少し広いワールドとともに描画します。ピクセルパーフェクトは切り捨てるので、カメラは平行投影の高さのどこかを切り取るのではなく、それより少し多くを映します。1 倍でも小さすぎる画面では切り取られます。

2D の高解像度またはベクターアート。 平行投影の高さをメインの画面に映したい量に、1 メートルあたりのピクセル数をアートの密度に設定します。どの画面でも滑らかに拡大縮小します。レンダラーはニアレストネイバーでサンプリングするので、大きく縮小したアート (1280 から 320) は動くとちらつきます。最も小さい画面に近いサイズで作ってください。

3D メッシュを使う 2D。 2D と同様にし、カメラの投影を透視投影に設定します。視野角は平行投影の高さと同じく垂直方向なので、どの画面でもメッシュとスプライトの位置が揃います。スプライトは引き続き平面的に描画されます。3D 空間への配置は今後の予定です。

3D。 カメラを透視投影にし、視野角を設定します。平行投影の高さと同じく垂直方向なので、横に広い画面では左右がより多く映ります。

プレビュー

プレイビューのツールバーでは、Unity の Game ビューと同じように、表示する画面を選びます。

  • フリーアスペクト: パネル自体のサイズです。
  • アスペクト比 (16:9、16:10、4:3、3:2、21:9、9:16): パネルに収まる、その縦横比の最大の画面です。
  • 解像度: いずれかのプラットフォームの画面、またはカスタムの幅と高さです。

その隣には画面のピクセルフォーマットがあります。再生はそのサイズとフォーマットで実行されます。サイズは、デバイスの画面が変わったかのように再生中に変更できます。フォーマットは停止するまで固定です。シーンビューのカメラのギズモは、その画面に映る範囲を枠で示します。カメラがない場合、シーンビューは原点の周りに画面を描画します。プレイビューは選択をプロジェクトごとに記憶します。

DekiEditor --render-scenes はアクティブなプラットフォームの画面で RGB565 で描画します。DEKI_RENDER_SIZE=WxH で別のサイズ、DEKI_RENDER_FORMAT で別のフォーマットで描画します。--export --platform <id> はアクティブなもの以外のターゲット向けにエクスポートします。

カラーフォーマット

各画面には独自のピクセルフォーマットもあります。小型のパネルの多くは RGB565、デスクトップはフルカラーです。これに従うものが 2 つあります。

  • ゲームは画面のフォーマットで描画します。 ディスプレイは起動時に、サイズと同様に、受け付けるフォーマットを伝えます。プロジェクト全体のカラーフォーマットはありません。
  • 画像は表示される画面向けに保存されます。 画像のフォーマット (テクスチャのインスペクター) はデフォルトで 自動 です。RGB565 のターゲットでは RGB565、画像に透明部分があれば RGB565A8 になります。フルカラーのターゲットでは RGB888、透明部分があれば RGBA8888 になります。テクスチャのインスペクターの ターゲット セクションで、カードを積み重ねた形で設定します。最初が デフォルト で、すべてのターゲットが使うフォーマット (と最大サイズ) を持ちます。続いてターゲットごとに 1 枚ずつあり、見出しにはターゲット名と、そこで画像が使うメモリ量が表示されます。たたんだカードには何を保存するかが表示され、開くと値が表示されます (ターゲットの値がデフォルトから来ている場合は薄く表示されます)。カードで値を選ぶと上書きになります。上書きには点が付き、一覧の先頭の デフォルト (...) で元に戻ります。エクスポートは、各画像を対象のターゲットが求める形で保存します。
  • 最大サイズ は、フォーマットの隣にあり、Unity と同じように動作します。長い方の辺がこれを超える画像は、その辺がちょうど最大サイズになるように縮小して保存されます。たとえば、大きな背景をあるボードでは小さく保つ、といった使い方です。なし (デフォルト) では縮小しません。縮小したスプライトは、ワールドでのサイズとフレームを保ちます。フレームは画像のピクセル単位のままで、隣接するフレームがにじまないように、それぞれ個別にリサンプリングされます。クロマキーの画像は、ブレンドではなくピクセルを選ぶ方法で縮小されるので、キーの色は正確に保たれます。エディターはアクティブなターゲットでのサイズも表示します。スプライトシートエディターは常に元の画像で作業します。サイドカー: settings.texture.maxSize、ターゲットごとには settings.texture.targets.<id>: {"format", "maxSize"} (そこでは 0 = なし)。

プラットフォームの colorFormat は、その画面のフォーマットです。エディター自身のキャッシュはアクティブなプラットフォームに従うので、シーンビューに表示されるものがそのターゲットが受け取るものです。プレイビューのフォーマットのドロップダウンで別のフォーマットをプレビューできます。画像は描画時に変換されるので、どのフォーマットもどの画面にも描画できます。

3D モデルは、同じフォーマットと最大サイズの設定を .data ファイルに持ち、どのフレームバッファのフォーマットにも描画できます。モデルのテクスチャは 2 のべき乗のサイズで保存されるので、最大サイズはその上限になります。なしの場合の上限は 256 で、これは小さなボードが常駐させておけるサイズです。

デバイス上では

フレームバッファはディスプレイ自身のサイズとフォーマットで、ディスプレイの起動時に読み取られます。1 つのビルドが異なるサイズの画面で動きます。プラットフォームの screenWidth、screenHeight、colorFormat は、エディターがプレビューするものであり、デスクトップシミュレーターが開くウィンドウの形です。