DEKI/ENGINE 문서
Deki 0.19.0
임베디드 디스플레이와 데스크톱을 위한 모듈식 C++ 2D 엔진
로딩중...
검색중...
일치하는것 없음
화면

하나의 프로젝트가 어떤 화면에서든 실행됩니다. 모든 장치는 자신의 네이티브 해상도로 렌더링하며, 월드를 얼마나 보여 줄지는 카메라가 결정합니다.

카메라

설정 하는 일
직교 높이 카메라가 위에서 아래까지 보여 주는 월드의 양으로, 단위는 미터입니다. 너비는 화면 모양을 따릅니다. 픽셀 모드에서는 인스펙터가 이를 미터당 픽셀 값으로 환산해 표시합니다. 16 px/m에서 11.25 m는 180 px로 표시됩니다.
픽셀 퍼펙트 정수 배율로만 확대하고, 카메라와 그려지는 모든 것을 아트 픽셀 격자에 맞춥니다. 픽셀 아트용입니다.
투영 직교(평면, 2D용) 또는 원근(세로 시야각, 3D 메시용).

모양이 같은 더 큰 화면은 같은 월드를 더 크게 그려 보여 줍니다. 더 넓은 화면은 양옆을 더 많이 보여 주고, 더 좁은 화면은 덜 보여 줍니다. 더 가까이 보려면 직교 높이를 줄이십시오.

미터당 픽셀(프로젝트 설정 > 단위)은 아트의 밀도입니다. 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.5x로 그림
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에서는 픽셀 수가 세 배입니다.

  • 트랜스폼의 위치는 앵커가 설정하며 회색으로 표시됩니다. 회전과 스케일은 여전히 트랜스폼에서 오며, 자식은 평소처럼 앵커된 오브젝트를 따라갑니다.
  • 씬 뷰에서 오브젝트는 플레이 뷰가 보여 주는 화면에서 놓일 위치에 있으며, 그 화면을 바꾸면 이동합니다. 드래그하면 오프셋이 바뀝니다. 선택한 오브젝트와 그 점 사이에 선이 그려집니다.
  • 씬 파일은 오프셋을 저장하므로 화면에 따라 바뀌지 않습니다.

레시피

2D 픽셀 아트. 직교 높이를 아트의 네이티브 높이로 설정합니다. 예를 들어 16 px/m에서 240 px라면 15 m입니다. 픽셀 퍼펙트를 켭니다. 640x480 화면은 아트 픽셀 하나를 2x2로, 1280x720은 3x3으로, 400x300은 1x로 그리며 월드가 조금 더 보입니다. 픽셀 퍼펙트는 내림하므로, 카메라는 직교 높이의 일부를 잘라 내지 않고 조금 더 많이 보여 줍니다. 1x에도 못 미치는 작은 화면에서는 잘립니다.

2D 고해상도 또는 벡터 아트. 직교 높이를 주 화면에서 보여 줄 양으로, 미터당 픽셀을 아트의 밀도로 설정합니다. 모든 화면이 매끄럽게 확대·축소됩니다. 렌더러는 최근접 이웃 샘플링을 사용하므로, 크게 축소한 아트(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, 데스크톱은 풀 컬러입니다. 이를 따르는 것이 두 가지 있습니다.

  • 게임은 화면의 포맷으로 그립니다. 디스플레이는 크기와 마찬가지로 시작할 때 무엇을 받는지 알려 줍니다. 프로젝트 전체에 걸친 색상 포맷은 없습니다.
  • 이미지는 표시될 화면에 맞게 저장됩니다. 이미지의 포맷(텍스처 인스펙터)은 기본적으로 자동입니다. RGB565 타겟에서는 RGB565, 이미지에 투명도가 있으면 RGB565A8이고, 풀 컬러 타겟에서는 RGB888, 투명도가 있으면 RGBA8888입니다. 텍스처 인스펙터의 타겟 섹션에서 카드 스택으로 이를 설정합니다. 맨 앞은 기본값으로, 모든 타겟이 사용하는 포맷(과 최대 크기)이 있고, 그 뒤로 타겟마다 카드가 하나씩 있으며, 카드 머리에는 타겟 이름과 그 타겟에서 이미지가 차지하는 메모리가 표시됩니다. 접힌 카드는 무엇을 저장하는지 표시하고, 펼치면 값을 보여 줍니다(타겟의 값이 기본값에서 온 것이면 흐리게 표시됩니다). 카드에서 값을 고르면 재정의되며, 재정의는 점으로 표시되고, 목록 맨 위의 기본값 (...)을 고르면 되돌아갑니다. 익스포트는 각 이미지를 대상 타겟이 원하는 형태로 저장합니다.
  • 포맷 옆의 최대 크기는 Unity와 같은 방식으로 동작합니다. 긴 변이 이 값을 넘는 이미지는 그 변이 정확히 최대 크기가 되도록 축소되어 저장됩니다. 예를 들어 큰 배경을 어떤 보드에서는 작게 유지할 수 있습니다. 없음(기본값)은 절대 축소하지 않습니다. 축소된 스프라이트는 월드에서의 크기와 프레임을 유지합니다. 프레임은 이미지의 픽셀 기준으로 남아 있고, 이웃끼리 번지지 않도록 각각 따로 리샘플링됩니다. 크로마 키 이미지는 픽셀을 섞지 않고 골라내는 방식으로 축소되므로 키 색상이 정확하게 유지됩니다. 에디터는 활성 타겟의 크기도 표시하며, 스프라이트 시트 에디터는 항상 원본으로 작업합니다. 사이드카: settings.texture.maxSize, 그리고 타겟별로 settings.texture.targets.<id>: {"format", "maxSize"}(거기서 0 = 없음).

플랫폼의 colorFormat은 그 화면의 포맷입니다. 에디터 자체의 캐시는 활성 플랫폼을 따르므로, 씬 뷰에 보이는 것이 곧 그 타겟이 받는 것입니다. 플레이 뷰의 포맷 드롭다운은 다른 포맷을 미리 보여 줍니다. 이미지는 그려질 때 변환되므로 어떤 포맷이든 어떤 화면에서든 그려집니다.

3D 모델도 .data 파일에서 같은 포맷 및 최대 크기 설정을 받으며, 모든 프레임버퍼 포맷으로 그려집니다. 모델의 텍스처는 2의 거듭제곱 크기로 저장되므로 최대 크기가 그 상한이 됩니다. 없음인 경우에는 소형 보드가 상주시킬 수 있는 크기인 256으로 제한됩니다.

장치에서

프레임버퍼는 디스플레이 고유의 크기와 포맷이며, 디스플레이가 시작할 때 읽어 들입니다. 하나의 빌드가 크기가 다른 여러 화면에서 실행됩니다. 플랫폼의 screenWidth, screenHeight, colorFormat은 에디터가 미리 보여 주는 것이자 데스크톱 시뮬레이터가 여는 창의 크기와 포맷입니다.