软件开发中的可寻址资产的制作方法

文档序号:23987891发布日期:2021-02-20 12:34阅读:105来源:国知局
软件开发中的可寻址资产的制作方法
软件开发中的可寻址资产
[0001]
相关申请的交叉引用
[0002]
本申请要求于2018年5月14日提交的题为“system and method for addressable assets in software development”的美国临时申请第62/671,244号的权益,其通过引用整体并入本文。
技术领域
[0003]
本公开内容涉及用于在管理对用于游戏和其他应用中的虚拟资产的数据的跟踪中使用的工具。


背景技术:

[0004]
在视频游戏创建的世界中,存在引导创建者完成游戏创建的主要过程的许多工具,游戏创建的主要过程包括设计游戏、构建游戏和部署游戏。这些工具中的许多工具使得初级计算机编程人员(和非计算机编程人员)能够执行这些过程内的一些步骤。然而,当涉及到针对游戏或其他应用打包和跟踪数字资产(例如,包括角色、背景对象、武器、特定效果等)的数据时,部署过程仍然是相当困难的。这是部分地由于游戏可能具有的大量的操作系统和装置作为部署目标而引起的。
[0005]
例如,操作系统和装置对于使用数字资产通常具有不同的格式要求。此外,高质量游戏通常具有大量虚拟资产,这对于其中装置内存和下载限制可能成为问题的移动游戏而言成为问题。此外,大多数游戏是在首次利用新的虚拟资产发行(例如,添加不同游戏模式或添加游戏水平)之后发展起来的,从而使得对虚拟资产和相关联的数据的跟踪随着时间的推移变得越来越复杂。
[0006]
对于游戏开发者而言,以使得在游戏时间时能够有效加载的方式来构造游戏的数字资产是困难的。一种解决方案是将数字资产划分为块,当需要时(例如,当需要块内的资产时)将其下载。当使用数字资产块时的局限性是游戏开发者理解和管理数字资产块的复杂性所需的高水平专业知识。使用资产块通常涉及编写代码以构建、加载、卸载和管理该块及其依赖关系。增量构建(例如,当向游戏添加新资产时仅更新块)无法可靠地进行,从而每当资产更新时通常会强制重建块内的所有资产,这会导致与游戏中的资产数量成比例地增加的潜在的巨大时间花费。由于游戏的复杂性随着时间的推移而增加,因此这可能导致代码的重构。
附图说明
[0007]
根据结合附图进行的以下详细描述,本公开内容的示例实施方式的特征和优点将变得明显,在附图中:
[0008]
图1是示出根据一个实施方式的可寻址资产系统的示意图;
[0009]
图2是示出根据一个实施方式的使用可寻址资产系统的开发周期的示意图;
[0010]
图3是根据一个实施方式的使用可寻址资产系统的内容创建过程的流程图;
[0011]
图4是根据一个实施方式的使用可寻址资产系统的构建过程的流程图;
[0012]
图5是根据一个实施方式的使用可寻址资产系统的运行时过程的流程图;
[0013]
图6是示出可以与本文描述的各种硬件架构结合使用的示例软件架构的框图;以及
[0014]
图7是示出根据一些示例实施方式的机器的部件的框图,该机器的部件被配置成从机器可读介质(例如,机器可读存储介质)读取指令并执行本文讨论的方法中的任意一种或更多种方法。
[0015]
将注意的是,在所有附图中,相同的特征由相同的附图标记标识。
具体实施方式
[0016]
以下描述单独地或组合地描述了包括本公开内容的说明性实施方式的示例系统、方法、技术、指令序列和计算机器程序产品。在以下描述中,出于说明的目的,阐述了许多具体细节以提供对发明主题的各种实施方式的理解。然而,对于本领域技术人员而言将明显的是,可以在没有这些具体细节的情况下实践本发明主题的各种实施方式。
[0017]
本文描述了一种使用地址针对游戏提供数字资产的有效运行时加载的可寻址资产系统。可寻址资产系统处理游戏的资产管理并简化内容的创建和部署。根据实施方式,在玩游戏(例如,执行游戏代码)期间,可寻址资产系统允许游戏代码在运行时简单地查询与数字资产相关联的地址并且接收描述驻留在该地址处的数字资产的数据。使用可寻址资产系统,开发工作室可以大大地改进项目(例如,游戏的开发)的迭代时间,从而使得工作室能够更频繁地设计、编码和测试项目,从而获得更高质量的游戏或应用。
[0018]
在示例实施方式中,公开了一种用于跟踪游戏资产位置的方法。使用第一资产创建针对应用的内容。第一资产包括描述与该资产相关联的内容的至少一部分的资产数据。将资产数据放置在一个或更多个存储器内的位置内的一个或更多个文件内。在服务器上创建与应用相关联的目录。创建针对第一资产的目录条目。目录条目至少包括地址和位置数据,地址是针对第一资产的唯一标识符并且位置数据是第一资产的位置的描述。接收来自应用的对与第一资产相关联的资产数据的请求,该请求包括地址。使用地址和目录来确定与地址相关联的位置数据。使用所确定的位置数据来检索在所确定的位置处的资产数据。将所检索到的资产数据返回至应用。
[0019]
在本文的整个说明书中使用的术语“环境”或“游戏环境”应理解为包括2d数字环境(例如2d视频游戏环境、2d仿真环境等)、3d数字环境(例如3d游戏环境、3d仿真环境、3d内容创建环境、虚拟现实环境等)以及包括数字(例如虚拟)部件和真实世界部件两者的增强现实环境。
[0020]
本文所使用的术语“游戏对象”应理解为包括在环境(例如,游戏环境)内的任何数字对象或数字元素。游戏对象几乎可以代表在环境内的任何事物,包括角色、武器、场景元素(例如,建筑物、树木、汽车、宝物等)、背景(例如,地形、天空等)、灯光、摄像装置、效果(例如,声音和视觉)、动画等。游戏对象与定义该对象的属性和行为的数据相关联。
[0021]
本文所使用的术语“资产”、“游戏资产”和“数字资产”应理解为包括可以用于描述游戏对象或者可以用于描述游戏或项目的方面的任何数据。例如,资产可以包括用于图像、3d模型(纹理、装配等)、一组3d模型(例如,整个场景)、音频、视频、动画、3d网格等的数据。
描述资产的数据可以存储在文件内,或者可以包含在文件的集合内,或者可以被压缩并存储在一个文件(例如,压缩文件)中,或者可以存储在存储器内。可以使用描述资产的数据以在运行时使在游戏内的一个或更多个游戏对象实例化。
[0022]
在本文的整个说明书中,术语“资产包”是指描述一个或更多个资产的一组数据。这组数据可以在一个文件或一组文件(例如zip文件)内或在存储器内。资产包内的数据是下述数据,所述数据存储在可执行游戏文件外部并且被游戏在运行时期间使用以创建或修改游戏内的对象。两个或更多个资产包彼此之间可以具有依赖关系;例如,表示资产包“a”中材料的资产可以引用表示资产包“b”中纹理的资产。此外,在游戏的运行时期间,资产包可以由编程对象(例如,面向对象的编程对象)来表示,该编程对象可以经由(例如,来自可执行游戏文件内的)代码与其交互,以将描述资产的数据从特定资产包加载到游戏中。资产包编程对象可以包括位置(例如,至资产包内文件的文件路径)至游戏内对象的映射。
[0023]
现在转向附图,示出了根据本发明的实施方式的用于可寻址资产的系统和方法,所述系统和方法包括非例行性或非常规的部件或操作或者这样的部件或操作的组合。根据实施方式,图1示出了用于通过地址提供资产的有效运行时加载的可寻址资产系统100。在示例实施方式中,可寻址资产系统100包括:由开发者130(例如,游戏开发者、艺术家等)操作的开发者装置102;由用户160操作的用户装置162;以及经由网络150(例如,蜂窝网络、wi-fi网络、因特网、有线局域网络等)耦合在网络通信中的内容服务器140。在一些实施方式中,内容服务器140可以是内容递送网络(cdn)。用户装置162是能够向用户160提供多媒体体验(例如,视频游戏、仿真、虚拟现实体验、增强现实体验等)的计算装置。在一些实施方式中,用户装置162是移动计算装置,例如,智能电话、平板计算机和诸如虚拟现实hmd、增强现实hmd和混合现实hmd的头戴式显示器(hmd)等。在一些实施方式中,用户装置162是台式计算机或游戏控制台。开发者装置102是能够向开发者130提供集成开发环境ide或游戏开发平台(例如,诸如unitytm游戏引擎)的计算装置。在一些实施方式中,开发者装置102是移动计算装置,例如,智能电话、平板计算机和诸如虚拟现实hmd、增强现实hmd和混合现实hmd的头戴式显示器(hmd)等。在一些实施方式中,开发者装置102是台式计算机。
[0024]
根据实施方式,内容服务器140包括数据库142和服务器144。数据库142包括由驻留在用户装置162上的应用(例如游戏)使用的资产。
[0025]
根据实施方式,开发者装置102包括一个或更多个中央处理单元103(cpu)和图形处理单元105(gpu)。cpu 103是任意类型的处理器、包括多个处理元件(未示出)的处理器组件,所述cpu 103能够访问存储器101以检索存储在其上的指令并执行这样的指令。在执行这样的指令时,这些指令实现开发者装置102以执行如本文描述的一系列任务。存储器101可以是任意类型的存储器装置,例如,随机存取存储器、只读或可重写存储器、内部处理器缓存等。
[0026]
开发者装置102还包括一个或更多个输入/输出装置108诸如例如键盘或小键盘、鼠标、指向装置和触摸屏。开发者装置102还包括一个或更多个显示装置109,例如,计算机监控器、触摸屏和头戴式显示器,所述一个或更多个显示装置109可以被配置成向开发者130显示包括视频、视频游戏环境、集成开发环境和虚拟仿真环境的数字内容。显示装置109由一个或更多个gpu 105驱动或控制以及可选地由cpu 103驱动或控制。gpu 105对有助于加速通过显示装置109的输出的渲染的图形输出的各方面进行处理。开发者装置102还包括
用于通过网络150进行通信的一个或更多个联网装置107(例如,有线网络适配器或无线网络适配器)。
[0027]
开发者装置102中的存储器101可以被配置成存储应用114(例如,集成开发环境ide),该应用114包括游戏引擎104(例如,由cpu 103或gpu 105执行),该游戏引擎104与显示装置109以及还与诸如输入装置108的其他硬件进行通信以向开发者130呈现应用。游戏引擎104通常可以包括一个或更多个模块,所述一个或更多个模块提供下述内容以向用户提供应用环境(例如,视频游戏或仿真环境):游戏对象的动画物理、游戏对象的碰撞检测、渲染、联网、声音、动画等。应用114包括提供如本文描述的各种可寻址资产系统100功能的可寻址资产模块116。应用114包括构建管理器118和资源管理器120。游戏引擎104、应用114、构建管理器118、资源管理器120和可寻址资产模块116中的每一个包括驻留在存储器101中的计算机可执行指令,所述计算机可执行指令在操作期间由cpu 103执行以及可选地利用gpu 105执行。游戏引擎104包括驻留在存储器101中的计算机可执行指令,所述计算机可执行指令在操作期间由cpu 103执行以及可选地利用gpu 105执行,以创建运行时程序例如游戏引擎。应用114包括驻留在存储器101中的计算机可执行指令,所述计算机可执行指令在操作期间由cpu 103执行以及可选地由gpu 105执行,以创建运行时应用程序例如ide。可寻址资产模块116、构建管理器118和资源管理器120可以直接地集成在游戏引擎104内或应用114内,或者可以实现为外部软件块(例如插件)。
[0028]
根据实施方式,用户装置162包括一个或更多个中央处理单元163(例如,类似于开发者装置102中的cpu 103)和图形处理单元165(例如,类似于开发者装置102中的gpu 105)。cpu 163是任意类型的处理器、包括多个处理元件(未示出)的处理器组件,所述cpu 163能够访问存储器161以检索存储在其上的指令并执行这样的指令。在执行这样的指令时,这些指令实现用户装置162以执行如本文描述的一系列任务。存储器161可以是类似于开发者装置102上的存储器101的任意类型的存储器装置。
[0029]
用户装置162还包括类似于开发者装置102上的输入/输出装置108的一个或更多个输入/输出装置168。用户装置162还包括类似于开发者装置102上的显示装置109的一个或更多个显示装置169,所述一个或更多个显示装置169可以被配置成向用户160显示包括视频、视频游戏环境和虚拟仿真环境的数字内容。显示装置169由一个或更多个gpu 165驱动或控制以及可选地由cpu 163驱动或控制。gpu 165对有助于加速通过显示装置169的输出的渲染的图形输出的各方面进行处理。用户装置162还包括用于通过网络150进行通信的一个或更多个联网装置167(例如,有线网络适配器或无线网络适配器)。
[0030]
根据实施方式,用户装置162中的存储器161可以被配置成存储应用174(例如,视频游戏、仿真、虚拟现实体验、增强现实体验),该应用174包括游戏引擎164(例如,由cpu 163或gpu 165执行),该游戏引擎164与显示装置169以及还与诸如输入装置168的其他硬件进行通信,以向用户160呈现应用。游戏引擎164类似于开发者装置102上的游戏引擎104。应用174包括提供如本文描述的各种可寻址资产系统100功能的可寻址资产模块166。应用174包括资源管理器170。游戏引擎164、应用174、资源管理器170和可寻址资产模块166中的每一个包括驻留在存储器161中的计算机可执行指令,所述计算机可执行指令在操作期间由cpu 163执行以及可选地利用gpu 165执行。游戏引擎164包括驻留在存储器161中的计算机可执行指令,所述计算机可执行指令在操作期间由cpu 163执行以及可选地利用gpu 165执
行,以创建运行时程序例如游戏引擎。应用174包括驻留在存储器161中的计算机可执行指令,所述计算机可执行指令在操作期间由cpu 163执行以及可选地利用gpu 165执行,以创建运行时应用程序例如视频游戏或仿真器。可寻址资产模块166和资源管理器170可以直接地集成在游戏引擎164内或应用174内,或者可以实现为外部软件块(例如插件)。
[0031]
根据实施方式,图2中示出的是用于使用可寻址资产系统100创建应用的应用开发周期205。周期205中的第一过程是应用内容创建200,其中,开发者130使用开发者装置102来创建针对应用(例如,视频游戏、虚拟现实体验、电影、仿真等)的内容。例如,开发者130可以使用应用114和应用114中的游戏引擎104,以通过使用游戏对象创建3d场景并将属性和行为分配给游戏对象来创建内容。周期205中的第二过程是应用构建202,其中,创建了能够在操作系统(例如,包括microsoft windows
tm
操作系统、apple
tm
操作系统、linux操作系统、android
tm
操作系统等)上运行的独立的可执行应用。可执行应用可以包括可执行文件以及可执行文件可能需要的其他数据文件(例如,资源文件)。当构建独立的可执行应用时,生成的文件将根据构建目标操作系统而变化。例如,可执行应用内的文件可以针对每个操作系统而不同。周期205中的第三过程是运行时过程204,其中,在用户装置162上运行(例如执行)可执行应用并且向用户160呈现该应用(例如,游戏、虚拟现实体验、电影、仿真等)。
[0032]
根据实施方式,图3中示出的是来自应用开发周期205的应用内容创建过程200的操作。在操作300处,开发者130使用一个或更多个资产创建针对应用的内容。作为创建过程的一部分,开发者130可以导入针对应用的资产,并且可以创建针对应用的资产。创建内容包括创建游戏对象(例如,角色和风景)、游戏水平等。在操作302处,游戏引擎104针对每个资产生成唯一标识(或唯一id)(例如,包括数字、字母、字母数字或任意类型的字符串标识)。唯一id是标识一个资产的永久唯一标识符。定义资产的数据存储在一个或更多个文件中。在操作304处,开发者130使用可寻址资产系统100指示资产将是可寻址的(例如,经由通过模块116生成的图形用户接口或者经由通过模块116提供的代码和应用接口(api))。根据实施方式,可寻址资产具有相关联的名称(例如,字符串标签),以易于标识和引用该可寻址资产。在一些实施方式中,标签可以由一组可寻址资产共享。可寻址资产的标签提供了可以用于运行时加载多个相似资产的辅助标识符。例如,游戏可以包括若干类型的空间危险,这些空间危险被标记为“空间危险(spacehazards)”,并且所有这些空间危险都可以利用使用标签作为输入(例如,加载所有(“空间危险”))的单个命令被访问。在操作306处,可寻址资产模块116提供针对资产的地址并将该地址与针对资产数据的位置(例如,文件路径名称)关联。根据实施方式,该位置包括诸如内容服务器140(例如,内容递送网络)、远程服务器和本地数据存储装置(例如,开发者装置102上的本地硬盘驱动)的物理位置。该地址标识了资产,以在运行时(例如,当正在玩游戏时)进行有效的检索。根据实施方式,资产地址被初始化为包含针对资产的数据的文件的文件路径位置的字符串值。在操作308处,可寻址资产模块116在数据被移动(例如,由开发者)时跟踪资产数据的位置(例如,通过跟踪包含数据的一个或更多个文件)。
[0033]
根据实施方式,图4中示出的是使用可寻址资产系统100的构建过程202。在构建过程202的操作400处,可寻址资产模块116接收描述要被打包为资产包的可寻址资产组(例如,可寻址资产列表)的数据。例如,开发者130可以使用由模块116或游戏引擎114提供的用户接口来创建可寻址资产组。在操作402处,构建管理器118接收对应用的构建的请求。该请
求包括配置文件数据(例如由开发者创建),该配置文件数据包括用于资产包的构建(例如,包括打包版本的准备由可执行应用使用的资产包的构建)的设置。作为构建过程202的操作402的一部分,开发者可以发出请求并且创建配置文件(例如,经由图形用户接口)。在构建过程202的操作404处,针对可寻址资产组中的每个资产,可寻址资产模块116搜索资产文件的最当前位置(例如,最当前文件路径)。在构建过程202的操作406处,可寻址资产模块116创建针对应用的内容目录,该内容目录包括与应用相关联的一个或更多个资产包。内容目录包括资产地址列表,其中一个或更多个资产包中的每个资产与列表中的至少一个资产地址条目关联。根据实施方式,针对列表上的每个资产地址条目,提供了针对描述资产的文件的位置的数据。内容目录提供了资产地址与包含描述资产的数据的至少一个位置之间的映射,该资产与该资产地址相关联。每个内容目录与可执行应用相关联(例如,可执行应用可以包含指向与其相关联的内容目录的数据)。内容目录还可以包括用于将描述资产的数据加载到应用中的指令。在构建过程202的操作408处,可寻址资产模块116根据请求中的设置来将来自可寻址资产组的资产及其依赖关系打包为资产包。即使当资产被移动或重命名时(例如,由于资产被可寻址资产模块116跟踪的事实),可寻址资产模块116也理解复杂的资产依赖关系链并有效地打包。根据实施方式,作为操作408的一部分,可寻址资产模块116将重复的资产进行分离,并且将他们放置在单独的包中,以在运行时更清晰地加载。重复的资产是与两个或更多个资产具有依赖关系的单个资产。根据实施方式,可寻址资产模块116对要包括在资产包中的资产子集(例如,包括用于用户接口菜单、游戏或应用教程以及第一级游戏内容的资产)进行优先排序。作为操作408的一部分,可寻址资产模块116可以基于配置文件中指示的最大尺寸限制来分割内容构建。例如,可寻址资产系统100可以被配置成限制构建应用的尺寸(例如100mb)并且将剩余资产作为可下载内容导入到资产包中,以使对游戏或应用的内容的打包优化,从而减少了通过网络到装置的数据的下载并且减少了到存储器中的数据的加载。
[0034]
根据实施方式,图5中示出的是开发周期205的运行时模式204,由此在用户装置162上下载并执行应用,以向用户160呈现应用的运行时版本。在应用的运行时期间,应用174内的可寻址资产模块166将资产从资产包中下载到用户装置162上的存储器161中(例如,以供应用使用)。可寻址资产系统100使用内容目录内的映射来使得在运行时能够按名称(例如,标签或地址)加载一个或更多个可寻址资产(例如,整个资产场景),而不考虑一个或更多个资产处于哪个资产包中或者资产包位于何处(例如,在通过网络的远程装置上或在本地装置上)或者可寻址资产是否已经由开发者移动。在内容目录中实时跟踪并更新资产位置的变化(例如,通过操作308和操作406中的可寻址资产模块116),因此可寻址资产模块166总是包括可寻址资产的当前位置。通过地址指定资产使开发者能够创建在运行时加载资产的应用,而不需要开发者编写特定代码来直接跟踪磁盘或服务器或内容递送网络(cdn)上的资产的数据位置。
[0035]
根据实施方式,参照图5,在运行时模式204的操作500处,应用在用户装置162上运行(例如执行)。例如,应用可以由操作用户装置162的用户来执行(例如,以经由应用174的运行时版本玩游戏)。根据实施方式,在运行时模式204的操作502处,应用174(在执行时)需要来自资产包内的资产。正在执行的应用确定所需资产的地址并将包括该地址的请求发送至可寻址资产模块166。该请求包括该地址和对与所需资产相关联的数据(例如,资产文件
内的资产数据)的请求。根据实施方式,在运行时模式204的操作504处,可寻址资产模块166通过网络150与在内容服务器140上的内容目录进行通信(例如,发送请求),以确定与该地址相关联的数据的当前位置。根据实施方式,在运行时模式204的操作506处,可寻址资产模块166根据从内容目录接收到的当前位置异步地下载所需资产数据。
[0036]
根据实施方式,可寻址资产系统100包括依赖关系管理,由此内容目录包括在目录内的针对每个地址条目的依赖关系信息。因此,在运行时,作为操作504和操作506的一部分,可寻址资产模块116接收针对任何请求地址的与依赖性资产相关联的数据(例如,无需指定依赖关系的位置)。例如,应用174可以仅通过资产的地址或标签来请求资产,并且该应用174将接收关于资产的依赖性资产的数据。
[0037]
根据实施方式,利用操作506内的异步加载,所请求的资产以及所请求的资产的依赖关系可以驻留在任何位置(本地、远程服务器或cdn),以用于以任意顺序进行加载(例如,与同步加载相反,由此具有依赖关系的本地资产将要求该依赖关系是本地的并且还将要求在资产加载之后直接加载依赖关系)。通过使用异步下载以及加载到存储器中以供正在执行的应用使用,可寻址资产系统100使用户能够灵活地移动资产(例如,从本地构建组移动至远程构建组)而无需更改应用174内的代码。与地址结合的异步加载使得(例如,在操作302中创建的)唯一资产标识符能够与位置、打包和加载解耦,以使得这些方面能够在开发周期205期间更改并适应部署需求。更具体地,与地址结合的异步加载使得资产的位置(例如,本地、远程、所生成等的)能够在应用的开发周期205的整个过程中更改,而无需更改(例如应用内的)代码来引用该资产。在没有可寻址资产系统100的情况下,当将资产从本地构建组移动至远程构建组时,开发者将必须更改应用代码(例如,以处理附加的资产加载逻辑)。可寻址资产系统100在开发者正在更新应用174时允许最终用户重新下载尽可能少的数据。可寻址资产系统100允许支持从具有简单内容布局的早期原型开始至具有可以跨越本地数据、多个服务器和各种平台的更复杂内容布局的可交付产品的容易的迁移过程。
[0038]
根据实施方式,作为运行时模式204的一部分,在操作520处,开发者更新针对应用174的一个或更多个资产。该更改可以包括:通过将资产移动至讨论多次发生的构建过程(例如,在构建过程202内)的不同资产包或者更改资产包文件(在构建过程202之后)的物理位置而对资产的位置的更改。根据实施方式,在操作522处,可寻址资产模块116在开发者做出更改时(例如,在操作520处)实时更新内容目录。更改后的资产的新位置信息被记录在与该资产的地址相关联的内容目录中。
[0039]
根据实施方式,当应用174不再需要从资产包加载的资产时,可寻址资产系统100使用参考计数和从资产包加载的资产的自动卸载。
[0040]
应当注意的是,本公开内容可以作为方法来执行,可以在系统、计算机可读介质或者电子或电磁信号中实施。上面所描述并在附图中示出的实施方式仅旨在是示例性的。对于本领域技术人员而言将明显的是,可以在不脱离本公开内容的情况下进行修改。这样的修改被认为是可能的变型,并且处于本公开内容的范围内。
[0041]
在本文中某些实施方式被描述为包括逻辑或许多部件、模块或机构。模块可以构成软件模块(例如,在机器可读介质上或在传输信号中实施的代码)或硬件模块。“硬件模块”是能够执行某些操作并且可以以某种物理方式配置或布置的有形单元。在各种示例实施方式中,一个或更多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器
计算机系统)或者计算机系统的一个或更多个硬件模块(例如,处理器或一组处理器)可以由软件(例如,应用或应用部分)配置为操作以执行如本文中描述的某些操作的硬件模块。
[0042]
在一些实施方式中,硬件模块可以机械地、电子地或以其任何合适的组合来实现。例如,硬件模块可以包括被永久地配置成执行某些操作的专用电路或逻辑。例如,硬件模块可以是专用处理器,诸如,现场可编程门阵列(fpga)或专用集成电路(asic)。硬件模块还可以包括由软件临时地配置成执行某些操作的可编程逻辑或电路。例如,硬件模块可以包括包含在通用处理器或者其他可编程处理器内的软件。应当理解,可以通过成本和时间考虑来推动在专用且永久地配置的电路中或在临时地配置的电路(例如,由软件进行配置)中机械地实现硬件模块的决策。
[0043]
因此,短语“硬件模块”应被理解成包括有形实体,即,被物理构造、永久配置(例如,硬连线)或临时地配置(例如,编程)成以特定方式操作或者执行本文中描述的某些操作的实体。如本文所使用的,“硬件实现的模块”是指硬件模块。考虑其中硬件模块被临时地配置(例如,被编程)的实施方式,硬件模块中的每一个无需在任一时刻及时被配置或实例化。例如,在硬件模块包括由软件配置成为专用处理器的通用处理器的情况下,通用处理器可以在不同时间被配置为各自不同的专用处理器(例如,包括不同的硬件模块)。软件可以将特定的一个或更多个专用处理器相应地配置成例如在一个时刻构成特定的硬件模块并且在不同的时刻构成不同的硬件模块。
[0044]
硬件模块可以向其他硬件模块提供信息并且接收来自其他硬件模块的信息。因此,所描述的硬件模块可以被视为通信地耦接。在同时存在多个硬件模块的情况下,可以通过在两个或更多个硬件模块之间或者在两个或更多个硬件模块之中的信号传输(例如,通过适当的电路和总线)来实现通信。在其中多个硬件模块在不同时间处被配置或实例化的实施方式中,可以例如通过将信息存储在多个硬件模块能够访问的存储器结构中并且在该存储器结构中检索信息来实现在这样的硬件模块之间的通信。例如,一个硬件模块可以执行操作,并且将该操作的输出存储在通信地耦接的存储器装置中。然后,另外的硬件模块可以在稍后的时间处访问存储器装置,以检索并处理所存储的输出。硬件模块还可以启动与输入装置或输出装置的通信,并且可以对资源进行操作(例如,信息的收集)。
[0045]
本文所描述的示例方法的各种操作可以至少部分地由临时地配置(例如,由软件)或永久地配置成执行相关操作的一个或更多个处理器来执行。无论是被临时地配置还是被永久地配置,这样的处理器都可以构成处理器实现的模块,所述处理器实现的模块操作成执行本文中描述的一个或更多个操作或功能。如本文所使用的,“处理器实现的模块”是指使用一个或更多个处理器实现的硬件模块。
[0046]
类似地,本文中描述的方法可以至少部分地由处理器实现,其中特定的一个或更多个处理器是硬件的示例。例如,方法的操作中的至少一些操作可以由一个或更多个处理器或者处理器实现的模块来执行。此外,一个或更多个处理器还可以操作成支持“云计算”环境中的相关操作的执行或者操作为“软件即服务”(saas)。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的示例)来执行,其中这些操作能够经由网络(例如,因特网)并且经由一个或更多个适当的接口(例如,应用程序接口(api))来访问。
[0047]
某些操作的执行可以分布在处理器之间,不仅驻留在单个机器内,而是部署在多个机器中。在一些示例实施方式中,处理器或处理器实现的模块可以位于单个地理位置中
(例如,在家庭环境、办公室环境或服务器场内)。在其他示例实施方式中,处理器或处理器实现的模块可以分布在许多地理位置中。
[0048]
图6是示出示例软件架构702的框图700,该示例软件架构702可以与本文所描述的各种硬件架构结合使用,以提供游戏引擎701和/或可寻址资产系统100的部件。图6是软件架构的非限制性示例,并且应当理解,可以实现许多其他架构以促进本文描述的功能。软件架构702可以在诸如图7的机器800的硬件上执行,机器800包括处理器810、存储器830和输入/输出(i/o)部件850等。代表性硬件层704被示出并且可以表示例如图7的机器800。代表性硬件层704包括具有相关联的可执行指令708的处理单元706。可执行指令708表示软件架构702的可执行指令,包括本文描述的方法、模块等的实现。硬件层704还包括存储器/存储装置710,存储器/存储装置710还包括可执行指令708。硬件层704还可以包括其他硬件712。
[0049]
在图6的示例架构中,软件架构702可以被概念化为层的堆叠,其中每个层提供特定的功能。例如,软件架构702可以包括例如操作系统714、库716、框架或中间件718、应用720和呈现层744的层。在操作上,应用720和/或层内的其他部件可以通过软件堆叠调用应用编程接口(api)724并接收作为消息726的响应。所示出的层本质上是代表性的,并且并非所有软件架构都具有所有层。例如,一些移动操作系统或专用操作系统可能不提供框架/中间件718,而其他操作系统可能提供这样的层。其他软件架构可以包括附加层或不同层。
[0050]
操作系统714可以管理硬件资源并且提供公共服务。操作系统714可以包括例如内核728、服务730和驱动器732。内核728可以用作硬件层与其他软件层之间的抽象层。例如,内核728可以负责存储器管理、处理器管理(例如,调度)、部件管理、联网、安全设置等。服务730可以针对其他软件层提供其他公共服务。驱动器732可以负责控制底层硬件或与底层硬件对接。例如,根据硬件配置,驱动器732可以包括显示驱动器、摄像装置驱动器、驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(usb)驱动器)、驱动器、音频驱动器、电源管理驱动器等。
[0051]
库716可以提供可以由应用720和/或其他部件和/或层使用的公共基础设施。与和底层操作系统714功能(例如,内核728、服务730和/或驱动器732)直接对接相比,库716通常提供允许其他软件模块以更容易的方式执行任务的功能。库816可以包括系统库734(例如,c标准库),该系统库可以提供诸如存储器分配功能、字符串操作功能、数学函数等的功能。另外,库716可以包括api库736,例如媒体库(例如,支持各种媒体格式如mpeg4、h.264、mp3、aac、amr、jpg、png的呈现和操纵的库)、图形库(例如,可以用于在显示器上呈现2d和3d图形内容的opengl框架)、数据库库(例如,可以提供各种关系数据库功能的sqlite)、网络库(例如,可以提供网络浏览功能的webkit)等。库716还可以包括各种各样的其他库738,以向应用720和其他软件部件/模块提供许多其他api。
[0052]
框架718(有时也称为中间件)提供可以由应用720和/或其他软件部件/模块使用的更高水平的公共基础设施。例如,框架/中间件718可以提供各种图形用户接口(gui)功能、高级资源管理、高级位置服务等。框架/中间件718可以提供可以由应用720和/或其他软件组件/模块利用的广范围的其他api,其中一些可以特定于特定操作系统或平台。
[0053]
应用720包括内置应用740和/或第三方应用742。代表性内置应用740的示例可以包括但不限于:联系人应用、浏览器应用、书籍读取器应用、位置应用、媒体应用、消息应用
和/或游戏应用。第三方应用742可以包括由除了特定平台的供应商以外的实体使用android
tm
或ios
tm
软件开发工具包(sdk)开发的任何应用,并且可以是在诸如ios
tm
、android
tm
、phone的移动操作系统或其他移动操作系上运行的移动软件。第三方应用742可以调用由移动操作系统(例如,操作系统714)提供的api调用724,以促进本文描述的功能。
[0054]
应用720可以使用内置操作系统功能(例如,内核728、服务730和/或驱动器732)、库716或框架/中间件718来创建用户接口,以与系统的用户交互。替选地或另外地,在一些系统中,与用户的交互可以通过诸如呈现层744的呈现层来发生。在这些系统中,应用/模块“逻辑”可以从与用户交互的应用/模块的各方面中分离。
[0055]
一些软件架构使用虚拟机。在图6的示例中,这由虚拟机748示出。虚拟机748创建软件环境,其中应用/模块可以执行为似乎它们在硬件机器(诸如例如图7的机器800)上执行一样。虚拟机748由主机操作系统(例如,操作系统714)托管,并且通常但并非总是具有虚拟机监控器746,该虚拟机监控器管理虚拟机748的操作以及与主机操作系统(即操作系统714)的对接。软件架构在诸如操作系统(os)750、库752、框架754、应用756和/或呈现层758的虚拟机748内执行。在虚拟机748内执行的软件架构的这些层可以与先前描述的相应层相同或者可以不同。
[0056]
图7是示出根据一些示例实施方式的机器800的部件的框图,该机器800的部件被配置成从机器可读介质(例如,机器可读存储介质)读取指令并执行本文讨论的方法中的任意一种或更多种方法。在一些实施方式中,机器800类似于开发者装置102和用户装置162。具体地,图7以计算机系统的示例形式示出了机器800的示意图示,在该机器800内可以执行用于使机器800执行本文讨论的方法中的任意一种或更多种方法的指令816(例如,软件、程序、应用、小程序、app或其他可执行代码)。因此,可以使用指令816以实现本文中描述的模块或部件。指令将通用的未编程的机器转变为被编程以按所描述的方式执行所描述和示出的功能的特定机器。在替选实施方式中,机器800操作为独立装置或者可以耦接(例如,联网)到其他机器。在联网部署中,机器800可以在服务器-客户端网络环境中以服务器机器或客户端机器的身份进行操作,或者在对等(或分布式)网络环境中作为对等机器进行操作。机器800可以包括但不限于:服务器计算机、客户端计算机、个人计算机(pc)、平板计算机、膝上型计算机、上网本、机顶盒(stb)、个人数字助理(pda)、娱乐媒体系统、蜂窝电话、智能电话、移动装置、可穿戴装置(例如,智能手表)、智能家庭装置(例如,智能电器)、其他智能装置、web电器、网络路由器、网络交换机、网络桥接器或者能够顺序地或以其他方式执行指定要由机器800采取的动作的指令816的任何机器。此外,虽然仅示出了单个机器800,但是术语“机器”还应该被理解为包括单独或联合地执行指令816以执行本文讨论的方法中的任意一种或更多种方法的机器的集合。
[0057]
机器800可以包括可以被配置成例如经由总线802彼此通信的处理器810、存储器830和输入/输出(i/o)部件850。在示例实施方式中,处理器810(例如,中央处理单元(cpu)、精简指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp)、专用集成电路(asic)、射频集成电路(rfic)、另外的处理器或其任意合适的组合)可以包括例如可以执行指令816的处理器812和处理器814。术语“处理器”旨在包括可以包含可以同时执行指令的两个或更多个独立处理器(有时称为“核”)的多核处理器。
虽然图7示出了多个处理器810,但是机器800可以包括具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理器)、具有单个核的多个处理器、具有多个核的多个处理器或其任意组合。
[0058]
存储器/存储装置830可以包括诸如主存储器832、静态存储器834或其他存储器存储装置的存储器以及存储单元836,两者都能够由处理器810例如经由总线802访问。存储单元836和存储器832、834存储实施本文中描述的任一种或更多种方法或功能的指令816。指令816还可以在其由机器800执行期间完全地或部分地驻留在存储器832、834内,存储单元836内,处理器810中的至少一个内(例如,处理器的高速缓冲存储器内)或其任意合适的组合内。因此,存储器832、834、存储单元836和处理器810的存储器是机器可读介质838的示例。
[0059]
如本文所使用的,“机器可读介质”是指能够临时或永久地存储指令和数据的装置,并且可以包括但不限于随机存取存储器(ram)、只读存储器(rom)、缓冲存储器、闪速存储器、光学介质、磁介质、高速缓冲存储器、其他类型的存储装置(例如,可擦除可编程只读存储器(eeprom))和/或其任意合适组合。术语“机器可读介质”应被视为包括能够存储指令816的单个介质或多个介质(例如,集中式数据库或分布式数据库或相关联的高速缓冲存储器和服务器)。术语“机器可读介质”还应当被认为包括能够存储用于由机器(例如,机器800)执行的指令(例如,指令816)使得该指令在由机器800的一个或更多个处理器(例如,处理器810)执行时使机器800来执行本文所描述的任意一种或更多种方法的任何介质或多个介质的组合。因此,“机器可读介质”是指单个存储设备或装置,以及包括多个存储设备或装置的“基于云”的存储系统或存储网络。术语“机器可读介质”不包括信号本身。
[0060]
输入/输出(i/o)部件850可以包括用于接收输入、提供输出、产生输出、传送信息、交换信息、捕获测量等的各种各样的部件。包括在特定机器中的特定输入/输出(i/o)部件850将取决于机器的类型。例如,诸如移动电话的便携式机器将很可能包括触摸输入装置或其他这样的输入机构,而无终端服务器(headless server)机器将很可能不包括这样的触摸输入装置。应当理解,输入/输出(i/o)部件850可以包括图7中未示出的许多其他部件。根据功能对输入/输出(i/o)部件850进行分组仅是为了简化以下讨论,并且该分组决不是限制性的。在各种示例实施方式中,输入/输出(i/o)部件850可以包括输出部件852和输入部件854。输出部件852可以包括视觉部件(例如,诸如等离子显示面板(pdp)的显示器、发光二极管(led)显示器、液晶显示器(lcd)、投影仪或阴极射线管(crt))、声学部件(例如,扬声器)、触觉部件(例如,振动马达、阻力机构)、其他信号发生器等。输入部件854可以包括字母数字输入部件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他指向仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸手势的位置和/或力的触摸屏或其他触觉输入部件)、音频输入部件(例如,麦克风)等。
[0061]
在另外的示例实施方式中,输入/输出(i/o)部件850可以包括生物部件856、运动部件858、环境部件860或方位部件862以及各种其他部件。例如,生物部件856可以包括用于检测表达(例如,手表达、面部表达、声音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑电波)、识别人(例如,语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的部件。运动部件858可以包括加速度传感器部件(例如,加速度
计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)等。环境部件860可以包括例如照明传感器部件(例如,光度计)、温度传感器部件(例如,检测环境温度的一个或更多个温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、声学传感器部件(例如,检测背景噪声的一个或更多个麦克风)、接近传感器部件(例如,检测附近对象的红外传感器)、气体传感器(例如,用于安全地检测有害气体的浓度或测量大气中污染物的气体检测传感器)、或者可以提供与周围物理环境对应的指示、测量或信号的其他部件。方位部件862可以包括位置传感器部件(例如,全球定位系统(gps)接收器部件)、高度传感器部件(例如,检测可以从其得到高度的气压的高度计或气压计)、方向传感器部件(例如,磁力计)等。
[0062]
可以使用各种各样的技术来实现通信。输入/输出(i/o)部件850可以包括通信部件864,通信部件864能够操作成分别经由耦合882和耦合872将机器800耦接至网络880或装置870。例如,通信部件864可以包括网络接口部件或其他合适的装置以与网络880对接。在另一示例中,通信部件864可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(nfc)部件、部件(例如,低功耗)、部件和经由其他模态提供通信的其他通信部件。装置870可以是另外的机器或各种各样的外围装置中的任一种(例如,经由通用串行总线(usb)耦接的外围装置)。
[0063]
此外,通信部件864可以检测标识符或者可以包括能够操作成检测标识符的部件。例如,通信部件864可以包括射频识别(rfid)标签读取器部件、nfc智能标签检测部件、光学读取器部件(例如,用于检测下述的光学传感器:一维条形码,例如,通用产品代码(upc)条形码;多维条形码,例如,快速响应(qr)代码的、aztec代码、数据矩阵、数据图示符(dataglyph)、麦克斯码(maxicode)、pdf417、超代码、ucc rss-2d条形码和其他光学代码)、或者声学检测部件(例如,用于识别标记的音频信号的麦克风)。另外,可以经由通信部件862获得各种信息,例如,经由因特网协议(ip)地理位置的位置、经由信号三角测量的位置、经由检测可以指示特定位置的nfc信标信号的位置等。
[0064]
遍及本说明书,多个实例可以实现被描述为单个实例的部件、操作或结构。尽管一种或更多种方法的个体操作被示出和描述为分立的操作,但是一个或更多个的个体操作可以同时执行,并且不要求以所示的顺序执行操作。在示例配置中作为独立部件呈现的结构和功能可以被实现为组合的结构或部件。类似地,作为单个部件呈现的结构和功能可以被实现为独立的部件。这些和其他变型、修改、添加以及改进落入本文中的主题的范围内。
[0065]
本文中示出的实施方式被足够详细地描述,以使得本领域技术人员能够实践所公开的教导。其他实施方式可以被使用并且从中得到,使得可以在不偏离本公开内容的范围的情况下进行结构和逻辑替代和改变。因此,本具体实施方式不以限制性意义而被采用,并且各种实施方式的范围仅由所附权利要求以及这些权利要求所赋予的等同内容的全部范围来限定。
[0066]
如本文所使用的,术语“或”可以被解释为包含性或排他性意义。此外,可以为在本文中描述为单个实例的资源、操作或结构提供多个实例。另外,各种资源、操作、模块、引擎和数据存储之间的边界有些随意,并且特定的操作在特定说明性配置的上下文中示出。功能的其他分配被预见并且可以落入本公开内容的各种实施方式的范围内。通常,在示例配置中呈现为独立资源的结构和功能可以被实现为组合的结构或资源。类似地,呈现为单个
资源的结构和功能可以被实现为独立资源。这些和其他变型、修改、添加和改进落入如由所附权利要求书表示的本公开内容的实施方式的范围内。因此,说明书和附图被认为是说明性的而不是限制性意义的。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1