개발 문서
게임 SDK
SDK는 브라우저에서 초기화합니다. 로컬 개발에서는 이 저장소의 packages/sdk를 파일 의존성으로 연결할 수 있습니다. npm에 게시한 이후에는 게임 프로젝트에서 npm install @immercy/sdk@1.0.0으로 설치합니다.
import { createImmercy } from '@immercy/sdk';
const immercy = createImmercy();
const movement = { x: 0, y: 0 };
const stopMove = immercy.on('move', (value) => {
movement.x = value.active ? value.x : 0;
movement.y = value.active ? value.y : 0;
});
const stopFire = immercy.on('fire', (value) => {
if (value.pressed) fire();
});
const stopConnection = immercy.onConnection((connected) => {
if (!connected) {
movement.x = 0;
movement.y = 0;
}
});
function dispose() {
stopMove();
stopFire();
stopConnection();
immercy.destroy();
}
fire()는 게임 자체의 행동 함수로 구현합니다. React라면 컴포넌트 effect 안에서 초기화하고 cleanup에서 destroy()를 호출합니다. on()은 해당 이벤트를 해제하는 함수를 반환합니다. onInput()으로 전체 입력을 관찰할 수 있고 connected, sessionId는 읽기 전용 상태입니다.
기본 신뢰 주소는 https://immercy.eturnalove.com입니다. 별도 Preview 플랫폼을 사용할 때에만 createImmercy({ parentOrigin: 'https://고정된-preview-주소' })처럼 명시합니다. 임의의 메시지 출처나 URL 쿼리로 신뢰 주소를 결정하지 않습니다. SDK에 프로젝트 API 키나 QR 토큰을 전달할 필요가 없습니다.
컨트롤러의 event 이름과 on()의 첫 인자를 일치시킵니다. 모든 콜백의 두 번째 인자는 { event, value, componentId, timestamp }입니다.
| 입력 컴포넌트 | value |
|---|---|
| Button | { pressed: boolean } |
| Joystick / DPad / TouchPad | { x, y, active }, 축 범위 -1~1 |
| Gyro | { alpha, beta, gamma } |
| Accelerometer | { x, y, z, interval } |
| Swipe | { direction, distance, velocity }, 방향 left/right/up/down |
| MultiTouch | { points: [{ id, x, y }], active }, 최대 10점 |
센서 값의 기기별 품질과 권한 허용은 브라우저/기기에 따라 실제 확인이 필요합니다. 접근이 거부되거나 장치가 지원하지 않을 때 게임이 멈추지 않도록 게임 규칙에서 처리합니다.