수식이 포함된 긴 글이 될테니까 아래 요약 달아두겠음
우주시대 발매하고 좀 있다가 레딧에서 AMA를 진행했을 때 개발자 Rseding91이 그냥 소행성 스폰 코드 cpp파일을 공개했었는데
https://gist.github.com/Rseding91/aecc426adc32039844f6d43bf3f3c63f
How asteroids spawnHow asteroids spawn. GitHub Gist: instantly share code, notes, and snippets.gist.github.com
어떤 양붕이가 이걸 어떻게 해석을 해서 설명을 달아놨음
https://www.reddit.com/r/factorio/comments/1jnzf44/indepth_details_about_asteroid_spawning/
이걸 번역 요약해 보면..
일단 플랫폼의 영역이란게 있는데 소행성은 이 영역 경계에서 스폰함
플랫폼이 정지해 있거나 아주 느리게 움직일 땐 사방에서, 그냥 움직일땐 위쪽에서만 스폰된다고 함
이 영역은 플랫폼 최상단에서 72타일, 최우/좌/하측에서 48타일 떨어진 곳에 경계가 있는 직사각형 형태임
그러니까 영역은 가로 (96+플랫폼 너비) 타일, 세로 (120+플랫폼 높이) 타일을 가진다고 할 수 있음
위 레딧 글에선 영역의 가로+세로 값(=96+120+플랫폼 너비+높이)을 크기 계수(size factor)라고 하더라. 공식 용어는 아닌듯함
인게임에서 팩토리오 백과사전을 보면 금속 소행성 덩어리는 나우비스 상공 0km에서 분당 45개라곤 하는데, 진짜 값은 계산을 더 거쳐야 함
이 분당 45개에서 아까 얘기했던 크기 계수를 곱한 다음, 1024로 나누어 주면 정지 시 실제 스폰량(분당)이 나오는 거임
예를 들어 내 나우비스 상공에 정지해있는 우주과학팩 생산 플랫폼은 높이가 91타일, 너비 80타일이니까
45*(96+91 + 120+80) / 1024 하면 대략 분당 17개 정도의 금속 소행성 덩어리가 스폰된다는 것
이동 중인 플랫폼의 소행성 스폰량은 속도 또한 계산에 들어감
영역의 너비 * 속도(단위: km/s)를 1/6한 값을 크기 계수에 더해줌
이건 속도 계수(speed factor)라고 하던데 역시 설명을 위해 만들어낸 말이지 공식은 아닌거같음
그러니까 인게임에서 표기되는 스폰량*(크기 계수 + 속도 계수) / 1024가 이동 중 실제 스폰량(분당)이 되는듯함
예를 들어 내가 쓰는 여행용 플랫폼은 너비 22, 높이 57타일에 대충 480km/s정도 나온다고 치고 글->풀 중간지점을 지난다고 하면
31*( (96+22 + 120+57) + ((96+22) * (480/6)) ) / 1024 해서 분당 295개 정도의 중형 탄소 소행성이 스폰된다고 볼 수 있음
이하는 내가 위에 식 가지고 계산을 조금 해본것
위 사진은 정지 시 소행성 스폰 계수임 팩백과 찍어서 나오는 수치에 곱하면됨
x축이 플랫폼 너비+높이, y축이 스폰 계수
자기 플랫폼 너비+높이가 100타일이면 팩백과 수치에 *0.3, 400이면 *0.6.. 이런식으로
이동 중 소행성 스폰 계수는 플랫폼 너비 높이 속도 셋 다 고려해야 해서 그래프 만들기는 어렵지만
속도가 높아질수록 플랫폼 높이가 주는 영향은 미미해지고, 너비 대비 높이가 큰(=얇은) 우주선은 속도가 빠른 경향이 있기때문에
대충 엑셀로 만듬
숫자가 작고 조밀해서 잘 안보일 수 있는데 눌러서 크게 보면 될거임
표 다섯개가 위아래로 주루룩 있는데 각 표의 가로가 플랫폼 너비, 세로가 플랫폼 높이고
각 표는 플랫폼의 속도가 100, 200, 300, 400, 500일 때 소행성 스폰 계수임
자기 플랫폼의 속도와 너비, 높이를 찾아서 나온 스폰 계수를 인게임 팩백과 소행성 스폰빈도에 곱하면 됨
아까 예시로 들었던 너비 22, 높이 57타일에 480km/s 플랫폼을 다시 예로 들어 찾아보면 표에서 속도 500, 너비 20, 높이 50 칸
사진에 표시되어 있는칸이기도 한데 숫자는 9.719임
그러고 팩백과 수치에 이 숫자를 곱하면 되는거임
요약
궤도에 정지 시 소행성 스폰량 = 표기치 * 크기 계수 / 1024
이동 중 소행성 스폰량 = 표기치 * (크기 계수 + 속도 계수) / 1024 (바로 위 엑셀 참고)
표기치 = 팩토리오 백과사전에 찍으면 나오는 수치
크기 계수 = 216+플랫폼 너비+높이
속도 계수 = (96+플랫폼 너비) * 속도(km/s) / 6
기타
정지 시 소행성은 상단, 좌측, 우측에서, 이동중엔 상단에서만 스폰
행성간 이동 중간에 정지 시에는 통상의 1/10만 스폰
글쓰다가 생각났는데 플랫폼 속도는 너비와 추진기 추력(=개수*품질)이 결정하니까 속도 말고 추력으로도 계산할 수 있겠다
이제 추진기 추력 계산식 찾아보러 가야겠네
빠를수록 , 클수록 많이생기는게 맞구나
폭 좁고 세로로만 엄청 긴 우주선은 더 밀도 높은 소행성대를 지나야 한다는 건가
패... 팩부잉.... 대단해.....
참고로 찾으시던 추력 계산기는 이미 존재합니다.
https://www.desmos.com/calculator/eykhbatbn6
https://www.reddit.com/r/factorio/comments/1ggythv/i_made_a_calculator_for_space_platform_top_speed/
desmos에
공식도 다 나와있으니 참고하십셔
같은거 보고있었네 이거 그대로 긁어서 계산하는거 하나 만들엇슴