로어북 특수 문법
더욱 정교한 로어북을 설계해 봅니다.
코멧의 로어북 작동 방식
코멧은 모든 입력을 일괄적으로 처리하지 않습니다.
아래와 같이 4단계에 걸쳐 탐색하는 방식입니다.
- 전처리 명령어 키워드 실행
- 유저 입력 검사
- 직전 채팅 검사
{#} default실행
키워드 우선순위는 먼저 등록한 키워드부터 순차적으로 사용합니다.
이렇기 때문에 코멧에서는 항상 나오는 키워드 (., ,, ? 등)를 설정하는 것을 권장하지 않습니다.
유저 입력 검사 과정에서 먼저 활성화될 수 있기 때문에, 이전에 설명한 {#} default 사용을 권장합니다.
전처리 명령어 - 턴수
스토리가 주가 되는 캐릭터의 경우, 특정 턴을 기준으로 시나리오를 이어가고 싶을 때가 있습니다.
이 경우 코멧의 특수 키워드인 {#} {turn} 문법을 사용하면 훨씬 정교하게 구현할 수 있습니다.
시스템 상에서 {turn}은 유저의 첫 채팅일 때 1이 되고, 이후 채팅이 늘어날 때마다 1씩 증가합니다.
따라서, 첫 5턴동안 실행되는 로어북을 만들고 싶으시다면 {#} {turn}: 1~5를 적으면 동작합니다.
전처리 명령어 - dice
무작위로 특정 이벤트를 발생하게 하고 싶은 경우에도 로어북이 효과적입니다.
코멧의 특수 키워드인 {#} {dice6} 문법을 사용하면 LLM 의존 없이 랜덤을 구현할 수 있습니다.
1 이상 10억 미만의 모든 정수에 대해 dice 문법을 지원합니다.
각 숫자는 구간을 의미합니다. {dice23}의 경우 1 ~ 23 사이의 랜덤 값을 꺼내옵니다.
전처리 명령어 - 구간 설정
{turn}과 {dice} 문법에 사용되는 구간의 문법입니다.
아래와 같이 4가지 문법을 지원합니다.
(정수): 정확히 특정 수 1개만을 지정합니다.~(정수 a): a 이하의 모든 자연수를 지정합니다.(정수 a)~: a 이상의 모든 자연수를 지정합니다.(정수 a)~(정수 b): a 이상 b 이하의 모든 자연수를 지정합니다.
예제
{#} {turn}: 6~: 6턴째부터 계속 발동됩니다.{#} {dice6}: 3~5: {dice6} 주사위가 3, 4, 5면 발동됩니다.
사이클
사이클 문법을 사용하여 주기적으로 작동하게 만들 수도 있습니다.
주기 뒤에 $ (주기) 형태로 나타내면, 참고할 변수가 (주기)를 넘어가면 다시 1부터 시작합니다.
예제
{#} {turn}: 6~10 $ 10: 턴수가 6~10, 16~20, ... 일 경우 활성화됩니다.{#} {dice20}: 3~5 $ 10: {dice20} 주사위가 3, 4, 5, 13, 14, 15면 발동됩니다.
네거티브 키워드
특정 키워드가 감지될 경우 이후의 키워드를 검사하지 않고 해당 로어북을 반영하지 않도록 할 수 있습니다.
아래 문법을 사용하여 구성할 수 있습니다.
markdown
{x} (키워드)예제
입력: 가나다라마바사, 키워드: {x} 다라, 마바
결과: 반영되지 않음 ('다라'가 포함되어있음)
정규식 키워드
입력을 정규식으로 테스트하여 활성화할 수도 있습니다. 아래 문법을 사용하여 구성할 수 있습니다.
markdown
{*} (정규식)예를 들어, 호감도 시스템이 있을 경우 아래와 같이 구성한다면:
markdown
\[♥️: ([2-4][0-9]|50)\]호감도 값이 20 이상 50 이하면 켜지게 됩니다.
구체적으로는 [♥️: 20 이상 50 이하 자연수]를 잡아냅니다.
로어북 프롬프트의 주사위 값 대입
로어북 프롬프트에 {dice6} 꼴의 텍스트가 있을 경우, 실제 주사위 결과값으로 프롬프트를 바꿀 수 있습니다.
주사위 값은 로어북 키워드에 사용된 주사위 값과 같은 값을 공유합니다.
예를 들어, 키워드로 {dice6} 값이 5가 되었다면 프롬프트의 {dice6} 자리에는 반드시 5가 들어가게 됩니다.
사이클 문법
프롬프트의 경우 {dice20$10} 꼴로 사이클을 나타낼 수 있습니다.
예를 들어, dice20 값이 13이라면 프롬프트의 {dice20$10} 값은 3으로 대체됩니다.