본문으로 건너뛰기

Isora 가이드 ​

English | 한국어

Isora 는 아이소메트릭 씬을 데이터(JSON) 로 만들고, React 앱에서 그리고, 사람과 설비를 움직이는 프레임워크다. 씬은 Studio(GUI)나 코드로 만들고, 앱은 @isora/react 로 띄운다. 무엇을 어디에 둘지와 누가 어디로 갈지는 모두 @isora/core 의 순수 함수가 정하므로 서버 렌더·되감기·배속·다른 렌더러에서도 같은 모습이 나온다.

씬 JSON ──┐
          ├─► @isora/core ─ 배치·자리·길 찾기·행동 계획·움직임·깊이 정렬 ─► 그릴 파츠
에셋 팩 ──┘                                                            │
                                     @isora/react ─ <IsoScene>·훅·매 프레임 레이어 ◄─┘

문서 ​

문서이런 때 읽는다
시작하기씬 파일을 React 앱에 처음 띄운다. 클릭·실시간 상태를 붙인다
기본 개념좌표·오브젝트·에셋·자세·상태, 틱과 프레임, 결정성을 이해한다
사람 움직이기루틴·시간표로 알아서 움직이게 하거나, 명령으로 원하는 곳에 보낸다. 위치·활동을 읽는다
그리기<IsoScene> 을 다루고, 오버레이·클릭 좌표를 쓰고, 훅으로 직접 그리거나 다른 렌더러에 붙인다
움직임 엔진걸음·앉기가 어떻게 계산되고 왜 가구를 뚫지 않는지, 성능은 어떤지
사람 에셋 만들기직접 만든 사람 에셋이 걷고 앉도록 파츠를 짠다
구조패키지·모듈이 나뉜 방식, 데이터 흐름, 확장 지점, 아직 없는 것
API 한눈에공개 함수·훅·컴포넌트 목록 (언어 포함)

30초 요약 ​

tsx
import { createRegistry, parseScene } from '@isora/core'
import { IsoScene, useBehaviorPlayback } from '@isora/react'
import { officialPacks } from '@isora/assets'
import sceneJson from './scenes/office.isora.json'

const scene = parseScene(sceneJson)
const registry = createRegistry(officialPacks)

export function Office() {
  // 앱이 행동 재생을 쥐면 사람에게 명령하고, 누가 무엇을 하는지 읽을 수 있다.
  // behavior(루틴)가 있는 사람은 알아서 움직이고, control 에 적은 사람(kim)은 명령만 기다린다.
  const behavior = useBehaviorPlayback(scene, registry, { control: ['kim'] })
  return (
    <IsoScene
      scene={scene}
      registry={registry}
      behavior={behavior}
      showActivities
      onSceneClick={(point, object) => {
        // 김 대리를 누른 곳(의자면 그 의자)으로 보낸다.
        if (object?.id.startsWith('chair')) behavior.command('kim', { type: 'do', spot: object.id })
        else behavior.command('kim', { type: 'go', to: [point[0] - 0.25, point[1] - 0.25] })
      }}
    />
  )
}

MIT 라이선스로 배포합니다.