카트리지 시대 이후로 게임의 거의 모든 측면이 개선된 것은 사실입니다. 그래픽이 더 좋아지고, 게임의 분량도 더 길며, 멀티 플레이는 CRT TV의 2개 또는 4개의 컨트롤러와 분할 화면보다 더욱 개선된 경쟁모드를 제공합니다. 하지만 오히려 퇴보한 측면은 바로 로딩 시간입니다. 작년 말 역대 최고의 실적을 달성했음에도 Grand Theft Auto Online은 최악의 로딩 시간을 보여주는 게임이었습니다.
오늘날 게임의 로딩 시간이 빠르다는 것은 뉴스로서 가치가 있습니다. Spider-Man: Miles Morales의 PS5 에디션은 로딩 속도가 상당히 빠른 게임입니다. 실제로 해당 게임 발매 이후 트리플 A 게임의 로딩과 관련된 기사가 쏟아져 나오기 시작했습니다. 이것으로 플레이어는 게임과 현실의 삶을 오갈때 낭비되는 시간을 획기적으로 줄일수 있었습니다. 그러나 GTA 온라인은 설치조차 시간이 오래걸리기로 악명높기 때문에 어느 게이머와 프로그래머가 정확히 무엇이 원인인지 알아 내기 시작했습니다.
문제의 사람들은 Reddit의 simspelaaja를 통해 GTA 온라인의 개발사 Rockstar가 진정 수정을 원한다면 그들 스스로 문제 해결을 해야한다고 결론 내렸습니다. simspelaaja는 게임이 컴퓨터에서 로딩되는 방식을 검토한 뒤, 긴 로딩 시간은 결국 잘못된 코딩이 원인이란 것을 알아냈습니다. GTA는 게임 시작 후 4 분 동안 단일 코어만 최대로 사용하여 구동되고 그 외에의 작업은 하지 않는 것을 확인했습니다.
더 깊이 파고 들어 GTA 온라인에서 구매할 수있는 게임 내 아이템을 나열한 10MB JSON 형식의 카탈로그에서 문제가 발생한다는 사실 또한 발견했습니다. GTA 온라인의 새로운 무기화 된 배가 멋지긴 하지만 단순히 게임에서 사용할 수 있다고 나열하면 로딩 시간이 6분을 초과해서는 안됩니다. 이와 관련된 문제는 두 가지로 밝혀졌습니다.
첫째, sscanf라는 C ++ 함수에 내재 된 이상한 프로토콜로 인해 로딩된 데이터의 몇 바이트마다 10MB 문자열의 모든 단일 문자를 반복해서 읽습니다. 두 번째 문제는 시스템이 대략 63,000개의 항목 목록에서 항목의 가능한 모든 인스턴스를 검사할 때 발생합니다. 간단히 말하면 잘 최적화 된 프로세스가 아닙니다. 이를 염두에 두고 GTA 온라인을 로딩하는데 가장 긴 Dragonball Z 전투가 진행되는 데 걸리는 시간보다 더 오래 걸리는 것은 당연합니다.
단순히 문제가 존재한다는 것을 증명하는데 만족하지 않는 simspelaaja는 .dll 파일을 작성하고 JSON 코딩 문제를 수정했으며 이제 모든 것이 개인 시스템에서 버터처럼 실행됩니다. 실제로 두 문제가 모두 패치되어 로딩 시간이 6분에서 1분 50초로 단축되었습니다. 물론 Rockstar는 GTA 5의 PS5 및 Xbox Series X 릴리스 작업에 바쁘지만 simspelaaja는 모든 사람이 GTA 온라인을 많이 로딩할 수 있도록 동일한 단계를 수행하는데 단일 개발자가 하루 이상 걸리지 않아야 한다고 말합니다.
그리고 번역이 좀 이상한데 결론에서 락스타가 바쁘겠지만 이거 고치는데 개발자 한명이 해도 하루도 안걸리니 고치라는 소리에요...
속도 빠른 json 파서 많은데, sscanf로 포인터 이동하면서 값을 하나 하나 읽도록 만들었다니.. 사장 조카가 빽으로 프로그래머로 입사한건가?
그래서 이거 적용하려면 혹시 어떻게 해야하는지 아시는분 계신가요
코드가 아름답다고 재밌는 게임이 나오지 않듯 재밌는 게임이라고 코드가 아름답지는 않겠죠. 실제로 게임 중에 도는 코드가 아니라서 결과가 나오기만 하면 OK라고 생각하고 아무나 시켰나 보네요.
그타온라인 초기로딩 짜증났는데 빨라지겠네
그래서 이거 적용하려면 혹시 어떻게 해야하는지 아시는분 계신가요
이거 어제 올라온거에서 패치파일 공유있었던거 같은데 내용이 중복이라 게시판 검색해보시면 될거에요
네 설치법에 build the project with MSVC inject the DLL with your favorite injector while the game is starting up 라고 써져있긴한데 이게 무슨소린지 잘 모르겠어가지구요 ㅠ
와우 이런 대형 게임에 저런 식으로 코딩이 되어있다고?
안경
코드가 아름답다고 재밌는 게임이 나오지 않듯 재밌는 게임이라고 코드가 아름답지는 않겠죠. 실제로 게임 중에 도는 코드가 아니라서 결과가 나오기만 하면 OK라고 생각하고 아무나 시켰나 보네요.
그리고 번역이 좀 이상한데 결론에서 락스타가 바쁘겠지만 이거 고치는데 개발자 한명이 해도 하루도 안걸리니 고치라는 소리에요...
속도 빠른 json 파서 많은데, sscanf로 포인터 이동하면서 값을 하나 하나 읽도록 만들었다니.. 사장 조카가 빽으로 프로그래머로 입사한건가?
아무리 GTA온라인이 발매된 지 한참 된 게임이지만 저걸 sscanf로 읽을생각을? ㄷㄷㄷ
그타온라인 초기로딩 짜증났는데 빨라지겠네
그타5 싱글에 모드로 적용시켜주면안되나