영감을 얻고 도움이 된 글: 랜덤에셋 정규식 간단하게 압축 하는법 


내가 (에셋 초보를 위한) 에셋 넣기 연구에서 정규식을 이용한 랜덤 에셋을 고안했을 때 사실 나는 에셋을 딱히 풍부하게 넣는 편이 아니었기 때문에(지금도 아님) 노가다 문제가 발생할 거라고 전혀 예측을 못 했었음.

그런데 위 글의 지적을 통해 현재 랜덤 에셋 정규식의 문제점을 파악하게 되었고, 역시 위 글에서 고안된 {{roll::}} 기능을 사용한 방법에 착안해서 나름대로 해결법을 연구해 봄.

알못이 만든 이상한 방법으로 지금까지 고생했던 에셋봇 제작자들에게 미안할 따름읾...


먼저 에셋을 넣을 땐 기존처럼 넘버링을 해서 넣으면 됨. 중요한 점은 넘버링은 1부터 시작해야 한다는 것.


잘못된 예시
좋은 예시
smile
smile1
smile2
smile3
smile1
smile2
smile3
smile4


그리고 에셋 프롬프트에 에셋 리스트를 넣을 땐 에셋 이름 뒤에 언더스코어(_)를 이용해서 갯수를 표기해 줌.

이 때 숫자 앞쪽의 언더스코어는 자유롭게 써도 괜찮고, 에셋이 하나밖에 없다면 넘버링 없이 적으면 됨.


에셋 프롬프트 리스트 예시
(어쩌구저쩌구 출력하세요)

Keyword list: smile_5; angry_3; very_angry_2; happy; curious_4


그리고 정규식을 하나 추가해 줌.


랜덤 에셋 정규식
Modification Type
디스플레이 수정/출력문 수정 (취향껏)
IN
"(.*?)_(\d+)"
OUT
"$1{{roll::$2}}"


간단하게 해설하자면,

IN은 "어쩌구저쩌구_솰라솰라_숫자" 문자열을 찾아냄. 글자를 $1로, 숫자를 $2로 받아들임.

{{roll::숫자}} 는 1부터 지정된 숫자까지의 랜덤 자연수를 반환하는 리스 기능임. 즉 {{roll::$2}} 는 1에서 $2까지의 랜덤 자연수.

OUT은 그걸 "어쩌구저쩌구_솰라솰라_숫자" 를 "어쩌구저쩌구_솰라솰라랜덤숫자로 바꿔줌.


모델이 출력한 것
정규식으로 변형된 결과
"curious_4"
"curious1" (or) "curious2" (or) "curious3" (or) "curious4"


이 방법을 사용하면 {{random::}}을 사용해서 랜덤 에셋을 일일히 넣어 줄 필요 없이, 에셋 출력 프롬프트를 약간 조정하고 정규식 하나를 넣는 것만으로 랜덤 에셋 출력이 가능해짐. 노가다가 사라졌다!


참고로 금귤에서 테스트했을 때 잘 돌아가는 것을 확인함.


다시 한 번 링크된 글과 모든 에셋 제작자들의 노고에 감사드림