개발 문서
컨트롤러 컴포넌트
웹 에디터에서 만든 컨트롤러를 사용하거나 SDK의 builder로 조립한 뒤 JSON으로 저장합니다. 플랫폼은 컨트롤러를 데이터로 검증하며 업로드된 임의의 컨트롤러 코드를 실행하지 않습니다.
import { writeFile } from 'node:fs/promises';
import { defineController, Joystick, Button } from '@immercy/sdk/controller';
const controller = defineController({
version: 1,
name: '이동과 발사',
orientation: 'landscape',
background: '#111820',
accent: '#A9F072',
components: [
Joystick({ id: 'movement', event: 'move', label: '이동', x: 7, y: 20, w: 38, h: 65 }),
Button({ id: 'action', event: 'fire', label: '발사', x: 64, y: 26, w: 27, h: 52 }),
],
});
await writeFile('controller.json', JSON.stringify(controller, null, 2) + '\n', 'utf8');
추가 builder는 DPad, TouchPad, Gyro, Accelerometer, Swipe, MultiTouch입니다. validateControllerConfig(value)는 { valid, errors }를 반환합니다. 모든 builder 결과는 같은 데이터 스키마를 사용합니다.
좌표와 크기는 0100의 백분율입니다. 각 컴포넌트의 폭/높이는 최소 4이며 화면 바깥으로 나갈 수 없습니다. 124개 컴포넌트, 중복 없는 ID, 영문으로 시작하는 1~64자 이벤트 식별자를 사용합니다. 배경·강조·개별 색은 #RRGGBB 형식입니다.