|
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 ビューと同じように、表示する画面を選びます。
その隣には画面のピクセルフォーマットがあります。再生はそのサイズとフォーマットで実行されます。サイズは、デバイスの画面が変わったかのように再生中に変更できます。フォーマットは停止するまで固定です。シーンビューのカメラのギズモは、その画面に映る範囲を枠で示します。カメラがない場合、シーンビューは原点の周りに画面を描画します。プレイビューは選択をプロジェクトごとに記憶します。
DekiEditor --render-scenes はアクティブなプラットフォームの画面で RGB565 で描画します。DEKI_RENDER_SIZE=WxH で別のサイズ、DEKI_RENDER_FORMAT で別のフォーマットで描画します。--export --platform <id> はアクティブなもの以外のターゲット向けにエクスポートします。
各画面には独自のピクセルフォーマットもあります。小型のパネルの多くは RGB565、デスクトップはフルカラーです。これに従うものが 2 つあります。
プラットフォームの colorFormat は、その画面のフォーマットです。エディター自身のキャッシュはアクティブなプラットフォームに従うので、シーンビューに表示されるものがそのターゲットが受け取るものです。プレイビューのフォーマットのドロップダウンで別のフォーマットをプレビューできます。画像は描画時に変換されるので、どのフォーマットもどの画面にも描画できます。
3D モデルは、同じフォーマットと最大サイズの設定を .data ファイルに持ち、どのフレームバッファのフォーマットにも描画できます。モデルのテクスチャは 2 のべき乗のサイズで保存されるので、最大サイズはその上限になります。なしの場合の上限は 256 で、これは小さなボードが常駐させておけるサイズです。
フレームバッファはディスプレイ自身のサイズとフォーマットで、ディスプレイの起動時に読み取られます。1 つのビルドが異なるサイズの画面で動きます。プラットフォームの screenWidth、screenHeight、colorFormat は、エディターがプレビューするものであり、デスクトップシミュレーターが開くウィンドウの形です。