in 개발 일지

키리노 스크립트의 다중 입력 메서드

참고로 아래 내용은, 현재 개발중이지만 공개되지 않은 버전의 키리노 엔진에 관한 얘기다. 깃허브에 공개되어 있는 버전은 매우 옛날 버전..

신작 개발만 완료&정리되면 제대로 유니티 애셋스토어에 패키지로 공개하든 해야지..

현재 개발중인 게임에서 기획자용 스크립트 언어로 마련한 키리노 엔진은 태그와 텍스트 두 부분을 가진다.

태그 “텍스트”

그리고 ‘예약어’로 정의되지 않은 태그를 사용해서 출력하면 대사로서 출력된다. 즉 아래 코드는 화면에 “아이리” 라는 이름으로 “안녕!”이라는 대사가 출력되는 코드다.

아이리 “안녕!”

그런데 키리노 엔진에서 다중 입력 파라미터를 가지는 메서드를 사용하도록 파서를 ‘재대로’ 만드는 방법을 몰라서, 다중 입력이 필요한 경우, 태그와 텍스트 형식을 빌려 아래와 같은 형식을 사용했었다.

scale “irish 0.8 Linear 200”

이렇게 하면 scale이라는 “예약어” 태그에 맵핑된 키리노 엔진의 VNCore 쪽 C# 메서드가 실행되고,   “irish 0.8 Linear 200″를 공백단위로 잘라내어 해당 메서드의 입력으로 넣는다.

이런 방식은 스크립트 ‘언어’가 아니라서 불만이었지만, 사용하고 있던 파서인 VGPrompter가 파라미터가 없는 C# 메서드만 커스텀 키워드와 맵핑할 수 있었기에 다중 입력을 받는 경우에는 저런식으로 구현했다.

키리노 스크립트와 VNCore를 중간 연결하는 파서를 직접 짜기에는 VNCore 쪽에 집중할 시간도 뺏기고, 인터프리터 파서를 언젠가 직접 짜야겠다고 마음만 먹고 있었는데…

VGPrompter의 Script 멤버중 파라미터없는 함수만 대행하는 actions 말고도 functions 라는 멤버도 있길레 봤는데… 다중입력을 받는 함수도 대행을 지원하더라..!

열광하고 바로 구현했는데 제대로 동작함. 알고보니 이미 반년도 전에 다중 입력을 가지는 메서드도 파싱을 제대로 해주고 C#으로 작성한 메서드와 맵핑을 제대로 해줬는데 내가 위키를 제대로 안읽어 본것이다. 젠장.

아무튼 이제 기획자는 키리노 스크립트에서, 다중 입력을 받는 경우 다음과 같은 형식을 쓴다.

setScale(“irish”,0.8f,”Linear”,200)