fvtt로 시스템을 하나 만들어보려고 하는데,
찾아볼 곳이 마땅치 않아 삽질이 반드시 필요하더라
내가 먼저 삽질해 봤으니, 알고 있는 내용 공유해볼까 해서 글 써봄
오늘 볼 내용은 world building 시스템과 이 시스템의 액터인 SimpleActor의 구조에 대해 알아보려고 해
World Building 시스템은 나처럼 시스템 새로 파고 싶은 사람들 복사하라고 있는 시스템이야.
소스 보기 전에 시스템 구성이 어떤지 대충 봐 보자
이 시스템은 설정이 하나밖에 없어. 근데 영어에 뭔가 어려워 보이는 내용만 가득해서 처음 봤을 때는 무슨 내용인지 감도 안오더라
캐릭터 시트야. 설명 칸, 아이템, 능력치 부분이 있어.
능력치는 기본 체력과 파워 두 칸 밖에 없고 다른 능력치를 추가하려면 여기에서 추가시켜줘야 해
다른 시트는 누르면 막 주사위 굴리는데 여기는 간단해서 그런건 없어
아이템 시트야. 개수, 무게, 설명, 능력치 등을 적게 되어 있어.
이 정도 봤을 때 이 시스템의 특징이라면 추가할 수 있는 능력치가 많다는 점일 것 같네.
따로 룰이 지정되어 있지 않은만큼 어떤 룰이든 소화하려고 만든 것 같아. 아님 말구;
근데 능력치는 많은데 어떻게 불러오지... 저 시스템 설정은 뭐지....
같이 소스를 보면서 궁금증을 파해쳐보자.
오늘 볼 코드는 ./foundrydata/Data/systems/worldbuilding/module/actor.js 이야.
파일을 열어 보면 SimpleActor 하나의 클래스만 보여. 이 클래스는 Actor를 상속받고 있네.
재정의된 함수도 하나 보인다. getRollData()는 Actor 클래스에 선언되어 있는 함수야. 이 함수는 선택된 객체의 정보를 전해주는 역할을 해
이 함수를 잘 보면, 모두 data를 수정하는 것이 주된 역할임을 알 수 있어.
ex) Attributes의 str 키의 값 접근 --> @attributes.str.value
data에 있는 데이터들은 주사위를 굴릴 때 우리가 접근해서 사용할 수 있어, 시스템 세팅은 이 부분을 건드려주게 될거야.
여기를 보면 시스템 설정에서 데이터를 가져오고 있어. 이 시스템의 시스템 설정은 하나밖에 없으니, 아마 이게 그 복잡한 설정일거야.
이 변수를 사용하고 있는 곳은 두 곳이야.
코드를 해석해 보면, 시스템 설정이 켜져 있을 경우, data.attributes 안에 있는 데이터의 값들을 모두 data에 옮겨 놓는 역할을 하네.
attributes에 있는 데이터를 쉽게 접근할 수 있도록 바꿔주는 코드야.
전에는 @attributes.str.value 였다면 @str로만 접근할 수 있게 해주지.
위에는 attributes를 다뤘고 여기는 items를 다루고 있어.
shorthand 부분을 보면, 위의 코드와 거의 비슷한 구조임을 알 수 있을거야.
이런 점으로 보아, 이 코드는 item들의 데이터 접근을 쉽게 해주는 기능임을 알 수 있어.
New 액터의 item1의 특정 값을 알고 싶다면, 이렇게 쓰면 되겠네.
원래 @items.item1.attributes.attr1.value에서 @items.item1.attr1로 줄어든 것을 볼 수 있어.
이처럼 world building 시스템은 능력치를 추가하고 다루는데에는 큰 어려움 없이 쓸 수 있어.
만약, 다이스 시스템이 복잡하지 않은 룰을 쓴다고 할 때는 그냥 world building 시스템을 쓰는 것도 괜찮지 않을까 싶어.
기능 요약
1. 시스템 세팅은 커맨드를 줄여주는 매크로 역할이다.
2. 능력치의 @attributes.str.value 같은 커맨드를 @str로 접근할 수 있다.
3. 아이템의 @items.item1.attributes.str.value 같은 커맨드도 @items.item1.str로 접근할 수 있다.
이런식으로 돌아가는거였구나