로딩

(심리스 월드에서 넘어옴)


왠지 로딩이 끝나지 않을 것이라는 생각이 드는 것기분탓이다.

Loading

1 의미

정확한 의미는 프로그램 동작에 필요한 프로그램 그 자체와 리소스를 보조 기억장치(가령 하드디스크)에서 주기억장치(메모리)로 불러들이는 과정이다. CPU는 보조기억장치에 바로 접근할 수 없기 때문이다. 때문에 로딩은 현대 전자계산기 구조에서 반드시 필요한 과정이다.

로딩을 생략할 수 있는 것은 을 사용하는 방법이 있다. 롬은 저장장치이면서도 그 자체로 CPU에서 직접 접근 가능한 거대한 메모리이기 때문이다. 그러나 롬은 매우 비싸고 한번 쓰면 지울 수 없으며 또한 고칠 수도 없다. 네오지오 팩을 보면 알겠지만 부피도 매우 커지기 때문에 이래저래 트레이드 오프가 커진다.

'Loading'은 '싣다'라는 뜻의 load의 현재진행형이기 때문에, 한글로 표기하자면 '로딩 중'이 아닌 '로드 중'이라고 하는 것이 맞다. 다만 현재진행형이 아니라 load의 명사형으로 loading을 사용하는 것이라면 '로딩 중'이 맞다고 할 수도 있긴 하다. load의 명사형은 그냥 load라고 반박할 수도 있으나 그냥 load에는 '프로그램을 불러오는 과정'이라는 뜻은 없다.

로딩에 영향을 미치는 요소는 여러가지가 있다.

- 메모리의 용량이 넉넉한가
- 보조기억장치가 충분히 빠른가
- 불러올 데이터가 불필요하게 크지는 않은가
- 프로그램이 효율적으로 작성되어 있는가

2 로딩 방법

2.1 로딩 화면 띄우기

  • 검은 화면
    • 로딩 화면조차 띄우는 것을 거부하는 방법. 이게 제일 간단한 방법 같지만 이 방법의 제일 큰 문제 점은 게임이 오류로 중단된 것인지 아니면 로드 중인지를 구분할 수가 없다는 것. 그래서 UI 발전 이후 아케이드 게임이 아닌 한 쓰지 않는 방법이다.
  • 그냥 '로드 중'이라고만 띄우기
    • 역시 간단하지만 그냥 로드 중이라고 띄우면 역시 게임이 멎었는지 여부를 확인할 수 없다. 그래서 로드 중이라는 표시 자체가 움직임이 좀 있어야 한다.
  • 게임과 관련된 팁이나 정보
    • 게임에서 써먹을 수 있는 작은 팁이나 게임 관련 정보를 화면상에 보여준다. 가장 보편적인 방법. 물론 대부분 도움이 안된다. 보더랜드 2스카이림 같이 게임에서 나오는 무기류나 지역들을 얼짱각도로 보여주기도 한다. 가끔씩 농담을 집어넣기도 한다. 심시티 5 로딩 같은 경우는 라마를 몰고 가는 중, 클로저스세하가 게임기를 끄는 중과 같은 플레이와는 관련이 없는 행위를 하는 중이라고 뜨는 경우가 많다. 하스스톤 로딩에서도 그렇다.
  • 미니 게임
  • 컷 신
    • 로드 중에 컷신이나 보고 있으라고 하는 방법. 다만 이미 본 컷신이라도 스킵도 못하고 그냥 봐야 한다.

2.2 심리스 방식

