Skip to content

로어북 특수 문법

더욱 정교한 로어북을 설계해 봅니다.

코멧의 로어북 작동 방식

코멧은 모든 입력을 일괄적으로 처리하지 않습니다.
아래와 같이 4단계에 걸쳐 탐색하는 방식입니다.

  1. 전처리 명령어 키워드 실행
  2. 유저 입력 검사
  3. 직전 채팅 검사
  4. {#} default 실행

키워드 우선순위는 먼저 등록한 키워드부터 순차적으로 사용합니다.

이렇기 때문에 코멧에서는 항상 나오는 키워드 (., ,, ? 등)를 설정하는 것을 권장하지 않습니다.
유저 입력 검사 과정에서 먼저 활성화될 수 있기 때문에, 이전에 설명한 {#} default 사용을 권장합니다.

전처리 명령어 - 턴수

스토리가 주가 되는 캐릭터의 경우, 특정 턴을 기준으로 시나리오를 이어가고 싶을 때가 있습니다.
이 경우 코멧의 특수 키워드인 {#} {turn} 문법을 사용하면 훨씬 정교하게 구현할 수 있습니다.

시스템 상에서 {turn}은 유저의 첫 채팅일 때 1이 되고, 이후 채팅이 늘어날 때마다 1씩 증가합니다.
따라서, 첫 5턴동안 실행되는 로어북을 만들고 싶으시다면 {#} {turn}: 1~5를 적으면 동작합니다.

전처리 명령어 - dice

무작위로 특정 이벤트를 발생하게 하고 싶은 경우에도 로어북이 효과적입니다.
코멧의 특수 키워드인 {#} {dice6} 문법을 사용하면 LLM 의존 없이 랜덤을 구현할 수 있습니다.

1 이상 10억 미만의 모든 정수에 대해 dice 문법을 지원합니다.
각 숫자는 구간을 의미합니다. {dice23}의 경우 1 ~ 23 사이의 랜덤 값을 꺼내옵니다.

전처리 명령어 - 구간 설정

{turn}{dice} 문법에 사용되는 구간의 문법입니다.
아래와 같이 4가지 문법을 지원합니다.

  1. (정수): 정확히 특정 수 1개만을 지정합니다.
  2. ~(정수 a): a 이하의 모든 자연수를 지정합니다.
  3. (정수 a)~: a 이상의 모든 자연수를 지정합니다.
  4. (정수 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으로 대체됩니다.