CN111897596A - Unity游戏资源加载优化方法及系统 - Google Patents
Unity游戏资源加载优化方法及系统 Download PDFInfo
- Publication number
- CN111897596A CN111897596A CN202010705177.7A CN202010705177A CN111897596A CN 111897596 A CN111897596 A CN 111897596A CN 202010705177 A CN202010705177 A CN 202010705177A CN 111897596 A CN111897596 A CN 111897596A
- Authority
- CN
- China
- Prior art keywords
- loading
- game
- resources
- resource
- unity
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000005457 optimization Methods 0.000 title claims abstract description 24
- 230000006399 behavior Effects 0.000 claims abstract description 27
- 238000013507 mapping Methods 0.000 claims abstract description 16
- 238000007619 statistical method Methods 0.000 claims abstract description 10
- 238000004140 cleaning Methods 0.000 claims description 25
- 238000012545 processing Methods 0.000 claims description 22
- 230000000694 effects Effects 0.000 claims description 17
- 238000004458 analytical method Methods 0.000 claims description 13
- 238000005070 sampling Methods 0.000 claims description 12
- 230000009471 action Effects 0.000 claims description 6
- 238000001514 detection method Methods 0.000 claims description 6
- 238000009933 burial Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 4
- 230000033764 rhythmic process Effects 0.000 description 4
- 239000004575 stone Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 241000209504 Poaceae Species 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 210000005155 neural progenitor cell Anatomy 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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/60—Generating 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
Abstract
本发明公开了一种Unity游戏资源加载优化方法及系统,该方法包括:在游戏程序的关键点增加数据埋点,采集游戏资源的加载数据记录到日志;收集所述日志并统计分析,获取所述游戏资源的加载特征,得出预加载资源及策略加载资源;根据所述游戏程序的运行节点选择相应的所述预加载资源进行预加载,以及,根据所述运行节点及操作行为模式,动态设置所述游戏资源的加载优先级及Unity的贴图GPU异步上传参数,加载所述策略加载资源;根据所述游戏资源的加载耗时以及所述游戏资源的大小,对所述游戏资源进行AssetBundle拆分或合并。本发明对游戏资源分阶段缓存,根据玩家的操作行为用相应的加载优先策略,可以提高游戏资源的加载的效率,有效地改善游戏加载的卡顿问题。
Description
技术领域
本发明涉及Unity游戏的技术领域,特别涉及一种Unity游戏资源加载优化方法及系统。
背景技术
随着游戏SOC芯片性能的提升,手机的CPU和GPU计算能力越来越强,游戏的资源量也越来越丰富:更高的模型面数、更加精细的贴图、更复杂的shader等。一方面游戏计算能力和渲染能力大大增加,另一方面随着资源的增加,游戏的加载却是越来越慢,想要精细、丰富的画面,等待的时机却越来越长。
针对加载慢的问题,常用的解决方案是缓存。资源缓存,固然可以提高加载的速度,但往往受限于手机内存大小,游戏应用内存占用达到700MB时,易引发游戏崩溃。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种Unity游戏资源加载优化方法,能够有效利用手机有限内存,提高加载效率。
本发明还提出一种具有上述Unity游戏资源加载优化方法的Unity游戏资源加载优化系统。
根据本发明的第一方面实施例的Unity游戏资源加载优化方法,包括:埋点采样步骤,在游戏程序的关键点增加数据埋点,采集游戏资源的加载数据,并通过日志进行记录;日志分析步骤,收集所述日志并统计分析,获取所述游戏资源的加载特征,并根据所述加载特征得出预加载资源及策略加载资源;加载缓存步骤,根据所述游戏程序的运行节点选择相应的所述预加载资源进行预加载,以及,检测所述游戏程序中用户的操作行为模式,根据所述运行节点及所述操作行为模式,动态设置所述游戏资源的加载优先级及Unity的贴图GPU异步上传参数,对所述策略加载资源进行加载;资源包处理步骤,根据所述游戏资源的加载耗时以及所述游戏资源的大小,对所述游戏资源进行AssetBundle拆分或合并,并在Unity的单个协程中同时加载若干预设数量的AssetBundle。
根据本发明实施例的Unity游戏资源加载优化方法,至少具有如下有益效果:通过日志数据埋点采样分析获取加载资源瓶颈,根据加载特征提取出预加载资源及策略加载资源,分阶段进行缓存,根据玩家的游戏的操作行为模式,使用不同的加载优先策略,可以提高游戏资源的加载的效率,有效地改善游戏加载的卡顿问题,使得游戏运行时显示更为平滑稳定。
根据本发明的一些实施例,所述数据埋点采集的数据包括:模块名、行为标签、资源名、加载开始时间、加载结束时间及实例化时间。这些数据采集有利于分析获取资源加载瓶颈,如资源加载频繁度及资源加载压力较大的模块等,方便定位问题。
根据本发明的一些实施例,所述关键点包括:场景的开启结束、界面的打开关闭、角色模型的加载以及特效的加载。关键点有利于确定瓶颈点触发的原因,如特殊场景等。
根据本发明的一些实施例,所述日志分析步骤包括:根据场景、界面、角色以及特效分类统计所述游戏资源的加载耗时及性能数据;获取第一预设时长内加载次数大于预设加载次数的所述游戏资源;获取所述游戏程序在启动后的第一初始时间内,加载的所述游戏资源的大小及数量。统计分析便于提取预加载资源及从加载频繁度的资源中获取用于边玩边加载的高频度加载的策略加载资源。
根据本发明的一些实施例,所述加载缓存包括:若所述游戏程序启动或者账号登录,则加载所述游戏程序在所述第一初始时间内使用的着色器以及所述游戏程序的登录主界面中相应的所述游戏资源。提升玩家初始游戏时间内的游戏流畅度感受,防止劝退。
根据本发明的一些实施例,所加载缓存步骤包括:若所述游戏程序启动、进入场景或者界面操作,将所述游戏资源的加载优先级设置为最高;若检查所述操作行为模式为行走或战斗,则将所述游戏资源的加载优先级设置为最低;若检测第二预设时长内所述操作行为模式为无操作,则将所述游戏资源的加载优先级设置为正常,依次加载所述策略加载资源。在玩家有操作但操作节奏点不高时保证资源的顺畅加载,节奏点过快时则防止频繁加载资源造成内存占用过大导致卡顿,短期无操作时则缓存策略加载文件不干扰正常游戏通过预加载防止后续加载压力过大。
根据本发明的一些实施例,所述Unity的贴图异步上传参数的动态调整方法包括:根据所述游戏程序的运行环境的内存大小,将所述贴图异步上传参数中的QualitySettings.asyncUploadBufferSize调整为16MB;若检测到所述游戏程序进入场景或打开界面,将所述贴图异步上传参数中的QualitySettings.asyncUploadTimeSlice调整为8ms;若检测到所述操作行为模式为行走或战斗,将所述贴图异步上传参数中的QualitySettings.asyncUploadTimeSlice调整为2ms。游戏程序运行的硬件环境允许,则将异步上传至GPU的缓冲区大小调整为较大,以便可更多贴图或mesh文件至显存;根据玩家的操作强度,调整每秒CPU允许上传的贴图到gpu的时间,防止操作节奏强的节点(行走或战斗)频繁加载卡计算影响体验,在操作节奏不太敏感的场合则可提升画面质量。
根据本发明的一些实施例,还包括:基于预设资源清理规则,按照未使用时长从长到短的顺序,定期清理缓存中的所述游戏资源,使所述缓存中的所述游戏资源的数量在预设资源数阈值范围内;其中所述预设资源清理规则被配置为根据所述游戏资源的类型按贴图、动作文件以及Mesh文件依次进行清理。根据资源类型的加载速度由小到大,且考虑到游戏资源的依赖关系,按上述预设资源清理规则,可最大限度利用缓存,防止缓存溢出。
根据本发明的第二方面实施例的Unity游戏资源加载优化系统,包括:埋点采样模块,用于在游戏程序的关键点增加数据埋点,采集游戏资源的加载数据,并通过日志进行记录;日志分析模块,用于收集所述日志并统计分析,获取所述游戏资源的加载特征,并根据所述加载特征得出预加载资源及策略加载资源;加载缓存模块,用于根据所述游戏程序的运行节点选择相应的所述预加载资源进行预加载,以及,检测所述游戏程序中用户的操作行为模式,根据所述运行节点及所述操作行为模式,动态设置所述游戏资源的加载优先级及Unity的贴图GPU异步上传参数,对所述策略加载资源进行加载;资源包处理模块,用于根据所述游戏资源的加载耗时以及所述游戏资源的大小,对所述游戏资源进行AssetBundle拆分或合并,并在Unity的单个协程中同时加载若干预设数量的AssetBundle。
根据本发明实施例的Unity游戏资源加载优化系统,至少具有如下有益效果:通过日志数据埋点采样分析获取加载资源瓶颈,根据加载特征提取出预加载资源及策略加载资源,分阶段进行缓存,根据玩家的游戏的操作行为模式,使用不同的加载优先策略,可以提高游戏资源的加载的效率,有效地改善游戏加载的卡顿问题,使得游戏运行时显示更为平滑稳定。
根据本发明的一些实施例,还包括:缓存清理模块,用于基于预设资源清理规则,按照未使用时长从长到短的顺序,定期清理缓存中的所述游戏资源,使所述缓存中的所述游戏资源的数量在预设资源数阈值范围内;其中所述预设资源清理规则被配置为根据所述游戏资源的类型按贴图、动作文件以及Mesh文件依次进行清理;贴图检测处理模块,用于检测贴图资源的大小,对所述贴图资源进行压缩;场景加载控制模块,用于按顺序依次加载场景的地表资源、场景物件、天空及场景特效,其中所述场景物件按由大到小的顺序进行加载;加载等待处理模块,用于若所述游戏资源的加载时长超过预设等待时长,则播放相应的屏幕特效。缓存清理模块提高了缓冲的有效利用率,保证了一定的加载速度;场景加载模块保证最低限的游戏体验,加载等待处理模块防止用户产生疲劳感;贴图检测控制模块则可一定程度提高游戏的加载效率。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例的方法的步骤流程示意图;
图2为本发明实施例的系统的模块的示意框图之一;
图3为本发明实施例的系统的模块的示意框图之二。
附图标记:
埋点采样模块100、日志分析模块200、加载缓存模块300、资源包处理模块400;
缓存清理模块500、贴图检测处理模块600、场景加载控制模块700、加载等待处理模块800。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个及两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
名词解释:
Unity:一种游戏开发引擎。
AssetBundle:Unity中的游戏资源文件的打包文件。
prefab:Unity中的游戏资源文件的类型。
参照图1,本发明的实施例的方法包括:埋点采样步骤,在游戏程序的关键点增加数据埋点,采集游戏资源的加载数据,并通过日志进行记录;日志分析步骤,收集日志并统计分析,获取游戏资源的加载特征,并根据加载特征得出预加载资源及策略加载资源;加载缓存步骤,根据游戏程序的运行节点选择相应的预加载资源进行预加载,以及,检测游戏程序中用户的操作行为模式,根据运行节点及操作行为模式,动态设置游戏资源的加载优先级及Unity的贴图GPU异步上传参数,对策略加载资源进行加载;资源包处理步骤,根据游戏资源的加载耗时以及游戏资源的大小,对游戏资源进行AssetBundle拆分或合并,并在Unity的单个协程中同时加载若干预设数量的AssetBundle。
在本发明的一个实施例的埋点采样步骤中,选取以下游戏程序关键点进行埋点:(1)场景开始、场景结束;(2)界面的打开、界面关闭;(3)角色、NPC、部队等的开始加载、结束加载;(4)特效的开始加载、结束加载;(5)其它游戏其它的模块及资源:如声音、抽奖、活动等。在数据埋点中通过日志记录的内容包括:加载游戏资源的模块(包括场景名、界面名、函数等)、游戏资源的名称、加载开始时间、加载结束时间、实例化时间以及行为标签。其中行为标签是指:加载该资源的原因或目的,例如:文件加载、读条贴图等。游戏运行,收集日志,可根据日志中获取各游戏资源的加载耗时及资源文件的大小。进行统计分析后可得:对于单个场景,场景总加载的时间、该场景下加载的所有游戏资源文件及各游戏资源文件的加载耗时;角色、界面、特效等的加载性能及耗时;第一预设时长内加载次数大于预设加载次数的游戏资源,即提取出加载频度高的资源;游戏程序在启动后的第一初始时间(如15分钟)内,加载的游戏资源的大小及数量。
根据日志分析统计得到数据,以及资源的加载特征,提取出两个列表清单:预加载资源,用于在游戏启动时,提前加载,并且缓存在内存中;策略加载资源,用于在游戏过程中,边玩边加载,缓存在内存中。预加载资源的加载过程可按游戏启动进度分两次进行,加载时间控制在2s左右,分别在启动游戏、登录进游戏里进行加载。内容包括:游戏里前15min里用到的着色器shader;着色器shader的体积占用虽小,但编译缓慢,缓存有利于提高加载速度;游戏刚进入到登录主界面涉及的资源,包括ui声音、登录背景图、登录场景、通用图集、以及相应的动画、模型文件。启动游戏时可优先加载登录主界面所涉及的资源及主界面所使用的着色器shader。剩余部分在登录操作后进行加载。策略加载资源的优先顺序依次设置为:模型、动作、频率使用高的贴图、频繁用到的图集。本发明的实施例中将缓存中的资源分为常驻资源及非常驻资源,其中常驻资源包括常用的着色器Shader,鼠标与触控特效,以及,主角模型(指用户当前使用的游戏角色)数据,常驻于缓存。非常驻资源则包括:预加载资源及策略加载资源,可被清理出缓存。非常驻资源的清理过程为:按照先贴图再动作文件最后Mesh文件的顺序进行清理,优先选择最长未使用的资源,可使内存中的资源文件保持在某个阈值的范围内,如总数量小于某个正整数等。
Unity引擎对游戏资源加载提供4个分档,每个分档加载资源时,每帧(一般每秒30帧,每帧约33.3毫秒)允许分配的时间不同;其中:ThreadPriority.Low约2ms,ThreadPriority.BelowNormal约4ms,ThreadPriority.Normal约10ms,ThreadPriority.High约50ms。游戏启动时,优先加载,设置加载优先级设置为High;玩家操作打开界面时,优先加载,设置加载优先级到ThreadPriority.High;玩家进入、切换场景时,优先加载,设置加载优先级到ThreadPriority.High;检测到玩家在大世界里行走、战斗,优先游戏体验,设置加载优先级到Low;检测第二预设时长内玩家操作行为模式为无操作,例如5~10s没有玩家无任何操作,则启动策略加载,依次加载策略加载资源,并设置加载优先级为ThreadPriority.BelowNormal。
Unity 2018提Async Upload Pipeline技术,简称AUP。该技术支持加载线程异步加载Texture和Mesh资源,并且通过渲染线程直接将其传送到GPU。使用该技术必须注意:(1)texure或mesh开启了r/w(读写操作)则不支持线程加载,即需要在主线程加载;(2)mesh开启了压缩也不支持线程加载,即需要在主线程加载和解压处理。Unity提供的代码接口,可动态修改以下两个值:(1)QualitySettings.asyncUploadTimeSlice,每秒cpu允许上传的贴图到gpu的时间,时间越长,则允许上传的内容越多,其系统默认值是2ms。(2)QualitySettings.asyncUploadBufferSize,允许异步上传的texture或mesh的缓存区大小,越大则可以上传越多的内容,其系统默认值是4MB。检测游戏运行设备的内存,在内存允许的情况,设置QualitySettings.asyncUploadBufferSize=16,从而异步可以上传更多的texture或mesh;打开界面时,主要需要上传texture或mesh到显存,故增大:QualitySettings.asyncUploadTimeSlice值到8ms;进入场景时,调整QualitySettings.asyncUploadTimeSlice值到8ms;检测到玩家在大世界里行走、战斗,优先游戏体验,QualitySettings.asyncUploadTimeSlice=2ms.
在针对日志的统计分析中,可获取游戏资源文件的加载耗时及大小。对于加载时间较长的游戏资源,进行拆分。如一个大的场景prefab加载用了1s,里面包含地表、树、山、石等,可拆成:地表、树、山、石等一个prefab,进行散件加载,每个控制在200ms以内,这样帧率更加平滑,避免加载中突然有耗时超过1s,引起卡顿。若当发现AssetBundle大小仅几百B,或者小于500KB的资源,加载性能也会急剧下降,需要合并,并控制一个AssetBundle在500KB~1024KB,可提高加载效率。Unity一个协程同时加载若干个AssetBundle,也可提高加载速率。应理解的是,本发明的实施例中,上述优化过程可以根据需要反复进行,以达到更好的加载流畅度。
本发明实施例的系统,参照图2,包括:埋点采样模块100、日志分析模块200、加载缓存模块300及资源包处理模块400。埋点采样模块100,用于在游戏程序的关键点增加数据埋点,采集游戏资源的加载数据,并通过日志进行记录;日志分析模块200,用于收集日志并统计分析,获取游戏资源的加载特征,并根据加载特征得出预加载资源及策略加载资源;加载缓存模块300,用于根据游戏程序的运行节点选择相应的预加载资源进行预加载,以及,检测游戏程序中用户的操作行为模式,根据运行节点及操作行为模式,动态设置游戏资源的加载优先级及Unity的贴图GPU异步上传参数,对策略加载资源进行加载;资源包处理模块400,用于根据游戏资源的加载耗时以及游戏资源的大小,对游戏资源进行AssetBundle拆分或合并,并在Unity的单个协程中同时加载若干预设数量的AssetBundle。
本发明的另一个实施例的系统,参照图3,包括:埋点采样模块100、日志分析模块200、加载缓存模块300及资源包处理模块400,还包括:缓存清理模块500、贴图检测处理模块600、场景加载控制模块700以及加载等待处理模块800。缓存清理模块500,用于基于预设资源清理规则,按照未使用时长从长到短的顺序,定期清理缓存中的游戏资源中的非常驻资源,使缓存中的游戏资源的数量在预设资源数阈值范围内;其中预设资源清理规则被配置为根据游戏资源的类型按贴图、动作文件以及Mesh文件依次进行清理。本发明的实施例中将缓存中的资源分为常驻资源及非常驻资源,其中常驻资源包括常用的着色器Shader,鼠标与触控特效,以及,主角模型(指用户当前使用的游戏角色)数据,常驻于缓存。非常驻资源则包括:预加载资源及策略加载资源,可被清理出缓存。非常驻资源的清理过程为:按照先贴图再动作文件最后Mesh文件的顺序进行清理,优先选择最长未使用的资源,可使内存中的资源文件保持在某个阈值的范围内,如总数量小于某个正整数等。贴图检测处理模块600,用于检测贴图资源的大小,对贴图资源进行压缩。贴图资源压缩后,加载效率会提高,但会降低美术视觉效果;因此对贴图资源进行大小规格检测,有利于在美术视觉效果及加载速度中取得平衡。场景加载控制模块700,用于按顺序依次加载场景的地表资源、场景物件、天空及场景特效,其中场景物件按由大到小的顺序进行加载。场景的加载,优先保证地表的加载,接着,加载场景里大块的物体,例如先加载山接着水,接着石,接着树,接着草,最后加载天上的云,场景的特效;先让玩家看到地面,再去加载地面的上其它的元素,增加代入感。加载等待处理模块800,用于若游戏资源的加载时长超过预设等待时长,则播放相应的屏幕特效。例如,加载时长超过3s时,在加载过程中时加播放云层切换的特效或者开关门、鲜花盛开等特,可以缓解玩家等待的疲劳感。
尽管本文描述了具体实施方案,但是本领域中的普通技术人员将认识到,许多其它修改或另选的实施方案同样处于本公开的范围内。例如,结合特定设备或组件描述的功能和/或处理能力中的任一项可以由任何其它设备或部件来执行。另外,虽然已根据本公开的实施方案描述了各种例示性具体实施和架构,但是本领域中的普通技术人员将认识到,对本文所述的例示性具体实施和架构的许多其它修改也处于本公开的范围内。
上文参考根据示例性实施方案所述的系统、方法、装置和/或计算机程序产品的框图和流程图描述了本公开的某些方面。应当理解,框图和流程图中的一个或多个块以及框图和流程图中的块的组合可分别通过执行计算机可执行程序指令来实现。同样,根据一些实施方案,框图和流程图中的一些块可能无需按示出的顺序执行,或者可以无需全部执行。另外,超出框图和流程图中的块所示的那些部件和/或操作以外的附加部件和/或操作可存在于某些实施方案中。
因此,框图和流程图中的块支持用于执行指定功能的装置的组合、用于执行指定功能的元件或步骤的组合以及用于执行指定功能的程序指令装置。还应当理解,框图和流程图中的每个块以及框图和流程图中的块的组合可以由执行特定功能、元件或步骤的专用硬件计算机系统或者专用硬件和计算机指令的组合来实现。
本文所述的程序模块、应用程序等可包括一个或多个软件组件,包括例如软件对象、方法、数据结构等。每个此类软件组件可包括计算机可执行指令,所述计算机可执行指令响应于执行而使本文所述的功能的至少一部分(例如,本文所述的例示性方法的一种或多种操作)被执行。
软件组件可以用各种编程语言中的任一种来编码。一种例示性编程语言可以为低级编程语言,诸如与特定硬件体系结构和/或操作系统平台相关联的汇编语言。包括汇编语言指令的软件组件可能需要在由硬件架构和/或平台执行之前由汇编程序转换为可执行的机器代码。另一种示例性编程语言可以为更高级的编程语言,其可以跨多种架构移植。包括更高级编程语言的软件组件在执行之前可能需要由解释器或编译器转换为中间表示。编程语言的其它示例包括但不限于宏语言、外壳或命令语言、作业控制语言、脚本语言、数据库查询或搜索语言、或报告编写语言。在一个或多个示例性实施方案中,包含上述编程语言示例中的一者的指令的软件组件可直接由操作系统或其它软件组件执行,而无需首先转换成另一种形式。
软件组件可存储为文件或其它数据存储构造。具有相似类型或相关功能的软件组件可一起存储在诸如特定的目录、文件夹或库中。软件组件可为静态的(例如,预设的或固定的)或动态的(例如,在执行时创建或修改的)。
上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
Claims (10)
1.一种Unity游戏资源加载优化方法,其特征在于,包括:
埋点采样步骤,在游戏程序的关键点增加数据埋点,采集游戏资源的加载数据,并通过日志进行记录;
日志分析步骤,收集所述日志并统计分析,获取所述游戏资源的加载特征,并根据所述加载特征得出预加载资源及策略加载资源;
加载缓存步骤,根据所述游戏程序的运行节点选择相应的所述预加载资源进行预加载,以及,检测所述游戏程序中用户的操作行为模式,根据所述运行节点及所述操作行为模式,动态设置所述游戏资源的加载优先级及Unity的贴图GPU异步上传参数,对所述策略加载资源进行加载;
资源包处理步骤,根据所述游戏资源的加载耗时以及所述游戏资源的大小,对所述游戏资源进行AssetBundle拆分或合并,并在Unity的单个协程中同时加载若干预设数量的AssetBundle。
2.根据权利要求1所述的Unity游戏资源加载优化方法,其特征在于,所述数据埋点采集的数据包括:模块名、行为标签、资源名、加载开始时间、加载结束时间及实例化时间。
3.根据权利要求1所述的Unity游戏资源加载优化方法,其特征在于,所述关键点包括:场景的开启结束、界面的打开关闭、角色模型的加载以及特效的加载。
4.根据权利要求1所述的Unity游戏资源加载优化方法,其特征在于,所述日志分析步骤包括:
根据场景、界面、角色以及特效分类统计所述游戏资源的加载耗时及性能数据;
获取第一预设时长内加载次数大于预设加载次数的所述游戏资源;
获取所述游戏程序在启动后的第一初始时间内,加载的所述游戏资源的大小及数量。
5.根据权利要求4所述的Unity游戏资源加载优化方法,其特征在于,所述加载缓存包括:若所述游戏程序启动或者账号登录,则加载所述游戏程序在所述第一初始时间内使用的着色器以及所述游戏程序的登录主界面中相应的所述游戏资源。
6.根据权利要求1所述的Unity游戏资源加载优化方法,其特征在于,所加载缓存步骤包括:
若所述游戏程序启动、进入场景或者界面操作,将所述游戏资源的加载优先级设置为最高;
若检查所述操作行为模式为行走或战斗,则将所述游戏资源的加载优先级设置为最低;
若检测第二预设时长内所述操作行为模式为无操作,则将所述游戏资源的加载优先级设置为正常,依次加载所述策略加载资源。
7.根据权利要求1所述的Unity游戏资源加载优化方法,其特征在于,所述Unity的贴图异步上传参数的动态调整方法包括:
根据所述游戏程序的运行环境的内存大小,将所述贴图异步上传参数中的QualitySettings.asyncUploadBufferSize调整为16MB;
若检测到所述游戏程序进入场景或打开界面,将所述贴图异步上传参数中的QualitySettings.asyncUploadTimeSlice调整为8ms;
若检测到所述操作行为模式为行走或战斗,将所述贴图异步上传参数中的QualitySettings.asyncUploadTimeSlice调整为2ms。
8.根据权利要求1所述的Unity游戏资源加载优化方法,其特征在于,还包括:基于预设资源清理规则,按照未使用时长从长到短的顺序,定期清理缓存中的所述游戏资源,使所述缓存中的所述游戏资源的数量在预设资源数阈值范围内;其中所述预设资源清理规则被配置为根据所述游戏资源的类型按贴图、动作文件以及Mesh文件依次进行清理。
9.一种Unity游戏资源加载优化系统,使用权利要求1至8中任一项的方法,其特征在于,包括:
埋点采样模块,用于在游戏程序的关键点增加数据埋点,采集游戏资源的加载数据,并通过日志进行记录;
日志分析模块,用于收集所述日志并统计分析,获取所述游戏资源的加载特征,并根据所述加载特征得出预加载资源及策略加载资源;
加载缓存模块,用于根据所述游戏程序的运行节点选择相应的所述预加载资源进行预加载,以及,检测所述游戏程序中用户的操作行为模式,根据所述运行节点及所述操作行为模式,动态设置所述游戏资源的加载优先级及Unity的贴图GPU异步上传参数,对所述策略加载资源进行加载;
资源包处理模块,用于根据所述游戏资源的加载耗时以及所述游戏资源的大小,对所述游戏资源进行AssetBundle拆分或合并,并在Unity的单个协程中同时加载若干预设数量的AssetBundle。
10.根据权利要求9所述的Unity游戏资源加载优化系统,其特征在于,还包括:
缓存清理模块,用于将基于预设资源清理规则,按照未使用时长从长到短的顺序,定期清理缓存中的所述游戏资源中的非常驻资源,使所述缓存中的所述游戏资源的数量在预设资源数阈值范围内;其中所述预设资源清理规则被配置为根据所述游戏资源的类型按贴图、动作文件以及Mesh文件依次进行清理;
贴图检测处理模块,用于检测贴图资源的大小,对所述贴图资源进行压缩;
场景加载控制模块,用于按顺序依次加载场景的地表资源、场景物件、天空及场景特效,其中所述场景物件按由大到小的顺序进行加载;
加载等待处理模块,用于若所述游戏资源的加载时长超过预设等待时长,则播放相应的屏幕特效。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010705177.7A CN111897596A (zh) | 2020-07-21 | 2020-07-21 | Unity游戏资源加载优化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010705177.7A CN111897596A (zh) | 2020-07-21 | 2020-07-21 | Unity游戏资源加载优化方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111897596A true CN111897596A (zh) | 2020-11-06 |
Family
ID=73190722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010705177.7A Pending CN111897596A (zh) | 2020-07-21 | 2020-07-21 | Unity游戏资源加载优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111897596A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112386916A (zh) * | 2020-12-01 | 2021-02-23 | 网易(杭州)网络有限公司 | 资源加载的方法、装置及电子设备 |
CN112473144A (zh) * | 2020-11-19 | 2021-03-12 | 完美世界(重庆)互动科技有限公司 | 游戏资源数据的处理方法及装置 |
CN112604273A (zh) * | 2020-12-24 | 2021-04-06 | 完美世界(北京)软件科技发展有限公司 | 数据驱动的游戏系统功能加载方法、设备及存储介质 |
CN113434149A (zh) * | 2021-07-07 | 2021-09-24 | 腾讯科技(深圳)有限公司 | 应用程序生成和加载方法、装置和介质 |
CN114356566A (zh) * | 2021-12-30 | 2022-04-15 | 许磊 | 一种基于相关性的游戏数据流媒体化方法 |
WO2023134276A1 (zh) * | 2022-01-12 | 2023-07-20 | 腾讯科技(深圳)有限公司 | 资源预加载方法和装置、存储介质及计算机设备 |
CN116700994A (zh) * | 2023-08-02 | 2023-09-05 | 深圳尚米网络技术有限公司 | 一种资源加速方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160023109A1 (en) * | 2014-07-22 | 2016-01-28 | Sony Computer Entertainment America Llc | Save Game Load Time Reduction for Cloud Gaming |
CN107918586A (zh) * | 2017-10-25 | 2018-04-17 | 珠海金山网络游戏科技有限公司 | 一种基于日志的资源加载效率分析方法和装置 |
CN111078271A (zh) * | 2019-11-29 | 2020-04-28 | 珠海金山网络游戏科技有限公司 | 基于特征分类训练器的优化Unity打AB包的方法 |
CN111078537A (zh) * | 2019-11-29 | 2020-04-28 | 珠海金山网络游戏科技有限公司 | Unity游戏bundle包资源划分的评估方法 |
-
2020
- 2020-07-21 CN CN202010705177.7A patent/CN111897596A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160023109A1 (en) * | 2014-07-22 | 2016-01-28 | Sony Computer Entertainment America Llc | Save Game Load Time Reduction for Cloud Gaming |
CN107918586A (zh) * | 2017-10-25 | 2018-04-17 | 珠海金山网络游戏科技有限公司 | 一种基于日志的资源加载效率分析方法和装置 |
CN111078271A (zh) * | 2019-11-29 | 2020-04-28 | 珠海金山网络游戏科技有限公司 | 基于特征分类训练器的优化Unity打AB包的方法 |
CN111078537A (zh) * | 2019-11-29 | 2020-04-28 | 珠海金山网络游戏科技有限公司 | Unity游戏bundle包资源划分的评估方法 |
Non-Patent Citations (1)
Title |
---|
企鹅号 - 侑虎科技: ""Unity技术分享88-耗时分析、修改材质球、加载资源", 《HTTPS://CLOUD.TENCENT.COM/DEVELOPER/NEWS/162394》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112473144A (zh) * | 2020-11-19 | 2021-03-12 | 完美世界(重庆)互动科技有限公司 | 游戏资源数据的处理方法及装置 |
CN112386916A (zh) * | 2020-12-01 | 2021-02-23 | 网易(杭州)网络有限公司 | 资源加载的方法、装置及电子设备 |
CN112604273A (zh) * | 2020-12-24 | 2021-04-06 | 完美世界(北京)软件科技发展有限公司 | 数据驱动的游戏系统功能加载方法、设备及存储介质 |
CN112604273B (zh) * | 2020-12-24 | 2021-08-24 | 完美世界(北京)软件科技发展有限公司 | 数据驱动的游戏系统功能加载方法、设备及存储介质 |
CN113434149A (zh) * | 2021-07-07 | 2021-09-24 | 腾讯科技(深圳)有限公司 | 应用程序生成和加载方法、装置和介质 |
CN113434149B (zh) * | 2021-07-07 | 2023-09-08 | 腾讯科技(深圳)有限公司 | 应用程序生成和加载方法、装置和介质 |
CN114356566A (zh) * | 2021-12-30 | 2022-04-15 | 许磊 | 一种基于相关性的游戏数据流媒体化方法 |
WO2023125875A1 (en) * | 2021-12-30 | 2023-07-06 | Lei Xu | Correlation-based streaming method for game data |
WO2023134276A1 (zh) * | 2022-01-12 | 2023-07-20 | 腾讯科技(深圳)有限公司 | 资源预加载方法和装置、存储介质及计算机设备 |
CN116700994A (zh) * | 2023-08-02 | 2023-09-05 | 深圳尚米网络技术有限公司 | 一种资源加速方法及系统 |
CN116700994B (zh) * | 2023-08-02 | 2024-03-12 | 深圳尚米网络技术有限公司 | 一种资源加速方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111897596A (zh) | Unity游戏资源加载优化方法及系统 | |
WO2020220915A1 (zh) | 虚拟对象显示方法、装置、电子设备及存储介质 | |
US8290920B2 (en) | System and method for remote updates | |
CN108010112B (zh) | 动画处理方法、装置及存储介质 | |
CN103310475B (zh) | 动画播放方法及装置 | |
KR102131644B1 (ko) | 전자장치 및 전자장치에서의 웹 플랫폼 동작방법 | |
CN111881401A (zh) | 基于WebAssembly的浏览器深度学习方法及系统 | |
CN1975747A (zh) | 一种rpg游戏场景路径的自动生成方法及装置 | |
US20210271640A1 (en) | File loading method and apparatus, electronic device, and storage medium | |
CN111049870B (zh) | 应用下载和发送的方法、装置及系统 | |
CN113730902A (zh) | 一种用于游戏的免下载运行方法 | |
CN112473144A (zh) | 游戏资源数据的处理方法及装置 | |
CN112052097A (zh) | 虚拟场景的渲染资源处理方法、装置、设备及存储介质 | |
CN107526623A (zh) | 一种数据处理方法及装置 | |
US11813520B2 (en) | Tracking file system read operations for instant play of video games, and for client-side discarding and prefetching of game data | |
WO2019196378A1 (zh) | 应用程序的内容推送方法、内容推送系统及智能终端 | |
CN114416031B (zh) | 面向AIoT场景支持RISC-V处理器的操作系统 | |
CN112202751B (zh) | 动画的处理方法、装置、电子设备及存储介质 | |
CN115495020A (zh) | 文件处理方法、装置、电子设备和可读存储介质 | |
CN109889883A (zh) | 一种精彩时刻视频录制方法及装置 | |
CN114344920A (zh) | 基于虚拟场景的数据录制方法、装置、设备及存储介质 | |
AT&T | paper-submitted.pdf | |
CN113163255A (zh) | 视频播放方法、装置、终端及存储介质 | |
US20220138630A1 (en) | Predictive streaming system | |
Theera-Ampornpunt et al. | Appstreamer: Reducing storage requirements of mobile games through predictive streaming |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201106 |
|
RJ01 | Rejection of invention patent application after publication |