KR102257891B1 - 비동기 로딩 장치 및 방법 - Google Patents
비동기 로딩 장치 및 방법 Download PDFInfo
- Publication number
- KR102257891B1 KR102257891B1 KR1020190061000A KR20190061000A KR102257891B1 KR 102257891 B1 KR102257891 B1 KR 102257891B1 KR 1020190061000 A KR1020190061000 A KR 1020190061000A KR 20190061000 A KR20190061000 A KR 20190061000A KR 102257891 B1 KR102257891 B1 KR 102257891B1
- Authority
- KR
- South Korea
- Prior art keywords
- loading
- unit
- distance
- tick
- player character
- Prior art date
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/358—Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
- A63F13/58—Controlling game characters or game objects based on the game progress by computing conditions of game characters, e.g. stamina, strength, motivation or energy level
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
- A63F2300/534—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- Theoretical Computer Science (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
비동기 로딩 장치가 제공된다. 상기 비동기 로딩 장치는 가상의 게임 월드 내에서 플레이어 캐릭터와 장래에 상호 작용할 오브젝트를 예측하고, 예측된 오브젝트를 비디오 메모리에 적재 가능한 범위 내에서 미리 로딩하는 로딩 수단;을 포함하고, 상기 비디오 메모리에 적재된 상기 오브젝트는 디스플레이를 통해 표시될 수 있다.
Description
본 발명은 비디오 게임에서 사용자의 디스플레이에 표시되는 오브젝트를 미리 로딩해두는 비동기 로딩 장치 및 방법에 관한 것이다.
오픈 월드 비디오 게임 등에서 사용하는 비동기 로딩 정책은 주로 플레이어 캐릭터(혹은 카메라)와 가까운 위치의 오브젝트들을 우선적으로 로딩하는 것이다.
이 정책의 단점은 적절한 거리를 설정하기 어렵다는 것이다.
예를 들어, 로딩 거리를 너무 길게 설정하면 불필요한 오브젝트들을 너무 많이 로딩(loading)하게 되므로 하드웨어의 리소스를 낭비하게 된다. 반면, 로딩 거리를 너무 짧게 설정하면 플레이어와 상호 작용해야 할 오브젝트를 로딩하지 않아 게임 경험에 악영향을 줄 수 있다.
다른 비동기 로딩 정책으로 한국등록특허공보 제0847201호에 나타난 바와 같이, 해당 지역 내에 별도의 로드 경계를 설정하고 해당 로드 경계를 플레이터가 넘어가면 미리 다음 지역을 로딩하는 방법이 존재한다.
이 정책의 단점은 로드 경계로 인해 플레이어 경험이 단조로워지고, 게임 디자이너의 수작업량이 방대해진다는 점이다.
본 발명은 사용자가 느끼는 로딩 시간이 단축되는 방향으로, 비디오 게임 내의 오브젝트 로딩 정책을 개선할 수 있는 비동기 로딩 장치를 제공하기 위한 것이다.
본 발명의 비동기 로딩 장치는 가상의 게임 월드 내에서 플레이어 캐릭터와 장래에 상호 작용할 오브젝트를 예측하고, 예측된 오브젝트를 비디오 메모리에 적재 가능한 범위 내에서 미리 로딩하는 로딩 수단;을 포함하고, 상기 비디오 메모리에 적재된 상기 오브젝트는 디스플레이를 통해 표시될 수 있다.
본 발명의 비동기 로딩 장치는 가상의 게임 월드 내에서, 사전 로딩을 위해 예측된 오브젝트와 실제의 상호 작용이 발생한 실제의 오브젝트 간의 매칭 정확도를 개선하는 학습 유니트;를 포함하고, 상기 학습 유니트는 게임 플레이를 방해하지 않는 범위 내에서 가장 짧은 로딩 거리를 추정하거나, 게임 월드를 구분하는 복수의 부분 영역별로 상호 작용이 발생할 가능도를 추정할 수 있다.
본 발명의 비동기 로딩 방법은 가상의 게임 월드 내에서 활동하는 플레이어 캐릭터의 현재 상태를 감시하고,
상기 플레이어 캐릭터의 현재 상태별로 오브젝트와 상기 플레이어 캐릭터 간의 로딩 거리가 설정된 제1 룩업 테이블을 이용해서, 상기 오브젝트와 상기 플레이어 캐릭터 간의 상호 작용 이전에 상기 제1 룩업 테이블에 설정된 로딩 거리 이내의 오브젝트를 로딩하는 로컬 로딩을 수행하며,
상기 플레이어 캐릭터의 현재 상태별로 상기 게임 월드를 복수로 구분한 부분 영역에 상기 오브젝트와 상기 플레이어 캐릭터 간의 상호 작용 가능도가 설정된 제2 룩업 테이블을 이용해서, 상기 상호 작용 이전에 상기 가능도에 따라 추첨된 특정 부분 영역 내 오브젝트를 로딩하는 글로벌 로딩을 수행하고, 상기 로컬 로딩과 상기 글로벌 로딩이 병행적으로 함께 수행되며, 상기 로컬 로딩과 상기 글로벌 로딩 중 어느 하나에 의해 제1 로딩될 오브젝트가 이미 나머지 하나에 의해 제2 로딩된 상태이면, 해당 오브젝트에 대한 상기 제1 로딩을 미수행하며, 해당 오브젝트에 대한 로딩 유지 시간만 상기 제1 로딩에 따라 새롭게 갱신할 수 있다.
서로 다른 지역을 이동할 때 별도의 로딩 화면 없이 부드럽게 로딩되는 심리스 로딩(seamless loading) 기법이 비디오 게임에 제공되는 것이 좋다. 심리스 로딩을 위해 전체 지역이 로딩되는 것이 좋지만, 비디오 메모리 등의 자원이 제한된 현실 환경에 불합리한 문제가 있다. 본 발명은 제한된 자원이 허용하는 일부 지역의 로딩만으로 심리스 로딩을 달성할 수 있다.
본 발명의 비동기 로딩 장치 및 방법은 오브젝트의 사전 로딩에 필요한 로딩 거리를 사용자 적응적으로 가변시킬 수 있다.
본 발명의 비동기 로딩 장치 및 방법은 오픈 월드를 복수로 구분한 부분 영역의 장래 상호 작용 가능성에 기반해서 오브젝트의 사전 로딩을 수행할 수 있다.
사용자 적응적인 로딩 거리의 자동 조절, 부분 영역에 대한 장래 상호 작용 가능성은 사용자 또는 플레이어 캐릭터의 현재 상태에 기반한 상호 작용 패턴을 기초로 할 수 있다.
본 발명에 따르면, 사용자마다 달라질 수 있는 현재 상태를 기초로 사전 로딩을 수행하기 위해, 사용자 또는 플레이어 캐릭터의 상호 작용 패턴이 학습될 수 있다. 상호 작용 패턴의 반복 학습 결과로부터 도출된 현재 상태 등을 이용해서 로딩 걸의 자동 조절 매칭도, 각 부분 영역에 대한 장래 상호 작용 가능성 매칭도가 개선될 수 있다.
본 발명에서는 거리 기반 비동기 로딩시 현재 상태에서 최적의 로딩 거리, 확률적으로 로딩되어야 하는 최적의 부분 영역 또는 오브젝트를 추정하는 모델을 제안한다. 이 모델은 기계 학습 알고리즘에 의해 학습되며, 학습 데이터 세트 구성 방법이 본문에서 서술된다.
본 발명의 비동기 로딩 장치 및 방법은 빠른 원거리 이동에 대응할 수 있다. 또한, 플레이 방식에 제약을 둘 필요가 없다. 또한, 게임 디자이너의 노력이 적게 드는 장점이 있다.
도 1은 본 발명의 비동기 로딩 장치를 나타낸 개략도이다.
도 2는 본 발명의 비동기 로딩 장치를 나타낸 블록도이다.
도 3은 본 발명의 다른 비동기 로딩 장치를 나타낸 블록도이다.
도 4는 오픈 월드 비디오 게임을 나타낸 개략도이다.
도 5 내지 도 12는 제1 플레이 데이터에 대한 최종 학습 데이터를 획득하는 과정을 나타낸 개략도이다.
도 13 내지 도 14는 제2 플레이 데이터에 대한 최종 학습 데이터를 획득하는 과정을 나타낸 개략도이다.
도 15는 부분 영역을 나탄내 개략도이다.
도 16 내지 도 20은 제2 학습 유니트의 학습 데이터 수집 과정을 나타낸 개략도이다.
도 21 내지 도 25는 로딩 수단의 동작을 나타낸 개략도이다.
도 26은 본 발명의 실시예에 따른, 컴퓨팅 장치를 나타내는 도면이다.
도 2는 본 발명의 비동기 로딩 장치를 나타낸 블록도이다.
도 3은 본 발명의 다른 비동기 로딩 장치를 나타낸 블록도이다.
도 4는 오픈 월드 비디오 게임을 나타낸 개략도이다.
도 5 내지 도 12는 제1 플레이 데이터에 대한 최종 학습 데이터를 획득하는 과정을 나타낸 개략도이다.
도 13 내지 도 14는 제2 플레이 데이터에 대한 최종 학습 데이터를 획득하는 과정을 나타낸 개략도이다.
도 15는 부분 영역을 나탄내 개략도이다.
도 16 내지 도 20은 제2 학습 유니트의 학습 데이터 수집 과정을 나타낸 개략도이다.
도 21 내지 도 25는 로딩 수단의 동작을 나타낸 개략도이다.
도 26은 본 발명의 실시예에 따른, 컴퓨팅 장치를 나타내는 도면이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본 명세서에서, 동일한 구성요소에 대해서 중복된 설명은 생략한다.
또한 본 명세서에서, 어떤 구성요소가 다른 구성요소에 '연결되어' 있다거나 '접속되어' 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에 본 명세서에서, 어떤 구성요소가 다른 구성요소에 '직접 연결되어' 있다거나 '직접 접속되어' 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
또한, 본 명세서에서 사용되는 용어는 단지 특정한 실시예를 설명하기 위해 사용되는 것으로써, 본 발명을 한정하려는 의도로 사용되는 것이 아니다.
또한 본 명세서에서, 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다.
또한 본 명세서에서, '포함하다' 또는 '가지다' 등의 용어는 명세서에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품, 또는 이들을 조합한 것이 존재함을 지정하려는 것일 뿐, 하나 또는 그 이상의 다른 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 할 것이다.
또한 본 명세서에서, '및/또는' 이라는 용어는 복수의 기재된 항목들의 조합 또는 복수의 기재된 항목들 중의 어느 항목을 포함한다. 본 명세서에서, 'A 또는 B'는, 'A', 'B', 또는 'A와 B 모두'를 포함할 수 있다.
또한 본 명세서에서, 본 발명의 요지를 흐리게 할 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략될 것이다.
마이크로칩과 컴퓨터 기술을 결합하여 스크린, 디스플레이(90) 위에서 하는 게임에 해당하는 비디오 게임 또는 콘솔 게임이 제공될 수 있다.
로딩(loading)은 비디오 게임에서 플레이어 캐릭터가 특정 지역(환경, 레벨. 장면)에서 다른 지역으로 이동할 때, 해당 지역의 콘텐츠 데이터(지형, 몬스터 등의 오브젝트)를 불러오는 작업을 지칭할 수 있다. 로딩은 스크린 또는 디스플레이(90)에 시각적으로 표시될 그래픽 데이터 등을 서버로부터 다운받거나 하드디스크로부터 불러와 VGA 메모리 등의 비디오 메로리(70)에 탑재시키는 것을 나타낼 수 있다. 비디오 메로리(70)는 디스플레이(90)에 이미지 데이터를 뿌려줄 수 있는(표시하는) 이미지 프로세서에 의해 참조(독출)될 수 있다. 오브젝트는 게임 월드를 형성하는 사물, 동물, 몬스터, NPC 유저, 아이템 등을 포함할 수 있다.
언로딩(unloading)은 비디오 메로리(70)의 자원 확보를 위해, 비디오 메로리(70)에 탑재된 이미지 데이터를 소거하는 것을 나타낼 수 있다.
다음 지역의 콘텐츠에 대한 로딩이 완료되기 전에는 다음 지역의 콘텐츠가 디스플레이(90)에 표시될 수 없다. 따라서, 다음 지역으로 플레이어 캐릭터를 이동시키려는 사용자는 다음 지역의 콘텐츠가 비디오 메로리(70)에 탑재되는 로딩 시간 동안 대기해야 한다. 게임 플레이 도중 접하게 되는 로딩 시간은 게임 플레이에 대한 집중도를 저하시키는 원인이 될 수 있다. 따라서, 비디오 게임에서 로딩 시간의 단축은 새로운 사용자의 유인 또는 기존 사용자의 게임 이탈 방지을 위해 매우 중요한 사안에 해당될 수 있다.
변환 공간에 해당하는 홀웨이(hallway) 기법을 로딩 화면에 적용하는 비교 실시예가 존재하지만, 홀웨이 기법은 눈속임에 해당하는 것으로 로딩 시간을 단축하는 것과 무관하다.
홀웨이 기법은 로딩 시간동안 사용자의 지루함을 줄이기 위한 고적적인 트릭이다. 예를 들어, 다른 지역으로 이동할 때 긴 복도를 걸어가는 장면을 반복하여 보여주는 것이 홀웨이 기법에 해당된다. 홀웨이 기법의 경우, 로딩이 완료되면 복도의 끝에 도달하며 다음 지역으로 이동하는 연출이 추가될 수 있다. 긴 복도를 걸어가는 장면 대신 엘리베이터를 타고 가는 방식 등의 변형 기법이 도입될 수 있다.
홀웨이 기법은 명시적 로드 화면을 피하기 위한 눈속임일 뿐이므로, 게임 플레이가 중단되는 것은 동일하다.
로딩 화면이 최소화되도록 게임 내 환경이 명시적인 구분없이 하나의 큰 지역으로 구현되는 타입의 비디오 게임을 오픈 월드 게임이라 한다. 오픈 월드 게임 역시 로딩 시간의 문제로부터 자유로울 수 없다.
도 4는 오픈 월드 비디오 게임을 나타낸 개략도이다.
오픈 월드 비디오 게임은 게임 소프트웨어가 설치된 단말기 또는 게임 서비스를 실시간으로 제공하는 서버를 통해 제공될 수 있다.
오픈 월드 게임에는 하나의 지역에 방대한 양의 콘텐츠가 포함될 수 있다. 따라서, 사용자가 바라보는 디스플레이(90)가 탑재된 단말기에서 제한된 자원(비디오 메로리(70) 등)만으로 이들 콘텐츠를 모두 로딩해두는 것은 현실적으로 어렵다. 따라서, 오픈 월드 게임에서는 모든 콘텐츠를 동시에 로딩하는 대신, 그때그때 필요한 것만 로딩하는 비동기 정책이 사용될 수 있다. 일 예로, 비디오 게임을 제공하는 서버 또는 단말기는 플레이어 캐릭터 p를 중심으로 기설정된 로딩 거리 내의 로딩 지역 a만 로딩할 수 있다.
전체 콘텐츠 대신 일부 콘텐츠만 로딩하는 정책이 비동기 로딩에 해당될 수 있다. 반면, 전체 콘텐츠를 전부 로딩하는 정책이 동기 로딩에 해당할 수 있으며, 방대한 크기의 활동 무대를 지향하는 오픈 월드 게임에서는 사실상 동기 로딩의 적용이 불가능하다.
커다란 하나의 지역을 갖는 오픈 월드(open world)는 비동기 로딩을 위해 내부적으로 복수의 로딩 지역(loading area) a로 구분될 수 있다. 사용자의 불편함을 줄이는 사전 로딩을 위해 플레이어 캐릭터 p를 중심으로 로딩 거리 내에 중심 좌표 c가 포함된 모든 지역이 로딩될 수 있다. 도 4에는 플레이어 캐릭터 p 및 한칸 거리 내의 로딩 지역 a가 함께 로딩되고 있다.
플레이어가 현재 지역에서 다른 로딩 지역으로 이동하면, 로딩 거리 내에 새롭게 포함된 로딩 지역이 로딩될 수 있다. 새로운 로딩 지역을 지속적으로 적재할 수 있는 메모리 영역을 확보하기 위해, 로딩 거리를 벗어난 이전 지역은 언로딩될 수 있다.
도 4에서는 설명의 편의상 하나의 오픈 월드를 복수의 로딩 지역 a로 나누어 로딩하고 있다. 이외에도 각 오브젝터 o별로 플레이어 캐릭터와의 거리를 계산한 후 개별 오브텍트 o가 로딩될 수 있다. 또는 플레이어 캐릭터와의 거리를 이용해서 오브젝트 o의 LOD(Level Of Detail)가 조정될 수 있다.
일 예로, 산 등의 지형 오브젝트는 멀리서도 보여야 하므로, 플레이어 캐릭터 기준 100m 내에 들어오면 로딩될 수 있다. 반면, 몬스터는 50m 내에 들어오면 로딩될 수 있다. 잡초는 크게 중요하지 않으므로 20m 내에 들어오면 로딩될 수 있다. 다시 말해, 플레이어 캐릭터 기준 로딩 거리는 오브젝트 타입별로 다를 수 있다. 오브젝트는 몬스터, 산, 풀 등 다양한 타입으로 분류될 수 있으며, 몬스터의 경우 50m로 로딩 거리가 설정될 수 있다. 산의 로딩 거리는 100m로 설정되고, 잡초의 로딩 거리는 20m로 설정될 수 있다.
일 예로, 플레이어 캐릭터와의 거리에 따라 화면에 그릴(표시될) 오브젝트 o의 디테일 단순화 수준이 차등 적용될 수 있다. LOD(Level Of Detail)는 3D 모델/텍스처를 얼마나 단순화하여 그릴 것인지 결정하는 기술로, 멀리 있는 오브젝트를 아예 로딩하지 않는 것이 아니라, 낮은 디테일의 상태로 로딩할 수 있다. 거리가 점점 가까워지면, 해당 오브젝트의 디테일 수준을 높여서 로딩할 수 있다. 다시 말해, 로딩되는 특정 오브젝트의 데이터량을 거리에 따라 차등적으로 적용하는 것과 유사하다. 100 크기의 데이터를 갖는 오브젝트는 로딩 거리가 멀면 20 크기만 로딩될 수 있다. 로딩 거리가 중간 거리가 되면 60 크기만 로딩될 수 있다. 로딩 거리가 충분히 가까워지면 100 크기 모두 로딩될 수 있다.
비동기 로딩 방식은 거리 기반 로딩과 트리거 기반 로딩으로 구분될 수 있다.
거리 기반 로딩은 플레이어 캐릭터(혹은 카메라 위치, 디스플레이(90)를 통해 비디오 게임 세계를 바라보는 플레이어의 시점)와 가까운 오브젝트들만 로딩하는 방식일 수 있다.
트리거(로딩 경계, 로딩 영역) 기반 로딩은 플레이어 캐릭터(혹은 카메라 위치)가 지정된 경계를 넘어가거나, 지정된 영역에 들어서면 링크된 지역의 오브젝트를 로딩하는 방식일 수 있다. 일 예로, 귀환석을 사용하면, 귀환 준비 모션 동안 귀환할 마을의 오브젝트가 미리 로딩될 수 있다. 이때, 귀환석 사용이 지정된 경계를 넘는 트리거 신호에 해당될 수 있다.
하지만, 비교 실시예의 거리 기반 로딩 방식에 따르면, 플레이어 캐릭터와 오브젝트 간에 적절한 거리를 설정하는 것이 어려운 문제가 있다. 예를 들어, 로딩 거리가 너무 길면, 중요하지 않은 오브젝트가 불필요하게 로딩되므로, 하드웨어 리소스가 낭비될 수 있다. 로딩 거리가 너무 짧으면, 망원경 등으로 먼 곳을 탐색하는 상황에서 초점 지점의 오브젝트가 로딩되지 않아 보이지 않을 수 있다. 또는, 멀리서 미사일을 발사했는데 해당 지점의 오브젝트가 로딩되지 않는 현상, 몬스터를 중독시킨 후 멀리 도망쳤다가 돌아왔는데, 다시 로딩되어 몬스터가 멀쩡한 현상 등이 발생될 수 있다.
비교 실시예의 트리거 기반 로딩 방식에 따르면, 게임 플레이 방식에 제약을 두어야 하는 문제가 있다. 예를 들어, 사전에 지정된 길을 따라서만 이동하고 되돌아가지 못하는 구간이 설계되거나, 특정 지점에서만 빠른 이동이 지원되는 경우가 발생될 수 있다. 또한, 게임 디자이너의 노력이 많이 요구되는 문제가 있다. 왜냐하면, 게임 흐름에 맞는 경계나 트리거를 일일이 수작업으로 배치해야 하기 때문이다.
본 발명의 비동기 로딩 장치 및 방법은 기계 학습에 기반한 비동기 로딩 모델을 제시할 수 있다. 본 발명은 비교 실시예의 비동기 로딩 방식의 작업 프로세스를 개선할 수 있다.
본 발명의 비동기 로딩 장치의 프로세스는 로컬 로딩 모델과 글로벌 로딩 모델을 포함할 수 있다.
로컬 로딩 모델과 글로벌 로딩 모델은 플레이어 캐릭터와 오브젝트 간의 거리에 의해 구분되어 적용될 수 있다.
로컬 로딩 모델은 근거리의 경우 적용되며, 거리 기반 로딩에 해당할 수 있다. 본 발명의 로컬 로딩 모델은 고정된 거리를 지정하지 않고, 매 순간 최적의 거리를 선별, 선택하는 자동 거리 조절 모델에 해당할 수 있다.
어떤 상태에서 어느 정도의 거리가 적절한지는 기계 학습 기반 모델에 의해 예측될 수 있다. 본 발명에 따르면, 동일한 나무라도 주변 환경에 따라 로딩 거리가 달라질 수 있다. 일 예로, 평야 지대는 개방된 공간이므로 평야 지대의 나무에는 긴 로딩 거리가 선택 적용될 수 있다. 협곡 지대는 폐쇄된 공간이므로 협곡 지대의 나무에는 짧은 로딩 거리가 선택 적용될 수 있다. 본 발명의 로컬 로딩 모델에 따르면, 오브젝트에 대한 로딩 거리가 적응적으로 가변되므로, 불필요한 하드웨어 리소스 낭비가 없으며 필요한 오브젝트의 로딩이 최적의 상태로 이루어질 수 있다.
글로벌 로딩 모델은 원거리의 경우 적용되며, 트리거 기반 로딩에 해당할 수 있다. 본 발명의 글로벌 로딩 모델은 현재 상태를 보고 가까운 미래에 어떤 영역에서 상호 작용이 일어날지 예측하는 모델에 해당할 수 있다. 본 발명의 글로벌 로딩 모델에 따르면, 트리거 기반 로딩에서 트리거를 설정하고 영역을 지정하는 작업이 자동화될 수 있다.
도 1은 본 발명의 비동기 로딩 장치를 나타낸 개략도이다.
도 1에 도시된 비동기 로딩 장치는 비디오 게임을 제공하는 제공 수단(10), 로딩 수단(100)을 포함할 수 있다.
제공 수단(10)에는 비디오 게임의 게임 월드를 형성하는 데이터가 저장될 수 있다. 제공 수단(10)은 게임 규칙에 맞춰 각 데이터를 연산 처리하고, 게임 월드의 배경, 오브젝트, 전투, 퀘스트 등을 갖는 하나의 가상 세계에 해당하는 게임 월드를 형성할 수 있다. 제공 수단(10)은 필요에 따라 관리되는 데이터 중에서 오브젝트를 로딩 수단(100)에 제공할 수 있다.
제공 수단(10)은 비디오 게임을 제공하기 위해 게임을 형성하는 각종 오브젝트에 대한 정보를 저장하고, 필요에 따라 로딩 수단(100)에 제공할 수 있다. 제공 수단(10)은 서버에 형성될 수 있다. 또는 제공 수단(10)은 하드디스크 등과 같이 단말기 내에 형성된 대용량 저장소를 포함할 수 있다. 제공 수단(10)은 기저장된 오브젝트를 이용해서 가상의 게임 월드를 형성할 수 있다. 제공 수단(10)은 게임 월드 내에 배치된 오브젝트 간의 상호 작용, 오브젝트와 플레이터 캐릭터 간의 상호 작용을 처리할 수 있다.
로딩 수단(100)은 게임 월드에 포함된 전체 오브젝트 중 플레이어 캐릭터와 장래에 상호 작용할 일부의 오브젝트를 예측할 수 있다. 로딩 수단(100)은 예측된 일부 오브젝트를 비디오 메로리(70)에 적재 가능한 범위 내에서 미리 로딩할 수 있다. 로딩 수단(100)은 로딩된 오브젝트 정보를 단말기의 비디오 메로리(70)에 적재할 수 있다. 로딩 수단(100)은 서버 또는 단말기에 마련될 수 있다.
비디오 메로리(70)에 적재된 오브젝트 정보는 단말기의 이미지 프로세서(ISP, Image Signal Processor) 등에 의해 단말기의 디스플레이(90)에 표시될 수 있다.
비디오 메로리(70)에 적재된 오브젝트는 디스플레이(90)의 각 화면 픽셀에 맵핑되는 어드레스별로 RGB(R: red, G: green, B: blue) 정보가 업로드될 수 있다. 이미지 프로세서 또는 디스플레이(90)는 각 픽셀에 맵핑된 어드레스의 RGB 정보에 따라 각 픽셀의 표시 색깔을 제어할 수 있다.
일 실시예로, 제공 수단(10), 로딩 수단(100), 비디오 메로리(70), 이미지 프로세서, 디스플레이(90)는 모두 플레이어 캐릭터를 조작하는 사용자의 단말기에 마련될 수 있다. 본 실시예는 게임 내에서 다른 사용자와 소통할 필요가 없는 패키지 게임 등에 유용할 수 있다.
일 실시예로, 제공 수단(10)이 서버에 마련될 수 있다. 이 경우, 상호 작용할 오브젝트의 예측이 단말기에서 수행되므로, 서버의 부하가 경감될 수 있다. 단말기는 예측된 오브젝트에 대한 정보를 서버에 요청하고, 서버로부터 전송된 오브젝트 정보를 수신해서 비디오 메로리(70)에 적재할 수 있다. 본 실시예는 게임 내에서 다른 사용자와 상호 작용하는 온라인 게임 등에 적용되는 것이 좋다.
일 실시예로, 제공 수단(10)과 함께 로딩 수단(100)이 서버에 마련될 수 있다. 본 실시예는 온라인 게임 등에 적용되는 것이 좋다. 이 경우, 상호 작용할 오브젝트의 예측이 서버에서 수행되므로, 서버의 부하가 증가될 수 있다. 반면, 사용자 단말기의 부하가 경감되는 장점이 있다. 또한, 모든 사용자에 대한 오브젝트 예측이 서버에서 수행되는 만큼 오브젝트 예측에 대한 학습 데이터가 풍부해지는 장점이 있다. 따라서, 대량의 지속적인 반복 학습에 의해 오브젝트 예측 정확도가 지속적으로 발전할 수 있는 장점이 있다. 본 실시예의 경우, 서버는 플레이어 캐릭터의 상태를 실시간으로 감시할 필요가 있다.
도 2는 본 발명의 비동기 로딩 장치를 나타낸 블록도이다. 도 3은 본 발명의 다른 비동기 로딩 장치를 나타낸 블록도이다.
도면에 도시된 비동기 로딩 장치는 구현 유니트(19), 학습 유니트(11), 제1 로딩 유니트(110), 제2 로딩 유니트(130), 제3 로딩 유니트(150), 비디오 메로리(70)를 포함할 수 있다.
구현 유니트(19)는 제공 수단(10)에 마련될 수 있다. 구현 유니트(19)는 기저장된 데이터를 이용해서 가상의 게임 세계(게임 월드)를 구현할 수 있다. 도 2에서는 구현 유니트(19)에 의해 구현된 가상의 게임 세계를 간략하게 나타내었다.
구현 유니트(19)는 게임 세계에 존재하는 플레이어 캐릭터 정보 p, 오브젝트 정보 o를 디지털 데이터의 형태로 저장, 수정, 삭제할 수 있다. 구현 유니트(19)는 플레이어 캐릭터와 오브젝트 간의 상호 작용을 감지하고, 상호 작용을 처리할 수 있다. 일 예로, 플레이어 캐릭터가 몬스터 e를 공격하면, 구현 유니트(19)는 플레이어 캐릭터의 능력 정보, 사용자의 조작에 따른 공격 스킬 정보, 몬스터 e의 능력 정보를 종합하여 승자를 분석할 수 있다. 구현 유니트(19)는 분석 결과에 따른 보상 등을 결정하고, 결정된 보상을 플레이어 캐릭터에 제공할 수 있다. 구현 유니트(19)에 의해 처리된 상호 작용의 결과는 디스플레이(90)를 통해 표시될 수 있다.
로딩 수단(100)은 제1 로딩 유니트(110), 제2 로딩 유니트(130), 제3 로딩 유니트(150)를 포함할 수 있다.
제1 로딩 유니트(110)와 제2 로딩 유니트(130)는 장래에 플레이어 캐릭터와 상호 작용할 오브젝트를 예측해서 미리 로딩해두는 예방적 수단일 수 있다. 반면, 제3 로딩 유니트(150)는 현재 시점에서 반드시 표시되어야 할 플레이어 캐릭터 및 오브젝트를 로딩할 수 있다. 현재 시점에서 플레이어 캐릭터 p가 특정 오브젝트에 해당하는 몬스터 e와 전투를 수행한다면, 제3 로딩 유니트(150)는 플레이어 캐릭터의 공격 스킬 정보, 몬스터 e의 정보를 로딩하고, 해당 정보의 로딩 상태를 유지할 수 있다. 제3 로딩 유니트(150)는 제1 로딩 유니트(110) 및 제2 로딩 유니트(130)보다 우선적으로 동작할 수 있다.
제1 로딩 유니트(110) 또는 제2 로딩 유니트(130)는 제3 로딩 유니트(150)의 동작 후에 남는 자원(비디오 메로리(70) 용량)이 존재하는 경우에 한해 사전 로딩을 수행할 수 있다.
제1 로딩 유니트(110)에는 로컬 로딩 모델이 적용될 수 있다. 제1 로딩 유니트(110)는 플레이어 캐릭터의 현재 상태를 기초로 플레이어 캐릭터와 오브젝트 간의 로딩 거리에 따라 오브젝트를 예측하고 로딩할 수 있다. 구체적으로, 제1 로딩 유니트(110)는 플레이어 캐릭터의 현재 상태를 입력받고, 플레이어 캐릭터와 오브젝트 간의 거리를 나타내는 로딩 거리를 출력할 수 있다.
제1 로딩 유니트(110)로부터 출력된 로딩 거리를 최적 로딩 거리로 정의할 때, 제1 로딩 유니트(110)는 현재 상태에 따라 최적 로딩 거리가 가변되는 로컬 로딩 모델을 사용할 수 있다. 제1 로딩 유니트(110)는 최적 로딩 거리를 만족하는 로딩 거리를 갖는 오브젝트를 미리 로딩할 수 있다.
로컬 로딩 모델(local loading model)이 적용된 제1 로딩 유니트(110)는 현재 상태(x)를 입력받아 최적의 로딩 거리(r)을 출력할 수 있다. 로컬 로딩 모델은 다음의 수학식 1로 표현되는 함수일 수 있다.
로컬 로딩 모델 함수 flocal은 θlocal을 모델 파라미터로 갖는 기계 학습 모델로, 인공 신경망, 통계 모델 등이 적용될 수 있다. 모델의 입력은 현재 상태(x)이다. 로딩 거리 r은 플레이어 캐릭터 p와 오브젝트 o 간의 거리를 나타낼 수 있다.
제1 로딩 유니트(110)는 최대 로딩 거리 범위 내에서 최소 로딩 거리 이상의 값을 출력할 수 있다.
만약, 최소 로딩 거리보다 로딩 거리가 짧은 오브젝트가 존재한다면, 제1 로딩 유니트(110)는 해당 오브젝트에 대한 로딩 거리를 최소 로딩 거리로 처리할 수 있다.
만약, 최대 로딩 거리보다 로딩 거리가 긴 오브젝트가 존재한다면, 제1 로딩 유니트(110)는 해당 오브젝트에 대한 로딩 거리를 최대 로딩 거리로 처리할 수 있다.
제1 로딩 유니트(110)의 입력 인자에 해당하는 현재 상태는 현재 시점에서 플레이어 캐릭터가 처한 모든 정보를 나타낼 수 있다.
일 예로, 현재 상태에는 사용자의 조작 정보, 게임 내 정보가 포함될 수 있다.
사용자의 조작 정보는 키보드, 마우스, 터치 스크린 조작 등의 컨트롤러 입력 정보, 디스플레이(90)에 표시되는 GUI 조작 정보(메뉴 버튼 클릭 등)를 포함할 수 있다.
게임 내 정보는 현재 지역의 식별 정보, 현재 위치(좌표), 플레이어 캐릭터의 시선 방향, 이동 속도, 뷰 영역(view frustum, 사용자에게 보이는 영역), 캐릭터 정보(레벨, 직업, 스킬 등), 캐릭터 상태(체력, 전투 여부), 주변 오브젝트의 정보 등을 포함할 수 있다.
사용자의 조작 정보와 게임 내 정보는 모두 하나의 벡터로 만들어져 로컬 로딩 모델에 입력될 수 있다.
각 오브젝트에 대한 로딩 거리가 잘못되면, 각종 문제가 발생될 수 있다.
일 예로, 로딩하지 않은 오브젝트에 대해 플레이어 캐릭터의 상호 작용이 발생되는 제1 상황이 존재할 수 있다. 제1 상황의 경우, 상호 작용이 이루어진 후에 제3 로딩 유니트(150)가 해당 오브젝트를 로딩하게 된다. 글로 적어 놓으면 별다른 문제가 없어보이지만, 제1 상황은 상당히 치명적인 문제로 작용할 수 있다. 왜냐하면, 상호 작용으로 인해 표시되거나 처리되어야 할 오브젝트가 미로딩 상태이므로, 사용자는 해당 오브젝트에 대한 상호 작용 시도시마나 로딩을 기다려야 하는 문제가 발생하기 때문이다. 제1 상황은 보통 로딩 거리가 짧을수록 발생될 가능성이 높다.
일 예로, 로딩한 오브제트에 대해 플레이어 캐릭터의 상호 작용이 발생되지 않는 제2 상황이 존재할 수 있다. 제2 상황이 발생되면, 메모리 낭비, 연산 시간 낭비 등의 불필요한 리소스 소비가 발생될 수 있다.
제1 로딩 유니트(110)는 플레이어 캐릭터의 현재 상태(도 2의 p)를 획득하는 제1 획득부(111), 제1 획득부(111)에서 획득한 현재 상태 p에 따라 특정 오브젝트 o를 예측하고 로딩하는 제1 로딩부(113)를 포함할 수 있다. 제1 로딩부(113)는 예측된 특정 오브젝트 o를 제공 수단(10)의 구현 유니트(19)로부터 획득하고, 비디오 메로리(70)에 로딩시킬 수 있다.
예측된 오브젝트와 실제의 상호 작용 발생 간의 매칭 정확도를 개선하기 위해 학습 유니트(11)가 이용될 수 있다. 학습 유니트(11)는 제1 학습 유니트(210)와 제2 학습 유니트(230)를 포함할 수 있다.
제1 학습 유니트(210)는 게임 플레이를 방해하지 않는 설정 범위 내에서 가장 짧은 로딩 거리를 추정할 수 있다. 본 실시예에 따르면, 불필요한 하드웨어 리소스 소비가 최소화될 수 있다. 게임 플레이를 방해하지 않는 범위는 주변 오브젝트를 로딩할 수 있는 로딩 거리 범위를 포함할 수 있다. 로딩 거리 범위는 클수록 원활한 게임 플레이가 가능하지만 제한된 자원의 활용을 위해, 로딩 거리 범위 중 가장 짧은 로딩 거리가 적용되는 것이 유리하다.
제1 학습 유니트(210)에는 제1 수집부(211), 제1 감시부(213), 제1 학습부(215)가 마련될 수 있다.
제1 수집부(211)는 플레이어 캐릭터의 현재 상태(이하, '현재 상태'로 지칭함)를 수집하고 저장할 수 있다. 플레이어 캐릭터의 현재 상태는 제1 감시부(213)로부터 전달될 수 있다.
제1 수집부(211)는 플레이어 캐릭터로부터 학습 거리 내에 존재하는 오브젝트를 수집할 수 있다. 일 예로, 학습 거리는 최대 로딩 거리 이상일 수 있다.
제1 수집부(211)는 수집된 현재 상태 및 오브젝트를 틱(TICK)단위로 저장할 수 있다.
제1 감시부(213)는 현재 상태 Sp를 실시간으로 감시할 수 있다. 제1 감시부(213)는 현재 상태를 제1 수집부(211) 또는 제1 학습부(215)로 전달할 수 있다.
제1 학습부(215)는 현재 상태를 분석하고, 플레이어 캐릭터와 오브젝트 간에 상호 작용이 발생되었는지 파악할 수 있다.
'상호 작용'은 어떤 오브젝트가 사용자의 게임 플레이에 영향을 준 상태를 나타낼 수 있다. 일 예로, 오브젝트가 사용자 카메라의 시야 범위(view frustum, 시야 범위 절두체, 사용자에게 보이는 영역)에 들어오면 상호 작용이 발생한 것으로 처리될 수 있다. 일 예로, 오브젝트에 대한 충돌(collision), 겹침(overlap), 전투 수행, 퀘스트 수행, 아이템 습득 등과 같은 커스텀 이벤트(custom event)가 감지되면 상호 작용이 발생한 것으로 처리될 수 있다.
제1 학습부(215)는 플레이어 캐릭터와 오브젝트 간의 거리, 상호 작용 여부를 이용해서 로딩 거리를 학습할 수 있다.
제1 학습 유니트(210)는 플레이 단계, 제1 학습 단계, 제1 갱신 단계를 거쳐 기계적 학습을 진행할 수 있다.
플레이 단계는 학습 데이터 수집을 위해 게임을 플레이하는 단계일 수 있다. 플레이 단계는 수동 모드와 자동 모드로 구분될 수 있다.
수동 모드는 게임 개발자 또는 테스터에 의해 게임 플레이가 진행되는 모드일 수 있다. 수동 모드는 사용자의 수동 조작에 의해 플레이어 캐릭터가 움직이는 상태를 모의할 수 있다.
자동 모드는 AI가 게임 플레이를 진행하는 모드일 수 있다. 일 예로, 자동 모드가 선택되면, 플레이어 캐릭터는 구현 유니트(19)에 의해 자동 조작되거나, 단말기의 제어부에 의해 자동 조작될 수 있다. 자동 모드는 게임 내에서 지원되는 자동 진행 상태(자동 사냥, 자동 퀘스트 수행)를 모의할 수 있다.
제1 학습 단계는 매 순간의 상태(현재 상태: 로컬 로딩 모델로 입력)와 최적 로딩 거리(로컬 로딩 모델로부터 출력)를 기록할 수 있다.
제1 갱신 단계는 추정한 최적 로딩 거리의 오차가 최소화되도록, 모델 파라미터를 갱신할 수 있다.
도 5 내지 도 12는 제1 플레이 데이터에 대한 최종 학습 데이터를 획득하는 과정을 나타낸 개략도이다. 도 5 내지 도 12에서 획득되는 학습 데이터는 로컬 로딩 모델과 관련된 제1 학습 데이터로 분류될 수 있다.
본 예시는 4 TICK 동안의 플레이에 대한 것일 수 있다. 'TICK'은 특정 오브젝트의 로딩에 필요한 시간 단위일 수 있다. 일 예로, 특정 오브젝트를 로딩하는데 평균 3초가 필요하다면, 한 틱(TICK)은 3초 단위일 수 있다. 이 경우, TICK 1은 0~3초 구간, TICK 2는 3~6초 구간, TICK 3은 6~9초 구간, TICK 4는 9~12초 구간을 나타낼 수 있다.
학습 데이터 수집을 위해 플레이할 때에는 로딩 거리를 최대한 높여 가급적 많은 오브젝트가 로딩되도록 할 수 있다. 학습된 모델을 이용하여 플레이할 때에는 매 순간의 상태를 모델에 입력하여 최적의 로딩 거리를 추정할 수 있다.
로딩 정책과 언로딩 정책은 다음과 같이 책정될 수 있다.
로딩 거리 내에 포함된 모든 오브젝트를 로딩하는 것으로 로딩 정책이 정해질 수 있다.
어떤 오브젝트가 3TICK 동안 로딩 거리 내에 들어오지도 않고 상호 작용하지도 않으면 언로딩하는 것으로 언로딩 정책이 정해질 수 있다.
도 5와 같이 플레이어 캐릭터 c 주변에 3개의 오브젝트 1, 2, 3이 존재하는 게임내 환경이 존재하는 상황을 가정한다. 도 5는 TICK 1을 나타낸다.
도면에서 플레이어 캐릭터 c를 꼭지점으로 하는 삼각형 표시가 플레이어 캐릭터의 시야, 사용자의 시야, 카메라의 시야 중 하나를 나타낼 수 있다.
캐릭터 c 주변의 오브젝트는 학습을 위해 최대한 많이 로딩되어 있는 것이 유리하다. 따라서, 캐릭터 c 주변의 오브젝트는 최대 로딩 거리 내에 존재하는 오브젝트로 설정될 수 있다. 캐릭터 c 주변에 존재하는 것으로 설정된 오브젝트는 제1 수집부(211)에 의해 수집될 수 있다.
제1 감시부(213)는 플레이어 캐릭터의 시야 범위 또는 플레이어의 시야 범위 등 현재 상태를 실시간으로 감시할 수 있다. 제1 감시부(213)의 감시 결과는 제1 수집부(211) 및 제1 학습부(215)로 전달될 수 있다.
제1 수집부(211)는 기파악된 오브젝트가 포함된 TICK 데이터(한 틱 동안에 저장된 데이터)에 현재 상태를 추가하여 저장할 수 있다.
제1 학습부(215)는 제1 감시부(213)로부터 전달받은 현재 상태와 제1 수집부(211)로부터 전달받은 오브젝트를 이용해서, 사용자에 대한 오브젝트의 상호 작용 여부를 판단할 수 있다.
사용자가 오브젝트 1, 2, 3을 바라보지 않는 도 5의 경우, 제1 학습부(215)는 오브젝트 1, 2, 3과 플레이어 캐릭터 간의 상호 작용이 없는 상태로 판단할 수 있다.
도 6은 TICK 2를 나타낸다.
틱 2(TICK 2)는 플레이어가 오브젝트 1, 2, 3을 바라보지 않는 상태에서 플레이어 캐릭터를 아래로 이동시킨 상태이며 여전히 별다른 상호 작용이 없는 경우를 나타낸다. TICK 2 구간의 TICK 데이터는 현재 상태와 함께 제1 수집부(211)에 의해 저장될 수 있다.
도 7은 TICK 3을 나타낸다.
TICK 3에서 사용자가 마우스, 키보드, 키패드 등의 입력 수단을 이용해, 시선을 특정 오브젝트 3 쪽으로 돌린 상태이다. 시선의 변화로 인해 오브젝트 3이 시야에 들어오는 상호 작용이 발생된다. TICK 3의 TICK 데이터는 제1 수집부(211)에 의해 저장될 수 있다.
제1 학습부(215)는 특정 TICK에서 상호 작용이 발생되면, 설정 TICK수 전부터 특정 TICK까지의 구간 중 오브젝트 3을 로딩하기에 최적인 TICK을 탐색할 수 있다. 일 예로, 제1 학습부(215)는 현재 TICK이 포함된 3 TICK 내에서 오브젝트 3을 로딩하기에 최적인 TICK을 탐색할 수 있다.
도 8은 TICK 3에서 상호 작용이 발생된 상황에서 제1 학습부(215)의 동작을 나타낸다.
제1 학습부(215)는 3 틱수 이전의 TICK 1부터 현재의 틱인 TICK 3까지 분석하고, 플레이어 캐릭터 c에 대한 오브젝트 3의 로딩 거리가 가장 가까운 틱을 탐색할 수 있다.
오브젝트 3의 로딩 거리는 TICK 1에서 15이고, TICK 2에서 5이며, TICK 3에서 10일 수 있다. 이때, 가장 짧은 로딩 거리 5를 갖는 TICK 2가 선택되고, 제1 학습부(215)는 TICK 2에 로딩 거리 5를 설정할 수 있다. 이것은 TICK 2에서 5의 로딩 거리로 주변을 로딩하면, 이후의 틱에서 필요한 로딩을 사전에 수행할 수 있다는 것을 나타낼 수 있다.
도 9는 TICK 4를 나타낸다.
TICK 4에서 오브젝트 2와 상호 작용이 발생될 수 있다. 이전으로 되돌아가는 틱수가 현재 틱을 포함해서 3이므로, 제1 학습부(215)는 TICK 2, TICK 3, TICK 4를 분석할 수 있다.
도 10은 상호 작용이 발생된 TICK 4의 상황에서 제1 학습부(215)의 동작을 나타낸다.
플레이어 캐릭터와 오브젝트 2 간의 로딩 거리는 TICK 2에서 12, TICK 3에서 14, TICK 4에서 11일 수 있다. 이때, 제1 학습부(215)는 가장 짧은 로딩 거리 11을 갖는 TICK 4에 로딩 거리 11을 설정할 수 있다. 이는 오브젝트 2의 로딩 시점은 로딩 거리를 고려해서 이전 TICK이 아닌 현재 TICK에서 수행한다는 것을 의미한다. 이때의 로딩 거리는 11이다.
도 11은 제1 학습부(215)에 의해 학습이 완료된 상태를 나타낸다.
제1 학습부(215)에 의해 수집된 학습 데이터 세트에 따르면, 3개의 오브젝트 1, 2, 3에 플레이어 캐릭터 둘러싸인 상황이 설정될 수 있다. TICK 1에서는 오브젝트를 로딩할 필요가 없다. TICK 2에서는 오브젝트 3만 로딩하면 된다. TICK 3에서는 로딩할 필요가 없다. TICK 4에서 오브젝트 2를 로딩하면 된다. 이런 식으로, 플레이어 캐릭터 주변에 복수의 오브젝트가 존재하지만, 로딩 처리 시간 및 로딩에 필요한 메모리양이 크게 감소할 수 있다. TICK마다 로딩 거리 13으로 고정된 비교 실시예를 가정하면, TICK 1부터 오브젝트 1, 2, 3이 로딩되고, 그 상태는 TICK 4까지 유지될 것이다. 반면, 본 실시예에 따르면, TICK 1에서는 로딩이 필요없으며, TICK 2와 TICK 3에서는 오브젝트 3만 로딩하면 된다. 따라서, 오브젝트 1, 2의 로딩되지 않는 만큼 여유 자원이 발생되며, 적은 개수의 오브젝트만 로딩 및 처리하면 되므로 부하가 줄어들고 게임 프레임 수 등이 개선될 수 있다.
도 12는 최종 학습 데이터 세트가 선별된 예를 나타낸다.
도 11과 같이 최적 로딩 거리가 0인 학습 데이터들이 너무 많이 존재하면, 학습된 모델의 출력이 항상 0에 가까워지는 학습 기법상 문제가 발생될 소지가 있다. 학습 기법상 예상되는 문제점을 해소하기 위해 제1 학습부(215)는 최적 로딩 거리가 0이 아닌 값으로 설정된 레코드들로만 모델 학습을 수행할 수 있다. 다시 말해, 제1 학습부(215)는 수집된 학습 데이터 세트 중 '0'이 설정되거나 아무값도 갖지 않는 널(null) 상태의 레코드(도 12의 표에서 틱수, 상태, 최적 로딩(로드) 거리를 갖는 1개의 행을 나타냄)를 삭제할 수 있다. 불필요한 레코드가 삭제된 최종 학습 데이터 세트는 제1 로딩 유니트(110)로 제공될 수 있다.
도 13 내지 도 14는 제2 플레이 데이터에 대한 최종 학습 데이터를 획득하는 과정을 나타낸 개략도이다.
도 13은 TICK t+1를 나타낸다. 여기서, t는 정수일 수 있다.
TICK t+1에서 오브젝트 3과 상호 작용이 발생되면, 제1 학습부(215)는 최근 3틱 이내의 틱 데이터를 분석해서 플레이어 캐릭터 c와 오브젝트 3간의 로딩 거리가 가장 가까운 TICK을 선택할 수 있다. 도 13에는 생략되었지만, 제1 학습부(215)는 TICK t-1, TICK t, TICK t+1의 각 로딩 거리를 분석할 수 있다. 분석 결과 TICK t의 로딩 거리 5가 제일 짧은 경우, 제1 학습부(215)는 수집한 학습 데이터 세트의 TICK t 레코드에 최적 로딩 거리 5를 설정할 수 있다.
도 14는 TICK t+2를 나타낸다.
TICK t+2에서 오브젝트 1과 상호 작용이 발생될 수 있다. 제1 학습부(215)는 3틱수 전의 TICK t부터 현재의 TICK t+2까지 오브젝트 1과 플레이어 캐릭터 c 간의 로딩 거리를 분석할 수 있다.
TICK 1의 로딩 거리가 7이고, TICK 2의 로딩 거리가 12이며, TICK 3의 로딩 거리가 10이면, 제1 학습부(215)는 가장 짧은 로딩 거리 7을 갖는 TICK 1에 7을 설정한다. 그런데, TICK 1에는 이미 5가 설정된 상태이다. 이와 같이, 같은 TICK에 복수의 로딩 거리가 설정되는 경우, 가장 긴 로딩 거리가 설정될 수 있다. 따라서, 도 14와 같이 학습 데이터 세트 중 TICK t에는 5 대신 7이 설정될 수 있다.
해당 학습 데이터 세트를 받는 제1 로딩 유니트(110)는 TICK t와 같이 플레이어 캐릭터가 오브젝트 1, 2, 3에 둘러싸인 상황에서 로딩 거리 7로 주변 오브젝트를 로딩할 수 있다. 그 결과, TICK t에서 오브젝트 1 및 오브젝트 3이 사전 로딩될 수 있다. 만약, 사용자가 학습 데이터 세트와 동일한 동작을 보인다면, 기로딩된 오브젝트 3은 TICK t+1에서 적절하게 상호 작용할 것이고, 기로딩된 오브젝트 1은 TICK t+2에서 적절하게 상호 작용할 것이다.
실제 사용자가 제1 학습부(215)에서 획득된 학습 데이터 세트에 가까운 동작을 보일수록, 사전 로딩의 정확도가 증가되며 이는 제1 학습부(215)의 딥러딩 등 반복 학습을 통해 개선될 수 있다.
제1 학습부(215)의 동작은 다음과 같이 정리될 수 있다.
게임 플레이가 시작되면, 제1 학습부(215)는 제1 감시부(213)로부터 현재 상태를 전달받고, 제1 수집부(211)로부터 오브젝트를 전달받을 수 있다. 제1 학습부(215)는 전달받은 현재 상태와 오브젝트를 이용해서 상호 작용 여부를 설정 시간 단위에 해당하는 틱(TICK)마다 판단할 수 있다. 제1 학습부(215)는 특정 틱에서 상호 작용이 발생되면, 설정 틱수 이전부터 특정 틱까지의 구간을 탐색할 수 있다. 제1 학습부(215)는 탐색을 통해 상호 작용이 발생된 특정 오브젝트와의 로딩 거리가 최단인 틱을 선택할 수 있다. 제1 학습부(215)는 선택된 틱에 최단의 로딩 거리를 설정할 수 있다. 제1 학습부(215)는 선택된 틱에 설정된 최단 로딩 거리가 복수이면, 복수의 최단 로딩 거리 중 가장 긴 최단 로딩 거리를 선택된 틱에 설정할 수 있다.
다시 도 2 및 도 3으로 돌아가서, 제2 로딩 유니트(130)에는 글로벌 로딩 모델이 적용될 수 있다. 제2 로딩 유니트(130)는 게임 월드가 복수로 구분된 부분 영역에서 상호 작용이 발생할 가능도에 따라 오브젝트를 예측하고 로딩할 수 있다.
일 예로, 제2 로딩 유니트(130)는 플레이어 캐릭터의 현재 상태를 입력받고, 부분 영역에 대한 상호 작용이 발생할 가능도를 출력할 수 있다. 제2 로딩 유니트(130)는 현재 상태에 따라 가능도가 달라지는 글로벌 로딩 모델을 사용할 수 있다. 글로벌 로딩 모델은 수학식 2와 동일할 수 있다. 제2 로딩 유니트(130)는 가능도에 기초해서 오브젝트를 미리 로딩할 수 있다.
글로벌 로딩 모델(global loading model)이 적용된 제2 로딩 유니트(130)는 가까운 미래에 각 영역에서 상호 작용이 발생할 가능도(상호 작용 가능성)을 추정할 수 있다.
글로벌 로딩 모델은 게임 월드를 복수 개의 부분 영역으로 구분할 수 있다. 그리고, 현재 상태(x)를 입력받아 각 부분 영역에 대한 상호 작용 가능도를 출력할 수 있다. 이때, 모든 영역에 대한 상호 작용 가능도의 합은 1, 즉 100%일 수 있다.
제2 로딩 유니트(130)에서 출력되는 각 부분 영역에 대한 가능도에 따라 사전 로딩이 결정될 수 있다.
각 부분 영역에 대한 상호 작용 가능도의 정확도를 개선하기 위해 제2 학습 유니트(230)가 이용될 수 있다.
제2 학습 유니트(230)에는 제2 수집부(231), 제2 감시부(233), 제2 학습부(235)가 마련될 수 있다.
제2 수집부(231)는 현재 상태를 수집하고 저장할 수 있다. 현재 상태는 제2 감시부(233)로부터 전달될 수 있다. 제2 수집부(231)는 플레이어 캐릭터 주변의 오브젝트를 추가로 수집하고, 수집된 현재 상태 및 오브젝트를 틱(TICK)단위로 저장할 수 있다.
제2 감시부(233)는 현재 상태 Sp를 실시간으로 감시할 수 있다. 제2 감시부(233)는 현재 상태를 제2 수집부(231) 또는 제2 학습부(235)로 전달할 수 있다. 제2 감시부(233)는 제1 감시부(213)와 일체로 형성될 수도 있다.
제1 감시부(213)의 감시 대상 또는 감시 결과물은 제2 감시부(233)의 감시 대상 또는 감시 대상물과 동일하거나 서로 다를 수 있다. 이로 인해, 제1 감시부(213)로부터 제공되는 제1 현재 상태와 제2 감시부(233)로부터 제공되는 제2 현재 상태는 동일한 시점에 동일한 플레이어 캐릭터에 대한 것이지만, 포함된 내용이 서로 다를 수 있다.
일 예로, 제1 감시부(213)에서 플레이어 캐릭터를 기준으로 하는 제1 감시 거리와 제2 감시부(233)에서 플레이어 캐릭터를 기준으로 하는 제2 감시 거리는 서로 다를 수 있다. 제1 감시 거리와 제2 감시 거리는 관리자에 의해 설정 가능하며, 동일하거나 서로 다를 수 있다. 로컬 로딩 모델에서 로딩 거리가 짧을수록 유리한 점을 고려하여, 제1 감시 거리는 제2 감시 거리 이하로 결정되는 것이 좋다.
제2 학습부(235)는 현재 상태를 분석하고, 플레이어 캐릭터와 오브젝트 간에 상호 작용이 발생되었는지 파악할 수 있다.
제2 학습부(235)는 설정 틱 후에 각 영역에서 상호 작용이 발생할 가능도를 추정할 수 있다.
제2 학습부(235)의 동작은 다음의 수학식 2로 표현될 수 있다.
수학식 2의 함수 fglobal은 θglobal을 모델 파리미터로 갖는 기계 학습 모델로, 인공 신경망, 통계 모델 등이 적용될 수 있다.
모델 입력은 현재 상태(x)일 수 있다. 다시 말해, 제2 학습부(235)의 입력값은 현재 상태(x)일 수 있으며, 해당 현재 상태(x)는 제2 감시부(233) 또는 제2 수집부(231)에 의해 획득될 수 있다. M은 게임 월드를 나눈 부분 영역의 개수일 수 있다.
제2 학습부(235)의 출력은 각 부분 영역 a에 대한 상호 작용 가능도이며, {p1, p2,..., pM}으로 표시될 수 있다. 이때, 모든 부분 영역에 대한 상호 작용 가능도의 합은 1일 수 있다.
도 15의 (a)는 전체 게임 월드를 25개의 부분 영역 1~25로 구분한 모델을 나타낸다. 도 15의 (b)는 각 부분 영역에 대한 상호 작용 가능도 p1~p25를 나타낸다.
플레이어 캐릭터의 현재 상태에 따라 부분 영역 모두에 대한 상호 작용 가능도를 산출하는 것은 언뜻 보면 무모해보일 수 있다. 그러나, 모든 부분 영역에 대한 상호 작용 가능도의 도출은 제2 학습 유니트(230)에 의해 의미를 가질 수 있다.
도 16 내지 도 20은 제2 학습 유니트(230)의 학습 데이터 수집 과정을 나타낸 개략도이다. 도 16 내지 도 20에서 획득되는 학습 데이터는 글로벌 로딩 모델과 관련된 제2 학습 데이터로 분류될 수 있다.
본 예시는 4 TICK 동안의 플레이에 대한 것일 수 있다. 학습 데이터 수집을 위해 플레이할 때에는 로딩 거리를 최대한 높여 가급적 많은 오브젝트가 로딩되도록 할 수 있다. 이점은 로컬 로딩 모델의 학습과 유사하다. 학습된 모델을 이용하여 플레이할 때에는 앞으로 2 TICK 이내에 상호 작용이 일어날 가능도가 영역별로 추정될 수 있다. 각 부분 영역별 가능도 비율에 맞추어 해당 영역의 오브젝트는 미리 랜덤 로딩될 수 있다.
로딩 정책과 언로딩 정책은 로컬 로딩 모델과 유사할 수 있다. 즉, 로딩 거리 내에 포함된 모든 오브젝트를 로딩하는 것으로 로딩 정책이 정해질 수 있다. 어떤 오브젝트가 3TICK 동안 로딩 거리 내에 들어오지도 않고 상호 작용하지도 않으면 언로딩하는 것으로 언로딩 정책이 정해질 수 있다.
도 16과 같이, 좌상의 부분 영역 1, 우상의 부분 영역 2, 좌하의 부분 영역 3, 우하의 부분 영역 4가 배치된 상태를 가정한다.
부분 영역 1에는 오브젝트 1과 오브젝트 2가 배치된 상태이고, 부분 영역 2에는 오브젝트 3이 배치된 상태이다. 부분 영역 3에는 오브젝트 4가 배치된 상태이다. 부분 영역 4에는 오브젝트 5가 배치된 상태이다.
도 16은 TICK 1을 나타낸다.
플레이어 캐릭터는 부분 영역 4에 위치하고 있으며, 4개의 부분 영역 1, 2, 3, 4가 형성하는 커다란 사각형 지역의 중심을 바라보고 있는 상태이다. TICK 1에서는 오브젝트와의 상호 작용이 발생되지 않고 있다.
캐릭터 c 주변에 존재하는 것으로 설정된 오브젝트는 제2 수집부(231)에 의해 수집될 수 있다.
제2 감시부(233)는 플레이어 캐릭터의 시야 범위 또는 플레이어의 시야 범위 등 현재 상태를 실시간으로 감시할 수 있다. 제2 감시부(233)의 감시 결과는 제2 수집부(231) 및 제2 학습부(235)로 전달될 수 있다.
제2 수집부(231)는 기파악된 오브젝트가 포함된 TICK 데이터에 현재 상태를 추가하여 저장할 수 있다.
제2 학습부(235)는 제2 감시부(233)로부터 전달받은 현재 상태와 제2 수집부(231)로부터 전달받은 오브젝트를 이용해서, 플레이어에 대한 오브젝트의 상호 작용 여부를 판단할 수 있다.
플레이어가 오브젝트 1, 2, 3, 4, 5를 바라보지 않거나 게임 룰에 의해 각 오브젝트가 사용자에게 설정 영향을 주지 않는 도 16의 경우, 제2 학습부(235)는 오브젝트 1, 2, 3, 4, 5와 플레이어(플레이어 캐릭터 포함) 간의 상호 작용이 없는 상태로 판단할 수 있다.
이 경우, 각 부분 영역에 대한 상호 작용 가능도는 모두 0이다.
도 17은 TICK 2를 나타낸다.
TICK 2에서 플레이어 캐릭터가 부분 영역 1을 향해 이동하면서, 오브젝트 1 및 2와 상호 작용이 발생된다. 제2 학습부(235)는 특정 TICK에서 상호 작용이 발생되면, 상호 작용이 발생된 현재 TICK을 미래의 2 TICK 범위 내로 하는 이전 틱(TICK) 데이터에 현재의 특정 TICK에서 상호 작용이 발생된 부분 영역별 오브젝트의 개수를 기록할 수 있다. 제2 학습부(235)는 부분 영역별 오브젝트의 개수가 기록된 룩업 테이블에 해당하는 학습 데이터 세트를 생성할 수 있다. 다른 관점에서 살펴보면, 현재 틱에서 상호 작용이 발생되면, 제2 학습부(235)에 의해 현재 틱을 제외하고 이전 2틱에 대해서 히스토그램이 갱신되는 것으로 파악해도 무방하다.
도 17의 경우, TICK 2를 장래의 2 TICK 범위 내로 하는 이전 틱이 TICK 1뿐이다. 제2 학습부(235)는 TICK 1의 틱 데이터에 포함된 부분 영역 1 항목에 플레이어와 상호 작용한 오브젝트의 개수 2를 기록하거나 설정할 수 있다.
도 18은 TICK 3을 나타낸다.
TICK 3에서 플레이어 캐릭터가 부분 영역 4를 향해 돌아보면서, 오브젝트 5와 상호 작용이 발생된다. 이때, TICK 3을 미래의 2 TICK 범위 내로 하는 이전 틱은 TICK 1 및 TICK 2이다. 제2 학습부(235)는 TICK 1 및 TICK 2의 틱 데이터에 포함된 부분 영역 4 항목에 플레이어와 상호 작용한 오브젝트의 개수 1을 기록/설정할 수 있다.
도 19는 TICK 4를 나타낸다.
TICK 4에서 플레이어 캐릭터가 부분 영역 3을 향해 이동하면서, 오브젝트 4와 상호 작용이 발생되고 있다. 여기서, TICK 4를 장래의 2 TICK 범위 내로 하는 이전 틱은 TICK 2 및 TICK 3이다. 제2 학습부(235)는 TICK 2 및 TICK 3의 틱 데이터에 포함된 부분 영역 3 항목에 플레이어와 상호 작용한 오브젝트의 개수 1을 기록/설정할 수 있다.
도 20은 글로벌 로딩 모델에서 최종 학습 데이터 세트를 선별하는 예시를 나타낸 개략도이다.
설정 틱수(예를 들어 2틱)만큼의 미래 TICK에서 상호 작용이 발생될 확률을 계산하는 것이므로, 제1 학습부(215)는 수집한 학습 데이터 세트 중 마지막 2개틱은 버릴 수 있다. 그 결과, TICK 1, TICK 2, TICK 3, TICK 4 중에서 TICK 3과 TICK 4가 삭제되고, TICK 1과 TICK 2의 히스토그램만 남게 된다. 제2 학습부(235)는 히스토그램을 부분 영역별 총합으로 나누어 빈도로 변환할수 있다.
일 예로, TICK 1의 경우 부분 영역 1의 '2'과 부분 영역 4의 '1'을 합한 3으로 부분 영역 1과 부분 영역 4를 각각 나눈 값이 각 부분의 빈도 0.66(0.66666...을 0.66으로 처리), 0.34(0.33333...을 0.34로 처리)가 될 수 있다.
도 21 내지 도 25는 로딩 수단(100)의 동작을 나타낸 개략도이다.
로딩 수단(100)의 제1 로딩 유니트(110)는 제1 학습 유니트(210)로부터 제공된 최종 학습 데이터 세트(제1 학습 데이터)를 이용해서 로컬 로딩을 수행할 수 있다.
로딩 수단(100)의 제2 로딩 유니트(130)는 제2 학습 유니트(230)로부터 제공된 최종 학습 데이터 세트(제2 학습 데이터)를 이용해서 글로벌 로딩을 수행할 수 있다.
로딩 수단(100)의 제3 로딩 유니트(150)는 로딩된 상태를 항상 유지해야 하는 플레이어 캐릭터의 소환수, 펫, 플레이어 캐릭터 외형, 복장, 장비 등의 오브젝트를 로딩할 수 있다. 제3 로딩 유니트(150)는 로컬 로딩 유무와 글로벌 로딩 유무에 상관없이 게임 실행시 기설정 오브젝트를 기본 로딩하고, 특정 오브젝트의 로딩 상태를 지속적으로 유지시킬 수 있다.
제2 로딩 유니트(130)는 제2 획득부(131) 및 제2 로딩부(133)를 포함할 수 있다.
제2 획득부(131)는 플레이어 캐릭터의 현재 상태를 획득할 수 있다.
제2 로딩부(133)는 제2 획득부(131)에서 획득한 현재 상태에 따라 상호 작용할 가능성이 높은 부분 영역의 오브젝트를 로딩하는 제2 로딩부(133)를 포함할 수 있다. 제2 로딩부(133)는 예측된 특정 오브젝트를 제공 수단(10)의 구현 유니트(19)로부터 획득하고, 비디오 메로리(70)에 로딩시킬 수 있다.
제2 로딩부(133)는 제2 학습부(235)로부터 출력된 제2 학습 데이터에 따라 오브젝트의 로딩을 수행할 수 있다.
도 21은 로딩 중의 TICK 1을 나타낸다.
제2 로딩부(133)에서 활용하는 제2 학습 데이터는 각 부분 영역별 상호 작용 개수가 상호 작용 빈도로 변환된 상태일 수 있다.
제2 획득부(131)에 획득된 현재 상태는 제2 로딩부(133)로 제공될 수 있다. 제2 로딩부(133)는 룩업 테이블에 해당하는 제2 학습 데이터에서 제2 획득부(131)로부터 제공받은 현재 상태와 매칭되는 틱 데이터를 검출할 수 있다.
현재 상태와 매칭되는 틱 데이터가 검출되면, 제2 획득부(131)는 해당 TICK을 시작점으로 글로벌 로딩을 수행할 수 있다.
도 21은 현재 상태와 매칭되는 틱 데이터가 TICK 1인 상태를 가정한다.
제2 로딩부(133)는 제2 학습 데이터 중 TICK 1의 상호 작용 빈도에 따라 부분 영역 1에 기학습값 0.66, 즉 66%, 부분 영역 4에 기학습값 0.34, 즉 34%를 설정할 수 있다.
상호 작용 빈도가 높은 각 부분 영역에 복수의 오브젝트가 포함될 때, 해당 오브젝트를 모두 로딩하면 서버 또는 단말기에 과부하가 걸릴 수 있다.
과부하를 방지하기 위해, 제2 로딩부(133)는 매 틱(TICK)마다 설정 개수의 랜덤 오브젝트를 로딩할 수 있다. 일 예로, 제2 로딩부(133)는 매 틱마다 오직 1개의 랜덤 오브젝트를 로딩할 수 있다. 로딩 대상이 되는 오브젝트가 복수인 경우, 각 오브젝트에 할당된 빈도에 비례적으로 1개의 오브젝트가 선택될 수 있다.
이때, 각 오브젝트에 할당된 빈도는 해당 오브젝트가 포함된 부분 영역에 할당된 영역 빈도를 해당 부분 영역에 포함된 오브젝트의 개수로 나눈 값일 수 있다. 일 예로, 도 21의 경우, 66%가 할당된 부분 영역 1에는 오브젝트 1 및 오브젝트 2가 포함되어 있다. 이때, 제2 로딩부(133)는 66%를 부분 영역 2에 포함된 오브젝트의 개수 2로 나눈 33%를 오브젝트 1 및 오브젝트 2 각각에 할당할 수 있다.
부분 영역 4에는 오브젝트 5 하나만 존재하므로, 오브젝트 5에는 부분 영역 4에 할당된 34%가 그대로 할당될 수 있다. 그외 다른 부분 영역에 존재하는 오브젝트 3과 오브젝트 4의 빈도는 0%이다. 모든 오브젝트의 빈도를 합산하면 100%가 되므로, 제2 로딩부(133)는 해당 틱에서 설정 개수, 예를 들어 1개의 랜덤 오브젝트를 반드시 로딩할 수 있다. 이때, 제2 로딩부(133)의 로딩 대상이 되는 오브젝트는 각 오브젝트에 할당된 빈도(확률)에 따라 결정될 수 있다.
정리하면, 제2 로딩 유니트(130)는 설정 시간 단위(본 명세서에서는 TICK으로 설명됨)마다 로딩 가능한 오브젝트의 개수를 설정 개수로 제한할 수 있다. 제2 로딩 유니트(130)는 특정 부분 영역에 부여된 가능도를 특정 부분 영역에 존재하는 오브젝트의 개수에 따라 분할할 수 있다. 제2 로딩 유니트(130)는 분할된 가능도를 오브젝트별로 재부여할 수 있다. 제2 로딩 유니트(130)는 오브젝트에 재부여된 가능도를 이용해서 설정 개수의 오브젝트를 추첨하고 로딩할 수 있다.
도 22는 TICK 1에서 오브젝트 1이 로딩된 상태를 나타낸다.
도 22는 상호 작용이 예상되는 오브젝트 1, 오브젝트 2, 오브젝트 5 중 33%의 채택 확률을 갖는 오브젝트 1이 선택된 상태를 나타낸다. 제2 로딩부(133)는 각 오브젝트에 대한 확률 추첨이 완료되면, 당첨된 특정 오브젝트에 해당하는 오브젝트 1을 비디오 메로리(70)에 로딩시킬 수 있다.
도 23은 로딩 중의 TICK 2를 나타낸다.
부분 영역 1, 2, 3, 4는 협곡을 나타낼 수 있다. 협곡 내에서 사용자의 행동 패턴 분석 결과, 부분 영역 4로 들어선 플레이어 캐릭터는 사용자에 의해 부분 영역 1로 이동하는 패턴을 높은 확률로 보일 수 있다. 이러한 행동 패턴은 제2 학습부(235)에 의해 파악되고, 파악된 행동 패턴이 룩업 테이블에 해당하는 최종 학습 데이터 세트 형식으로 기록될 수 있다.
TICK 2에서 플레이어 캐릭터는 사용자의 일반적인 행동 패턴에 따라 부분 영역 1을 향해 전진할 수 있다. 부분 영역 1을 향해 움직이는 플레이어 캐릭터의 현재 상태는 제2 획득부(131)에 의해 획득될 수 있다.
TICK 2 동안 플레이어 캐릭터는 부분 영역 1에 존재하는 오브젝트 1 및 오브젝트 2와 상호 작용할 수 있다.
오브젝트 1은 제2 로딩부(133)에 의해 이미 로딩된 상태이므로, 추가 로딩이 필요없다. 오브젝트 2에 대한 추가 로딩만 요구되므로 TICK 2에서 요구하는 전체 오브젝트의 로딩 시간이 단축될 수 있다.
본 발명에서 제1 로딩 유니트(110)와 제2 로딩 유니트(130)는 동시에 병렬적으로 동작할 수 있다. 다시 말해, 특정 플레이어 캐릭터에 대한 로컬 로딩 모델과 글로벌 로딩 모델이 병행적으로 함께 적용될 수 있다.
따라서, 오브젝트 2에 대한 사전 로딩이 제1 로딩 유니트(110)에 의해 이미 수행된 상태일 수 있다. 경우에 따라, 동일한 오브젝트에 대한 로딩 시도가 제1 로딩 유니트(110) 및 제2 로딩 유니트(130)에 의해 중복적으로 이루어질 수 있다. 이때, 제1 로딩 유니트(110) 또는 제2 로딩 유니트(130)는 로딩하려는 오브젝트의 현재 로딩 여부를 파악하며, 현재 미로딩된 상태에서만 해당 오브젝트를 로딩할 수 있다.
제1 로딩 유니트(110) 또는 제2 로딩 유니트(130)는 로딩하려는 오브젝트가 현재 로딩되어 있는 것으로 파악되면, 해당 오브젝트에 대한 추가 로딩 작업을 미수행할 수 있다. 제1 로딩 유니트(110) 또는 제2 로딩 유니트(130)는 로딩하려는 오브젝트가 중복된 상태이면, 이미 로딩된 오브젝트의 잔존 유지 시간을 파악할 수 있다. 제1 로딩 유니트(110) 또는 제2 로딩 유니트(130)는 현재 로딩시 새롭게 부여될 신 유지 시간의 언로딩 시점이 잔존 유지 시간의 언로딩 시점보다 늦게 도래하면, 기로딩된 오브젝트의 로딩 유지 시간만 신 유지 시간으로 갱신할 수 있다. 다시 말해, 제1 로딩 유니트(110) 및 제2 로딩 유니트(130)에 의하면, 오브젝트 정보는 새롭게 로딩되지 않고, 유지 시간 정보만 새롭게 갱신될 수 있다.
도 24는 TICK 2에서 오브젝트 4가 로딩된 상태를 나타낸다.
장래의 TICK 3 또는 TICK 4의 상호 작용을 대비한 로딩이 제2 로딩부(133)에 의해 TICK 2 단계에서 수행될 수 있다. 제2 로딩부(133)는 제2 학습부(235)로부터 획득된 최종 학습 데이터 세트를 통해 각각 50%의 확률을 갖는 오브젝트 4, 오브젝트 5에 대해 추첨 루틴을 실행할 수 있다. 추첨 루틴의 실행 결과 오브젝트 4가 당첨되면, 제2 로딩부(133)는 오브젝트 4를 글로벌 로딩할 수 있다. 글로벌 로딩의 결과 오브젝트 4는 아직 상호 작용이 발생되지 않았음에도 불구하고 비디오 메로리(70)에 로딩될 수 있다.
도 25는 로딩 중의 TICK 4, TICK 5를 나타낸다.
TICK 4에서 오브젝트 5에 대한 상호 작용이 발생될 수 있다. 매 틱마다 최대 1개의 랜덤 오브젝트를 글로벌 로딩하는 제2 로딩부(133)로 인해, 오브젝트 5는 오브젝트 4와의 경쟁에서 탈락한 상태이다. 따라서, 오브젝트 5는 글로벌 로딩되지 않은 상태로 로컬 로딩에 의존해서 사전 로딩될 수 있다. 만약, 로컬 로딩조차 이루어지지 않는다면, TICK 4에 상호 작용하는 오브젝트 5는 해당 TICK 4에서 긴급하게 로딩되어야 한다. 본 발명에 따르면, 중복 가능성이 존재하는 로컬 로딩과 글로벌 로딩이 병행하여 수행되므로, 제1 학습부(215) 및 제2 학습부(235)의 학습 결과가 어느 정도 진행된 이후에는 만족할 만한 결과가 도출될 수 있다.
TICK 5에서 오브젝트 4에 대한 상호 작용이 발생될 수 있다. 오브젝트 4는 TICK 2에서 이미 글로벌 로딩된 상태이므로, 새롭게 로딩될 필요가 없다. 다만, 로컬 로딩부에 의해 TICK 3 또는 TICK 4에서 로컬 로딩된 상태라면, 유지 시간에 한해서 새롭게 갱신될 수 있다. 유지 시간이 새롭게 갱신된 오브젝트 4의 언로딩 시간은 그만큼 늦춰질 수 있다.
이상에서 살펴본 로컬 로딩 모델의 학습 방법을 정리하면 다음과 같다.
(1) 학습 데이터 수집을 위해 게임 플레이를 시작한다. 게임 플레이는 수동 또는 자동으로 수행되며, 게임 플레이와 함께 제1 수집부(211)의 데이터 수집이 개시된다.
(2) 매 TICK마다 다음의 작업이 수행된다.
제1 학습부(215)는 학습을 위해 미리 오브젝트에 대한 정보를 알고 있을 필요가 있다. 이 조건을 만족하기 위해 제1 수집부(211)는 최대 로딩 거리 이내에 아직 로드되지 않은 오브젝트가 존재하는지 확인하고, 해당 오브젝트를 로드할 수 있다. 제1 수집부(211)에 의해 로드된 오브젝트는 제1 학습부(215)에 의해 관심 오브젝트로 등록될 수 있다. 다시 말해, 제1 학습부(215)는 관심 오브젝트의 존재 사실을 알고 있는 상태일 수 있다.
제1 수집부(211)에 의해 현재 TICK 시점의 상태 정보(현재 상태)가 기록될 수 있다. 현재 상태는 제1 감시부(213)에 의해 획득되고 제1 수집부(211)로 전달될 수 있다. 제1 수집부(211) 또는 제1 학습부(215)는 관심 오브젝트들의 정보를 기록할 수 있다. 관심 오브젝트들의 정보에는 로드된 이후 플레이어 캐릭터와의 거리가 가장 가까웠던 TICK 인덱스(최근접 거리 TICK) 및 이때의 거리(최근접 거리)가 포함될 수 있다.
제공 수단(10) 또는 제1 학습부(215)에 의해 게임 플레이가 처리될 수 있다.
제1 감시부(213)는 게임 플레이의 처리 결과 플레이어와 상호 작용한 관심 오브젝트가 있는지 확인할 수 있다.
상호 작용한 오브젝트가 감지되면, 제1 학습부(215)는 해당 오브젝트의 최근접 거리를 TICK 시점의 학습 데이터 최적 로딩 거리로 갱신할 수 있다. 기존에 최적 로딩 거리가 갱신되어 있는 경우에 제1 학습부(215)는 더 긴 거리를 최적 로딩 거리로 취할 수 있다. 제1 학습부(215) 또는 제1 수집부(211)는 해당 오브젝트에 대한 학습 처리가 완료되면, 해당 오브젝트를 관심 오브젝트에서 제외할 수 있다.
제1 학습부(215)는 설정 TICK 동안 최대 로딩 거리 이내에 들어오지 않고 상호 작용하지도 않은 오브젝트가 존재하는지 확인하고, 해당 오브젝트를 언로드할 수 있다.
(3) 상기 (2)의 과정은 게임 플레이가 종료될까지 연속해서 수행될 수 있다.
(4) 제1 학습부(215)는 최적 로딩 거리가 탐색된 레코드들을 최종 학습 데이터로 선별할 수 있다.
(5) 제1 학습부(215)는 선별한 최종 학습 데이터를 이용하여 모델 파라미터를 최적화할 수 있다.
제1 학습부(215)에 의해 선별된 최종 학습 데이터 세트, 제1 학습부(215)에 의해 최적화된 모델 파라미터는 제1 로딩부(113)에 제공될 수 있다.
로컬 로딩 모델의 이용(테스트) 방법은 다음과 같다. 매 TICK마다 다음의 작업이 수행될 수 있다.
제1 로딩부(113)는 제1 학습부(215)에 의해 선별된 최종 학습 데이터 세트에 따라 로딩 거리를 결정할 수 있다.
일 예로, 제1 획득부(111)에 의해 현재 TICK 시점의 상태 정보(현재 상태) p가 획득되면, 제1 로딩부(113)는 현재 상태를 모델에 입력한 결과를 출력(추정한 최적 로딩 거리: )할 수 있다. 이때의 함수에 포함된 각종 파라미터는 제1 학습부(215)에 의해 최적화된 상태일 수 있다. 제1 로딩부(113)는 최적 로딩 거리에 기설정된 마진(rmargin)을 추가할 수 있다(). 제1 로딩부(113)는 마진이 추가된 최적 로딩 거리를 이용해서 오브젝트를 탐색하고 로딩할 수 있다. 최적 로딩 거리보다 약간이라도 짧게 추정될 경우 플레이에 악영향을 줄 수 있기 때문에, 마진이 추가되는 것이 좋다. 제1 로딩부(113)는 마진을 더한 로딩 거리가 최소 로딩 거리보다 짧다면 최소 로딩 거리 선택할 수 있다.
제1 로딩부(113)는 결정한 로딩 거리(r) 이내에 아직 로드되지 않은 오브젝트가 존재하는지 확인하고, 해당되는 오브젝트가 존재하면 로드할 수 있다.
제1 로딩부(113)는 오브젝트의 로드 작업을 수행하면서, 게임 플레이를 처리할 수 있다.
제1 로딩부(113)는 설정 TICK 동안 최대 로딩 거리 이내에 들어오지 않고 상호 작용하지도 않은 오브젝트가 존재하는지 확인하고, 확인된 오브젝트를 언로드할 수 있다.
글로벌 로딩 모델의 학습 방법을 정리하면 다음과 같다.
(1) 로딩 수단(100) 또는 제2 학습부(235)에 의해 학습 데이터 수집을 위한 게임 플레이가 시작될 수 있다.
(2) 게임 플레이가 시작되면, 제2 수집부(231)에 의한 자료 수집이 진행되고 매 TICK 마다 다음 작업이 수행될 수 있다.
제2 수집부(231)는 최대 로딩 거리 이내에 아직 로드되지 않은 오브젝트가 존재하는지 확인하고, 해당 오브젝트를 로드할 수 있다.
제2 수집부(231)는 제2 감시부(233)에 의해 파악된 현재 TICK 시점의 상태 정보(현재 상태)를 기록할 수 있다.
로딩 수단(100) 또는 제2 학습부(235)에 의해 게임 플레이가 처리될 수 있다.
제2 감시부(233)는 플레이어 캐릭터와와 상호 작용한 오브젝트가 있는지 확인할 수 있다. 설정 틱수 내의 최근 TICK에 해당하는 영역별 상호 작용 히스토그램이 제2 학습부(235)에 의해 갱신될 수 있다.
제2 학습부(235)는 일정 TICK 동안 최대 로딩 거리 이내에 들어오지 않고 상호 작용하지도 않은 오브젝트가 존재하는지 확인하고, 해당 오브젝트를 언로드할 수 있다.
(3) 상기 (2)의 과정은 게임 플레이가 종료될 때까지 지속적으로 반복 수행될 수 있다.
(4) 제2 학습부(235)는 설정 틱수 내의 TICK간 플레이 기록이 누적된 레코드들을 최종 학습 데이터로 선별할 수 있다. 제2 학습부(235)는 히스토그램을 영역별 총합으로 나누어 빈도로 변환할 수 있다.
(5) 제2 학습부(235)는 선별한 최종 학습 데이터를 이용하여 모델 파라미터를 최적화할 수 있다.
글로벌 로딩 모델에 따른 로딩 방법(테스트)을 정리하면 다음과 같다. 매 TICK 마다 다음 작업이 수행될 수 있다.
로딩 거리가 결정될 수 있다.
일 예로, 제2 획득부(131)에 의해 현재 TICK 시점의 상태 정보(현재 상태)가 입수되면, 제2 로딩부(133)는 현재 상태를 모델에 입력한 결과를 출력(영역별 상호 작용 가능도: )할 수 있다. 제2 로딩부(133)는 상호 작용 가능도에 따라 하나 이상의 오브젝트를 랜덤 로드할 수 있다. 각 영역별로 로드될 확률은 상호 작용 가능도를 따를 수 있다. 한 영역 내에 로드되지 않은 복수의 오브젝트가 있는 경우, 제2 로딩부(133)는 한 영역 내에 존재하는 오브젝트의 개수에 맞춰 로드 확률을 균등 분할할 수 있다.
제2 로딩부(133) 또는 제공 수단(10)은 게임 플레이를 처리할 수 있다.
제2 로딩부(133)는 설정 TICK 동안 최대 로딩 거리 이내에 들어오지 않고 상호 작용하지도 않은 오브젝트가 존재하는지 확인하고, 해당 오브젝트를 언로드할 수 있다.
본 발명의 비동기 로딩 방법은 다음과 같을 수 있다. 아래에서 설명된 비동기 로딩 방법의 주체는 로딩 유니트일 수 있다. 앞에서 언급한 바와 같이 로딩 유니트는 로컬 로딩과 글로벌 로딩을 병행해서 수행할 수 있다. 대체로, 글로벌 로딩의 탐색 범위는 로컬 로딩에서 사용되는 로딩 거리보다 길 수 있다.
로딩 유니트, 구체적으로 제1 획득부(111) 또는 제2 획득부(131)는 가상의 게임 월드 내에서 활동하는 플레이어 캐릭터의 현재 상태를 감시할 수 있다.
로딩 유니트, 구체적으로 제1 로딩부(113)는 플레이어 캐릭터의 현재 상태별로 오브젝트와 플레이어 캐릭터 간의 로딩 거리가 설정된 제1 룩업 테이블을 이용해서, 로컬 로딩을 수행할 수 있다. 로컬 로딩은 오브젝트와 플레이어 캐릭터 간의 상호 작용 이전에 수행될 수 있으며, 로컬 로딩은 제1 룩업 테이블에 설정된 로딩 거리 이내의 오브젝트를 로딩하는 것을 의미할 수 있다.
로딩 유니트, 구체적으로 제2 로딩부(133)는 플레이어 캐릭터의 현재 상태별로 게임 월드를 복수로 구분한 부분 영역에 오브젝트와 플레이어 캐릭터 간의 상호 작용 가능도가 설정된 제2 룩업 테이블을 이용해서, 글로벌 로딩을 수행할 수 있다. 글로벌 로딩은 오브젝트와 플레이어 캐릭터 간의 상호 작용 이전에 수행될 수 이으며, 글로벌 로딩은 가능도에 따라 추첨된 특정 부분 영역 내 오브젝트를 로딩하는 것을 의미할 수 있다.
로컬 로딩과 글로벌 로딩이 병행적으로 함께 수행되면, 특정 오브젝트가 중복해서 로딩될 가능성이 있다.
로딩 유니트는 상기 로컬 로딩과 상기 글로벌 로딩 중 어느 하나에 의해 제1 로딩될 오브젝트가 이미 나머지 하나에 의해 제2 로딩된 상태이면, 해당 오브젝트에 대한 제1 로딩을 미수행할 수 있다.
일 예로, 동일한 오브젝트에 대해 시간차를 두고 2회의 상호 작용이 발생될 수 있다. 제1 시점에서 글로벌 로딩을 통해 해당 오브젝트에 대한 상호 작용이 예측되고, 해당 오브젝트가 제2 로딩될 수 있다. 이때, 해당 오브젝트는 3틱 후에 언로딩되는 것으로 가정한다.
제1 시점으로부터 2틱 뒤의 제2 시점에서 로컬 로딩을 통해 해당 오브젝트에 대한 상호 작용이 예측되고, 해당 오브젝트가 제1 로딩될 수 있다. 본 실시예에 따르면, 자원 낭비의 방지를 위해 동일한 오브젝트에 대한 중복 로딩이 제한될 수 있다. 따라서, 로컬 로딩에 의한 제1 로딩은 바이패스(bypass), 즉 미수행될 수 있다.
그런데, 로컬 로딩은 3틱 후의 상호 작용을 대비한 것인데, 글로벌 로딩에서 3틱 후에 언로딩하는 정책에 따르면, 로컬 로딩 기준 1틱 후에 해당 오브젝트가 언로딩될 수 있다. 결국, 로컬 로딩을 통해 3틱 후의 상호 작용이 정상적으로 예측되더라도 언로딩 시점의 차이로 인해 로컬 로딩에 대한 정상적인 로딩이 이루어지지 않을 수 있다. 이처럼 로컬 로딩과 글로벌 로딩이 동시에 병행적으로 적용되는 경우 후순위 로딩을 고려해서 언로딩 시점이 연장되는 것이 좋다.
따라서, 로컬 로딩과 글로벌 로딩의 병행 수행으로 인한 오브젝트의 중복 로딩 문제가 발생된 경우, 중복 오브젝트에 대한 로딩은 미수행되고, 해당 오브젝트에 대한 로딩 시간만 새롭게 갱신되는 것이 좋다. 정리하면, 제1 로딩 자체는 미수행되더라도, 제1 로딩의 유지 시간 정보는 기존 로딩된 오브젝트에 대해 갱신될 수 있다.
도 26은 본 발명의 실시예에 따른, 컴퓨팅 장치를 나타내는 도면이다. 도 26의 컴퓨팅 장치(TN100)는 본 명세서에서 기술된 장치(예, 비동기 로딩 장치 등) 일 수 있다.
도 26의 실시예에서, 컴퓨팅 장치(TN100)는 적어도 하나의 프로세서(TN110), 송수신 장치(TN120), 및 메모리(TN130)를 포함할 수 있다. 또한, 컴퓨팅 장치(TN100)는 저장 장치(TN140), 입력 인터페이스 장치(TN150), 출력 인터페이스 장치(TN160) 등을 더 포함할 수 있다. 컴퓨팅 장치(TN100)에 포함된 구성 요소들은 버스(bus)(TN170)에 의해 연결되어 서로 통신을 수행할 수 있다.
프로세서(TN110)는 메모리(TN130) 및 저장 장치(TN140) 중에서 적어도 하나에 저장된 프로그램 명령(program command)을 실행할 수 있다. 프로세서(TN110)는 중앙 처리 장치(CPU: central processing unit), 그래픽 처리 장치(GPU: graphics processing unit), 또는 본 발명의 실시예에 따른 방법들이 수행되는 전용의 프로세서를 의미할 수 있다. 프로세서(TN110)는 본 발명의 실시예와 관련하여 기술된 절차, 기능, 및 방법 등을 구현하도록 구성될 수 있다. 프로세서(TN110)는 컴퓨팅 장치(TN100)의 각 구성 요소를 제어할 수 있다.
메모리(TN130) 및 저장 장치(TN140) 각각은 프로세서(TN110)의 동작과 관련된 다양한 정보를 저장할 수 있다. 메모리(TN130) 및 저장 장치(TN140) 각각은 휘발성 저장 매체 및 비휘발성 저장 매체 중에서 적어도 하나로 구성될 수 있다. 예를 들어, 메모리(TN130)는 읽기 전용 메모리(ROM: read only memory) 및 랜덤 액세스 메모리(RAM: random access memory) 중에서 적어도 하나로 구성될 수 있다.
송수신 장치(TN120)는 유선 신호 또는 무선 신호를 송신 또는 수신할 수 있다. 송수신 장치(TN120)는 네트워크에 연결되어 통신을 수행할 수 있다.
한편, 본 발명의 실시예는 지금까지 설명한 장치 및/또는 방법을 통해서만 구현되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있으며, 이러한 구현은 상술한 실시예의 기재로부터 본 발명이 속하는 기술 분야의 통상의 기술자라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 통상의 기술자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
10...제공 수단 11...학습 유니트
19...구현 유니트 70...비디오 메모리
90...디스플레이 100...로딩 수단
110...제1 로딩 유니트 111...제1 획득부
113...제1 로딩부 130...제2 로딩 유니트
131...제2 획득부 133...제2 로딩부
150...제3 로딩 유니트 210...제1 학습 유니트
211...제1 수집부 213...제1 감시부
215...제1 학습부 230...제2 학습 유니트
231...제2 수집부 233...제2 감시부
235...제2 학습부
19...구현 유니트 70...비디오 메모리
90...디스플레이 100...로딩 수단
110...제1 로딩 유니트 111...제1 획득부
113...제1 로딩부 130...제2 로딩 유니트
131...제2 획득부 133...제2 로딩부
150...제3 로딩 유니트 210...제1 학습 유니트
211...제1 수집부 213...제1 감시부
215...제1 학습부 230...제2 학습 유니트
231...제2 수집부 233...제2 감시부
235...제2 학습부
Claims (15)
- 가상의 게임 월드 내에서 플레이어 캐릭터와 장래에 상호 작용할 오브젝트를 예측하고, 예측된 오브젝트를 비디오 메모리에 적재 가능한 범위 내에서 미리 로딩하는 로딩 수단;을 포함하고,
상기 비디오 메모리에 적재된 상기 오브젝트는 디스플레이를 통해 표시되며,
상기 예측된 오브젝트를 미리 로딩하는 제1 로딩 유니트가 마련되고,
상기 제1 로딩 유니트는 상기 플레이어 캐릭터의 현재 상태를 입력받고, 상기 플레이어 캐릭터와 상기 오브젝트 간의 거리를 나타내는 로딩 거리를 출력하며,
상기 제1 로딩 유니트로부터 출력된 로딩 거리를 최적 로딩 거리로 정의할 때,
상기 제1 로딩 유니트는 상기 현재 상태에 따라 상기 최적 로딩 거리가 가변되는 로컬 로딩 모델을 사용하고,
상기 제1 로딩 유니트는 상기 최적 로딩 거리를 만족하는 로딩 거리를 갖는 오브젝트를 미리 로딩하며,
상기 제1 로딩 유니트는 최대 로딩 거리 범위 내에서 최소 로딩 거리 이상의 값을 상기 최적 로딩 거리로 출력하고,
상기 제1 로딩 유니트는 상기 최소 로딩 거리보다 로딩 거리가 짧은 오브젝트가 존재하면, 상기 오브젝트에 대한 로딩 거리를 상기 최소 로딩 거리로 처리하며,
상기 제1 로딩 유니트는 상기 최대 로딩 거리보다 로딩 거리가 긴 오브젝트가 존재하며, 상기 오브젝트에 대한 로딩 거리를 상기 최대 로딩 거리로 처리하는 비동기 로딩 장치.
- 제1항에 있어서,
상기 게임 월드를 형성하는 데이터가 저장된 제공 수단이 마련되고,
상기 제공 수단은 상기 데이터 중 상기 오브젝트를 상기 로딩 수단에 제공하며,
상기 제공 수단은 상기 게임 월드를 서비스하는 서버에 마련되며,
상기 비디오 메모리, 상기 디스플레이는 상기 플레이어 캐릭터를 조작하는 사용자의 단말기에 마련되고,
상기 로딩 수단은 상기 서버 또는 상기 단말기에 마련되는 비동기 로딩 장치.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 가상의 게임 월드 내에서 플레이어 캐릭터와 장래에 상호 작용할 오브젝트를 예측하고, 예측된 오브젝트를 비디오 메모리에 적재 가능한 범위 내에서 미리 로딩하는 로딩 수단;을 포함하고,
상기 예측된 오브젝트를 미리 로딩하는 제2 로딩 유니트가 마련되고,
상기 제2 로딩 유니트는 상기 게임 월드를 복수의 부분 영역으로 구분하며,
상기 제2 로딩 유니트는 상기 플레이어 캐릭터의 현재 상태를 입력받고, 상기 부분 영역에 대한 상호 작용이 발생할 가능도를 출력하며,
상기 제2 로딩 유니트는 상기 현재 상태에 따라 상기 가능도가 달라지는 글로벌 로딩 모델을 사용하고,
상기 제2 로딩 유니트는 상기 가능도에 기초해서 상기 오브젝트를 미리 로딩하며,
상기 제2 로딩 유니트는 설정 시간 단위마다 로딩 가능한 오브젝트의 개수를 설정 개수로 제한하고,
상기 제2 로딩 유니트는 특정 부분 영역에 부여된 상기 가능도를 상기 특정 부분 영역에 존재하는 오브젝트의 개수에 따라 분할하고,
상기 제2 로딩 유니트는 분할된 상기 가능도를 상기 오브젝트별로 재부여하며,
상기 제2 로딩 유니트는 상기 오브젝트에 재부여된 가능도를 이용해서 상기 설정 개수의 오브젝트를 추첨하고 로딩하는 비동기 로딩 장치.
- 제1항에 있어서,
상기 예측된 오브젝트를 미리 로딩하는 제2 로딩 유니트가 마련되고,
상기 제2 로딩 유니트는 상기 게임 월드를 복수의 부분 영역으로 구분하며,
상기 제2 로딩 유니트는 기획득된 제2 학습 데이터를 참조해서 상기 플레이어 캐릭터의 현재 상태에 대응되는 각 부분 영역별 상호 작용 가능도를 추출하고,
상기 제2 로딩 유니트는 상기 가능도에 따라 각 부분 영역에 존재하는 오브젝트를 설정 개수만큼 추첨하고 로딩하는 비동기 로딩 장치.
- 삭제
- 가상의 게임 월드 내에서, 사전 로딩을 위해 예측된 오브젝트의 실제 상호 작용에 대한 매칭 정확도를 개선하는 학습 유니트;를 포함하고,
상기 학습 유니트는 설정 범위 내에서 가장 짧은 로딩 거리를 추정하거나, 게임 월드를 구분하는 복수의 부분 영역별로 상호 작용이 발생할 가능도를 추정하며,
제1 학습부가 구비된 제1 학습 유니트가 마련되고,
상기 제1 학습부는 플레이어 캐릭터의 현재 상태와 상기 오브젝트의 상호 작용 여부를 설정 시간 단위에 해당하는 틱(TICK)마다 판단하고,
상기 제1 학습부는 특정 틱에서 상기 상호 작용이 발생되면, 설정 틱수 이전부터 상기 특정 틱까지의 구간을 탐색하고,
상기 제1 학습부는 상기 탐색을 통해 상기 상호 작용이 발생된 특정 오브젝트와의 로딩 거리가 최단인 틱을 선택하며,
상기 제1 학습부는 상기 선택된 틱에 상기 최단의 로딩 거리를 설정하고,
상기 제1 학습부는 상기 선택된 틱에 설정된 최단 로딩 거리가 복수이면, 복수의 최단 로딩 거리 중 가장 긴 최단 로딩 거리를 상기 선택된 틱에 설정하는 비동기 로딩 장치.
- 제13항에 있어서,
제2 수집부, 제2 학습부가 구비된 제2 학습 유니트가 마련되고,
상기 제2 수집부는 상기 플레이어 캐릭터의 현재 상태 및 추가 수집된 상기 플레이어 캐릭터 주변의 오브젝트를 설정 시간 단위에 해당하는 틱단위로 저장하고,
상기 제2 학습부는 상기 현재 상태를 분석하고, 상기 플레이어 캐릭터와 상기 오브젝트 간에 상기 상호 작용이 발생되었는지 파악하며,
상기 제2 학습부는 특정 틱에서 상기 상호 작용이 발생되면, 상기 상호 작용이 발생된 상기 특정 틱을 미래의 설정 틱수 범위 내로 하는 이전 틱에 상기 상호 작용이 발생된 부분 영역별 오브젝트의 개수를 기록하고, 빈도로 변환하는 비동기 로딩 장치.
- 비동기 로딩 장치에 의해 수행되는 비동기 로딩 방법에 있어서,
가상의 게임 월드 내에서 활동하는 플레이어 캐릭터의 현재 상태를 감시하는 단계;
상기 플레이어 캐릭터의 현재 상태별로 오브젝트와 상기 플레이어 캐릭터 간의 로딩 거리가 설정된 제1 룩업 테이블을 이용해서, 상기 오브젝트와 상기 플레이어 캐릭터 간의 상호 작용 이전에 상기 제1 룩업 테이블에 설정된 로딩 거리 이내의 오브젝트를 로딩하는 로컬 로딩을 수행하는 단계;
상기 플레이어 캐릭터의 현재 상태별로 상기 게임 월드를 복수로 구분한 부분 영역에 상기 오브젝트와 상기 플레이어 캐릭터 간의 상호 작용 가능도가 설정된 제2 룩업 테이블을 이용해서, 상기 상호 작용 이전에 상기 가능도에 따라 추첨된 특정 부분 영역 내 오브젝트를 로딩하는 글로벌 로딩을 수행하는 단계;
상기 로컬 로딩과 상기 글로벌 로딩이 병행적으로 함께 수행되는 단계;
상기 로컬 로딩과 상기 글로벌 로딩 중 어느 하나에 의해 제1 로딩될 오브젝트가 이미 나머지 하나에 의해 제2 로딩된 상태이면, 해당 오브젝트에 대한 상기 제1 로딩을 미수행하며, 해당 오브젝트에 대한 로딩 유지 시간만 상기 제1 로딩에 따라 새롭게 갱신하는 단계;를 포함하는 비동기 로딩 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190061000A KR102257891B1 (ko) | 2019-05-24 | 2019-05-24 | 비동기 로딩 장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190061000A KR102257891B1 (ko) | 2019-05-24 | 2019-05-24 | 비동기 로딩 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200134867A KR20200134867A (ko) | 2020-12-02 |
KR102257891B1 true KR102257891B1 (ko) | 2021-05-28 |
Family
ID=73791721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190061000A KR102257891B1 (ko) | 2019-05-24 | 2019-05-24 | 비동기 로딩 장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102257891B1 (ko) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001079263A (ja) * | 1999-09-16 | 2001-03-27 | Sega Corp | ゲーム装置、データ処理方法、及び情報記録媒体 |
JP2015509010A (ja) * | 2011-12-09 | 2015-03-26 | エンパイア テクノロジー ディベロップメント エルエルシー | ゲームコンテンツデータの予測的なキャッシング |
JP2017056038A (ja) * | 2015-09-17 | 2017-03-23 | 株式会社Cygames | プレイヤの意図を予測してレンダリングするためのリソース配分を決定するプログラム、電子装置、システム及び方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2002342040A1 (en) | 2001-10-10 | 2003-04-22 | Sony Computer Entertainment America Inc. | Dynamically loaded game software for smooth play. |
-
2019
- 2019-05-24 KR KR1020190061000A patent/KR102257891B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001079263A (ja) * | 1999-09-16 | 2001-03-27 | Sega Corp | ゲーム装置、データ処理方法、及び情報記録媒体 |
JP2015509010A (ja) * | 2011-12-09 | 2015-03-26 | エンパイア テクノロジー ディベロップメント エルエルシー | ゲームコンテンツデータの予測的なキャッシング |
JP2017056038A (ja) * | 2015-09-17 | 2017-03-23 | 株式会社Cygames | プレイヤの意図を予測してレンダリングするためのリソース配分を決定するプログラム、電子装置、システム及び方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20200134867A (ko) | 2020-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9457270B2 (en) | Level server system for peer-to-peer cooperative games | |
US9656169B2 (en) | Characterization of player type by visual attributes | |
KR20210028728A (ko) | 가상 환경에서 가상 객체를 스케줄링하기 위한 방법, 장치 및 디바이스 | |
CN108463273A (zh) | 基于游戏者的移动历史来进行非游戏者角色的路径寻找的游戏系统等 | |
US20080045335A1 (en) | Replacing a Departing Player in a Game with a Waiting Player | |
US11110352B2 (en) | Object moving method and apparatus, storage medium, and electronic apparatus | |
WO2022156616A1 (zh) | 虚拟对象的控制方法、装置、终端、存储介质及程序产品 | |
CN112807681A (zh) | 游戏控制方法、装置、电子设备及存储介质 | |
US11992762B2 (en) | Server-based generation of a help map in a video game | |
WO2023138192A1 (zh) | 控制虚拟对象拾取虚拟道具的方法、终端及存储介质 | |
CN114225399A (zh) | 游戏中场景的切换方法、装置、电子设备及可读存储介质 | |
US11628365B2 (en) | Information processing system, storage medium, information processing apparatus and information processing method | |
JP6949525B2 (ja) | ゲーム制御方法、および、ゲームプログラム | |
CN113082694B (zh) | 游戏模式切换方法、装置及电子设备 | |
CN113856200A (zh) | 一种画面显示方法、装置、电子设备及可读存储介质 | |
US20240001240A1 (en) | Live gameplay updates | |
KR102257891B1 (ko) | 비동기 로딩 장치 및 방법 | |
CN110290844B (zh) | 游戏系统、游戏系统的控制方法以及非易失性记录介质 | |
JP7349517B2 (ja) | ゲームを提供するためのプログラム、システム、及び方法 | |
US20230025389A1 (en) | Route generation system within a virtual environment of a game application | |
CN113018861A (zh) | 虚拟角色显示方法、装置、计算机设备和存储介质 | |
CN111265871A (zh) | 虚拟对象的控制方法及装置、设备、存储介质 | |
JP7167277B2 (ja) | プログラム、情報処理装置、及び制御方法 | |
WO2024067168A1 (zh) | 基于社交场景的消息显示方法、装置、设备、介质及产品 | |
US20240316458A1 (en) | Information display |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |