왠지 로딩이 끝나지 않을 것이라는 생각이 드는 것은 기분탓이다.
Loading
1 의미
정확한 의미는 프로그램 동작에 필요한 프로그램 그 자체와 리소스를 보조 기억장치(가령 하드디스크)에서 주기억장치(메모리)로 불러들이는 과정이다. CPU는 보조기억장치에 바로 접근할 수 없기 때문이다. 때문에 로딩은 현대 전자계산기 구조에서 반드시 필요한 과정이다.
로딩을 생략할 수 있는 것은 롬을 사용하는 방법이 있다. 롬은 저장장치이면서도 그 자체로 CPU에서 직접 접근 가능한 거대한 메모리이기 때문이다. 그러나 롬은 매우 비싸고 한번 쓰면 지울 수 없으며 또한 고칠 수도 없다. 네오지오 팩을 보면 알겠지만 부피도 매우 커지기 때문에 이래저래 트레이드 오프가 커진다.
'Loading'은 '싣다'라는 뜻의 load의 현재진행형이기 때문에, 한글로 표기하자면 '로딩 중'이 아닌 '로드 중'이라고 하는 것이 맞다. 다만 현재진행형이 아니라 load의 명사형으로 loading을 사용하는 것이라면 '로딩 중'이 맞다고 할 수도 있긴 하다. load의 명사형은 그냥 load라고 반박할 수도 있으나 그냥 load에는 '프로그램을 불러오는 과정'이라는 뜻은 없다.
로딩에 영향을 미치는 요소는 여러가지가 있다.
- 메모리의 용량이 넉넉한가
- 보조기억장치가 충분히 빠른가
- 불러올 데이터가 불필요하게 크지는 않은가
- 프로그램이 효율적으로 작성되어 있는가
2 로딩 방법
2.1 로딩 화면 띄우기
- 검은 화면
- 그냥 '로드 중'이라고만 띄우기
- 역시 간단하지만 그냥 로드 중이라고 띄우면 역시 게임이 멎었는지 여부를 확인할 수 없다. 그래서 로드 중이라는 표시 자체가 움직임이 좀 있어야 한다.
- 게임과 관련된 팁이나 정보
- 미니 게임
- 컷 신
- 로드 중에 컷신이나 보고 있으라고 하는 방법. 다만 이미 본 컷신이라도 스킵도 못하고 그냥 봐야 한다.
2.2 심리스 방식
로딩 화면을 띄우지 않고 게임 플레이 중간중간 데이터를 미리 로드해서 게임 플레이가 끊기지 않게 하는 방식.
- 프리 로드
- 프로그램 시작 전이나 프로그램 시행 도중에 다음에 로드해야 할 부분을 미리 로드하는 방법이다. 일반적으로 대형 맵을 다수의 Cell로 나누어 현재 셀과 인접한 셀을 최우선적으로 로드하고 이동하면서 이를 지속적으로 갱신[1]하는 방식으로 만든다. 대표적으로 스카이림의 프리로드 방식이 이에 해당한다. 로드 화면을 굳이 볼 필요가 없어진다는 장점이 있으나 연산 성능이 일정 수준을 만족해야 하며 주기억장치인 램의 용량이 크고 특히, SSD/RAID의 사용여부가 프리 로드 성능을 크게 좌우하게 된다는 단점이 있다.
즉, 돈을 컴퓨터에 발라야 한다.개발자의 입장에서는 로딩 알고리즘을 구성하기가 매우 힘들어진다. 때문에 어느 정도 개발역량이 있는 개발사의 오픈월드 게임에서 자주 사용된다.[2]
- 프로그램 시작 전이나 프로그램 시행 도중에 다음에 로드해야 할 부분을 미리 로드하는 방법이다. 일반적으로 대형 맵을 다수의 Cell로 나누어 현재 셀과 인접한 셀을 최우선적으로 로드하고 이동하면서 이를 지속적으로 갱신[1]하는 방식으로 만든다. 대표적으로 스카이림의 프리로드 방식이 이에 해당한다. 로드 화면을 굳이 볼 필요가 없어진다는 장점이 있으나 연산 성능이 일정 수준을 만족해야 하며 주기억장치인 램의 용량이 크고 특히, SSD/RAID의 사용여부가 프리 로드 성능을 크게 좌우하게 된다는 단점이 있다.
- 교묘한 눈속임
- 미러스 엣지, 데드 스페이스같이 엘레베이터가 나오는 대부분 게임과 테라의 페가수스를 통한 마을 이동 등이 이에 해당된다. 특정 지역간의 이동 사이에 항상 메모리에 로드가 되어 있는 특별한 공간[3]을 사이에 추가하여 기존 맵 → 미리 로드되어 있던 특수맵 즉시 이동 → 목적지 맵 로딩 진행[4] → 목적지 맵으로 이동하는 방식이 이에 해당한다. 게임에서는 굳이 엘레베이터 타는 시간은 건너뛰지 않는 경우가 많은데 이 시간이 로드 시간이다. 로딩 중은 안 떠도 로드 중인 셈. 일부 게임은 문여는 시간을 길게하는 방법을 쓰기도 한다. 이 역시 문여는 시간이 로드 시간. 어떤 게임들은 고의로 긴 통로를 만들어 놓아서 플레이어가 통과하는 시간을 길게 하는 경우도 있다. 저니나 록맨등에서 써먹었다. 일종의 버퍼링 이라 할 수 있겠다.
- 우선순위 로드
- 제일 중요한 부분만 먼저 로드해서 일단 게임 화면을 띄우고 나중에 덜 중요한 부분을 로드하는 방법이다. 일부 게임들은 처음 게임 시작시에 그래픽이 뭉개지는 현상을 볼 수 있는 데 이는 핵심 알고리즘과 저급 그래픽 리소스를 먼저 로드하여[5] 게임 진행이 가능한 상태를 빠르게 만들어주고, 게임을 진행하면서 남는 여유 능력을 이용해 실시간으로 고급 그래픽 리소스를 로드하여 교환하는 방식을 사용하기 때문.
- 최적화
- 게임 데이터 리소스와 그 배치를 최적화해서 애초에 로딩 시간을 줄이는 것. 각종 프로그래밍적 꼼수와 상식을 뒤집는 다른 시각이 필요할 때가 많다. 리소스의 용량 압축도 여기에 해당되는데, 게임할때 자주 봤을 CRIware 미들웨어가 한 예다.이 로고를 자주 봤을 것이다.
3 극악의 로딩으로 유명한 게임
로딩이 길어지는 원인은 주로 과거 게임기의 2배속 시디롬 같은 부족한 성능에서 기인하는 일도 많지만, 개발자의 실수로 이해할 수 없이 긴 로딩 시간을 갖는 게임들도 많이 있다.
이하 막장 로딩에 해당하는 게임 목록들. 모두 시간이 너무 많이 걸려서 플레이어를 빡치게 만드는 로딩으로 유명하며 이를 플레이하는 사람들은 미치거나 해탈하거나 둘 중 하나. 흔히들 커피 한잔의 타임 또는 컵라면 한그릇의 여유라고 디스한다.
- 네오지오 CD로 발매된 거의 모든 게임들: 이건 기기 특유의 많은 양의 램을 CD-ROM 드라이브의 속도가 버티질 못해 일어난 참사다.
- 듀크 뉴켐 포에버: 기종에 관계없이 극악한 로딩의 압박이 기다린다. 아무리 최신 컴퓨터를 사용해도 얄짤없다!
- 스맥다운!vsRaw PSP타이틀
- PS판 각명관 시리즈
- PS2판 네오지오 배틀 컬리시엄
- PS판 KOF 시리즈: PS의 램 용량이 KOF 6명분의 데이터를 모두 읽어들이기에 모자라서 사람 바뀔 때마다 로딩한다.
- PSP판 신기환상 스펙트럴 소울즈2 ~언리미티드
로딩사이드~ - 진설 사무라이 스피리츠 무사도열전: SS판은 그나마 빠르다. 그래봤자 오십보백보지만.
- 소닉 더 헤지혹(2006)
- 심즈 3
- 신 슈퍼로봇대전: 전투 장면 돌입 로딩이 길뿐더러 스킵도 불가능.
- GTA 온라인: 온라인 프리모드 진입에 매우 오랜 시간이 걸린다.
Grand Theft Loading Online 이런 것도 나왔다 - 콘솔판 XCOM 2:초반부는 멀쩡하지만 중후반부터 5분은 기본이요 최대10분까지 잡아먹는다.
철인 유저들은 그동안 자신의 플레이를 반성한다고 카더라
이하의 목록은 로딩의 문제가 아닌 다른 문제에서 기인한다.
- 디아블로 2 - 멀티플레이어의 서버 문제
- 문명 5 - CPU 인공지능의 턴 계산 시간
- 플래닛사이드 2 - 리소스 다운로드 문제
-
나무위키 서버 회선과 프로그래밍, 사용자 몰림 등등의 복잡한 문제[6]