시리즈 AI 채팅 변수 관련 팁글


일단 기본적인 아이디어는 다음과 같다


1. 상태창에 affinity가 숫자로 출력됨

2. 출력된 affinity 값을 aff 변수에 입력함

3. #if, greater_equal, less 등을 이용해 aff 값의 범위에 따라 디스크립션을 변경


좀 더 자세한 과정을 설명하자면 이러함


출력문 수정 정규식

IN: Affinity: (\d+)

OUT: {{setvar::aff::$1}}{{br}}Affinity: $1


/봇이 상태창에 Affinity: 23을 출력하면 23을 aff라는 변수에 입력함. 내용상/화면상 출력은 그대로임.


봇 디스크립션

Current Affinity:{{#if {{and::{{greater_equal::{{getvar::aff}}::0}}::{{less::{{getvar::aff}}::10}}}}}}(Indifference){{/if}}{{#if {{and::{{greater_equal::{{getvar::aff}}::10}}::{{less::{{getvar::aff}}::20}}}}}}(Awareness){{/if}}{{#if {{and::{{greater_equal::{{getvar::aff}}::20}}::{{less::{{getvar::aff}}::30}}}}}}(Acknowledgement){{/if}}{{#if {{and::{{greater_equal::{{getvar::aff}}::30}}::{{less::{{getvar::aff}}::40}}}}}}(Interest){{/if}}
{{#if {{and::{{greater_equal::{{getvar::aff}}::40}}::{{less::{{getvar::aff}}::50}}}}}}(Appreciation){{/if}}{{#if {{and::{{greater_equal::{{getvar::aff}}::50}}::{{less::{{getvar::aff}}::60}}}}}}(Fondness){{/if}}{{#if {{and::{{greater_equal::{{getvar::aff}}::60}}::{{less::{{getvar::aff}}::70}}}}}}(Affinity){{/if}}{{#if {{and::{{greater_equal::{{getvar::aff}}::70}}::{{less::{{getvar::aff}}::80}}}}}}(Attachment){{/if}}{{#if {{and::{{greater_equal::{{getvar::aff}}::80}}::{{less::{{getvar::aff}}::90}}}}}}(Love){{/if}}{{#if {{and::{{greater_equal::{{getvar::aff}}::90}}::{{less::{{getvar::aff}}::100}}}}}}(Devotion){{/if}}{{#if {{equal::{{getvar::aff}}::100}}}}(Obsession){{/if}}


/aff 값에 따라 디스크립션에 특정 문구를 출력함.


보기 좀 어지러운데, 사실 이 부분은 딱히 중요한 건 아니고 뭘 하려는지만 알면 된다. 대충 설명하자면


{{#if /만약에

{{and::
{{greater_equal::{{getvar::aff}}::0}} /aff 변수값이 0보다 크고(and)
{{less::{{getvar::aff}}::10}} /10보다 작으면
}}

}}
(Indifference) /(Indifference)를 출력
{{/if}}


이렇다. 즉 aff 값이 0에서 10이라면 지정된 문구 (Indifference)가 출력된다.


테스트를 위해 숙련된 조교인 Test bot을 데려옴



봇 디스크립션
정규식 스크립트


세팅 완료된 상태에서 aff 값을 0으로 세팅하고 봇이 Affinity를 출력하게 해 보자.



딸깍 결과물.



리퀘스트를 보낼 당시 aff는 0이었으므로, 이론상으로는 봇 디스크립션에 Current Affinity: (Indifference)가 들어가 있어야 한다.

리퀘스트 로그를 확인해 보면,



성공!


이번 딸깍을 통해 aff는 78로 세팅되었을 것이다. 즉, 다음 딸깍 시에는 봇 디스크립션 내용이 Current Affinity: (Attachment)로 바뀌어 있어야 한다.



딸깍



성공!


지금은 간단하게 문구만 넣었지만, 만약 (Indifference) 대신 긴 설명을 넣는다면 봇 디스크립션에 <user>와 <char>의 현재 관계뿐 아니라 관계에 따른 봇의 행동 양상도 지정할 수 있다. 가령,


Current relationship with <user>: {{#if {{and::{{greater_equal::{{getvar::aff}}::0}}::{{less::{{getvar::aff}}::10}}}}}}Indifference. The two have just met, and <char> doesn't feel any human interest, curiosity, or attraction to <user>. She treats <user> in a businesslike, neutral manner.{{/if}}


이런 식으로 작성해 놓으면,



이런 식으로 디스크립션이 예쁘게 잘 들어간다.


이렇게 변수에 따라 봇 디스크립션을 바꿀 수 있는 기능은 호감도 말고도 RPG에서의 체력, 마나 등 활용할 수 있는 분야가 무궁무진할 것으로 예상된다. 이상!