게임 내부만으로는 광선 수신기 조사량 공식을 제대로 알아내기가 어려워서 스크립트를 뜯어봄







사진 잘 안 보이면 클릭해서 보셈


사진의 1281라인에 있는 RequestDysonSpherePower란 함수가 다이슨 스피어로부터 받아오는 전력을 계산해주는 함수로 보임


이 함수안에서 주목해볼만한 라인은 1285, 1286, 1293 정도가 있음




1285라인을 보면 increase라는 변수가 보이는데 이 변수의 용도는 다음 사진에서 언급하고 먼저 이 변수에 영향을 주는 요인을 살펴보겠음


뒤에 수식을 보면 grossRadius 와 sunDistance가 보일거임


grossRadius는 다이슨 스피어에서 스웜 궤도 반지름과 셀 반지름 중 가장 큰 반지름을 의미하고 sunDistance는 변수 이름을 보면 유추할 수 있듯이 행성으로부터 항성까지의 거리를 의미함


즉 수식에 따르면 increase라는 변수는 다이슨 스피어 최대 반지름에 비례하고 공전 궤도 반지름에 반비례한다고 볼 수 있음




다음 1286라인을 보면 normalized 변수가 보이는데 뒤 수식에 나오는 변수들 이름을 보면 대충 행성으로부터 항성까지의 방향 벡터를 단위 벡터로 표현한 것으로 유추할 수 있음


normalized 변수와 앞의 increase 변수는 1293라인의 EnergyCap_Gamma_Req란 함수에서 매개변수로 들어가는 모습을 볼 수 있는데 이 함수가 각 광선 수신기의 조사량을 계산해주는 것으로 추정됨






이 사진에서 157라인이 EnergyCap_Gamma_Req 함수의 구현 부분임


여기서 다른 부분은 필요 없고 159라인과 160라인의 num 변수만 주목하면 됨


이 변수가 광선 수신기의 조사량을 의미하는 것 같음


159라인의 수식중 앞 부분을 보면 sx * this.x + sy * this.y + sz * this.z 부분이 보일 거임


여기서 this.x this.y this.z는 조사해보니 행성 중심으로부터 광선 수신기까지의 방향 벡터의 단위 벡터인 것 같음


수학 좀 치는 사람이면 이미 눈치 깠을수도 있는데 이거 내적 값임


즉 그림으로 표현하면



이러케댐


주황 화살표는 각 벡터이고 초록 화살표는 내적 방향, 파란색은 내적값임


즉 광선 수신기의 위치에 따라 파랑색 길이 만큼 효율이 잘 나오거나 (항성을 향해 있을때 내적값은 0보다 큼) 덜 나오거나 (항성의 반대편을 향해 있을때 내적값은 0보다 작음) 하게되는 거임


한편 다음 뒤 수식을 보면 increase * 0.8f가 보일 거임


아까 설명을 미뤘던 increase 변수를 이 부분을 통해 이해할 수 있게댐


이 increase 변수는 다이슨 스피어의 반지름 또는 공전 궤도의 반지름에 따라 광선 수신기 효율에 추가 보너스를 주는 요소였던 것임


이 부분 덕에 다이슨 스피어가 크면 클수록, 행성이 항성에 가까우면 가까울수록 광선 수신기의 효율이 올라갔던 것임


그 외 수식의 뒷부분은 나도 모름 ㅋㅋ 대충 중력 렌즈와 관련있는 것 같기도 하고... 확실치는 않음


마지막으로 160라인에서 num 값을 0이상 1이하 값으로 좁혀주면 이 값이 조사량이 되는 거임




정리


1. 다이슨 스피어의 효율은 다이슨 스피어의 최외곽 셀 또는 스웜의 반지름이 클수록, 행성 공전 궤도의 반지름이 작을수록 더 크게 증가한다. 외형은 영향을 주지 않음.


2. 행성이 다이슨 스피어 내부에 있다 하더라도 모든 장소에서 조사량이 100%란 보장을 받을 수는 없다. 어느 상황이든 행성 뒷편에 있는 광선 수신기는 앞편에 있는 광선 수신기보다 조사량이 낮아질 수 있다.




근데 대부분 감각적으로 대충 분석한거라 틀린 부분이 꽤 있을지도 모름


수신기 효율과 관련된 정보가 딱히 안 보여서 뜯어본건데 다른 확실한 정보가 있으면 그걸 참고하는 게 나을 것 같음