https://gall.dcinside.com/board/view/?id=rlike&no=432934&exception_mode=recommend&page=1
이 글싼 사람인데 연재 달리기 전에 스캐몇 파괴몇 찍어야 무나가 선물 잘 주는지 궁금해서 엘굴까지 여러번 박고 컨큐했었음.
하면서 너무 맨땅에 헤딩하는거 같아서 이번 기회에 아예 돌죽 코드를 까서 책선물 메커니즘을 알아봤음. 평소에 도는 '무나는 스캐 높으면 책 잘줌' '현재 학파 기반으로 책 줌' 이런 썰들이 진짜인지도 한번 확인하고 싶었었고
미리 말하지만 나는 C++ 1도 모르는 문외한이고 github도 처음 써봄. 어느 정도 틀린 내용이 있을 수 있으니 감수하고 봐주든지 행여라도 코딩쌉고수 있으면 틀린부분 지적해주면 감사하게 받겠음. 제목을 '알아보자' 가 아닌 '토론해보자' 라고 쓴 것도 그 이유에서고
그럼 시작
무나 선물의 코딩은 acquire.cc에 있음. 난 이거 찾는것도 한세월 걸림
정확한 함수는 여기 있음. 많이 복잡해보이지만 일단 알 수 있는 정보들만 추리면 무나는 테마 주문서, 일반 책(던전에서 흔히 보이는), 레벨 주문서 이 세 종류의 선물을 가중치 각각 30, 10, 1로 준다고 할 수 있음. 이 정보와 확률은 나무위키랑 크롤위키에 적혀 있는 거랑 일치하기에 방향을 제대로 잡고 있다는 걸 알 수 있다
일반 주문서의 경우 복잡하게 막 적혀있지만 친절하게 주석으로 '모르는 주문 위주로' 준다고 했음. 일단 넘어가고
레벨주문서의경우 1레벨 주문만 있거나 9레벨 주문만 있는 그런 책들이라고 할 수 있음. 완전 랜덤이거나 스펠캐스팅레벨로 정해지는 거 같다(0이면 1레벨주고 27이면 9레벨짜리 주는듯)
위의 2책의 경우 줄 확률도 별로 높지 않고 플레이어가 조작할 수 있는 변수들도 별로 없기에 실질적으로 중요한 건 테마 주문서임.
테마주문서를 결정하는 함수는 저렇게 간단하게 적혀있고 실제 코딩은 다른 파일인 randbook.cc에 자세하게 되어있음.
결정 과정을 간략하게나마 요약하면
1. 주문별 필터 설정(업화같이 플레이어 사용 불가능 마법은 거른다든지 종족별로 못쓰는 마법은 주지 않는다든지)
2. 주문별 가중치 계산
3. 주문별 가중치를 전부 더해 학파별 가중치 계산
4. 학파별 가중치를 이용하여 학파별 경합(가중치 높다고 무조건 되는 게 아니라 선택될 확률이 높아지는거), 주문서의 테마 선택(최대 2개까지 선택 가능. 예를 들어 책 이름이 Cerebov's encyclopedia of burning and arcane weapons 뭐 이렇게 떴다 그러면 학파가 화염, 파괴인 거라고 보면 됨)
5. 선택된 학파 내에서 주문들끼리 가중치를 이용하여 경합, 최종적으로 책에 들어갈 마법 선택
주문별 필터설정은 거르고 주문별 가중치 계산부터 시작함
seen weight에는 본적 없으면 4, 아니면 1을 할당함. 꽤 큰 차이임을 알 수 있다.
difficult weight에는 스캐에 따른 마법별 가중치를 산출함. Spc는 스펠캐스팅 수치의 정수변환(어떤 정수값에 더 가까운지에 따라 올림할지 내림할지 확률이 바뀌는 함수)이고 difficult weight에 들어가는 함수는 ㅅ자 모양의 절대값함수이고 Spc가 스펠난이도에 3을 곱한 값과 동일할 때 최대치 5가 나옴.
요런식으로
skill weight에는 학파를 얼마냐 올렸는지가 들어감. 가장 이해 안되는 가중치이기도 한데, for조건문 자체도 해석을 못하겠고 반복할 때마다 total skill과 num skill이 같이 늘어나는데 skill weight 계산시 둘을 나눠서 반복이 의미가 없다고 보임... max함수도 왜 넣었는지 이해 안되고... 아무튼 컨저 18 넣었다고 하면 학파 가중치는 2+18/3 해서 8이 되는 거라고 보면 됨. 학파 수련을 안했을 경우 1로 고정이고
이후 세 가중치를 곱하여 최종가중치를 계산하고 학파별로 존재하는 모든 가중치를 다 더한 후 가중치를 베이스로 책의 학파를 최대 2개까지 정함.
학파를 정했으면 그 학파 안에서 최종적으로 책에 포함될 주문을 가중치를 이용하여 산출함. 학파 가중치는 서로 똑같을 거기에 의미 없고 결국 라이브러리 가중치랑 스캐 가중치가 결정하는 요인이 될 것임.
여기까지이 결과를 바탕으로 나름 결론을 내보겠음.
내가 쓴 공략에 꼭 필요한 마법들은 대강 파볼(5렙)/스타버스트 (6렙), 야라(5렙), OOD(7렙)가 될것임. 학파별 경합에서 컨저가 이겼다고 치자(컨저가 안 들어가는 야라는 잠시 제쳐두고). 그렇다면 이제부터 책에 들어갈 마법을 결정하는 건 라이브러리 유무랑 스캐인데 전자는 마음대로 조정할 수 없는 것이니 제쳐두고 스캐 레벨로 스펠이 대강 정해진다 생각하면 됨. 파볼 하나 보고 스캐 레벨을 15로 정해서 5렙마법에 가중치를 두기에는 다른 5레벨 파괴마법이 너무 많음. 따라서 첫 책 받기 전 18로 유지하고 스타버스트가 나왔으면 스캐를 21까지 펌핑해 OOD에 포커스를 둔다든지 스타버스트가 안 나왔으면 스캐 18을 유지한 상태로 간다든지 뭐 이런 전략구사가 가능할 거 같음.... 아주 러프한 계산이지만
실전에서는 스캐레벨에 따라 학파별 경합에서 파괴가 선택될 확률도 달라질거임(학파마다 스킬레벨에 따른 분포가 다 다르기 때문에...). 또한 마법을 하나 먹으면 가중치계산도 다 바뀌게 되는데 난 그것까지 계산할 자신은 없음. 대강 원리를 알았으니 몇번 실전에서 굴려보고 잘 되는지 확인한다음 걍 연재로 넘어가려함.
참고로 무나한테 첫책 받기 전에 올릴거 다 올리면서 스캐 18~21 이정도로 맞출 수 있는 종족 딥엘밖에 없음 이 글 싸면서 계속 든 생각인데 딥엘이랑 무나랑 너무 잘 어울리는거 같음.
섹스
개추 - dc App
저거 나도 예전에 뜯어봤는데 그 레벨 높을경우 다른책 던져주는 경우가 왜 그렇냐면 레벨 올라가는 과정 (예를들어 화염마법이 25)에서 일반적인 상황에선 시프무나가 책을 던져줬기 때문에 그 전에 고위 화염마법(이그니션 화폭) 하나정도는 던져줬을거라고 가정 하는거임 저 코드가 없으면 너가 화폭 이후에 체라나 쉐터를 안정화 하는 와중에도
화염은 25 인데 대지는 아직 15 라서 막상 대지마법은 하나도 안주고 화폭이랑 이그니션이 포함된 마법책만 줄창 주게됨
위에서는 원소계열로 설명했는데 이게 가장 큰 문제가 되는건 강령학파임
강령학파는 고위마법이 너무 많아서 (소생 데스도어 리치폼 감염) 그래서 만약 저 코드가 없는 상태에서 네크로가 21 이상이 넘어가게 되면 시프무나는 저 마법이 다 포함된 책 (내크로미콘) 만 줄창 주게됨
그리고 네크로노미콘은 하나 받아서 주문 다있구나! 하면서 코드가 고장남 ㅋㅋㅋ
저 맥스치는 다른 코드랑 충돌나는거 막으려고 넣은거임 여튼
ㅇㅎ 땡스 왜 저렇게 코딩짜놨는지 궁금했는데 그런 이유가...
혹시 내가 빼먹거나 틀리게 설명한건 없음?
구버전충이어도 이건 보탬이 되는 글이겠군
실질적으로 필요한 레벨의 스펠을 높은 확률로 받으려면 스캐 레벨이 엄청 높아야 되는게 조금 아쉽네. 딥엘 아니면 많이 애매한 듯 만복도 삭제할 때 스캐 레벨도 적절하게 조정해줬어야 했던 것 같은데
갈! 어차피 안 뜰 놈은 안 뜨는 것이 순리이거늘! 어찌 하늘의 뜻을 분석하려 드는가!
Wiz++