팩토리오라는 게임의 특성상, 연산이 "결정론적" 이다.
똑같은 공장을 5분을 돌리면 어떤 환경에서 돌리든 똑같은 결과가 나온다.(멀티플레이어가 그렇다는 가정하에 짜져있음)
하지만 그걸 멀티코어로 짤라면 대가리가 터진다.
모든 연산은 다른 연산에 "의존 관계"가 있을 수 있기 때문
뭐 단적인 예시로, 벨트에 집게로 물건을 놓을 때, 벨트가 움직이고 나서 다음에 집게로 물건을 넣는다고 하면, 벨트 연산이 수행된 후에 집게 연산이 수행되야 될 거다.
의존 관계의 문제는, 스레드간의 "동기화"가 필요하다는 거다.
근데 이 동기화라는게 드럽게 오래 걸리는 연산이다.
안그래도 메모리의 속도가 중요한 게임에서 맵파일을 여러개로 나눴다가 각자 계산해서 이 결과값을 종합하는 연산을 여러번 해야되는 것이다
완전히 기초적인 구조를 엎지 않는 이상 이런 시나리오는 있을 수 없다 생각한다...
ㅇㅇ 팩토리오의 결정론적 특성과 병렬처리에 대해선 레딧에서 코바렉스도 언급한 적 있는 부분임. 코바렉스의 말로는 병렬처리를 여러번 시도했지만 그냥 단일프로세스 최적화 빡세게 하는게 언제나 결과가 좋았다고 함
그나마 멀티코어 돌리려면 바이터 AI, 공해 처럼 메인 쓰레드랑 느슨하게 묶어도 되는 놈들만 따로 해도 되는데 이래봤자 듀얼코어가 끝 - dc App
잘 모르겠지만 일단 설명 봐도 이해가 존나 안된다는걸 보니 존나 어렵다는건 알겠다
멀티코어=조별과제 팀플 싱글코어=조별과제 개인플 생각하면 얼추 맞아. 조별과제로 낸거니까 잘 분담해서 팀원들이 각각 자기역할 확실히 해주면 좋은데 첫 미팅 때 느낌이 싸해서 제대로 굴러가기 힘들거 같으면 걍 혼자 첨부터 끝까지 하는게 더 효율적인거랑 똑같음.