로딩 화면을 띄우지 않고 게임 플레이 중간중간 데이터를 미리 로드해서 게임 플레이가 끊기지 않게 하는 방식.

  • 프리 로드
    • 프로그램 시작 전이나 프로그램 시행 도중에 다음에 로드해야 할 부분을 미리 로드하는 방법이다. 일반적으로 대형 맵을 다수의 Cell로 나누어 현재 셀과 인접한 셀을 최우선적으로 로드하고 이동하면서 이를 지속적으로 갱신[1]하는 방식으로 만든다. 대표적으로 스카이림의 프리로드 방식이 이에 해당한다. 로드 화면을 굳이 볼 필요가 없어진다는 장점이 있으나 연산 성능이 일정 수준을 만족해야 하며 주기억장치인 램의 용량이 크고 특히, SSD/RAID의 사용여부가 프리 로드 성능을 크게 좌우하게 된다는 단점이 있다.즉, 돈을 컴퓨터에 발라야 한다. 개발자의 입장에서는 로딩 알고리즘을 구성하기가 매우 힘들어진다. 때문에 어느 정도 개발역량이 있는 개발사의 오픈월드 게임에서 자주 사용된다.[2]
  • 교묘한 눈속임
    • 미러스 엣지, 데드 스페이스같이 엘레베이터가 나오는 대부분 게임과 테라의 페가수스를 통한 마을 이동 등이 이에 해당된다. 특정 지역간의 이동 사이에 항상 메모리에 로드가 되어 있는 특별한 공간[3]을 사이에 추가하여 기존 맵 → 미리 로드되어 있던 특수맵 즉시 이동 → 목적지 맵 로딩 진행[4] → 목적지 맵으로 이동하는 방식이 이에 해당한다. 게임에서는 굳이 엘레베이터 타는 시간은 건너뛰지 않는 경우가 많은데 이 시간이 로드 시간이다. 로딩 중은 안 떠도 로드 중인 셈. 일부 게임은 문여는 시간을 길게하는 방법을 쓰기도 한다. 이 역시 문여는 시간이 로드 시간. 어떤 게임들은 고의로 긴 통로를 만들어 놓아서 플레이어가 통과하는 시간을 길게 하는 경우도 있다. 저니록맨등에서 써먹었다. 일종의 버퍼링 이라 할 수 있겠다.
  • 우선순위 로드
    • 제일 중요한 부분만 먼저 로드해서 일단 게임 화면을 띄우고 나중에 덜 중요한 부분을 로드하는 방법이다. 일부 게임들은 처음 게임 시작시에 그래픽이 뭉개지는 현상을 볼 수 있는 데 이는 핵심 알고리즘과 저급 그래픽 리소스를 먼저 로드하여[5] 게임 진행이 가능한 상태를 빠르게 만들어주고, 게임을 진행하면서 남는 여유 능력을 이용해 실시간으로 고급 그래픽 리소스를 로드하여 교환하는 방식을 사용하기 때문.
  • 최적화
    • 게임 데이터 리소스와 그 배치를 최적화해서 애초에 로딩 시간을 줄이는 것. 각종 프로그래밍적 꼼수와 상식을 뒤집는 다른 시각이 필요할 때가 많다. 리소스의 용량 압축도 여기에 해당되는데, 게임할때 자주 봤을 CRIware 미들웨어가 한 예다.이 로고를 자주 봤을 것이다.

3 극악의 로딩으로 유명한 게임

로딩이 길어지는 원인은 주로 과거 게임기의 2배속 시디롬 같은 부족한 성능에서 기인하는 일도 많지만, 개발자의 실수로 이해할 수 없이 긴 로딩 시간을 갖는 게임들도 많이 있다.

이하 막장 로딩에 해당하는 게임 목록들. 모두 시간이 너무 많이 걸려서 플레이어를 빡치게 만드는 로딩으로 유명하며 이를 플레이하는 사람들은 미치거나 해탈하거나 둘 중 하나. 흔히들 커피 한잔의 타임 또는 컵라면 한그릇의 여유라고 디스한다.


이하의 목록은 로딩의 문제가 아닌 다른 문제에서 기인한다.

이 게임이나, 요 게임은 왜 빠졌대?? 이 항목에 사람이 없다는 증거다
  1. 멀어지는 셀은 해제
  2. 오픈월드가 아니지만 오버워치도 전투의 페이스를 유지하기위해 비슷한 방식을 썼다. 게임을 시작할때 맵은 보이지만 캐릭터가 안보이는게 그 이유
  3. 또는 맵 이동과 관련된 조건에 근접하면 프리로드하는 방식을 응용하기도 한다. 이 경우 프리로딩에 필요한 시간을 벌기 위해 약간의 불필요한 행위를 하면서 동시에 프리로딩을 하기도 한다.
  4. 이 때에도 제한적인 게임 진행이 가능하다.
  5. 대부분의 로딩 시간을 차지하는 것은 용량이 큰 텍스쳐와 GUI 및 대량의 텍스트 등이다.
  6. 게임이 아니다.