![](http://ac.namu.la/20240524sac/287bc763027f0d8be48604944cffc8121a5305be50593a46b90fb3ab89a5bbdb.png?expires=1719795600&key=Hfw0aWWPuMCFHqfcXMyadQ)
영감을 얻고 도움이 된 글: 랜덤에셋 정규식 간단하게 압축 하는법
내가 (에셋 초보를 위한) 에셋 넣기 연구에서 정규식을 이용한 랜덤 에셋을 고안했을 때 사실 나는 에셋을 딱히 풍부하게 넣는 편이 아니었기 때문에(지금도 아님) 노가다 문제가 발생할 거라고 전혀 예측을 못 했었음.
그런데 위 글의 지적을 통해 현재 랜덤 에셋 정규식의 문제점을 파악하게 되었고, 역시 위 글에서 고안된 {{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::}}을 사용해서 랜덤 에셋을 일일히 넣어 줄 필요 없이, 에셋 출력 프롬프트를 약간 조정하고 정규식 하나를 넣는 것만으로 랜덤 에셋 출력이 가능해짐. 노가다가 사라졌다!
참고로 금귤에서 테스트했을 때 잘 돌아가는 것을 확인함.
다시 한 번 링크된 글과 모든 에셋 제작자들의 노고에 감사드림