맞춤화 스키마 레퍼런스
이것은 Caputchin의 필드 타입과 프리셋 모델, 모든 맞춤화 가능한 표면 아래의 공유 기반을 위한 단일 레퍼런스입니다:
- 게임 맞춤화: 마켓플레이스 게임의 언어, 스킨, 구성.
- 커스텀 게임 스키마: 커스텀 게임을 위해 당신이 직접 작성하는 스키마.
- 마켓플레이스 게임 매니페스트: 게임 작성자가 선언하는
locales/skins/configurations블록. - 위젯 화이트라벨링: 위젯 셸의 내장 스키마.
넷 모두 여기 설명된 같은 필드 타입과 같은 프리셋 모델을 씁니다. 맞춤화는 프리셋으로 지어지고, 프리셋은 타입 지정된 필드의 주머니입니다.
축별 필드 타입
각 축은 고정된 필드 타입 묶음을 허용합니다:
| 축 | 허용된 필드 타입 |
|---|---|
| Configuration | boolean, number, range, list, string, link |
| Locale | string만 |
| Skin | color, image, audio, video, boolean, number, range, list |
스킨은 색상과 자산만이 아닙니다: 그것은 스칼라 손잡이 boolean,
number, range, list("그림자" 토글, 모서리 반지름 숫자, "패턴" 선택)도 노출할 수 있습니다.
이것들은 그 구성 짝과 정확히 똑같이 동작하고 그 타입 지정 값으로 해소됩니다(
boolean은 true로 남고, number는 8로 남음); color와 자산 값은 문자열로 해소됩니다.
스킨은 string이나 link를 허용하지 않습니다(자유 텍스트는 언어에 속하고; 링크 대상은
구성입니다).
각 타입이 받는 것
| 타입 | 값 | 규칙 |
|---|---|---|
string | 자유 텍스트 | 임의의 텍스트. |
boolean | 토글 | true 또는 false. |
number | 숫자 | 임의의 유한한 숫자. |
range | 한정된 숫자 | 필드의 최솟값과 최댓값 안의 유한한 숫자. 스텝은 슬라이더 편의입니다; 스텝 밖 값도 여전히 받아들여집니다. |
list | 하나의 선택 | 필드의 나열된 옵션 중 하나여야 함. |
link | URL | http 또는 https URL. 임베드된 자격 증명은 거부됨. |
color | 색상 | hex 색상(#rgb, #rgba, #rrggbb, 또는 #rrggbbaa)이나 rgb() / rgba() 값. 이름 붙은 색상과 다른 색 공간은 받아들여지지 않음. |
image | 이미지 | 업로드된 파일이나 .png, .jpg, .jpeg, .webp, .svg, 또는 .gif로 끝나는 https URL. |
audio | 오디오 클립 | 업로드된 파일이나 .mp3, .ogg, 또는 .wav로 끝나는 https URL. |
video | 비디오 | 업로드된 파일이나 .mp4 또는 .webm으로 끝나는 https URL. |
Caputchin은 당신이 저장할 때 모든 값을 검증하니, 자기 타입에 맞지 않는 값은 방문자에 닿을 수 있기 전에 거부됩니다.
예약된 키
콘텐츠 필드와 나란히, 프리셋은 그것이 무엇을 표시하는지가 아니라 어떻게 선택되고 해소되는지를 제어하는 몇 개의 예약된 메타데이터 키(각각 밑줄 접두사)를 지닙니다. 그것들을 설정하는 법은 표면에 달렸습니다: 마켓플레이스 게임 작성자는 그것들을 caputchin.json에 문자 그대로 씁니다; 대시보드 편집기(커스텀 게임, 화이트라벨)에서는 컨트롤로 설정하고 결코 키를 입력하지 않습니다. 어느 쪽이든 의미는 같습니다.
| 키 | 축 | 의미 |
|---|---|---|
_lang | Locale | 로케일 프리셋이 내는 BCP-47 언어 태그(en, es 등). 프리셋은 그것으로 묶임; 여러 프리셋이 하나의 _lang을 공유할 수 있음(예: 두 영어 변형). |
_direction | Locale | ltr 또는 rtl. 선택, 오른쪽에서 왼쪽 언어(ar, he, fa, ur, yi, ps, sd)에는 _lang에서 자동 도출됨; 손으로 거의 설정 안 함. |
_theme | Skin | light, dark, 또는 any. light / dark 프리셋은 그 배경 아래에서만 보임; any 프리셋은 둘 다 아래에서 동작하고 어느 쪽에도 자격이 있음. 없을 때 light로 기본 설정. |
_default | 전부 | 방문자가 하나를 고르지 않을 때 서버가 그 그룹에 고르는 프리셋을 표시. 그룹당 하나의 기본값(스킨은 모드당); any 스킨은 라이트, 다크, 또는 둘 다의 기본값이 될 수 있음. |
_extends | 전부 | 물려받을 다른 프리셋의 이름을 댐. 프리셋 확장하기를 보세요. |
예약된 메타데이터 키는 해소 동안 제거됩니다: _extends와 _default는 결코 게임에 닿지 않으며, 살아남는 메타데이터(_lang, _direction, _theme)에 평탄화된 콘텐츠 필드만 전달됩니다.
프리셋 확장하기
_extends는 한 프리셋이 다른 것에서 모든 값을 물려받게 하니, 전체 프리셋을 되풀이하는 대신 다른 필드만 작성합니다. _extends를 같은 축의 다른 프리셋 이름으로 설정하세요; 확장하는 프리셋은 그 프리셋의 모든 값에서 시작해 자기가 설정하는 키를 재정의합니다.
{
"skins": {
"presets": {
"brand-light": { "_theme": "light", "accent": "#2da44e", "bg": "#ffffff" },
"brand-light-warm": { "_extends": "brand-light", "accent": "#d97706" }
}
}
}여기서 brand-light-warm은 brand-light에서 bg를 물려받고 accent만 바꿉니다.
두 세부:
- 스킨 테마 단축. 스킨 프리셋에서,
_extends는 프리셋 대신 테마(light또는dark)를 댈 수도 있습니다. 그 형태는 그 테마의_default인 어떤 프리셋이든으로 해소되며, 변형을 이름 짓지 않고 "기본 라이트 스킨"에 기반하는 편리한 방법입니다. - 그것은 해소되어 사라집니다.
_extends는 따라간 뒤 제거됩니다; 게임은 완전히 병합된 결과를 받지, 결코_extends키 자체를 받지 않습니다.
스키마가 어디서 오는가
프리셋이 채울 수 있는 필드 묶음(그 스키마)에는 세 소스가 있으며, 모두 위의 같은 필드 타입을 씁니다:
- 마켓플레이스 게임: 스키마가 게임 작성자의 매니페스트에서 오며, 당신이 편집기를 열 때 가져옴. 당신은 게임의 프리셋을 재정의하지만 그 스키마를 바꾸지 않음.
- 커스텀 게임: 당신이 대시보드에서 스키마를 직접 정의한 다음, 그것을 상대로 프리셋을 작성함. 커스텀 게임을 보세요.
- 위젯 셸(화이트라벨): 고정된, 내장 스키마. 당신은 그 프리셋을 재정의함; 필드 묶음은 작성자가 선언하지 않음. 위젯 화이트라벨링을 보세요.
프리셋과 해소
한 축 안에서, 필드는 이름 붙은 프리셋으로 묶이고, 서버는 계층화된 범위에서 그룹당 하나의 유효 프리셋을 해소합니다, 사이트 키가 팀 위, 팀이 번들 기본값 위, 값별로 계산됨. 선택자는 축별로 다릅니다: 로케일은 방문자의 브라우저 언어로, 스킨은 방문자의 라이트나 다크 선호로(모드가 any인 프리셋은 어느 쪽에도 자격이 있음), 구성은 서버 권위입니다(방문자가 고를 수 없음). 범위 모델은 개요를 보세요.
함께 보기
- 게임 맞춤화 개요: 게임을 등록하고 관리하기, 더해 구성, 언어, 스킨의 축별 사용법.
- 커스텀 게임 대시보드 스키마: 커스텀 게임을 위해 스키마를 직접 작성하기.
- caputchin.json 매니페스트: 마켓플레이스 게임 작성자로서 이 블록을 선언하기.
- 위젯 화이트라벨링: 위젯 셸에 적용된 같은 타입.