KR20210021309A - 소프트웨어 개발에서 어드레싱 가능 자산들 - Google Patents

소프트웨어 개발에서 어드레싱 가능 자산들 Download PDF

Info

Publication number
KR20210021309A
KR20210021309A KR1020207035998A KR20207035998A KR20210021309A KR 20210021309 A KR20210021309 A KR 20210021309A KR 1020207035998 A KR1020207035998 A KR 1020207035998A KR 20207035998 A KR20207035998 A KR 20207035998A KR 20210021309 A KR20210021309 A KR 20210021309A
Authority
KR
South Korea
Prior art keywords
asset
data
location
application
address
Prior art date
Application number
KR1020207035998A
Other languages
English (en)
Other versions
KR102488926B1 (ko
Inventor
조아킴 크리스토프 안테
스테판 조셉 팔머
폴 에밀 버슬렘
윌리엄 데이비드 램서
라이언 칼타비아노
조셉 프랭클린 쉐인버그
Original Assignee
유니티 아이피알 에이피에스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 유니티 아이피알 에이피에스 filed Critical 유니티 아이피알 에이피에스
Publication of KR20210021309A publication Critical patent/KR20210021309A/ko
Application granted granted Critical
Publication of KR102488926B1 publication Critical patent/KR102488926B1/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • A63F13/49Saving the game status; Pausing or ending the game
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/77Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Abstract

게임 자산 위치들을 추적하기 위한 방법이 개시된다. 컨텐츠는 제1 자산을 이용하여 애플리케이션에 대하여 생성된다. 제1 자산은 자산과 연관된 컨텐츠의 적어도 일부를 설명하는 자산 데이터를 포함한다. 자산 데이터는 하나 이상의 메모리들 내의 위치 내의 하나 이상의 파일들 내에 배치된다. 애플리케이션과 연관된 카탈로그는 서버 상에 생성된다. 카탈로그 엔트리는 제1 자산에 대하여 생성된다. 카탈로그 엔트리는 제1 자산을 고유하게 식별하는 어드레스를 포함한다. 요청은 제1 자산과 연관된 자산 데이터를 위한 애플리케이션으로부터 수신되고, 요청은 어드레스를 포함한다. 어드레스 및 카탈로그는 어드레스와 연관된 위치 데이터를 결정하기 위하여 이용된다. 결정된 위치 데이터는 결정된 위치에서의 자산 데이터를 취출하기 위하여 이용된다. 취출된 자산 데이터는 애플리케이션으로 반환된다.

Description

소프트웨어 개발에서 어드레싱 가능 자산들
관련 출원들에 대한 상호 참조
이 출원은 "SYSTEM AND METHOD FOR ADDRESSABLE ASSETS IN SOFTWARE DEVELOPMENT"라는 명칭으로 2018년 5월 14일자로 출원된 미국 가출원 제62/671,244호의 이익을 주장하고, 이 미국 가출원은 그 전체적으로 본원에 참조로 편입된다.
본 개시내용은 게임들 및 다른 애플리케이션들에서의 가상 자산(virtual asset)들에 대한 데이터의 추적을 관리할 시의 이용을 위한 툴(tool)들에 관한 것이다.
비디오 게임 제작의 세계에서는, 게임들을 설계하고, 게임들을 구축(build)하고, 게임들을 전개(deploy)하는 것을 포함하는 게임 제작의 주요한 프로세스들을 통해 제작자들을 안내하는 많은 툴들이 있다. 많은 툴들은 초보자 컴퓨터 프로그래머들(및 비-컴퓨터 프로그래머들)이 프로세스들 내의 단계들의 일부를 수행하는 것을 허용한다. 그러나, 전개 프로세스는 게임 또는 다른 애플리케이션을 위한 (예컨대, 캐릭터(character)들, 배경 객체들, 무기들, 특수한 효과들 등을 포함하는) 디지털 자산들에 대한 데이터를 패키징하고 추적하는 양태에 이르게 되면, 여전히 상당히 어렵다. 이것은 부분적으로, 게임이 전개 타겟(deployment target)들로서 가질 수 있는 큰 수의 오퍼레이팅 시스템들 및 디바이스들에 기인한다.
예를 들어, 오퍼레이팅 시스템들 및 디바이스들은 디지털 자산들을 이용하기 위한 상이한 포맷팅 요건들을 종종 가진다. 또한, 고품질 게임들은 전형적으로, 디바이스 메모리 및 다운로드 제한들이 쟁점들이 될 수 있는 모바일 게임(mobile game)들에 대하여 문제가 되는 큰 수의 가상 자산들을 가진다. 또한, 대부분의 게임들은 새로운 가상 자산들로 (예컨대, 상이한 게임 모드들을 추가하거나 게임 레벨들을 추가하여) 먼저 배포된 후에 진화하여, 가상 자산들 및 연관된 데이터의 추적을 시간 경과에 따라 점점 더 복잡하게 한다.
게임 개발자를 위하여, 게임 시간에서 효율적인 로딩을 허용하는 방식으로 게임을 위한 디지털 자산들을 구조화하는 것은 어렵다. 하나의 해결책은 디지털 자산들을 필요할 때(예컨대, 청크(chunk) 내의 자산이 필요할 때)에 다운로딩되는 청크들로 분할하는 것이다. 디지털 자산들의 청크들을 이용할 때의 제한은 그 복잡도를 이해하고 관리하기 위하여 게임 개발자로부터 요구된 높은 레벨의 전문성이다. 자산들의 청크를 이용하는 것은 청크 및 그 종속성들을 구축하고, 로딩하고, 언로딩하고, 관리하기 위한 코드를 기입하는 것을 종종 수반한다. 증분식 구축들(예컨대, 새로운 자산이 게임에 추가될 때에 청크를 오직 업데이팅함)은 신뢰성 있게 작동하지 않아서, 자산이 업데이팅될 때마다 청크 내의 모든 자산들의 재구축을 종종 강제하고, 이것은 게임에서의 자산들의 수에 비례하여 증가하는 잠재적으로 막대한 시간 지출로 귀착된다. 이것은 게임의 복잡도가 시간 경과에 따라 증가할 때에 코드의 리팩토링(refactoring)을 야기할 수 있다.
본 개시내용의 예시적인 실시예들의 특징들 및 장점들은 첨부된 도면들과 함께 취해진 다음의 상세한 설명으로부터 명백해질 것이고:
도 1은 하나의 실시예에 따라, 어드레싱 가능 자산 시스템을 예시하는 개략도이고;
도 2는 하나의 실시예에 따라, 어드레싱 가능 자산 시스템을 이용하는 개발 사이클을 예시하는 개략도이고;
도 3은 하나의 실시예에 따라, 어드레싱 가능 자산 시스템을 이용하는 컨텐츠 생성 프로세스의 플로우차트이고;
도 4는 하나의 실시예에 따라, 어드레싱 가능 자산 시스템을 이용하는 구축 프로세스의 플로우차트이고;
도 5는 하나의 실시예에 따라, 어드레싱 가능 자산 시스템을 이용하는 실행시간 프로세스의 플로우차트이고;
도 6은 본원에 설명된 다양한 하드웨어 아키텍처들과 함께 이용될 수 있는 일 예의 소프트웨어 아키텍처를 예시하는 블록도이고; 그리고
도 7은 머신-판독가능 매체(예컨대, 머신-판독가능 저장 매체)로부터 명령어들을 판독하고 본원에서 논의된 방법론들 중의 임의의 하나 이상을 수행하도록 구성된, 일부 예시적인 실시예들에 따른 머신의 컴포넌트들을 예시하는 블록도이다.
첨부된 도면들 전반에 걸쳐, 유사한 특징들은 유사한 참조 번호들에 의해 식별된다는 것이 주목될 것이다.
뒤따르는 설명은 개시내용의 예시적인 실시예들을 포함하는 시스템들, 방법들, 기법들, 명령어 시퀀스들, 및 컴퓨팅 머신 프로그램 제품들을 개별적으로 또는 조합하여 설명한다. 다음의 설명에서는, 설명의 목적들을 위하여, 수 많은 특정 세부사항들이 발명 요지의 다양한 실시예들의 이해를 제공하기 위하여 기재된다. 그러나, 발명 요지의 다양한 실시예들은 이 특정 세부사항들 없이 실시될 수 있다는 것이 본 기술분야의 통상의 기술자들에게 분명할 것이다.
어드레스를 이용하여 게임을 위한 디지털 자산들의 효율적인 실행시간 로딩(runtime loading)을 제공하는 어드레싱 가능 자산 시스템(Addressable Asset System)이 본원에서 설명된다. 어드레싱 가능 자산 시스템은 게임을 위한 자산 관리를 취급하고 컨텐츠 생성 및 전개를 단순화한다. 실시예에 따르면, 게임의 플레이(예컨대, 게임 코드의 실행) 동안에, 어드레싱 가능 자산 시스템은 게임 코드가 실행시간에 디지털 자산과 연관된 어드레스를 단순히 질의(query)하고 어드레스에 상주하는 디지털 자산을 설명하는 데이터를 수신하는 것을 허용한다. 어드레싱 가능 자산 시스템을 이용하여, 개발 스튜디오(development studio)는 프로젝트(예컨대, 게임의 개발)에 대한 반복 시간(iteration time)을 실질적으로 개선시킬 수 있어서, 스튜디오가 프로젝트들을 설계하고, 코딩하고, 더 자주 테스팅하는 것을 가능하게 하여, 더욱 고 품질 게임 또는 애플리케이션으로 귀착된다.
예시적인 실시예들에서는, 게임 자산 위치들을 추적하기 위한 방법이 개시된다. 컨텐츠는 제1 자산을 이용하여 애플리케이션에 대하여 생성된다. 제1 자산은 자산과 연관된 컨텐츠의 적어도 일부를 설명하는 자산 데이터를 포함한다. 자산 데이터는 하나 이상의 메모리들 내의 위치 내의 하나 이상의 파일들 내에 배치된다. 애플리케이션과 연관된 카탈로그(catalog)는 서버 상에 생성된다. 카탈로그 엔트리(catalog entry)는 제1 자산에 대하여 생성된다. 카탈로그 엔트리는 적어도 어드레스 및 위치 데이터를 포함하고, 어드레스는 제1 자산에 대한 고유한 식별자이고, 위치 데이터는 제1 자산의 위치의 설명이다. 요청은 제1 자산과 연관된 자산 데이터에 대하여 애플리케이션으로부터 수신되고, 요청은 어드레스를 포함한다. 어드레스 및 카탈로그는 어드레스와 연관된 위치 데이터를 결정하기 위하여 이용된다. 결정된 위치 데이터는 결정된 위치에서의 자산 데이터를 취출(retrieve)하기 위하여 이용된다. 취출된 자산 데이터는 애플리케이션으로 반환된다.
본원에서의 설명 전반에 걸쳐 이용된 용어 '환경' 또는 '게임 환경'은 2D 디지털 환경들(예컨대, 2D 비디오 게임 환경들, 2D 시뮬레이션 환경들 등), 3D 디지털 환경들(예컨대, 3D 게임 환경들, 3D 시뮬레이션 환경들, 3D 컨텐츠 생성 환경, 가상 현실 환경들 등), 및 양자의 디지털(예컨대, 가상) 컴포넌트 및 실세계 컴포넌트를 포함하는 증강 현실 환경들을 포함하도록 이해된다.
본원에서 이용된 용어 '게임 객체'는 환경(예컨대, 게임 환경) 내의 임의의 디지털 객체 또는 디지털 엘리먼트를 포함하도록 이해된다. 게임 객체는 캐릭터들, 무기들, 장면 엘리먼트들(예컨대, 건물들, 나무들, 자동차들, 보물들 등), 배경들(예컨대, 지형, 하늘 등), 조명들, 카메라들, 효과들(예컨대, 사운드 및 시각), 애니메이션, 및 더 많은 것을 포함하는, 환경 내의 거의 모든 것을 표현할 수 있다. 게임 객체는 객체에 대한 성질들 및 거동을 정의하는 데이터와 연관된다.
본원에서 이용된 용어들 '자산, '게임 자산', 및 '디지털 자산'은 게임 객체를 설명하기 위하여 이용될 수 있거나 게임 또는 프로젝트의 양태를 설명하기 위하여 이용될 수 있는 임의의 데이터를 포함하도록 이해된다. 예를 들어, 자산은 이미지, 3D 모델(텍스처(texture)들, 리깅(rigging) 등), 3D 모델들의 그룹(예컨대, 전체 장면), 오디오 사운드, 비디오, 애니메이션, 3D 메쉬(mesh) 등에 대한 데이터를 포함할 수 있다. 자산을 설명하는 데이터는 파일 내에 저장될 수 있거나, 파일들의 집합 내에 포함될 수 있거나, 하나의 파일(예컨대, 압축된 파일)에 압축 및 저장될 수 있거나, 메모리 내에 저장될 수 있다. 자산을 설명하는 데이터는 실행시간에 게임 내의 하나 이상의 게임 객체들을 인스턴스화(instantiate)하기 위하여 이용될 수 있다.
본원에서의 설명 전반에 걸쳐, 용어 '자산 번들(asset bundle)'은 하나 이상의 자산들을 설명하는 데이터의 그룹을 지칭한다. 데이터의 그룹은 파일 또는 파일들의 그룹(예컨대, zip 파일) 내에 또는 메모리 내에 있을 수 있다. 자산 번들 내의 데이터는 실행가능 게임 파일에 외부적으로 저장되고 게임 내의 객체들을 생성하거나 수정하기 위하여 실행시간 동안에 게임에 의해 이용되는 데이터이다. 2 개 이상의 자산 번들들은 서로 간의 종속성들을 가질 수 있고; 예컨대, 자산 번들 'A'에서의 자료를 표현하는 자산은 자산 번들 'B'에서의 텍스처를 표현하는 자산을 참조할 수 있다. 또한, 게임의 실행시간 동안에, 자산 번들은 자산을 설명하는 데이터를 특정 자산 번들로부터 게임으로 로딩하기 위하여 코드를 통해(예컨대, 실행가능 게임 파일 내로부터) 상호작용될 수 있는 프로그래밍 객체(예컨대, 객체 지향된 프로그래밍 객체)에 의해 표현될 수 있다. 자산 번들 프로그래밍 객체는 게임 내의 객체로의 위치(예컨대, 자산 번들 내의 파일까지의 파일 경로)의 맵핑을 포함할 수 있다.
이제 도면들로 돌아가면, 발명의 실시예들에 따른, 어드레싱 가능 자산들을 위한 비-일상적인 또는 비통상적인 컴포넌트들 또는 동작들, 또는 이러한 컴포넌트들 또는 동작들의 조합들을 포함하는 시스템들 및 방법들이 예시된다. 실시예에 따르면, 도 1은 어드레스들에 의한 자산들의 효율적인 실행시간 로딩을 제공하기 위한 어드레싱 가능 자산 시스템(100)을 도시한다. 예시적인 실시예에서, 어드레싱 가능 자산 시스템(100)은 개발자(130)(예컨대, 게임 개발자, 예술가 등)에 의해 동작된 개발자 디바이스(102), 사용자(160)에 의해 동작된 사용자 디바이스(162), 및 네트워크(150)(예컨대, 셀룰러 네트워크, Wi-Fi 네트워크, 인터넷, 유선 로컬 네트워크 등)를 통해 네트워크화된 통신으로 결합된 컨텐츠 서버(140)를 포함한다. 일부 실시예들에서, 컨텐츠 서버(140)는 컨텐츠 전달 네트워크(content delivery network)(CDN)일 수 있다. 사용자 디바이스(162)는 멀티미디어 경험(예컨대, 비디오 게임, 시뮬레이션, 가상 현실 경험, 증강 현실 경험 등)을 사용자(160)에게 제공할 수 있는 컴퓨팅 디바이스이다. 일부 실시예들에서, 사용자 디바이스(162)는 스마트폰, 태블릿 컴퓨터, 및 가상 현실 HMD들, 증강 현실 HMD들, 및 혼합 현실 HMD들 등과 같은 헤드 장착형 디스플레이(head mounted display)(HMD)와 같은 모바일 컴퓨팅 디바이스이다. 일부 실시예들에서, 사용자 디바이스(162)는 데스크톱 컴퓨터 또는 게임 콘솔(game console)이다. 개발자 디바이스(102)는 통합된 개발 환경(integrated development environment) IDE 또는 (예컨대, Unity™ 게임 엔진과 같은) 게임 개발 플랫폼을 개발자(130)에게 제공할 수 있는 컴퓨팅 디바이스이다. 일부 실시예들에서, 개발자 디바이스(102)는 스마트폰, 태블릿 컴퓨터, 및 가상 현실 HMD들, 증강 현실 HMD들, 및 혼합 현실 HMD들 등과 같은 헤드 장착형 디스플레이(HMD)와 같은 모바일 컴퓨팅 디바이스이다. 일부 실시예들에서, 개발자 디바이스(102)는 데스크톱 컴퓨터이다.
실시예에 따르면, 컨텐츠 서버(140)는 데이터베이스(142) 및 서버(144)를 포함한다. 데이터베이스(142)는 사용자 디바이스(162) 상에 상주하는 애플리케이션(예컨대, 게임)에 의해 이용된 자산들을 포함한다.
실시예에 따르면, 개발자 디바이스(102)는 하나 이상의 중앙 프로세싱 유닛(central processing unit)들(103)(CPU들) 및 그래픽 프로세싱 유닛(graphics processing unit)들(105)(GPU들)을 포함한다. CPU(103)는 메모리(101) 상에 저장된 명령어들을 취출하고 이러한 명령어들을 실행하기 위하여 메모리(101)를 액세스하는, 다수의 프로세싱 엘리먼트들(도시되지 않음)을 포함하는 프로세서 어셈블리(processor assembly)인 임의의 유형의 프로세서이다. 이러한 명령어들의 실행 시에, 명령어들은 개발자 디바이스(102)가 본원에 설명된 바와 같은 일련의 태스크들을 수행하도록 구현한다. 메모리(101)는 랜덤 액세스 메모리, 판독 전용 또는 재기입가능 메모리, 내부 프로세서 캐시들 등과 같은 임의의 유형의 메모리 디바이스일 수 있다.
개발자 디바이스(102)는 예를 들어, 키보드 또는 키패드, 마우스, 포인팅 디바이스, 및 터치스크린과 같은 하나 이상의 입력/출력 디바이스들(108)을 또한 포함한다. 개발자 디바이스(102)는 비디오, 비디오 게임 환경, 통합된 개발 환경, 및 가상 시뮬레이션 환경을 포함하는 디지털 컨텐츠를 개발자(130)에게 디스플레이하도록 구성될 수 있는, 컴퓨터 모니터, 터치스크린, 및 헤드 장착형 디스플레이와 같은 하나 이상의 디스플레이 디바이스들(109)을 더 포함한다. 디스플레이 디바이스(109)는 하나 이상의 GPU들(105) 및 임의적으로 CPU(103)에 의해 구동되거나 제어된다. GPU(105)는 디스플레이 디바이스(109)를 통해 출력의 렌더링(rendering)의 속력을 높이는 것을 보조하는 그래픽 출력의 양태들을 프로세싱한다. 개발자 디바이스(102)는 네트워크(150)에 걸쳐 통신하기 위한 하나 이상의 네트워킹 디바이스들(107)(예컨대, 유선 또는 무선 네트워크 어댑터들)을 또한 포함한다.
개발자 디바이스(102)에서의 메모리(101)는 애플리케이션을 개발자(130)에게 제시하기 위하여 디스플레이 디바이스(109)와, 그리고 또한, 입력 디바이스(들)(108)와 같은 다른 하드웨어와 통신하는 (예컨대, CPU(103) 또는 GPU(105)에 의해 실행된) 게임 엔진(104)을 포함하는 애플리케이션(114)(예컨대, 통합된 개발 환경 IDE)을 저장하도록 구성될 수 있다. 게임 엔진(104)은 전형적으로, 애플리케이션 환경(예컨대, 비디오 게임 또는 시뮬레이션 환경)을 사용자에게 제공하기 위하여 이하의 것: 게임 객체들을 위한 애니메이션 물리학, 게임 객체들을 위한 충돌 검출, 렌더링, 네트워킹, 사운드, 애니메이션 등을 제공하는 하나 이상의 모듈들을 포함할 것이다. 애플리케이션(114)은 본원에 설명된 바와 같은 다양한 어드레싱 가능 자산 시스템(100) 기능성을 제공하는 어드레싱 가능 자산 모듈(116)을 포함한다. 애플리케이션(114)은 구축 관리자(118) 및 자원 관리자(120)를 포함한다. 게임 엔진(104), 애플리케이션(114), 구축 관리자(118), 자원 관리자(120), 및 어드레싱 가능 자산 모듈(116)의 각각은 동작 동안에 CPU(103)에 의해 그리고 임의적으로 GPU(105)로 실행되는, 메모리(101)에 상주하는 컴퓨터-실행가능 명령어들을 포함한다. 게임 엔진(104)은 게임 엔진과 같은 실행시간 프로그램을 생성하기 위하여 동작 동안에 CPU(103)에 의해 그리고 임의적으로 GPU(105)로 실행되는, 메모리(101)에 상주하는 컴퓨터-실행가능 명령어들을 포함한다. 애플리케이션(114)은 IDE와 같은 실행시간 애플리케이션 프로그램을 생성하기 위하여 동작 동안에 CPU(103)에 의해 그리고 임의적으로 GPU(105)로 실행되는, 메모리(101)에 상주하는 컴퓨터-실행가능 명령어들을 포함한다. 어드레싱 가능 자산 모듈(116), 구축 관리자(118), 및 자원 관리자(120)는 게임 엔진(104) 내에 또는 애플리케이션(114) 내에 직접적으로 통합될 수 있거나, 소프트웨어의 외부 피스(piece)들(예컨대, 플러그인(plugin)들)로서 구현될 수 있다.
실시예에 따르면, 사용자 디바이스(162)는 (예컨대, 개발자 디바이스(102)에서의 CPU(103)와 유사한) 하나 이상의 중앙 프로세싱 유닛들(163) 및 (예컨대, 개발자 디바이스(102)에서의 GPU(105)와 유사한) 그래픽 프로세싱 유닛들(165)을 포함한다. CPU(163)는 메모리(161) 상에 저장된 명령어들을 취출하고 이러한 명령어들을 실행하기 위하여 메모리(161)를 액세스하는, 다수의 프로세싱 엘리먼트들(도시되지 않음)을 포함하는 프로세서 어셈블리인 임의의 유형의 프로세서이다. 이러한 명령어들의 실행 시에, 명령어들은 사용자 디바이스(162)가 본원에 설명된 바와 같은 일련의 태스크들을 수행하도록 구현한다. 메모리(161)는 개발자 디바이스(102) 상의 메모리(101)와 유사한 임의의 유형의 메모리 디바이스일 수 있다.
사용자 디바이스(162)는 개발자 디바이스(102) 상의 입력/출력 디바이스(108)와 유사한 하나 이상의 입력/출력 디바이스들(168)을 또한 포함한다. 사용자 디바이스(162)는 비디오, 비디오 게임 환경, 및 가상 시뮬레이션 환경을 포함하는 디지털 컨텐츠를 사용자(160)에게 디스플레이하도록 구성될 수 있는, 개발자 디바이스(102) 상의 디스플레이 디바이스(109)와 유사한 하나 이상의 디스플레이 디바이스들(169)을 더 포함한다. 디스플레이 디바이스(169)는 하나 이상의 GPU들(165) 및 임의적으로 CPU(163)에 의해 구동되거나 제어된다. GPU(165)는 디스플레이 디바이스(169)를 통해 출력의 렌더링의 속력을 높이는 것을 보조하는 그래픽 출력의 양태들을 프로세싱한다. 사용자 디바이스(162)는 네트워크(150)에 걸쳐 통신하기 위한 하나 이상의 네트워킹 디바이스들(167)(예컨대, 유선 또는 무선 네트워크 어댑터들)을 또한 포함한다.
실시예에 따르면, 사용자 디바이스(162)에서의 메모리(161)는 애플리케이션을 사용자(160)에게 제시하기 위하여 디스플레이 디바이스(169)와, 그리고 또한, 입력 디바이스(들)(168)와 같은 다른 하드웨어와 통신하는 (예컨대, CPU(163) 또는 GPU(165)에 의해 실행된) 게임 엔진(164)을 포함하는 애플리케이션(174)(예컨대, 비디오 게임, 시뮬레이션, 가상 현실 경험, 증강 현실 경험)을 저장하도록 구성될 수 있다. 게임 엔진(164)은 개발자 디바이스(102) 상의 게임 엔진(104)과 유사하다. 애플리케이션(174)은 본원에 설명된 바와 같은 다양한 어드레싱 가능 자산 시스템(100) 기능성을 제공하는 어드레싱 가능 자산 모듈(166)을 포함한다. 애플리케이션(174)은 자원 관리자(170)를 포함한다. 게임 엔진(164), 애플리케이션(174), 자원 관리자(170), 및 어드레싱 가능 자산 모듈(166)의 각각은 동작 동안에 CPU(163)에 의해 그리고 임의적으로 GPU(165)로 실행되는, 메모리(161)에 상주하는 컴퓨터-실행가능 명령어들을 포함한다. 게임 엔진(164)은 게임 엔진과 같은 실행시간 프로그램을 생성하기 위하여 동작 동안에 CPU(163)에 의해 그리고 임의적으로 GPU(165)로 실행되는, 메모리(161)에 상주하는 컴퓨터-실행가능 명령어들을 포함한다. 애플리케이션(174)은 비디오 게임 또는 시뮬레이터(simulator)와 같은 실행시간 애플리케이션 프로그램을 생성하기 위하여 동작 동안에 CPU(163)에 의해 그리고 임의적으로 GPU(165)로 실행되는, 메모리(161)에 상주하는 컴퓨터-실행가능 명령어들을 포함한다. 어드레싱 가능 자산 모듈(166) 및 자원 관리자(170)는 게임 엔진(164) 내에 또는 애플리케이션(174) 내에 직접적으로 통합될 수 있거나, 소프트웨어의 외부 피스들(예컨대, 플러그인들)로서 구현될 수 있다.
실시예에 따르면, 어드레싱 가능 자산 시스템(100)을 이용하여 애플리케이션을 생성하기 위한 애플리케이션 개발 사이클(205)이 도 2에 도시된다. 사이클(205)에서의 제1 프로세스는 애플리케이션 컨텐츠 생성(200)이고, 여기서, 개발자(130)는 애플리케이션(예컨대, 비디오 게임, 가상 현실 경험, 영화, 시뮬레이션 등)을 위한 컨텐츠를 생성하기 위하여 개발자 디바이스(102)를 이용한다. 예를 들어, 개발자(130)는 게임 객체들을 이용하여 3D 장면을 생성하고 성질들 및 거동들을 게임 객체들에 배정함으로써 컨텐츠를 생성하기 위하여, 애플리케이션(114) 및 그 안의 게임 엔진(104)을 이용할 수 있다. 사이클(205)에서의 제2 프로세스는 애플리케이션 구축(202)이고, 여기서, (예컨대, Microsoft Windows™ 오퍼레이팅 시스템들, Apple™ 오퍼레이팅 시스템들, 리눅스(Linux) 오퍼레이팅 시스템들, Android™ 오퍼레이팅 시스템들 등을 포함하는) 오퍼레이팅 시스템 상에서 작동할 수 있는 단독형 실행가능 애플리케이션이 생성된다. 실행가능 애플리케이션은 실행가능 파일, 및 실행가능 파일이 필요로 할 수 있는 임의의 다른 데이터 파일들(예컨대, 자원 파일들)을 포함할 수 있다. 단독형 실행가능 애플리케이션들을 구축할 때, 결과적인 파일들은 구축 타겟 오퍼레이팅 시스템에 따라 변동될 것이다. 예를 들어, 실행가능 애플리케이션 내의 파일들은 각각의 오퍼레이팅 시스템에 대하여 상이할 수 있다. 사이클(205)에서의 제3 프로세스는 실행시간 프로세스(204)이고, 여기서, 실행가능 애플리케이션은 사용자 디바이스(162) 상에서 작동(예컨대, 실행)되고, 애플리케이션(예컨대, 게임, 가상 현실 경험, 영화, 시뮬레이션 등)을 사용자(160)에게 제시한다.
실시예에 따르면, 애플리케이션 개발 사이클(205)로부터의 애플리케이션 컨텐츠 생성 프로세스(200)의 동작들이 도 3에 도시된다. 동작(300)에서, 개발자(130)는 하나 이상의 자산들을 이용하여 애플리케이션을 위한 컨텐츠를 생성한다. 생성 프로세스의 일부로서, 개발자(130)는 애플리케이션을 위한 자산들을 임포팅(import)할 수 있고, 애플리케이션을 위한 자산들을 생성할 수 있다. 컨텐츠를 생성하는 것은 게임 객체들(예컨대, 캐릭터들 및 풍경), 게임 레벨들, 및 더 많은 것을 생성하는 것을 포함한다. 동작(302)에서, 게임 엔진(104)은 (예컨대, 숫자(numeric), 알파벳(alpha), 영숫자(alphanumeric), 또는 임의의 유형의 스트링 식별(string identification)을 포함하는) 각각의 자산에 대한 고유한 식별(또는 고유한 ID)을 생성한다. 고유한 ID는 하나의 자산을 식별하는 영구적인 고유한 식별자이다. 자산을 정의하는 데이터는 하나 이상의 파일들에 저장된다. 동작(304)에서, 어드레싱 가능 자산 시스템(100)을 이용하여, 개발자(130)는 (예컨대, 모듈(116)에 의해 생성된 그래픽 사용자 인터페이스를 통해, 또는 모듈(116)에 의해 제공된 코드 및 애플리케이션 인터페이스(Application Interface)(API)를 통해) 자산이 어드레싱 가능할 것이라는 것을 표시한다. 실시예에 따르면, 어드레싱 가능 자산은 어드레싱 가능 자산의 용이한 식별 및 참조를 위한 연관된 명칭(예컨대, 스트링 라벨(string label))을 가진다. 일부 실시예들에서, 라벨은 어드레싱 가능 자산들의 그룹에 의해 공유될 수 있다. 어드레싱 가능 자산에 대한 라벨은 복수의 유사한 자산들의 실행시간 로딩을 위하여 이용될 수 있는 보조 식별자를 제공한다. 예를 들어, 게임은, 'spaceHazards'로 라벨링되고, 라벨을 입력(예컨대, LoadAll("spaceHazards"))으로서 이용하는 단일 커맨드로 모두 액세스될 수 있는 몇몇 유형들의 스페이스 해저드(space hazard)들을 포함할 수 있다. 동작(306)에서, 어드레싱 가능 자산 모듈(116)은 자산에 대한 어드레스를 제공하고, 어드레스를 자산 데이터에 대한 위치(예컨대, 파일 경로 명칭)와 연관시킨다. 실시예에 따르면, 위치는 컨텐츠 서버(140)(예컨대, 컨텐츠 전달 네트워크), 원격 서버들, 및 로컬 데이터 스토리지(예컨대, 개발자 디바이스(102) 상의 로컬 하드 드라이브)와 같은 물리적 위치들을 포함한다. 어드레스는 (예컨대, 게임이 플레이되고 있을 때) 실행시간에서의 효율적인 취출을 위한 자산을 식별한다. 실시예에 따르면, 자산 어드레스는 자산에 대한 데이터를 포함하는 파일의 파일 경로 위치의 스트링 값으로 초기화된다. 동작(308)에서, 어드레싱 가능 자산 모듈(116)은 데이터가 (예컨대, 개발자에 의해) 이동될 때에 (예컨대, 파일, 또는 데이터를 포함하는 파일들을 추적함으로써) 자산 데이터의 위치를 추적한다.
실시예에 따르면, 어드레싱 가능 자산 시스템(100)을 이용하는 구축 프로세스(202)가 도 4에 도시된다. 구축 프로세스(202)의 동작(400)에서, 어드레싱 가능 자산 모듈(116)은 자산 번들로 패키징되어야 할 어드레싱 가능 자산 그룹(예컨대, 어드레싱 가능 자산들의 리스트)을 설명하는 데이터를 수신한다. 예를 들어, 개발자(130)는 모듈(116) 또는 게임 엔진(114)에 의해 제공된 사용자 인터페이스를 이용하여 어드레싱 가능 자산 그룹을 생성할 수 있다. 동작(402)에서, 구축 관리자(118)는 애플리케이션의 구축을 위한 요청을 수신한다. 요청은 자산 번들의 구축(예컨대, 실행가능 애플리케이션에 의한 이용을 위하여 준비된 자산 번들의 패키징된 버전을 포함하는 구축)을 위한 설정들을 포함하는 (예컨대, 개발자에 의해 생성된) 프로파일 데이터를 포함한다. 구축 프로세스(202)의 동작(402)의 일부로서, 개발자는 (예컨대, 그래픽 사용자 인터페이스를 통해) 요청을 행할 수 있고 프로파일을 생성할 수 있다. 구축 프로세스(202)의 동작(404)에서, 어드레싱 가능 자산 그룹에서의 각각의 자산에 대하여, 어드레싱 가능 자산 모듈(116)은 자산 파일들의 가장 현재의 위치(예컨대, 가장 현재의 파일 경로)를 검색한다. 구축 프로세스(202)의 동작(406)에서, 어드레싱 가능 자산 모듈(116)은 애플리케이션과 연관된 하나 이상의 자산 번들들을 포함하는 애플리케이션을 위한 컨텐츠 카탈로그를 생성한다. 컨텐츠 카탈로그는 자산 어드레스들의 리스트를 포함하고, 여기서, 하나 이상의 자산 번들들에서의 각각의 자산은 리스트에서의 적어도 하나의 자산 어드레스 엔트리와 연관된다. 실시예에 따르면, 리스트 상의 각각의 자산 어드레스 엔트리에 대하여, 자산을 설명하는 파일들의 위치에 대한 데이터가 제공된다. 컨텐츠 카탈로그는 자산 어드레스와, 자산 어드레스와 연관된 자산을 설명하는 데이터를 포함하는 적어도 하나의 위치와의 사이의 맵핑을 제공한다. 각각의 컨텐츠 카탈로그는 실행가능 애플리케이션과 연관된다(예컨대, 실행가능 애플리케이션은 실행가능 애플리케이션이 연관되는 컨텐츠 카탈로그를 지시하는 데이터를 포함할 수 있음). 컨텐츠 카탈로그는 자산을 설명하는 데이터를 애플리케이션으로 로딩하기 위한 명령어들을 또한 포함할 수 있다. 구축 프로세스(202)의 동작(408)에서, 어드레싱 가능 자산 모듈(116)은 요청에서의 설정들에 따라, 어드레싱 가능 자산 그룹으로부터의 자산들을 그들의 종속성들로 자산 번들로 패킹한다. 어드레싱 가능 자산 모듈(116)은 (예컨대, 자산들이 어드레싱 가능 자산 모듈(116)에 의해 추적된다는 사실로 인해) 자산들이 이동되거나 재명명되더라도, 복잡한 자산 종속성 사슬(asset dependency chain)들을 이해하고 번들들을 효율적으로 패킹한다. 실시예에 따르면, 동작(408)의 일부로서, 어드레싱 가능 자산 모듈(116)은 중복 자산들을 분리시키고, 실행시간에서의 더 명료한 로딩을 위하여 이들을 별도의 번들에 배치한다. 중복 자산은 2 개 이상의 자산들에 대한 종속성인 단일 자산이다. 실시예에 따르면, 어드레싱 가능 자산 모듈(116)은 (예컨대, 사용자 인터페이스 메뉴, 게임 또는 애플리케이션 지침서(tutorial), 및 제1-레벨 게임 컨텐츠를 위한 자산들을 포함하는) 자산 번들에 포함되어야 할 자산들의 서브세트를 우선순위화한다. 동작(408)의 일부로서, 어드레싱 가능 자산 모듈(116)은 프로파일에 나타내어진 최대 크기 제한에 기초하여 컨텐츠 구축들을 분할할 수 있다. 예를 들어, 어드레싱 가능 자산 시스템(100)은 게임 또는 애플리케이션을 위한 컨텐츠의 패키징을 최적화하기 위하여 구축된 애플리케이션의 크기(예컨대, 100 MB)를 제한하고 나머지 자산들을 다운로딩가능 컨텐츠로서의 자산 번들들로 퍼넬링(funnel)하도록 구성되어, 네트워크를 통해 디바이스로의 데이터 다운로딩을 줄이고 메모리로의 데이터 로딩을 줄일 수 있다.
실시예에 따르면, 개발 사이클(205)의 실행시간 모드(204)가 도 5에 도시되고, 이에 의해, 애플리케이션은 애플리케이션의 실행시간 버전을 사용자(160)에게 제시하기 위하여 사용자 디바이스(162) 상에 다운로딩되고 실행된다. 애플리케이션의 실행시간 동안에, 애플리케이션(174) 내의 어드레싱 가능 자산 모듈(166)은 (예컨대, 애플리케이션에 의한 이용을 위하여) 자산 번들로부터의 자산들을 사용자 디바이스(162) 상의 메모리(161)로 로딩한다. 어드레싱 가능 자산 시스템(100)은 컨텐츠 카탈로그 내의 맵핑을 이용하여, 하나 이상의 자산들이 어느 자산 번들에 있는지, 또는 자산 번들이 (예컨대, 네트워크 상의 원격 디바이스 상에 또는 로컬 디바이스 상에) 어디에 위치되는지, 또는 어드레싱 가능 자산이 개발자에 의해 이동되었는지 여부에 관계 없이, 실행시간에서의 명칭(예컨대, 라벨 또는 어드레스)에 의한 하나 이상의 어드레싱 가능 자산들(예컨대, 자산들의 전체 장면)의 로딩을 허용한다. 자산 위치에서의 변경들은 (예컨대, 동작(308) 및 동작(406)에서의 어드레싱 가능 자산 모듈(116)에 의해) 컨텐츠 카탈로그에서 실시간으로 추적되고 업데이팅되므로, 어드레싱 가능 자산 모듈(166)은 어드레싱 가능 자산의 현재의 위치를 항상 포함한다. 어드레스에 의해 자산을 특정하는 것은 개발자가 디스크, 또는 서버, 또는 컨텐츠 전달 네트워크(CDN) 상에서 자산에 대한 데이터의 위치를 직접적으로 추적하기 위하여 특정 코드를 기입할 필요 없이, 개발자들이 실행시간에 자산들을 로딩하는 애플리케이션들을 생성하도록 권한을 부여한다.
실시예에 따르면, 그리고 도 5를 참조하면, 실행시간 모드(204)의 동작(500)에서, 애플리케이션은 사용자 디바이스(162) 상에서 작동(예컨대, 실행됨)된다. 예를 들어, 애플리케이션은 (예컨대, 애플리케이션(174)의 실행시간 버전을 통해 게임을 플레이하기 위하여) 사용자 디바이스(162)를 동작시키는 사용자에 의해 실행될 수 있다. 실시예에 따르면, 실행시간 모드(204)의 동작(502)에서, 애플리케이션(174)은 (실행하면서) 자산 번들 내부로부터의 자산을 요구한다. 실행 애플리케이션은 요구된 자산에 대한 어드레스를 결정하고, 어드레스를 포함하는 요청을 어드레싱 가능 자산 모듈(166)로 전송한다. 요청은 어드레스, 및 요구된 자산과 연관된 데이터(예컨대, 자산 파일들 내의 자산 데이터)에 대한 요청을 포함한다. 실시예에 따르면, 실행시간 모드(204)의 동작(504)에서, 어드레싱 가능 자산 모듈(166)은 어드레스와 연관된 데이터에 대한 현재의 위치를 결정하기 위하여 컨텐츠 서버(140) 상의 컨텐츠 카탈로그와 네트워크(150) 상에서 통신한다(예컨대, 요청을 전송함). 실시예에 따르면, 실행시간 모드(204)의 동작(506)에서, 어드레싱 가능 자산 모듈(166)은 컨텐츠 카탈로그로부터 수신된 현재의 위치로부터 요구된 자산 데이터를 비동기식으로 다운로딩한다.
실시예에 따르면, 어드레싱 가능 자산 시스템(100)은 종속성 관리를 포함하고, 이에 의해, 컨텐츠 카탈로그는 카탈로그 내의 각각의 어드레스 엔트리에 대한 종속성 정보를 포함한다. 따라서, 동작(504) 및 동작(506)의 일부로서의 실행시간에서, 어드레싱 가능 자산 모듈(116)은 (예컨대, 종속성들의 위치를 특정하지 않으면서) 임의의 요청된 어드레스에 대한 종속적인 자산들과 연관된 데이터를 수신한다. 예를 들어, 애플리케이션(174)은 오직 그 어드레스 또는 라벨에 의해 자산을 요청할 수 있고, 그 종속적인 자산들에 관한 데이터를 수신할 것이다.
실시예에 따르면, 동작(506) 내에서의 비동기식 로딩으로, 요청된 자산들 및 요청된 자산들의 종속성들은 임의의 순서에서의 로딩을 위하여 어디에서나(로컬 방식으로, 원격 서버 또는 CDN) 상주할 수 있다(예컨대, 동기식 로딩과는 대조적으로, 이에 의해, 종속성들을 갖는 로컬 자산은 종속성들이 로컬이 되도록 요구할 것이고, 종속성들이 자산 로드 바로 후에 로딩되는 것을 또한 요구할 것임). 실행 애플리케이션에 의한 이용을 위하여 메모리로의 비동기식 다운로딩 및 로딩을 이용함으로써, 어드레싱 가능 자산 시스템(100)은 애플리케이션(174) 내의 코드를 변경하지 않으면서, 자산들을 (예컨대, 로컬 구축 그룹으로부터 원격 구축 그룹으로) 이동시키기 위한 신축성을 사용자들에게 부여한다. 어드레스들과 조합된 비동기식 로딩은 이 양태들이 개발 사이클(205) 동안에 변경되고 전개 필요성들에 적응하는 것을 허용하기 위하여, 위치로부터의 (예컨대, 동작(302)에서 생성된) 고유한 자산 식별자의 결합해제, 패키징, 및 로딩을 허용한다. 더 구체적으로, 비동기식 로딩은 (예컨대, 애플리케이션 내의) 코드에서의 변경이 자산을 참조하는 것을 요구하지 않으면서, 자산의 위치(예컨대, 로컬, 원격, 생성 등)가 애플리케이션의 개발 사이클(205)의 과정 전반에 걸쳐 변경되는 것을 허용한다. 어드레싱 가능 자산 시스템(100)이 없다면, 개발자는 자산으로 로컬로부터 원격 구축 그룹으로 이동시킬 때에 (예컨대, 추가적인 자산 로딩 로직을 취급하기 위하여) 애플리케이션 코드를 변경해야 할 것이다. 어드레싱 가능 자산 시스템(100)은 애플리케이션(174)이 개발자에 의해 업데이팅되고 있을 때, 최종-사용자들이 가능한 한 적은 데이터를 재다운로딩하는 것을 허용한다. 어드레싱 가능 자산 시스템(100)은 간단한 컨텐츠 레이아웃을 갖는 조기 프로토타입(early prototype)으로부터 시작하여, 로컬 데이터, 다수의 서버들, 및 다양한 플랫폼들에 걸쳐 이어질 수 있는 더 복잡한 컨텐츠 레이아웃을 갖는 선적가능한 제품까지의 용이한 마이그레이션 프로세스를 위한 지원을 허용한다.
실시예에 따르면, 실행시간 모드(204)의 일부로서, 동작(520)에서는, 개발자가 애플리케이션(174)을 위한 하나 이상의 자산들을 업데이팅한다. 변경은 (예컨대, 구축 프로세스(202) 내에서) 자산을 상이한 자산 번들로 이동시켜서 구축 프로세스가 다수 회 발생하는 것에 대해 말함으로써, 또는 (구축 프로세스(202) 후에) 자산 번들 파일들의 물리적 위치를 변경함으로써, 자산의 위치의 변경을 포함할 수 있다. 실시예에 따르면, 동작(522)에서, 어드레싱 가능 자산 모듈(116)은 개발자가 (예컨대, 동작(520)에서) 변경들을 행할 때에 실시간으로 컨텐츠 카탈로그를 업데이팅한다. 변경된 자산에 대한 새로운 위치 정보는 자산에 대한 어드레스와 연관시켜서 컨텐츠 카탈로그에서 레코딩된다.
실시예에 따르면, 어드레싱 가능 자산 시스템(100)은 자산들이 애플리케이션(174)에 의해 더 이상 필요로 하게 되지 않을 때, 자산 번들들로부터 로딩된 자산들의 참조 카운팅 및 자동적 언로딩을 이용한다.
본 개시내용은 방법으로서 수행될 수 있고, 시스템, 컴퓨터 판독가능 매체, 또는 전기적 또는 전자기적 신호에서 구체화될 수 있다는 것이 주목되어야 한다. 위에서 설명되고 동반 도면들에서 예시된 실시예들은 오직 예시적이도록 의도된다. 수정들은 이 개시내용으로부터 이탈하지 않으면서 행해질 수 있다는 것이 본 기술분야에서의 통상의 기술자들에게 분명할 것이다. 이러한 수정들은 가능한 변형들로서 고려되고, 개시내용의 범위 내에 놓여 있다.
어떤 실시예들은 로직 또는 다수의 컴포넌트들, 모듈들, 또는 메커니즘들을 포함하는 것으로서 본원에 설명된다. 모듈들은 소프트웨어 모듈들(예컨대, 머신-판독가능 매체 상에서 또는 송신 신호에서 구체화된 코드) 또는 하드웨어 모듈들의 어느 하나를 구성할 수 있다. "하드웨어 모듈"은 어떤 동작들을 수행할 수 있는 유형의 유닛이고, 어떤 물리적 방식으로 구성될 수 있거나 배열될 수 있다. 다양한 예시적인 실시예들에서, 하나 이상의 컴퓨터 시스템들(예컨대, 단독형 컴퓨터 시스템, 클라이언트 컴퓨터 시스템, 또는 서버 컴퓨터 시스템) 또는 컴퓨터 시스템의 하나 이상의 하드웨어 모듈들(예컨대, 프로세서 또는 프로세서들의 그룹)은 본원에 설명된 바와 같은 어떤 동작들을 수행하도록 동작하는 하드웨어 모듈로서 소프트웨어(예컨대, 애플리케이션 또는 애플리케이션 부분)에 의해 구성될 수 있다.
일부 실시예들에서, 하드웨어 모듈은 기계적으로, 전자적으로, 또는 그 임의의 적당한 조합으로 구현될 수 있다. 예를 들어, 하드웨어 모듈은 어떤 동작들을 수행하도록 영구적으로 구성되는 전용 회로부 또는 로직을 포함할 수 있다. 예를 들어, 하드웨어 모듈은 필드-프로그래밍가능한 게이트 어레이(field-programmable gate array)(FPGA) 또는 애플리케이션 특정 집적 회로(Application Specific Integrated Circuit)(ASIC)와 같은 특수-목적 프로세서일 수 있다. 하드웨어 모듈은 어떤 동작들을 수행하기 위하여 소프트웨어에 의해 일시적으로 구성되는 프로그래밍가능한 로직 또는 회로부를 또한 포함할 수 있다. 예를 들어, 하드웨어 모듈은 범용 프로세서 또는 다른 프로그래밍가능한 프로세서 내에 망라된 소프트웨어를 포함할 수 있다. 전용이며 영구적으로 구성된 회로부에서, 또는 (예컨대, 소프트웨어에 의해 구성된) 일시적으로 구성된 회로부에서 하드웨어 모듈을 기계적으로 구현하기 위한 판단은 비용 및 시간 고려사항들에 의해 추진될 수 있다는 것이 인식될 것이다.
따라서, 어구 "하드웨어 모듈"은 어떤 방식으로 동작하거나 본원에 설명된 어떤 동작들을 수행하도록 물리적으로 구축되거나, 영구적으로 구성(예컨대, 하드와이어링(hardwired))되거나, 또는 일시적으로 구성(예컨대, 프로그래밍)되는 엔티티인, 유형의 엔티티(tangible entity)를 망라하는 것으로 이해되어야 한다. 본원에서 이용된 바와 같이, "하드웨어-구현된 모듈"은 하드웨어 모듈을 지칭한다. 하드웨어 모듈들이 일시적으로 구성(예컨대, 프로그래밍)되는 실시예들을 고려하면, 하드웨어 모듈들의 각각은 시간에 있어서의 임의의 하나의 인스턴스에서 구성되거나 인스턴스화될 필요가 없다. 예를 들어, 하드웨어 모듈이 특수-목적 프로세서가 되도록 소프트웨어에 의해 구성된 범용 프로세서를 포함할 경우, 범용 프로세서는 상이한 시간들에서 (예컨대, 상이한 하드웨어 모듈들을 포함하는) 각각 상이한 특수-목적 프로세서들로서 구성될 수 있다. 따라서, 소프트웨어는 예를 들어, 시간의 하나의 인스턴스에서 특정한 하드웨어 모듈을 구성하고 시간의 상이한 인스턴스에서 상이한 하드웨어 모듈을 구성하도록 특정한 특수-목적 프로세서 또는 프로세서들을 구성할 수 있다.
하드웨어 모듈들은 정보를 다른 하드웨어 모듈들에 제공할 수 있고, 다른 하드웨어 모듈들로부터 정보를 수신할 수 있다. 따라서, 설명된 하드웨어 모듈들은 통신가능하게 결합되는 것으로서 간주될 수 있다. 다수의 하드웨어 모듈들이 동시에 존재할 경우, 통신들은 하드웨어 모듈들 중의 2 개 이상 사이에서 또는 그 중에서 (예컨대, 적절한 회로들 및 버스들 상에서) 신호 송신을 통해 달성될 수 있다. 다수의 하드웨어 모듈들이 상이한 시간들에서 구성되거나 인스턴스화되는 실시예들에서, 이러한 하드웨어 모듈들 사이의 통신들은 예를 들어, 다수의 하드웨어 모듈들이 액세스하는 메모리 구조들에서의 정보의 저장 및 취출을 통해 달성될 수 있다. 예를 들어, 하나의 하드웨어 모듈은 동작을 수행할 수 있고, 그것이 통신가능하게 결합되는 메모리 디바이스에서 그 동작의 출력을 저장할 수 있다. 그 다음으로, 추가의 하드웨어 모듈은 저장된 출력을 취출하고 프로세싱하기 위하여 더 이후의 시간에 메모리 디바이스를 액세스할 수 있다. 하드웨어 모듈들은 입력 또는 출력 디바이스들과의 통신들을 또한 개시할 수 있고, 자원(예컨대, 정보의 집합)에 대해 동작할 수 있다.
본원에 설명된 예시적인 방법들의 다양한 동작들은 적어도 부분적으로, 관련된 동작들을 수행하도록 (예컨대, 소프트웨어에 의해) 일시적으로 구성되거나 영구적으로 구성되는 하나 이상의 프로세서들에 의해 수행될 수 있다. 일시적으로 또는 영구적으로 구성되든지 간에, 이러한 프로세서들은 본원에 설명된 하나 이상의 동작들 또는 기능들을 수행하도록 동작하는 프로세서-구현된 모듈들을 구성할 수 있다. 본원에 이용된 바와 같이, "프로세서-구현된 모듈"은 하나 이상의 프로세서들을 이용하여 구현된 하드웨어 모듈을 지칭한다.
유사하게, 본원에 설명된 방법들은 적어도 부분적으로 프로세서-구현될 수 있고, 특정한 프로세서 또는 프로세서들은 하드웨어의 예일 수 있다. 예를 들어, 방법의 동작들의 적어도 일부는 하나 이상의 프로세서들 또는 프로세서-구현된 모듈들에 의해 수행될 수 있다. 또한, 하나 이상의 프로세서들은 "클라우드 컴퓨팅" 환경에서 또는 "서비스로서의 소프트웨어(software as a service)"(SaaS)로서 관련된 동작들의 수행을 지원하도록 또한 동작할 수 있다. 예를 들어, 동작들의 적어도 일부는 (프로세서들을 포함하는 머신들의 예들로서의) 컴퓨터들의 그룹에 의해 수행될 수 있고, 이 동작들은 네트워크(예컨대, 인터넷)을 통해, 그리고 하나 이상의 적절한 인터페이스들(예컨대, 애플리케이션 프로그램 인터페이스(API))을 통해 액세스가능하다.
동작들 중의 어떤 것의 수행은 단일 머신 내에 상주할 뿐만 아니라, 다수의 머신들에 걸쳐 전개된 프로세서들 사이에서 분산될 수 있다. 일부 예시적인 실시예들에서, 프로세서들 또는 프로세서-구현된 모듈들은 (예컨대, 가정 환경, 사무실 환경, 또는 서버 팜(server farm) 내에서) 단일 지리적 위치에 위치될 수 있다. 다른 예시적인 실시예들에서, 프로세서들 또는 프로세서-구현된 모듈들은 다수의 지리적 위치들에 걸쳐 분산될 수 있다.
도 6은 게이밍 엔진(701) 및/또는 어드레싱 가능 자산 시스템(100)의 컴포넌트들을 제공하도록 설명된 본원에서의 다양한 하드웨어 아키텍처들과 함께 이용될 수 있는 일 예의 소프트웨어 아키텍처(702)를 예시하는 블록도(700)이다. 도 6은 소프트웨어 아키텍처의 비-제한적인 예이고, 많은 다른 아키텍처들이 본원에 설명된 기능성을 용이하게 하기 위하여 구현될 수 있다는 것이 인식될 것이다. 소프트웨어 아키텍처(702)는 그 중에서도, 프로세서들(810), 메모리(830), 및 입력/출력(I/O) 컴포넌트들(850)을 포함하는 도 7의 머신(800)과 같은 하드웨어 상에서 실행될 수 있다. 대표적인 하드웨어 계층(704)이 예시되고, 예를 들어, 도 7의 머신(800)을 표현할 수 있다. 대표적인 하드웨어 계층(704)은 연관된 실행가능 명령어들(708)을 가지는 프로세싱 유닛(706)을 포함한다. 실행가능 명령어들(708)은 본원에 설명된 방법들, 모듈들 등의 구현예를 포함하는 소프트웨어 아키텍처(702)의 실행가능 명령어들을 표현한다. 하드웨어 계층(704)은 실행가능 명령어들(708)을 또한 포함하는 메모리/스토리지(710)를 또한 포함한다. 하드웨어 계층(704)은 다른 하드웨어(712)를 또한 포함할 수 있다.
도 6의 일 예의 아키텍처에서, 소프트웨어 아키텍처(702)는 각각의 계층이 특정한 기능성을 제공하는 계층들의 스택으로서 개념화될 수 있다. 예를 들어, 소프트웨어 아키텍처(702)는 오퍼레이팅 시스템(714), 라이브러리들(716), 프레임워크들 또는 미들웨어(718), 애플리케이션들(720), 및 제시 계층(744)과 같은 계층들을 포함할 수 있다. 동작적으로, 계층들 내에서의 애플리케이션들(720) 및/또는 다른 컴포넌트들은 소프트웨어 스택을 통해 애플리케이션 프로그래밍 인터페이스(API) 호출들(724)을 소환할 수 있고, 메시지들(726)로서 응답을 수신할 수 있다. 예시된 계층들은 본질적으로 대표적이고, 모든 소프트웨어 아키텍처들은 모든 계층들을 가지지는 않는다. 예를 들어, 일부 모바일 또는 특수 목적 오퍼레이팅 시스템들은 프레임워크들/미들웨어(718)를 제공하지 않을 수 있는 반면, 다른 것들은 이러한 계층을 제공할 수 있다. 다른 소프트웨어 아키텍처들은 추가적인 또는 상이한 계층들을 포함할 수 있다.
오퍼레이팅 시스템(714)은 하드웨어 자원들을 관리할 수 있고, 공통적인 서비스들을 제공할 수 있다. 오퍼레이팅 시스템(714)은 예를 들어, 커널(kernel)(728), 서비스들(730), 및 구동기들(732)을 포함할 수 있다. 커널(728)은 하드웨어와 다른 소프트웨어 계층들 사이의 추상화 계층으로서 작동할 수 있다. 예를 들어, 커널(728)은 메모리 관리, 프로세서 관리(예컨대, 스케줄링), 컴포넌트 관리, 네트워킹, 보안성 설정들 등을 담당할 수 있다. 서비스들(730)은 다른 소프트웨어 계층들을 위한 다른 공통적인 서비스들을 제공할 수 있다. 구동기들(732)은 기초적인 하드웨어를 제어하거나 기초적인 하드웨어와 인터페이싱하는 것을 담당할 수 있다. 예를 들어, 구동기들(732)은 하드웨어 구성에 따라, 디스플레이 구동기들, 카메라 구동기들, Bluetooth® 구동기들, 플래시 메모리 구동기들, 직렬 통신 구동기들(예컨대, 유니버셜 직렬 버스(Universal Serial Bus)(USB) 구동기들), Wi-Fi® 구동기들, 오디오 구동기들, 전력 관리 구동기들 등을 포함할 수 있다.
라이브러리들(716)은 애플리케이션들(720) 및/또는 다른 컴포넌트들 및/또는 계층들에 의해 이용될 수 있는 공통적인 기반구조를 제공할 수 있다. 라이브러리들(716)은 다른 소프트웨어 모듈들이 기초적인 오퍼레이팅 시스템(714) 기능성(예컨대, 커널(728), 서비스들(730), 및/또는 구동기들(732))과 직접적으로 인터페이싱하는 것보다 더 용이한 방식으로 태스크들을 수행하는 것을 허용하는 기능성을 전형적으로 제공한다. 라이브러리들(816)은 메모리 할당 기능들, 스트링 조작 기능들, 수학적인 기능들 등과 같은 기능들을 제공할 수 있는 시스템 라이브러리들(734)(예컨대, C 표준 라이브러리)을 포함할 수 있다. 추가적으로, 라이브러리들(716)은 미디어 라이브러리들(예컨대, MPEG4, H.264, MP3, AAC, AMR, JPG, PNG와 같은 다양한 미디어 포맷의 제시 및 조작을 지원하기 위한 라이브러리들), 그래픽 라이브러리들(예컨대, 디스플레이 상에서 2D 및 3D 그래픽 컨텐츠를 렌더링하기 위하여 이용될 수 있는 OpenGL 프레임워크), 데이터베이스 라이브러리들(예컨대, 다양한 관계 데이터베이스 기능들을 제공할 수 있는 SQLite), 웹 라이브러리들(예컨대, 웹 브라우징 기능성을 제공할 수 있는 WebKit) 등과 같은 API 라이브러리들(736)을 포함할 수 있다. 라이브러리들(716)은 많은 다른 API들을 애플리케이션들(720) 및 다른 소프트웨어 컴포넌트들/모듈들에 제공하기 위한 광범위한 다른 라이브러리들(738)을 또한 포함할 수 있다.
프레임워크들(718)(또한 때때로, 미들웨어로서 지칭됨)는 애플리케이션들(720) 및/또는 다른 소프트웨어 컴포넌트들/모듈들에 의해 이용될 수 있는 더욱 하이-레벨의 공통적인 기반구조를 제공할 수 있다. 예를 들어, 프레임워크들/미들웨어(718)는 다양한 그래픽 사용자 인터페이스(graphic user interface)(GUI) 기능들, 하이-레벨 자원 관리, 하이-레벨 위치 서비스들 등을 제공할 수 있다. 프레임워크들/미들웨어(718)는 그 일부가 특정한 오퍼레이팅 시스템 또는 플랫폼에 특정적일 수 있는 애플리케이션들(720) 및/또는 다른 소프트웨어 컴포넌트들/모듈들에 의해 사용될 수 있는 다른 API들의 넓은 스펙트럼을 제공할 수 있다.
애플리케이션들(720)은 내장된 애플리케이션들(740) 및/또는 제3자 애플리케이션들(742)을 포함한다. 대표적인 내장된 애플리케이션들(740)의 예들은 연락처들 애플리케이션, 브라우저 애플리케이션, 북 판독기 애플리케이션, 위치 애플리케이션, 미디어 애플리케이션, 메시징 애플리케이션, 및/또는 게임 애플리케이션을 포함할 수 있지만, 이것으로 제한되지는 않는다. 제3자 애플리케이션(742)은 특정한 플랫폼의 벤더(vendor) 이외의 엔티티에 의해 Android™ 또는 iOS™ 소프트웨어 개발 키트(software development kit)(SDK)를 이용하여 개발된 애플리케이션을 포함할 수 있고, iOS™, Android™, Windows® 전화, 또는 다른 모바일 오퍼레이팅 시스템들과 같은 모바일 오퍼레이팅 시스템 상에서 작동되는 모바일 소프트웨어일 수 있다. 제3자 애플리케이션(742)은 본원에 설명된 기능성을 용이하게 하기 위하여 오퍼레이팅 시스템(714)과 같은 모바일 오퍼레이팅 시스템에 의해 제공된 API 호출들(724)을 소환할 수 있다.
애플리케이션들(720)은 시스템의 사용자들과 상호작용하기 위한 사용자 인터페이스들을 생성하기 위하여, 내장된 오퍼레이팅 시스템 기능들(예컨대, 커널(728), 서비스들(730), 및/또는 구동기들(732)), 라이브러리들(716), 또는 프레임워크들/미들웨어(718)를 이용할 수 있다. 대안적으로 또는 추가적으로, 일부 시스템들에서, 사용자와의 상호작용들은 제시 계층(744)과 같은 제시 계층을 통해 발생할 수 있다. 이 시스템들에서, 애플리케이션/모듈 "로직"은 사용자와 상호작용하는 애플리케이션/모듈의 양태들로부터 분리될 수 있다.
일부 소프트웨어 아키텍처들은 가상 머신들을 이용한다. 도 6의 예에서, 이것은 가상 머신(748)에 의해 예시된다. 가상 머신(748)은 애플리케이션들/모듈들이 (예를 들어, 도 7의 머신(800)과 같은) 하드웨어 머신 상에서 실행되고 있는 것처럼 실행될 수 있는 소프트웨어 환경을 생성한다. 가상 머신(748)은 호스트 오퍼레이팅 시스템(예컨대, 오퍼레이팅 시스템(714))에 의해 호스팅되고, 전형적으로, 항상 그러하지는 않지만, 가상 머신(748)의 동작 뿐만 아니라, 호스트 오퍼레이팅 시스템(즉, 오퍼레이팅 시스템(714))과의 인터페이스를 관리하는 가상 머신 모니터(746)를 가진다. 소프트웨어 아키텍처는 오퍼레이팅 시스템(OS)(750), 라이브러리들(752), 프레임워크들(754), 애플리케이션들(756), 및/또는 제시 계층(758)과 같은 가상 머신(748) 내에서 실행된다. 가상 머신(748) 내에서 실행되는 소프트웨어 아키텍처의 이 계층들은 이전에 설명된 대응하는 계층들과 동일할 수 있거나, 상이할 수 있다.
도 7은 머신-판독가능 매체(예컨대, 머신-판독가능 저장 매체)로부터 명령어들을 판독하고 본원에서 논의된 방법론들 중의 임의의 하나 이상을 수행하도록 구성된, 일부 예시적인 실시예들에 따른 머신(800)의 컴포넌트들을 예시하는 블록도이다. 일부 실시예들에서, 머신(800)은 개발자 디바이스(102) 및 사용자 디바이스(162)와 유사하다. 구체적으로, 도 7은 컴퓨터 시스템의 일 예의 형태에서 머신(800)의 도식적인 표현을 도시하고, 컴퓨터 시스템 내에서, 머신(800)으로 하여금, 본원에서 논의된 방법론들 중의 임의의 하나 이상을 수행하게 하기 위한 명령어들(816)(예컨대, 소프트웨어, 프로그램, 애플리케이션, 애플릿(applet), 앱(app), 또는 다른 실행가능 코드)이 실행될 수 있다. 이와 같이, 명령어들(816)은 본원에 설명된 모듈들 또는 컴포넌트들을 구현하기 위하여 이용될 수 있다. 명령어들은 일반적인 비-프로그래밍된 머신을, 설명되고 예시된 기능들을 설명된 방식으로 수행하도록 프로그래밍된 특정한 머신으로 변환한다. 대안적인 실시예들에서, 머신(800)은 단독형 디바이스로서 동작하거나, 다른 머신들에 결합(예컨대, 네트워크화)될 수 있다. 네트워크화된 전개에서, 머신(800)은 서버-클라이언트 네트워크 환경에서의 서버 머신 또는 클라이언트 머신의 자격으로, 또는 피어-투-피어(peer-to-peer)(또는 분산된) 네트워크 환경에서의 피어 머신으로서 동작할 수 있다. 머신(800)은 서버 컴퓨터, 클라이언트 컴퓨터, 개인용 컴퓨터(personal computer)(PC), 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북, 셋톱 박스(set-top box)(STB), 개인 정보 단말(personal digital assistant)(PDA), 엔터테인먼트 미디어 시스템, 셀룰러 전화, 스마트폰, 모바일 디바이스, 웨어러블 디바이스(예컨대, 스마트 시계), 스마트 홈 디바이스(예컨대, 스마트 기기), 다른 스마트 디바이스들, 웹 기기, 네트워크 라우터, 네트워크 스위치, 네트워크 브릿지, 또는 머신(800)에 의해 취해져야 할 액션들을 특정하는 명령어들(816)을 순차적으로 또는 이와 다르게 실행할 수 있는 임의의 머신을 포함할 수 있지만, 이것으로 제한되지는 않는다. 또한, 오직 단일 머신(800)이 예시되지만, 용어 "머신"은 본원에서 논의된 방법론들 중의 임의의 하나 이상을 수행하기 위한 명령어들(816)을 개별적으로 또는 공동으로 실행하는 머신들의 집합을 포함하도록 또한 취해질 것이다.
머신(800)은 버스(802)를 통한 것과 같이, 서로 통신하도록 구성될 수 있는 프로세서들(810), 메모리(830), 및 입력/출력(I/O) 컴포넌트들(850)을 포함할 수 있다. 예시적인 실시예에서, 프로세서들(810)(예컨대, 중앙 프로세싱 유닛(Central Processing Unit)(CPU), 축소 명령어 세트 컴퓨팅(Reduced Instruction Set Computing)(RISC) 프로세서, 복합 명령어 세트 컴퓨팅(Complex Instruction Set Computing)(CISC) 프로세서, 그래픽 프로세싱 유닛(Graphics Processing Unit)(GPU), 디지털 신호 프로세서(Digital Signal Processor)(DSP), 애플리케이션 특정 집적 회로(Application Specific Integrated Circuit)(ASIC), 라디오-주파수 집적 회로(Radio-Frequency Integrated Circuit)(RFIC), 또 다른 프로세서, 또는 그 임의의 적당한 조합)은 예를 들어, 명령어들(816)을 실행할 수 있는 프로세서(812) 및 프로세서(814)를 포함할 수 있다. 용어 "프로세서"는 명령어들을 동시에 실행할 수 있는 2 개 이상의 독립적인 프로세서들(때때로, "코어들"로서 지칭됨)을 포함할 수 있는 멀티-코어 프로세서를 포함하도록 의도된다. 도 7은 다수의 프로세서들을 도시하지만, 머신(800)은 단일 코어를 갖는 단일 프로세서, 다수의 코어들을 갖는 단일 프로세서(예컨대, 멀티-코어 프로세서), 단일 코어를 갖는 다수의 프로세서들, 다수의 코어들을 갖는 다수의 프로세서들, 또는 그 임의의 조합을 포함할 수 있다.
메모리/스토리지(830)는 주 메모리(832), 정적 메모리(834), 또는 다른 메모리와 같은 메모리, 및 저장 유닛(836)을 포함할 수 있고, 양자 모두는 버스(802)를 통한 것과 같이 프로세서들(810)에 의해 액세스가능하다. 저장 유닛(836) 및 메모리(832, 834)는 본원에 설명된 방법론들 또는 기능들 중의 임의의 하나 이상을 구체화하는 명령어들(816)을 저장한다. 명령어들(816)은 머신(800)에 의한 그 실행 동안에, 메모리(832, 834) 내에서, 저장 유닛(836) 내에서, 프로세서들(810) 중의 적어도 하나 내에서(예컨대, 프로세서의 캐시 메모리 내에서), 또는 그 임의의 적당한 조합으로 완전히 또는 부분적으로 또한 상주할 수 있다. 따라서, 메모리(832, 834), 저장 유닛(836), 및 프로세서들(810)의 메모리는 머신-판독가능 매체들(838)의 예들이다.
본원에 이용된 바와 같이, "머신-판독가능 매체"는 명령어들 및 데이터를 일시적으로 또는 영구적으로 저장할 수 있는 디바이스를 의미하고, 랜덤-액세스 메모리(random-access memory)(RAM), 판독-전용 메모리(read-only memory)(ROM), 버퍼 메모리, 플래시 메모리, 광학 매체들, 자기 매체들, 캐시 메모리, 다른 유형들의 스토리지(예컨대, 소거가능 프로그래밍가능한 판독-전용 메모리(Erasable Programmable Read-Only Memory)(EEPROM)), 및/또는 그 임의의 적당한 조합을 포함할 수 있지만, 이것으로 제한되지는 않는다. 용어 "머신-판독가능 매체"는 명령어들(816)을 저장할 수 있는 단일 매체 또는 다수의 매체들(예컨대, 중앙집중화된 또는 분산된 데이터베이스들, 또는 연관된 캐시들 및 서버들)을 포함하도록 택해져야 한다. 용어 "머신-판독가능 매체"는 머신(예컨대, 머신(800))에 의한 실행을 위하여 명령어들(예컨대, 명령어들(816))을 저장할 수 있는 임의의 매체, 또는 다수의 매체들의 조합을 포함하도록 또한 취해질 것이어서, 명령어들은, 머신(800)의 하나 이상의 프로세서들(예컨대, 프로세서들(810))에 의해 실행될 때, 머신(800)으로 하여금, 본원에 설명된 방법론들 중의 임의의 하나 이상을 수행하게 한다. 따라서, "머신-판독가능 매체"는 단일 저장 장치 또는 디바이스 뿐만 아니라, 다수의 저장 장치 또는 디바이스들을 포함하는 "클라우드-기반" 저장 시스템들 또는 저장 네트워크들을 지칭한다. 용어 "머신-판독가능 매체"는 신호들 자체를 제외한다.
입력/출력(I/O) 컴포넌트들(850)은 입력을 수신하고, 출력을 제공하고, 출력을 생성하고, 정보를 송신하고, 정보를 교환하고, 측정들을 캡처하는 등을 위한 광범위한 컴포넌트들을 포함할 수 있다. 특정한 머신에 포함되는 특정 입력/출력(I/O) 컴포넌트들(850)은 머신의 유형에 종속될 것이다. 예를 들어, 모바일 전화들과 같은 휴대용 머신들은 터치 입력 디바이스 또는 다른 이러한 입력 메커니즘들을 포함할 가능성이 있을 것이지만, 헤드리스 서버 머신(headless server machine)은 이러한 터치 입력 디바이스를 포함하지 않을 가능성이 있다. 입력/출력(I/O) 컴포넌트들(850)은 도 7에 도시되지 않은 많은 다른 컴포넌트들을 포함할 수 있다는 것이 인식될 것이다. 입력/출력(I/O) 컴포넌트들(850)은 다음의 논의를 단지 단순화하기 위한 기능성에 따라 그룹화되고, 그룹은 결코 제한하는 것이 아니다. 다양한 예시적인 실시예들에서, 입력/출력(I/O) 컴포넌트들(850)은 출력 컴포넌트들(852) 및 입력 컴포넌트들(854)을 포함할 수 있다. 출력 컴포넌트들(852)은 시각 컴포넌트들(예컨대, 플라즈마 디스플레이 패널(plasma display panel)(PDP), 발광 다이오드(light emitting diode)(LED) 디스플레이, 액정 디스플레이(liquid crystal display)(LCD), 프로젝터, 또는 음극선관(cathode ray tube)(CRT)과 같은 디스플레이), 음향 컴포넌트들(예컨대, 스피커들), 햅틱 컴포넌트들(예컨대, 진동 모터, 저항 메커니즘들), 다른 신호 생성기들 등을 포함할 수 있다. 입력 컴포넌트들(854)은 영숫자 입력 컴포넌트들(예컨대, 키보드, 영숫자 입력을 수신하도록 구성된 터치 스크린, 포토-광 키보드(photo-optical keyboard), 또는 다른 영숫자 입력 컴포넌트들), 점 기반 입력 컴포넌트들(예컨대, 마우스, 터치패드, 트랙볼, 조이스틱, 모션 센서, 또는 또 다른 포인팅 툴), 촉각 입력 컴포넌트들(예컨대, 물리적 버튼, 터치들 또는 터치 제스처들의 위치 및/또는 힘을 제공하는 터치 스크린, 또는 다른 촉각 입력 컴포넌트들), 오디오 입력 컴포넌트들(예컨대, 마이크로폰) 등을 포함할 수 있다.
추가의 예의 실시예들에서, 입력/출력(I/O) 컴포넌트들(850)은 다양한 다른 컴포넌트들 중에서, 생체계측 컴포넌트들(856), 모션 컴포넌트들(858), 환경적 컴포넌트들(860), 또는 포지션 컴포넌트들(862)을 포함할 수 있다. 예를 들어, 생체계측 컴포넌트들(856)은 표현들(예컨대, 손 표현들, 얼굴 표정들, 발성 표현들, 신체 제스처들, 또는 시선 추적)을 검출하고, 생체신호들(예컨대, 혈압, 심박수, 신체 온도, 땀, 또는 뇌파들)을 측정하고, 사람을 식별(예컨대, 음성 식별, 망막 식별, 얼굴 식별, 지문 식별, 또는 뇌전도(electroencephalogram) 기반 식별)하는 등을 위한 컴포넌트들을 포함할 수 있다. 모션 컴포넌트들(858)은 가속도 센서 컴포넌트들(예컨대, 가속도계), 중력 센서 컴포넌트들, 회전 센서 컴포넌트들(예컨대, 자이로스코프(gyroscope)) 등을 포함할 수 있다. 환경적 컴포넌트들(860)은 예를 들어, 조명 센서 컴포넌트들(예컨대, 광도계(photometer)), 온도 센서 컴포넌트들(예컨대, 주위 온도를 검출하는 하나 이상의 온도계들), 습도 센서 컴포넌트들, 압력 센서 컴포넌트들(예컨대, 기압계), 음향 센서 컴포넌트들(예컨대, 배경 잡음을 검출하는 하나 이상의 마이크로폰들), 근접성 센서 컴포넌트들(예컨대, 근처의 객체들을 검출하는 적외선 센서들), 기체 센서들(예컨대, 안전을 위하여 유해 기체들의 농도들을 검출하거나 대기에서의 오염원들을 측정하기 위한 기체 검출 센서들), 또는 주변의 물리적 환경에 대응하는 표시들, 측정들, 또는 신호들을 제공할 수 있는 다른 컴포넌트들을 포함할 수 있다. 포지션 컴포넌트들(862)은 위치 센서 컴포넌트들(예컨대, 글로벌 포지션 시스템(Global Position System)(GPS) 수신기 컴포넌트), 고도 센서 컴포넌트들(예컨대, 고도가 유도될 수 있는 공기 압력을 검출하는 고도계들 또는 기압계들), 방위 센서 컴포넌트들(예컨대, 자력계들) 등을 포함할 수 있다.
통신은 광범위한 기술들을 이용하여 구현될 수 있다. 입력/출력(I/O) 컴포넌트들(850)은 각각 결합(882) 및 결합(872)을 통해 머신(800)을 네트워크(880) 또는 디바이스들(870)에 결합하도록 동작가능한 통신 컴포넌트들(864)을 포함할 수 있다. 예를 들어, 통신 컴포넌트들(864)은 네트워크(880)와 인터페이싱하기 위한 네트워크 인터페이스 컴포넌트 또는 다른 적당한 디바이스를 포함할 수 있다. 추가의 예들에서, 통신 컴포넌트들(864)은 유선 통신 컴포넌트들, 무선 통신 컴포넌트들, 셀룰러 통신 컴포넌트들, 근접장 통신(Near Field Communication)(NFC) 컴포넌트들, Bluetooth® 컴포넌트들(예컨대, Bluetooth® 로우 에너지(Low Energy)), Wi-Fi® 컴포넌트들, 및 다른 양상(modality)들을 통해 통신을 제공하기 위한 다른 통신 컴포넌트들을 포함할 수 있다. 디바이스들(870)은 또 다른 머신, 또는 광범위한 주변 디바이스들(예컨대, 유니버셜 직렬 버스(USB)를 통해 결합된 주변 디바이스) 중의 임의의 것일 수 있다.
또한, 통신 컴포넌트들(864)은 식별자들을 검출할 수 있거나, 식별자들을 검출하도록 동작가능한 컴포넌트들을 포함할 수 있다. 예를 들어, 통신 컴포넌트들(864)은 라디오 주파수 식별(Radio Frequency Identification)(RFID) 태그 판독기 컴포넌트들, NFC 스마트 태그 검출 컴포넌트들, 광학 판독기 컴포넌트들(예컨대, 유니버셜 제품 코드(Universal Product Code)(UPC) 바 코드와 같은 1 차원 바 코드들, 신속 응답(Quick Response)(QR) 코드, 아즈텍 코드(Aztec code), 데이터 매트릭스(Data Matrix), Dataglyph, MaxiCode, PDF417, 울트라 코드(Ultra Code), UCC RSS-2D 바 코드와 같은 다차원 바 코드들, 및 다른 광학 코드들을 검출하기 위한 광학 센서), 또는 음향 검출 컴포넌트들(예컨대, 태그된 오디오 신호들을 식별하기 위한 마이크로폰들)을 포함할 수 있다. 추가적으로, 인터넷 프로토콜(IP) 지오-로케이션(geo-location)을 통한 위치, Wi-Fi® 신호 삼각측량을 통한 위치, 특정한 위치를 표시할 수 있는 NFC 비콘 신호(beacon signal)를 검출하는 것을 통한 로케이션 등과 같은 다양한 정보는 통신 컴포넌트들(862)을 통해 유도될 수 있다.
이 명세서의 전반에 걸쳐, 복수의 사례들은 단일 사례로서 설명된 컴포넌트들, 동작들, 또는 구조들을 구현할 수 있다. 하나 이상의 방법들의 개별적인 동작들은 별도의 동작들로서 예시되고 설명되지만, 개별적인 동작들 중의 하나 이상은 동시에 수행될 수 있고, 어떤 것도 동작들이 예시된 순서로 수행되는 것을 요구하지는 않는다. 일 예의 구성들에서 별도의 컴포넌트들로서 제시된 구조들 및 기능성은 조합된 구조 또는 컴포넌트로서 구현될 수 있다. 유사하게, 단일 컴포넌트로서 제시된 구조들 및 기능성은 별도의 컴포넌트들로서 구현될 수 있다. 이러한 그리고 다른 변형들, 수정들, 추가들, 및 개선들은 본원에서의 요지의 범위 내에 속한다.
본원에 예시된 실시예들은 본 기술분야의 통상의 기술자들이 개시된 교시사항들을 실시하는 것을 가능하게 할 정도로 충분히 상세하게 설명된다. 다른 실시예들이 이용될 수 있고 그로부터 유도될 수 있어서, 구조적 및 논리적 치환들 및 변경들은 이 개시내용의 범위로부터 벗어나지 않으면서 행해질 수 있다. 그러므로, 상세한 설명은 제한적인 의미로 취해진 것이 아니고, 다양한 실시예들의 범위는 이러한 청구항들에 부여되는 등가물들의 전체 범위와 함께, 오직 첨부된 청구항들에 의해 정의된다.
본원에 이용된 바와 같이, 용어 "또는"은 포괄적 또는 배타적 의미의 어느 하나로 해석될 수 있다. 또한, 복수의 사례들은 본원에 설명된 자원들, 동작들, 또는 구조들에 대하여 단일 사례로서 제공될 수 있다. 추가적으로, 다양한 자원들, 동작들, 모듈들, 엔진들, 및 데이터 저장소들 사이의 경계들은 다소 임의적이고, 특정한 동작들은 특정 예시적인 구성들의 맥락에서 예시된다. 기능성의 다른 할당들이 상상되고, 본 개시내용의 다양한 실시예들의 범위 내에 속할 수 있다. 일반적으로, 일 예의 구성들에서 별도의 자원들로서 제시된 구조들 및 기능성은 조합된 구조 또는 자원으로서 구현될 수 있다. 유사하게, 단일 자원으로서 제시된 구조들 및 기능성은 별도의 자원들로서 구현될 수 있다. 이러한 그리고 다른 변형들, 수정들, 추가들, 및 개선들은 첨부된 청구항들에 의해 표현된 바와 같이 본 개시내용의 실시예들의 범위 내에 속한다. 따라서, 명세서 및 도면들은 한정적인 의미보다는 예시적으로 간주되어야 한다.

Claims (18)

  1. 게임 자산 위치들을 추적하기 위한 시스템으로서,
    서버에 통신가능하게 결합된 개발자 디바이스
    를 포함하고, 상기 개발자 디바이스는 하나 이상의 메모리들 및 하나 이상의 컴퓨터 프로세서들을 포함하고, 상기 하나 이상의 메모리들은 어드레싱 가능 자산 모듈을 포함하고, 상기 어드레싱 가능 자산 모듈은:
    제1 자산을 이용하여 애플리케이션을 위한 컨텐츠를 생성하는 동작 - 상기 제1 자산은 상기 자산과 연관된 상기 컨텐츠의 적어도 일부를 설명하는 자산 데이터를 포함함 -;
    상기 하나 이상의 메모리들 또는 추가적인 메모리 내의 위치 내의 하나 이상의 파일들 내에 상기 자산 데이터를 배치하는 동작;
    상기 서버 상에 상기 애플리케이션과 연관된 카탈로그를 생성하는 동작;
    상기 제1 자산에 대한 카탈로그 엔트리를 생성하는 동작 - 상기 카탈로그 엔트리는 적어도 어드레스 및 위치 데이터를 포함하고, 상기 어드레스는 상기 제1 자산에 대한 고유한 식별자이고, 상기 위치 데이터는 상기 제1 자산의 위치의 설명임 -;
    상기 제1 자산과 연관된 자산 데이터에 대하여 상기 애플리케이션으로부터 요청을 수신하는 동작 - 상기 요청은 상기 어드레스를 포함함 -;
    상기 어드레스 및 상기 카탈로그를 이용하여 상기 어드레스와 연관된 상기 위치 데이터를 결정하는 동작;
    상기 결정된 위치 데이터를 이용하여 상기 결정된 위치에서 상기 자산 데이터를 취출하는 동작; 및
    상기 취출된 자산 데이터를 상기 애플리케이션으로 반환하는 동작
    을 포함하는 동작들을 수행하도록 상기 하나 이상의 컴퓨터 프로세서들을 구성하는, 시스템.
  2. 제1항에 있어서, 상기 어드레싱 가능 자산 모듈은 상기 애플리케이션의 실행가능 버전을 구축하도록 상기 하나 이상의 컴퓨터 프로세서들을 추가로 구성하고, 상기 실행가능 버전은 상기 카탈로그를 지시하는 데이터를 포함하는, 시스템.
  3. 제1항에 있어서, 상기 하나 이상의 파일들은 제2 위치로 이동되고, 상기 어드레싱 가능 자산 모듈은 상기 제2 위치를 설명하는 데이터로 상기 카탈로그 엔트리 내의 상기 위치 데이터를 수정하도록 상기 하나 이상의 컴퓨터 프로세서들을 추가로 구성하는, 시스템.
  4. 제1항에 있어서, 상기 제1 자산은 제2 자산으로부터의 추가적인 데이터에 종속되고, 이에 의해, 상기 어드레싱 가능 자산 모듈은:
    상기 하나 이상의 메모리들 또는 추가적인 메모리 내의 위치 내의 하나 이상의 파일들 내에 상기 추가적인 데이터를 배치하는 동작;
    상기 제2 자산에 대한 추가적인 고유한 어드레스를 상기 제1 자산과 연관된 상기 카탈로그 엔트리에 추가하는 동작; 및
    상기 추가적인 데이터의 위치를 설명하는 데이터를 상기 제1 자산과 연관된 상기 엔트리에 추가하는 동작
    을 포함하는 동작들을 수행하도록 상기 하나 이상의 컴퓨터 프로세서들을 추가로 구성하는, 시스템.
  5. 제4항에 있어서, 상기 자산 데이터를 취출하는 동작은 상기 추가적인 어드레스 및 상기 카탈로그를 이용하여 상기 추가적인 데이터의 위치를 결정하는 동작, 상기 결정된 위치를 이용하여 상기 추가적인 데이터를 취출하는 동작, 및 상기 취출된 추가적인 데이터를 상기 실행 애플리케이션으로 반환하는 동작을 포함하는, 시스템.
  6. 제2항에 있어서, 상기 자산을 배치하는 동작은 상기 애플리케이션의 실행가능 버전에 대한 자산 번들을 생성하는 동작을 포함하고, 상기 자산 번들은 복수의 자산들 및 연관된 자산 데이터를 포함하는, 시스템.
  7. 게임 자산 위치들을 추적하기 위한 방법으로서,
    개발자 디바이스의 하나 이상의 프로세서들을 이용하여, 제1 자산을 이용하여 애플리케이션을 위한 컨텐츠를 생성하는 단계 - 상기 제1 자산은 상기 자산과 연관된 상기 컨텐츠의 적어도 일부를 설명하는 자산 데이터를 포함함 -;
    상기 하나 이상의 메모리들 내의 위치 내의 하나 이상의 파일들 내에 상기 자산 데이터를 배치하는 단계;
    서버 상에 상기 애플리케이션과 연관된 카탈로그를 생성하는 단계;
    상기 제1 자산에 대한 카탈로그 엔트리를 생성하는 단계 - 상기 카탈로그 엔트리는 적어도 어드레스 및 위치 데이터를 포함하고, 상기 어드레스는 상기 제1 자산에 대한 고유한 식별자이고, 상기 위치 데이터는 상기 제1 자산의 위치의 설명임 -;
    상기 제1 자산과 연관된 자산 데이터에 대하여 상기 애플리케이션으로부터 요청을 수신하는 단계 - 상기 요청은 상기 어드레스를 포함함 -;
    상기 어드레스 및 상기 카탈로그를 이용하여 상기 어드레스와 연관된 상기 위치 데이터를 결정하는 단계;
    상기 결정된 위치 데이터를 이용하여 상기 결정된 위치에서 상기 자산 데이터를 취출하는 단계; 및
    상기 취출된 자산 데이터를 상기 애플리케이션으로 반환하는 단계
    를 포함하는, 방법.
  8. 제7항에 있어서, 상기 어드레싱 가능 자산 모듈은 상기 애플리케이션의 실행가능 버전을 구축하도록 상기 하나 이상의 컴퓨터 프로세서들을 추가로 구성하고, 상기 실행가능 버전은 상기 카탈로그를 지시하는 데이터를 포함하는, 방법.
  9. 제7항에 있어서, 상기 하나 이상의 파일들은 제2 위치로 이동되고, 상기 어드레싱 가능 자산 모듈은 상기 제2 위치를 설명하는 데이터로 상기 카탈로그 엔트리 내의 상기 위치 데이터를 수정하도록 상기 하나 이상의 컴퓨터 프로세서들을 추가로 구성하는, 방법.
  10. 제7항에 있어서, 상기 제1 자산은 제2 자산으로부터의 추가적인 데이터에 종속되고, 이에 의해, 상기 어드레싱 가능 자산 모듈은:
    하나 이상의 메모리들 내의 위치 내의 하나 이상의 파일들 내에 상기 추가적인 데이터를 배치하는 동작;
    상기 제2 자산에 대한 추가적인 고유한 어드레스를 상기 제1 자산과 연관된 상기 카탈로그 엔트리에 추가하는 동작; 및
    상기 추가적인 데이터의 위치를 설명하는 데이터를 상기 제1 자산과 연관된 상기 엔트리에 추가하는 동작
    을 포함하는 동작들을 수행하도록 상기 하나 이상의 컴퓨터 프로세서들을 추가로 구성하는, 방법.
  11. 제10항에 있어서, 상기 자산 데이터를 취출하는 단계는 상기 추가적인 어드레스 및 상기 카탈로그를 이용하여 상기 추가적인 데이터의 위치를 결정하는 단계, 상기 결정된 위치를 이용하여 상기 추가적인 데이터를 취출하는 단계, 및 상기 취출된 추가적인 데이터를 상기 실행 애플리케이션으로 반환하는 단계를 포함하는, 방법.
  12. 제8항에 있어서, 상기 자산을 배치하는 단계는 상기 애플리케이션의 실행가능 버전에 대한 자산 번들을 생성하는 단계를 포함하고, 상기 자산 번들은 복수의 자산들 및 연관된 자산 데이터를 포함하는, 방법.
  13. 명령어들의 세트를 포함하는 비-일시적 머신-판독가능 매체로서,
    상기 명령어들의 세트는:
    제1 자산을 이용하여 애플리케이션을 위한 컨텐츠를 생성하는 동작 - 상기 제1 자산은 상기 자산과 연관된 상기 컨텐츠의 적어도 일부를 설명하는 자산 데이터를 포함함 -;
    하나 이상의 메모리들 내의 위치 내의 하나 이상의 파일들 내에 상기 자산 데이터를 배치하는 동작;
    서버 상에 상기 애플리케이션과 연관된 카탈로그를 생성하는 동작;
    상기 제1 자산에 대한 카탈로그 엔트리를 생성하는 동작 - 상기 카탈로그 엔트리는 적어도 어드레스 및 위치 데이터를 포함하고, 상기 어드레스는 상기 제1 자산에 대한 고유한 식별자이고, 상기 위치 데이터는 상기 제1 자산의 위치의 설명임 -;
    상기 제1 자산과 연관된 자산 데이터에 대하여 상기 애플리케이션으로부터 요청을 수신하는 동작 - 상기 요청은 상기 어드레스를 포함함 -;
    상기 어드레스 및 상기 카탈로그를 이용하여 상기 어드레스와 연관된 상기 위치 데이터를 결정하는 동작;
    상기 결정된 위치 데이터를 이용하여 상기 결정된 위치에서 상기 자산 데이터를 취출하는 동작; 및
    상기 취출된 자산 데이터를 상기 애플리케이션으로 반환하는 동작
    을 포함하는 동작들을 수행하도록 하나 이상의 컴퓨터 프로세서들을 구성하는, 비-일시적 머신-판독가능 매체.
  14. 제13항에 있어서, 상기 어드레싱 가능 자산 모듈은 상기 애플리케이션의 실행가능 버전을 구축하도록 상기 하나 이상의 컴퓨터 프로세서들을 추가로 구성하고, 상기 실행가능 버전은 상기 카탈로그를 지시하는 데이터를 포함하는, 비-일시적 머신-판독가능 매체.
  15. 제13항에 있어서, 상기 하나 이상의 파일들은 제2 위치로 이동되고, 상기 어드레싱 가능 자산 모듈은 상기 제2 위치를 설명하는 데이터로 상기 카탈로그 엔트리 내의 상기 위치 데이터를 수정하도록 상기 하나 이상의 컴퓨터 프로세서들을 추가로 구성하는, 비-일시적 머신-판독가능 매체.
  16. 제13항에 있어서, 상기 제1 자산은 제2 자산으로부터의 추가적인 데이터에 종속되고, 이에 의해, 상기 어드레싱 가능 자산 모듈은:
    하나 이상의 메모리들 내의 위치 내의 하나 이상의 파일들 내에 상기 추가적인 데이터를 배치하는 동작;
    상기 제2 자산에 대한 추가적인 고유한 어드레스를 상기 제1 자산과 연관된 상기 카탈로그 엔트리에 추가하는 동작; 및
    상기 추가적인 데이터의 위치를 설명하는 데이터를 상기 제1 자산과 연관된 상기 엔트리에 추가하는 동작
    을 포함하는 동작들을 수행하도록 상기 하나 이상의 컴퓨터 프로세서들을 추가로 구성하는, 비-일시적 머신-판독가능 매체.
  17. 제16항에 있어서, 상기 자산 데이터를 취출하는 동작은 상기 추가적인 어드레스 및 상기 카탈로그를 이용하여 상기 추가적인 데이터의 위치를 결정하는 동작, 상기 결정된 위치를 이용하여 상기 추가적인 데이터를 취출하는 동작, 및 상기 취출된 추가적인 데이터를 상기 실행 애플리케이션으로 반환하는 동작을 포함하는, 비-일시적 머신-판독가능 매체.
  18. 제14항에 있어서, 상기 자산을 배치하는 동작은 상기 애플리케이션의 실행가능 버전에 대한 자산 번들을 생성하는 동작을 포함하고, 상기 자산 번들은 복수의 자산들 및 연관된 자산 데이터를 포함하는, 비-일시적 머신-판독가능 매체.
KR1020207035998A 2018-05-14 2019-05-14 소프트웨어 개발에서 어드레싱 가능 자산들 KR102488926B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862671244P 2018-05-14 2018-05-14
US62/671,244 2018-05-14
PCT/US2019/032166 WO2019222176A1 (en) 2018-05-14 2019-05-14 Addressable assets in software development

Publications (2)

Publication Number Publication Date
KR20210021309A true KR20210021309A (ko) 2021-02-25
KR102488926B1 KR102488926B1 (ko) 2023-01-13

Family

ID=66669130

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207035998A KR102488926B1 (ko) 2018-05-14 2019-05-14 소프트웨어 개발에서 어드레싱 가능 자산들

Country Status (6)

Country Link
US (2) US10814232B2 (ko)
JP (1) JP7092893B2 (ko)
KR (1) KR102488926B1 (ko)
CN (1) CN112384290A (ko)
GB (1) GB2587738A (ko)
WO (1) WO2019222176A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2587738A (en) 2018-05-14 2021-04-07 Unity IPR ApS Addressable assets in software development
US11461115B2 (en) * 2020-01-28 2022-10-04 Sap Se Third party executable asset bundle deployment
US11947445B2 (en) * 2022-02-18 2024-04-02 Mckinsey & Company, Inc. Adjustment of operating parameters of arranged software assets

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002366356A (ja) * 2001-06-12 2002-12-20 Toshiba Corp ソフトウェア開発支援システム、その方法およびソフトウェア開発支援プログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6181336B1 (en) * 1996-05-31 2001-01-30 Silicon Graphics, Inc. Database-independent, scalable, object-oriented architecture and API for managing digital multimedia assets
US7752214B2 (en) * 2000-09-01 2010-07-06 Op40, Inc. Extended environment data structure for distributed digital assets over a multi-tier computer network
JP2005182419A (ja) 2003-12-18 2005-07-07 Toshiba Solutions Corp コンポーネント処理システム及びコンポーネント処理方法
US7465231B2 (en) * 2004-05-20 2008-12-16 Gametap Llc Systems and methods for delivering content over a network
US20060080702A1 (en) * 2004-05-20 2006-04-13 Turner Broadcasting System, Inc. Systems and methods for delivering content over a network
US20060259386A1 (en) 2005-05-16 2006-11-16 Knowlton Kier L Building digital assets for use with software applications
GB2443846B (en) 2006-11-15 2011-12-07 Joseph Timothy Poole Computing system
US8100766B2 (en) * 2007-03-23 2012-01-24 Electrified Games, Inc. Method and system for personalized digital game creation
US9067140B2 (en) * 2007-12-05 2015-06-30 Verizon Patent And Licensing Inc. Method and apparatus for providing customized games
US8317606B2 (en) * 2008-12-04 2012-11-27 Disney Enterprises, Inc. Live authoring method for real time development of video games
GB201407614D0 (en) * 2014-04-30 2014-06-11 Piksel Inc Content delivery system
US10635715B2 (en) 2016-05-09 2020-04-28 Numecent Holdings, Inc. Remote virtualized asset delivery and local provisioning
GB2587738A (en) 2018-05-14 2021-04-07 Unity IPR ApS Addressable assets in software development

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002366356A (ja) * 2001-06-12 2002-12-20 Toshiba Corp ソフトウェア開発支援システム、その方法およびソフトウェア開発支援プログラム

Also Published As

Publication number Publication date
JP2021524098A (ja) 2021-09-09
US11406901B2 (en) 2022-08-09
WO2019222176A1 (en) 2019-11-21
US20190344181A1 (en) 2019-11-14
CN112384290A (zh) 2021-02-19
US10814232B2 (en) 2020-10-27
KR102488926B1 (ko) 2023-01-13
GB202019710D0 (en) 2021-01-27
GB2587738A8 (en) 2021-04-28
GB2587738A (en) 2021-04-07
JP7092893B2 (ja) 2022-06-28
US20210016179A1 (en) 2021-01-21

Similar Documents

Publication Publication Date Title
US11132289B2 (en) Method and system for improved performance of a video game engine
US11900233B2 (en) Method and system for interactive imitation learning in video games
US11406901B2 (en) Addressable assets in software development
US20190342425A1 (en) Method and system for autonomous content optimization in games and graphical interactive applications
US20200122038A1 (en) Method and system for behavior generation with a trait based planning domain language
US11562517B2 (en) Method and system for populating a digital environment using a semantic map
US11951390B2 (en) Method and system for incremental topological update within a data flow graph in gaming
US20200126310A1 (en) Method and system for addressing and segmenting portions of the real world for visual digital authoring in a mixed reality environment
US20230173385A1 (en) Method and system for retargeting a human component of a camera motion
US11366823B2 (en) Method and system for transforming and delivering digital assets over a network
US11344812B1 (en) System and method for progressive enhancement of in-app augmented reality advertising
US20210342308A1 (en) System and method for performing context aware operating file system virtualization
US11369870B2 (en) Method and system for dynamic notation in a game system
US20240131424A1 (en) Method and system for incremental topological update within a data flow graph in gaming
US11863863B2 (en) System and method for frustum context aware digital asset suggestions
US20230306671A1 (en) Method and system for distributed rendering for simulation
US20220414984A1 (en) Volumetric data processing using a flat file format

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant