컴공 출신 입장에서 진짜 미친놈들인가 싶네 이거
동기화 처리를 어떻게 하지?
맵 데이터가 1/3600초마다 바뀐다고
즉, 내가 맵을 다운로드 받기 시작한 순간의 맵과 다운로드가 끝난 맵은 다른맵임
그리고 그 중간에 누가 뭘 설치하거나 했을 때에도 맵이 바뀌는데
이 변경사항을 어떻게 다 기록하고 반영하는거냐
존나 대단하다...
컴공 출신 입장에서 진짜 미친놈들인가 싶네 이거
동기화 처리를 어떻게 하지?
맵 데이터가 1/3600초마다 바뀐다고
즉, 내가 맵을 다운로드 받기 시작한 순간의 맵과 다운로드가 끝난 맵은 다른맵임
그리고 그 중간에 누가 뭘 설치하거나 했을 때에도 맵이 바뀌는데
이 변경사항을 어떻게 다 기록하고 반영하는거냐
존나 대단하다...
멀티 접속할때 로딩바 두 번 올라가잖아. 첫번째 로딩바는 맵 다운로드 바고 두번째 바는 진행상황 따라잡는 바임 다운로드가 이뤄지는 동안 서버쪽에서는 얘가 다운받는 동안 각 플레이어가 무슨 인풋을 넣었는지 일일히 기억하고 있다가 다운로드가 끝나면 그 인풋을 싹 다 먹여서 접속자쪽 맵이 서버쪽 맵이랑 완벽히 일치하도록 하는거임. 팩토리오는 결정론적이니깐 이런 방식이 가능함. UPS 정말 아슬아슬한 서버에 접속해보면 맵 다운로드에는 10초도 안걸리는데 따라잡는데는 1분씩 걸리는 그런경우도 있고...
멀티 관련된 FFF도 많이 있었는데 거기 나왔던 말 중 하나가 애초에 팩토리오는 멀티를 상정하고 개발된 게임이라는거. 연구든, 기차든, 운전이든간에 기능 하나를 추가할 때마다 이게 멀티에서는 어떻게 작동할지, 동기화 문제는 어떻게 해결할지 이거를 전부 고려하고 나서야 추가할 수 있었다는거임
@고속도로 존나 미친놈들 대단해.... Catching Up 어쩌고 할 때 두 번 올라가는 건 인지하고 있었는데 그러면 유저 입력과 그에 따른 가능한 모든 변경을 DB에 집어넣고 업데이트 해준다는건데 이게 말이 쉽짘ㅋㅋㅋㅋㅋㅋ
이 과정에서 삐끗나면 비동기화뜨는건가?
@ㅇㅇ(223.39) ㅖㅏ. 1/60초면 할만하긴 하다. 물론 게임과 비교 불가하게 개빡셈
1/3600초가 아니라 1/60초...
맵이 바뀌는거 자체는 실제로는 플레이어가 맵에 행사하는 영향력만 전달하면 되기 때문에 생각보다 동기화를 따라잡는데 필요한 데이터 자체는 얼마 안돼. 나머지는 그냥 게임 시뮬레이션의 자연스러운 결과이기 때문에 클라이언트가 알아서 게임을 돌리면 되는거.
오 1/60초면 할만하긴 하다 근데 이 경우 회로 네트워크 동기화에 이슈가 생길텐데 회로만 1/3600으로 따로 해주면 되나??
@ㅇㅇ(175.116) 아니 최근에 랜덤넘버 발생도 가능하게 되어있는데 이건 우짜 처리하는곀ㅋㅋ 수도랜덤 씨드 공유해서 처리하낰ㅋ 여튼 대다내....
회로도 업데이트 속도 1/60초임 1틱
긍까 어차피 모든 클라이언트의 시뮬레이션 결과가 동일하다는 것만 보증되면 굳이 모든 클라이언트들의 정보를 일일이 검사할 필요가 없다는게 포인트임. 그래서 1틱을 실행한 어떤 검사값만을 비교하고 그 값이 안맞으면 비동기화 처리를 하는겨
@ㅇㅇ(175.116) 오잉??? 켜보면 1/60보다 빠르게 움직이던데 이상하네. 뭐여튼 동기화만 되면 장땡이니까 상관없는 건 맞음
그래서 팩토리오는 모드를 무조건 동기화해야지 멀티를 할 수 있게 되어있음. 클라모드 하나라도 무조건 서버에도 넣어야함. 그게 아니면 서로 시뮬레이션에 간섭하는 데이터가 달라져서 결과가 확정적이지 않으니까 디싱크가 생겨버리고 말지..
그거야 그런데 1/60초 사이에 동기화 진행하는 게 절대 쉬운 일이 아니니까 대단한거지...