WO2022027600A1 - 游戏引擎资源处理方法及其装置、电子设备及计算机可读存储介质 - Google Patents

游戏引擎资源处理方法及其装置、电子设备及计算机可读存储介质 Download PDF

Info

Publication number
WO2022027600A1
WO2022027600A1 PCT/CN2020/107836 CN2020107836W WO2022027600A1 WO 2022027600 A1 WO2022027600 A1 WO 2022027600A1 CN 2020107836 W CN2020107836 W CN 2020107836W WO 2022027600 A1 WO2022027600 A1 WO 2022027600A1
Authority
WO
WIPO (PCT)
Prior art keywords
resource
game
module
pipeline
resources
Prior art date
Application number
PCT/CN2020/107836
Other languages
English (en)
French (fr)
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 厦门雅基软件有限公司
Priority to EP20948618.2A priority Critical patent/EP4194067A4/en
Priority to PCT/CN2020/107836 priority patent/WO2022027600A1/zh
Priority to US18/020,173 priority patent/US20230214272A1/en
Publication of WO2022027600A1 publication Critical patent/WO2022027600A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Definitions

  • the present application relates to the technical field of data processing, and in particular, the present application relates to a game engine resource processing method and apparatus, electronic device, and computer-readable storage medium.
  • the resources of the platform have led to problems such as excessive resources, confusion and difficulties in management during the development process of the game engine; and the existing game resource management system has a large number of code duplication, chaotic structure, many defects, poor scalability, and inflexibility. , poor performance, etc. Therefore, it is necessary to propose a new technical solution to ensure the consistent performance of a large number of resources on different game running platforms.
  • a game engine resource processing method including:
  • the resource management system includes a first preset interface, a resource, a resource manager, a resource loader and a resource registry;
  • the resource manager is used to cache existing game resources, process game resource release, and determine game resource release policies according to game resource types;
  • the resource loader is used to load various game resources based on the pipelined loading pipeline
  • the resource registry is used to store relevant information of game resources, and the relevant information includes at least one item of identification information, hash value, and conversion information from resource paths to actual paths.
  • the resource loader includes a loading queue module, a circular reference detection module, a pipeline scheduling module, a loading pipeline module, a resource dependency parsing module and an error handling module;
  • the loading queue module is used to store each game resource item being loaded and/or game resource item to be loaded;
  • the circular reference detection module is used to detect whether there is a circular dependency in the dependencies between various game resources, and to break the circular dependency when there is a circular dependency;
  • the pipeline scheduling module is used to perform at least one of the following: controlling the splicing of each pipeline, controlling the inflow and outflow of data between the pipelines, scheduling the parallel processing of each pipeline, and scheduling the callback processing of each pipeline;
  • the loading pipeline module is used to perform at least one of dynamic splicing, deleting, adding and shifting of the pipeline;
  • the resource dependency parsing module is used to parse the related resources that game resources depend on after deserialization, and load the parsed related resources;
  • the error handling module is used to record abnormal information during the loading process of game resources, and return the abnormal information.
  • the loading pipeline module includes a resource identification parsing pipeline, a resource MD5 parsing pipeline, a platform adaptation pipeline, a resource downloading pipeline, and a resource loading pipeline;
  • the resource identifier analysis pipeline is used to convert the game resource identifier information into the global unique identifier information of the game resource, and convert the global unique identifier information into the actual path of the game resource;
  • the resource MD5 parsing pipeline is used to obtain the version path of the game resource by adding the hash value of the game resource to the actual path of the game resource;
  • the platform adaptation pipeline is used to match the corresponding application programming interface API according to different game running platforms
  • the resource download pipeline is used to determine the corresponding downloader for downloading the game resource according to the type of the game resource;
  • the resource loading pipeline is used to determine the corresponding loader for loading the game resource according to the type of the game resource.
  • the resource manager includes a resource policy module, a resource acquisition module, a resource cache module and a resource release module;
  • the resource strategy module is used to determine different management strategies for different game resources
  • the resource acquisition module is used to determine whether there is a game resource by querying the resource cache module, and returns the game resource when it exists, and loads the game resource through the resource loader when it does not exist;
  • the resource cache module is used to cache all resources used in the game, so as to reuse common game resources;
  • the resource release module is used to determine, according to user selection, to release game resources or release related resources that game resources depend on.
  • the resource registry includes a resource path processing module, a resource information module, a resource identification mapping table module and a resource MD5 mapping table module;
  • the resource path processing module is used to convert the globally unique identification information of game resources into path information of game resources;
  • the resource information module is used to store at least one of the following: the type of the game resource, the relative path of the game resource, the name of the game resource, the identification information of the game resource, and the identifier indicating whether the game resource is a sub-resource;
  • the resource identification mapping table module is used to map the identification information of the game resource with the global unique identification information of the game resource;
  • the resource MD5 mapping table module is used to map the global unique identification information of the game resource with the hash value of the game resource, so as to query the version information of the game resource.
  • Step a calling the second preset interface of the resource registry through the first preset interface, and querying the relevant information of any game resource through the resource registry to obtain the identification information of any game resource;
  • Step b Call the third preset interface of the resource manager according to the identification information of any game resource, and obtain any game resource through the resource manager.
  • any game resource through the resource manager including:
  • the fourth preset interface of the resource loader is called through the resource manager, and any game resource is loaded through the resource loader.
  • any game resource through the resource loader including:
  • a resource item for loading any game resource is added to the loading queue module, and any game resource is loaded based on the resource item.
  • any game resource is loaded based on the resource item, including:
  • the pipeline scheduling module is used to schedule the resource item in the pipeline, so that the relevant data of any game resource flows into the scheduled pipeline, and any game resource is loaded based on the scheduled pipeline through the loading pipeline module.
  • any game resource is loaded based on the scheduled pipeline by the loading pipeline module, including:
  • a loader for loading any game resource is determined through the resource download pipeline according to the type of any game resource, and any game resource is loaded through the loader.
  • the method further includes:
  • the third preset interface of the resource manager is called, and the management strategy of any game resource is determined by the resource policy module of the resource manager, and any game resource is cached by the resource cache module of the resource manager, so that any game resource is returned.
  • a game engine resource processing device including:
  • a receiving module configured to receive an acquisition request for any game resource of any operating platform through the first preset interface of the game engine
  • the acquisition module is configured to acquire any game resource through the resource management system of the game engine based on the acquisition request, and the resource management system includes at least one of a first preset interface, a resource, a resource manager, a resource loader, and a resource registry. item;
  • the return module is configured to return any acquired game resource.
  • the resource manager is used to cache existing game resources, process game resource release, and determine game resource release policies according to game resource types;
  • the resource loader is used to load various game resources based on the pipelined loading pipeline
  • the resource registry is used to store relevant information of game resources, and the relevant information includes identification information, hash value, and conversion information from resource paths to actual paths.
  • the resource loader includes a loading queue module, a circular reference detection module, a pipeline scheduling module, a loading pipeline module, a resource dependency parsing module and an error handling module;
  • the loading queue module is configured to store each game resource item being loaded and/or game resource item to be loaded;
  • the circular reference detection module is configured to detect whether there is a circular dependency in the dependencies between various game resources, and to break the circular dependency when there is a circular dependency;
  • the pipeline scheduling module is configured to perform at least one of the following: controlling the splicing of each pipeline, controlling data inflow and data outflow between pipelines, scheduling parallel processing of each pipeline, and scheduling callback processing of each pipeline;
  • the loading pipeline module is configured to perform at least one processing of dynamic splicing, deletion, addition and shifting of the pipeline;
  • the resource dependency parsing module is configured to parse the related resources that game resources depend on after deserialization, and load the parsed related resources;
  • the error handling module is configured to record abnormal information during the loading process of game resources, and return the abnormal information.
  • the loading pipeline module includes a resource identification parsing pipeline, a resource MD5 parsing pipeline, a platform adaptation pipeline, a resource downloading pipeline, and a resource loading pipeline;
  • the resource identifier analysis pipeline is used to convert the game resource identifier information into the global unique identifier information of the game resource, and convert the global unique identifier information into the actual path of the game resource;
  • the resource MD5 parsing pipeline is used to obtain the version path of the game resource by adding the hash value of the game resource to the actual path of the game resource;
  • the platform adaptation pipeline is used to match the corresponding application programming interface API according to different game running platforms
  • the resource download pipeline is used to determine the corresponding downloader for downloading the game resource according to the type of the game resource;
  • the resource loading pipeline is used to determine the corresponding loader for loading the game resource according to the type of the game resource.
  • the resource manager includes a resource policy module, a resource acquisition module, a resource cache module and a resource release module;
  • the resource strategy module is configured to determine different management strategies for different game resources
  • the resource acquisition module is configured to determine whether the game resource exists by querying the resource cache module, and returns the game resource when it exists, and loads the game resource through the resource loader when it does not exist;
  • the resource caching module is configured to cache all resources used in the game, so as to reuse common game resources;
  • the resource release module is configured to, according to the user's selection, determine to release the game resources or release the relevant resources that the game resources depend on.
  • the resource registry includes a resource path processing module, a resource information module, a resource identification mapping table module and a resource MD5 mapping table module;
  • the resource path processing module is configured to convert the globally unique identification information of the game resource into the path information of the game resource;
  • the resource information module is configured to store at least one of the following: the type of the game resource, the relative path of the game resource, the name of the game resource, the identification information of the game resource, and the identifier indicating whether the game resource is a sub-resource;
  • the resource identification mapping table module is configured to map the identification information of the game resource with the globally unique identification information of the game resource;
  • the resource MD5 mapping table module is configured to map the globally unique identification information of the game resource with the hash value of the game resource, so as to query the version information of the game resource.
  • the acquisition module includes a first processing submodule and a second processing submodule
  • the first processing submodule is configured to call the second preset interface of the resource registry through the first preset interface, and query the relevant information of any game resource through the resource registry, so as to obtain the identification information of any game resource;
  • the second processing submodule is configured to call the third preset interface of the resource manager according to the identification information of any game resource, and obtain any game resource through the resource manager.
  • the second processing submodule includes a query unit and a first result processing unit
  • a query unit configured to query the game resources cached in the resource cache module of the resource manager, and determine whether any game resources are included in the cached game resources;
  • the first result processing unit is used to return any game resource when any game resource is included; and is used to call the fourth preset interface of the resource loader through the resource manager when any game resource is not included, and Load any game asset via the asset loader.
  • the first result processing unit is specifically used for judging whether the loading queue module is loading any game resource; and for registering a corresponding callback function when any game resource is being loaded, and returning the loaded task through the callback function. a game resource; and when no game resource is being loaded, adding a resource item for loading any game resource in the loading queue module, and loading any game resource based on the resource item.
  • the first result processing unit is specifically configured to detect whether there is a circular dependency in the resource item through the circular reference detection module; and when there is a circular dependency, break the circular dependency, and load any game resource; and when there is no circular dependency.
  • the pipeline scheduling module is used to schedule the resource items in the pipeline, so that the relevant data of any game resource flows into the scheduled pipeline, and any game resource is loaded based on the scheduled pipeline through the loading pipeline module.
  • the first result processing unit is specifically used to call the second preset interface through the resource identification analysis pipeline, and convert the identification information of any game resource into the actual path of any game resource; and is used to call through the resource MD5 analysis pipeline.
  • the second preset interface is used to add the hash value of any game resource to the actual path to obtain the version path of any game resource; and is used to determine the adaptation to any operating platform through the platform adaptation pipeline based on the version path. and is used to determine a downloader for downloading any game resource through the resource download pipeline based on the API, and download any game resource through the downloader according to the type of any game resource through the resource download pipeline;
  • the pipeline determines a loader for loading any game resource according to the type of any game resource, and loads any game resource through the loader.
  • the second processing submodule also includes a second result processing unit
  • the second result processing unit is used to analyze the relevant resources that any game resource depends on through the resource dependency analysis module, and determine whether any game resource has a dependency according to the analysis result; and execute the second processing sub-module cyclically when there is a dependency and when there is no dependency, call the third preset interface of the resource manager, and determine the management strategy of any game resource through the resource strategy module of the resource manager, and cache any game resource through the resource cache module of the resource manager. A game resource such that any game resource is returned.
  • an electronic device including a memory, a processor, and a computer program stored in the memory and executable on the processor, where the processor implements the above-mentioned game engine resource processing method when the program is executed.
  • a computer-readable storage medium where a computer program is stored on the computer-readable storage medium, and when the program is executed by a processor, the above-described game engine resource processing method is implemented.
  • FIG. 1 is a schematic flowchart of a game engine resource processing method according to an embodiment of the present application
  • FIG. 2 is a schematic diagram of a system architecture of a game engine according to an embodiment of the application
  • FIG. 3 is a schematic structural diagram of a resource management system of a game engine according to an embodiment of the application.
  • FIG. 4 is a schematic diagram of a basic process of acquiring game resources according to an embodiment of the present application.
  • FIG. 5 is a schematic diagram of a basic structure of a game engine resource processing apparatus according to an embodiment of the present application.
  • FIG. 6 is a schematic diagram of a detailed structure of a game engine resource processing apparatus according to an embodiment of the present application.
  • FIG. 7 is a schematic structural diagram of an electronic device according to an embodiment of the present application.
  • the embodiment of the present application provides a game engine resource processing method, as shown in FIG. 1 , including:
  • Step S110 receiving an acquisition request for any game resource of any operating platform through the first preset interface of the game engine.
  • the terminal device receives the acquisition request through the first preset interface of the game engine, and the first The preset interface is a unified interface of the resource management system of the game engine, and the terminal device may be a smartphone, an iPad, a desktop computer, a notebook computer, or the like.
  • the application layer of the game engine includes plug-ins, user components, gameplay and editors, etc.
  • the engine subsystem of the game engine includes the scene manager, animation system, audio system, and rendering system, as shown in Figure 2.
  • Step S120 based on the acquisition request, acquire any game resource through the resource management system of the game engine, where the resource management system includes a first preset interface, resources, a resource manager, a resource loader and a resource registry.
  • the first preset interface of the resource management system of the game engine can acquire any game resource based on the acquisition request.
  • the resource management system includes a first preset interface, resources, a resource manager, a resource loader and a resource registry.
  • the resource management system is divided into modules to include upper-layer unified interface (ie, the first preset interface), resource manager, resource loader, resource registry and other parts, as shown in FIG. 2 .
  • the resource management system can adapt to different game running platforms through the resource loader, such as iOS (Apple operating system), Android (Android operating system), Windows (Microsoft operating system), etc., and obtain corresponding game resources from them,
  • the application layer and the engine subsystem of the upper layer of the game engine can use the first preset interface provided by the resource manager to obtain game resources of different game running platforms.
  • the system architecture of the game engine includes platform adaptation and target operating platform in addition to the application layer, engine subsystem, and resource management system.
  • the resource management system is in the game engine.
  • the bottom layer of the engine is the foundation of each subsystem of the engine and the application layer.
  • Step S130 returning to any acquired game resource.
  • the resource management system After acquiring the any game resource, the resource management system returns any acquired game resource to the upper layer of the game engine.
  • the game engine resource processing method receives a request for acquiring any game resource of any running platform through the first preset interface of the resource management system of the game engine, and passes the resource
  • the management system obtains any game resource based on the obtaining request, wherein the resource management system includes a first preset interface, a resource, a resource manager, a resource loader and a resource registry, so that different games can be adapted through the resource loader Run platforms, such as iOS (Apple operating system), Android (Android operating system), Windows (Microsoft operating system), etc., and obtain corresponding game resources from them, so that the upper application layer and engine subsystem of the game engine can use resource management
  • the first preset interface provided by the browser obtains game development resources of different game running platforms, realizes efficient and flexible management of resources in different formats of major game running platforms, satisfies the scalability requirements of the resource management system, and quickly loads different formats of resources.
  • the game runs on a large resource requirement of the platform.
  • the resource manager is used to cache existing game resources, process the release of game resources, and determine the game resource release strategy according to the type of game resources. By caching existing game resources, it can be ensured that game resources will not be loaded repeatedly.
  • the resource loader is used to load various game resources based on the pipelined loading pipeline, that is, the resource loader is designed based on the pipelined design, so that the loading pipeline based on the pipelined design can support rapid expansion and adapt to various needs.
  • the resource registry is used to store relevant information of game resources, and the relevant information includes at least one of identification information, hash value, and conversion information from resource paths to actual paths, and the resource registry can also provide external interfaces for playing games.
  • a query for information about a resource is used to store relevant information of game resources, and the relevant information includes at least one of identification information, hash value, and conversion information from resource paths to actual paths, and the resource registry can also provide external interfaces for playing games.
  • the first preset interface of the resource management system is a unified interface provided by the resource management system to the upper layer for each part of the game engine to call, including a series of interfaces for acquiring, querying, loading and releasing game resources.
  • the resource loader based on the pipeline design includes a loading queue module, a circular reference detection module, a pipeline scheduling module, a loading pipeline module, a resource dependency parsing module and an error handling module.
  • the contents and functions are as follows:
  • the load queue module is used to store each game resource item being loaded and/or game resource item to be loaded, so as to control the dependencies between game resource items and other work.
  • the circular reference detection module is used to detect whether there is a circular dependency in the dependencies between various game resources, and when there is a circular dependency, the circular dependency is broken, which is equivalent to detecting whether there is a circular dependency between the various game resources. If there is a ring, the ring must be broken to avoid deadlock.
  • circular dependency refers to cyclic reciprocal dependencies, such as A depends on B, B depends on C, and C depends on A, and the dependency relationship forms a cycle, that is, A->B->C->A.
  • Circular dependencies will cause that when loading A, B must be loaded first, B must be loaded first, C must be loaded first, and C must be loaded first, resulting in never being completed, forming an infinite loop.
  • the above loop problem refers to circular dependencies.
  • the operation method of breaking the circular dependency means: when loading a sub-resource, first check whether the sub-resource is its own ancestor resource. If it is, it means that there is a circular dependency, and the sub-resource will not be loaded anymore. , but directly completes the loading of the current resource.
  • the pipeline scheduling module can be used to control the splicing of each pipeline, control the inflow and outflow of data between the pipelines, schedule the parallel processing of each pipeline, and schedule the callback processing of each pipeline, etc.
  • the loading pipeline module is used to perform at least one of dynamic splicing, deletion, addition and shifting of the pipeline, and the entire loading pipeline is designed based on pipelines, and the pipelines can be dynamically spliced, deleted, added, and shifted, etc. operation to achieve user-customized functions.
  • the resource dependency parsing module is used to parse the related resources that the game resources depend on after deserialization, and load the parsed related resources, that is, to parse out the other resources that the game resources depend on, and load the dependent resources.
  • Serialization refers to the preservation of the running object state in a tightly ordered form, which can be stored in any medium that can store data such as database, hard disk, etc.
  • Deserialization refers to reading the data file saved after the above serialization, and parsing and restoring it to the state at the time of running.
  • the error handling module is used to record the exception information during the loading process of game resources, and return the exception information, that is, to detect whether an exception occurs during the resource loading process, record the exception when an exception occurs, and return the exception in the callback.
  • the loading pipeline module includes a resource identification analysis pipeline, a resource MD5 analysis pipeline, a platform adaptation pipeline, a resource download pipeline and a resource loading pipeline, wherein the detailed contents and functions of each pipeline are as follows:
  • the resource identification parsing pipeline is used to convert the identification information (eg ID) of the game resource into the globally unique identification information of the game resource, and convert the globally unique identification information into the actual path (eg real path address) of the game resource.
  • the resource MD5 parsing pipeline is used to obtain the version path of the game resource by adding the hash value of the game resource to the actual path of the game resource.
  • the platform adaptation pipeline is used to match the corresponding application programming interface APIs according to different game running platforms, that is, to carry out the adaptation work of the corresponding APIs according to different target game running platforms.
  • the resource download pipeline is used to determine the corresponding downloader for downloading the game resource according to the type of the game resource, that is, select the corresponding downloader to download the resource according to the type of the game resource.
  • the resource loading pipeline is used to determine the corresponding loader for loading game resources according to the type of game resources, that is, selecting the corresponding loader to load resources according to the type of game resources, including operations such as resource parsing and deserialization.
  • each pipeline is responsible for one of the services, and there is no direct business relationship between the pipelines, and the pipelines are connected in series to form a loading pipeline.
  • any resource request enters the pipeline, it can be converted into the corresponding resource.
  • mutual interference is avoided.
  • the logic becomes clearer and more in line with object-oriented design ideas, which greatly reduces the difficulty of development and maintenance and improves work efficiency.
  • each pipeline is hot-swappable and the order can be modified. Users can add, delete, and modify each pipeline according to specific needs, thus greatly increasing the flexibility of game development.
  • new standards can be adapted by adding, deleting and modifying pipelines, which greatly improves the scalability of the resource management system.
  • parallel processing can be performed through the producer and consumer models, thereby greatly utilizing the efficiency of parallelism and greatly reducing the time for resource loading.
  • the above new standards can refer to new graphics libraries, or new versions of existing graphics libraries, opengl, directx, Vulkan, or new JavaScript standards, ES7, etc., or new game platforms, such as WeChat Mini Games, Baidu Small games, etc. can be counted as the new standard.
  • the resource manager in the resource management system can be divided into several sub-modules, and the detailed contents and functions of each sub-module are as follows:
  • the resource strategy module is used to determine different management strategies for different game resources, that is, to manage different resources using different strategies. For example, for the internal resources of the engine and resources under the resource path that the user needs to use for a long time, the user manual Control, the engine does not release the work; for common resources, it is controlled according to the settings of the corresponding scene. If the scene is set to automatically release resources, the corresponding resources will be used when the scene is switched, according to whether the next scene still needs to use this resource. To decide, if the resource is not needed at all, the resource will be automatically released when the scene is switched.
  • the resource acquisition module is used to determine whether a game resource exists by querying the resource cache module, and returns the game resource when it exists, and loads the game resource through the resource loader when it does not exist.
  • the resource cache module is used to cache all resources used in the game, so as to reuse common game resources, and also ensure that game resources will not be loaded repeatedly.
  • the resource release module is used to determine whether to release game resources or release related resources that game resources depend on according to the user's choice, that is, release the game resources themselves or release all other resources that the resources depend on according to the user's choice. constructs all related resources and removes the object from the cache.
  • the resource registry in the resource management system can be divided into several sub-modules.
  • the detailed contents and functions of each sub-module are as follows:
  • the resource path processing module is used to convert the globally unique identification information of the game resource into the path information of the game resource.
  • the resource information module is used to store at least one of the following: the type of the game resource, the relative path of the game resource, the name of the game resource, the identification information of the game resource, and the identifier indicating whether the game resource is a sub-resource.
  • the resource identification mapping table module is used to map the identification information of the game resource with the global unique identification information of the game resource.
  • the resource MD5 mapping table module is used to map the global unique identification information of the game resource with the hash value of the game resource, so as to query the version information of the game resource.
  • step S120 acquiring any game resource through the resource management system specifically includes: step a: invoking the second preset interface of the resource registry through the first preset interface , and query the relevant information of any game resource through the resource registry to obtain the identification information of any game resource; step b, call the third preset interface of the resource manager according to the identification information of any game resource, and pass The resource manager gets any game resource.
  • obtaining any of the game resources through the resource manager includes:
  • the fourth preset interface of the resource loader is called through the resource manager, and the any game resource is loaded through the resource loader.
  • any game resource including:
  • a resource item for loading any game resource is added to the loading queue module, and any game resource is loaded based on the resource item.
  • any game resource is loaded based on the resource item, including:
  • the pipeline scheduling module is used to schedule the resource item in the pipeline, so that the relevant data of any game resource flows into the scheduled pipeline, and any game resource is loaded based on the scheduled pipeline through the loading pipeline module.
  • any game resource is loaded based on the scheduled pipeline by the loading pipeline module, including:
  • a loader for loading any game resource is determined through the resource download pipeline according to the type of any game resource, and any game resource is loaded through the loader.
  • the method further includes:
  • the third preset interface of the resource manager is called, and the management strategy of any game resource is determined by the resource policy module of the resource manager, and any game resource is cached by the resource cache module of the resource manager, to return any game resource.
  • Figure 4 shows the basic process of acquiring any game resource through the resource management system in this implementation manner, and the basic process includes several sub-processes as follows:
  • the upper layer of the game engine (such as the application layer, the engine subsystem) initiates an acquisition request to acquire any game resource of any operating platform, and accordingly, the first preset interface of the resource management system of the game engine (that is, in FIG. 4 ) unified interface) to receive the acquisition request;
  • the second preset interface of the resource registry through the first preset interface (that is, the interface of the resource registry in FIG. 4 ), and query the relevant information of any game resource in the resource registry to obtain the The identification information (such as ID) of any game resource, and at the same time, according to the identification information of any game resource, the third preset interface of the resource manager (that is, the interface of the resource manager in FIG. 4) is called, and the resource management to obtain any of the game resources.
  • the interface of the resource manager calls the resource acquisition module to acquire any game resource required by the user.
  • the resource acquisition module queries the game resource through the resource cache module, and determines whether the game resource exists in the resource cache module. If it exists in the resource cache module, it directly returns the game resource. If does not exist in the resource cache module, then call the fourth preset interface of the resource loader (that is, the interface of the resource loader in FIG. 4 ), and load the any game resource through the resource loader;
  • the interface of the resource loader judges whether any game resource is being loaded in the loading queue module. If any game resource is being loaded, a callback function is registered to return the loaded game resource through the callback function. Otherwise, add a resource item for loading any game resource in the loading queue module, and load any game resource based on the resource item;
  • step 14 Determine whether any of the game resources has a dependency according to the analysis result. If there is a dependency, return to the above step 3 to continue execution, otherwise, execute the following step 15;
  • the game engine resource processing method implements the process of module splitting, pipeline abstraction, platform format adaptation, and parallel loading of resources for the resource management system, extracts the links in the loading process into a separate pipeline, and combines all pipelines Combined into a loading pipeline, the pipelines in the loading pipeline do parallel work.
  • the pipeline can be freely combined and expanded to adapt to multiple game running platforms, but also multi-format adaptation can be performed in a single pipeline.
  • the loaded resources are cached to facilitate subsequent resource reuse, thereby realizing efficient and flexible management of resources in different formats of major platforms, so as to meet the needs of the resource management system to load a large number of resources on different platforms quickly and with good scalability. need.
  • FIG. 5 is a schematic structural diagram of a game resource engine processing apparatus provided by an embodiment of the application.
  • the apparatus 50 may include a receiving module 51, an obtaining module 52 and a returning module 53; wherein:
  • the receiving module 51 is configured to receive an acquisition request for any game resource of any operating platform through the first preset interface of the game engine;
  • the acquisition module 52 is configured to acquire any game resource through the resource management system of the game engine based on the acquisition request, and the resource management system includes a first preset interface, a resource, a resource manager, a resource loader and a resource registry;
  • the returning module 53 is configured to return any acquired game resource.
  • the resource manager is used to cache existing game resources, process game resource release, and determine game resource release policies according to game resource types;
  • the resource loader is used to load various game resources based on the pipelined loading pipeline
  • the resource registry is used to store relevant information of game resources, and the relevant information includes at least one item of identification information, hash value, and conversion information from resource paths to actual paths.
  • the resource loader includes a loading queue module, a circular reference detection module, a pipeline scheduling module, a loading pipeline module, a resource dependency parsing module and an error handling module;
  • the loading queue module is configured to store each game resource item being loaded and/or game resource item to be loaded;
  • the circular reference detection module is configured to detect whether there is a circular dependency in the dependencies between various game resources, and to break the circular dependency when there is a circular dependency;
  • the pipeline scheduling module is configured to perform at least one of the following: controlling the splicing of each pipeline, controlling data inflow and data outflow between pipelines, scheduling parallel processing of each pipeline, and scheduling callback processing of each pipeline;
  • the loading pipeline module is configured to perform at least one processing of dynamic splicing, deletion, addition and shifting of the pipeline;
  • the resource dependency parsing module is configured to parse the related resources that game resources depend on after deserialization, and load the parsed related resources;
  • the error handling module is configured to record abnormal information during the loading process of game resources, and return the abnormal information.
  • the loading pipeline module includes a resource identification parsing pipeline, a resource MD5 parsing pipeline, a platform adaptation pipeline, a resource downloading pipeline, and a resource loading pipeline;
  • the resource identification analysis pipeline is used to convert the game resource identification information into the global unique identification information of the game resource, and convert the global unique identification information into the actual path of the game resource;
  • the resource MD5 parsing pipeline is used to obtain the version path of the game resource by adding the hash value of the game resource to the actual path of the game resource;
  • the platform adaptation pipeline is used to match the corresponding application programming interface API according to different game running platforms
  • the resource download pipeline is used to determine the corresponding downloader for downloading the game resource according to the type of the game resource;
  • the resource loading pipeline is used to determine the corresponding loader for loading the game resource according to the type of the game resource.
  • the resource manager includes a resource policy module, a resource acquisition module, a resource cache module and a resource release module;
  • the resource strategy module is configured to determine different management strategies for different game resources
  • the resource acquisition module is configured to determine whether the game resource exists by querying the resource cache module, and returns the game resource when it exists, and loads the game resource through the resource loader when it does not exist;
  • the resource caching module is configured to cache all resources used in the game, so as to reuse common game resources;
  • the resource release module is configured to, according to the user's selection, determine to release the game resources or release the relevant resources that the game resources depend on.
  • the resource registry includes a resource path processing module, a resource information module, a resource identification mapping table module and a resource MD5 mapping table module;
  • the resource path processing module is configured to convert the globally unique identification information of the game resource into the path information of the game resource;
  • the resource information module is configured to store at least one of the following: the type of the game resource, the relative path of the game resource, the name of the game resource, the identification information of the game resource, and the identifier indicating whether the game resource is a sub-resource;
  • the resource identification mapping table module is configured to map the identification information of the game resource with the globally unique identification information of the game resource;
  • the resource MD5 mapping table module is configured to map the globally unique identification information of the game resource with the hash value of the game resource, so as to query the version information of the game resource.
  • the acquisition module 52 includes a first processing sub-module 521 and a second processing sub-module 522, as shown in FIG. 6, wherein:
  • the first processing sub-module 521 is configured to call the second preset interface of the resource registry through the first preset interface, and query the relevant information of any game resource through the resource registry to obtain the identification information of any game resource;
  • the second processing submodule 522 is configured to call the third preset interface of the resource manager according to the identification information of any game resource, and obtain any game resource through the resource manager.
  • the second processing sub-module 522 includes a query unit 5221 and a first result processing unit 5222, as shown in FIG. 6, wherein:
  • the query unit 5221 is used to query the game resources cached in the resource cache module of the resource manager, and determine whether any game resources are included in the cached game resources;
  • the first result processing unit 5222 is used for returning any game resource when any game resource is included; and for calling the fourth preset interface of the resource loader through the resource manager when any game resource is not included, and Load any game asset via the asset loader.
  • the first result processing unit 5222 is specifically used for judging whether the loading queue module is loading any game resource; and for registering a corresponding callback function when any game resource is being loaded, and returning the loaded result through the callback function. any game resource; and when no game resource is being loaded, adding a resource item for loading any game resource in the loading queue module, and loading any game resource based on the resource item.
  • the first result processing unit 5222 is specifically configured to detect whether there is a circular dependency in the resource item through the circular reference detection module; and when there is a circular dependency, break the circular dependency and load any game resource; and when there is no circular dependency
  • the pipeline scheduling module is used to schedule the resource items in the pipeline, so that the relevant data of any game resource flows into the scheduled pipeline, and any game resource is loaded based on the scheduled pipeline through the loading pipeline module.
  • the first result processing unit 5222 is specifically used to call the second preset interface through the resource identification analysis pipeline, and convert the identification information of any game resource into the actual path of any game resource; and is used to pass the resource MD5 analysis pipeline.
  • Calling the second preset interface adding the hash value of any game resource to the actual path, and obtaining the version path of any game resource; API of the platform; and used to determine the downloader for downloading any game resource through the resource download pipeline based on the API, and download any game resource through the downloader; and for the API-based, through the resource
  • the download pipeline determines a loader for loading any game resource according to the type of any game resource, and loads any game resource through the loader.
  • the second processing sub-module 522 further includes a second result processing unit 5223, as shown in FIG. 6, wherein:
  • the second result processing unit 5223 is configured to analyze the relevant resources that any game resource depends on through the resource dependency analysis module, and determine whether any game resource has a dependency according to the analysis result; and execute the second processing sub-module cyclically when there is a dependency and when there is no dependency, call the third preset interface of the resource manager, and determine the management strategy of any game resource through the resource strategy module of the resource manager, and cache any game resource through the resource cache module of the resource manager. A game resource such that any game resource is returned.
  • the electronic device 700 shown in FIG. 7 includes: a processor 701 and a memory 703 .
  • the processor 701 is connected to the memory 703 , for example, through a bus 702 .
  • the electronic device 700 may also include a transceiver 704 . It should be noted that in practical applications, the transceiver 704 is not limited to one, and the structure of the electronic device 700 does not constitute a limitation to the embodiments of the present application.
  • the processor 701 is used in the embodiments of the present application to implement the functions of the receiving module, the acquiring module, and the returning module shown in FIG. 5 or FIG. 6 .
  • the processor 701 may be a CPU, general purpose processor, DSP, ASIC, FPGA or other programmable logic device, transistor logic device, hardware component, or any combination thereof. It may implement or execute the various exemplary logical blocks, modules and circuits described in connection with this disclosure.
  • the processor 701 can also be a combination that realizes computing functions, such as a combination of one or more microprocessors, a combination of a DSP and a microprocessor, and the like.
  • the bus 702 may include a path to communicate information between the aforementioned components.
  • the bus 702 may be a PCI bus, an EISA bus, or the like.
  • the bus 702 can be divided into an address bus, a data bus, a control bus, and the like. For ease of presentation, only one thick line is used in FIG. 7, but it does not mean that there is only one bus or one type of bus.
  • the memory 703 can be ROM or other types of static storage devices that can store static information and instructions, RAM or other types of dynamic storage devices that can store information and instructions, or EEPROM, CD-ROM or other optical disk storage, optical disk storage (including compact discs, laser discs, optical discs, digital versatile discs, Blu-ray discs, etc.), magnetic disk storage media or other magnetic storage devices, or capable of carrying or storing desired program code in the form of instructions or data structures and capable of being executed by a computer Access any other medium without limitation.
  • the memory 703 is used to store the application code for executing the solution of the present application, and the execution is controlled by the processor 701 .
  • the processor 701 is configured to execute the application program code stored in the memory 703, so as to realize the action of the game resource engine processing apparatus provided by the embodiment shown in FIG. 5 or FIG. 6 .
  • the electronic equipment provided by the embodiments of the present application includes a memory, a processor, and a computer program stored in the memory and running on the processor.
  • the processor executes the program, compared with the prior art, the programs shown in the above embodiments can be implemented. Methods.
  • Embodiments of the present application provide a computer-readable storage medium, where a computer program is stored on the computer-readable storage medium, and when the program is executed by a processor, the methods shown in the foregoing embodiments are implemented.
  • the computer-readable storage medium provided by the embodiment of the present application is applicable to any embodiment of the foregoing method. It is not repeated here.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Stored Programmes (AREA)

Abstract

一种游戏引擎资源处理方法及其装置、电子设备及计算机可读存储介质,其中,游戏引擎资源处理方法包括:通过游戏引擎的第一预设接口接收针对任一运行平台的任一游戏资源的获取请求(S110);基于获取请求,通过游戏引擎的资源管理系统获取任一游戏资源,资源管理系统包括第一预设接口、资源、资源管理器、资源加载器及资源注册表(S120);返回获取到的任一游戏资源(S130)。

Description

游戏引擎资源处理方法及其装置、电子设备及计算机可读存储介质 技术领域
本申请涉及数据处理技术领域,具体而言,本申请涉及一种游戏引擎资源处理方法及其装置、电子设备及计算机可读存储介质。
背景技术
近年来,随着人们对游戏娱乐需求的不断增加以及游戏引擎技术的不断发展,各种各样的游戏也如雨后春笋般层出不穷。目前,随着软硬件技术的发展和市场需求的不断增长,游戏的规模也在不断增大,从最初的8位机到现在的动辄占据几十个GB(Gigabyte,吉字节)存储空间的大型场景游戏,跨度十分巨大;而且,支持游戏的各种软硬件平台的数量也在持续增加,如端游、手游、页游、小游戏及各类游戏主机等的平台也在与日俱增;另外,游戏开发相关的技术也是日新月异,各种游戏开发用到的新型图形库、物理库、音频库等大量涌现;这都表征着当今游戏行业的产业规模大、平台多、技术复杂等情况。
在游戏开发过程中,会产生和使用大量文字、图像、音效、字体、模型、动画、网格、脚本等资源,而各种不同的资源又衍生出各种各样的格式,每个格式在各个游戏运行平台上的表现又不尽相同;而且随着游戏产业的进一步发展,很多公司提出了相应的游戏的支持和商业化方案,这使得各种各样的资源文件数量激增。然而,本申请的发明人在具体实施过程中发现:对游戏引擎的研发而言,为适应各种各样的游戏运行平台和将游戏发布到各个游戏运行平台的需求,必须同时兼容所有游戏运行平台的资源,导致在游戏引擎的研发过程中,出现资源数量过多、管理混乱和困难等问题;而且现有的游戏资源管理系统存在大量代码复写、架构混乱、缺陷多、扩展性差、不够灵活、性能差等问题。因此,有必要提出一种新的 技术方案,以确保数量庞大的资源在不同游戏运行平台上的表现一致性。
发明内容
本申请的目的旨在至少能解决上述的技术缺陷之一,特提出以下技术方案:
第一方面,提供了一种游戏引擎资源处理方法,包括:
通过游戏引擎的第一预设接口接收针对任一运行平台的任一游戏资源的获取请求;
基于获取请求,通过游戏引擎的资源管理系统获取任一游戏资源,资源管理系统包括第一预设接口、资源、资源管理器、资源加载器及资源注册表;
返回获取到的任一游戏资源。
具体地,资源管理器用于缓存已有游戏资源、处理游戏资源释放及根据游戏资源类型确定游戏资源释放策略;
资源加载器用于基于管道化的加载流水线加载各种游戏资源;
资源注册表用于存储游戏资源的相关信息,相关信息包括标识信息、哈希值、资源路径到实际路径的转换信息中的至少一项。
进一步地,资源加载器包括加载队列模块、循环引用检测模块、流水线调度模块、加载流水线模块、资源依赖解析模块及错误处理模块;
加载队列模块用于存储各个正在加载的游戏资源项和/或待加载的游戏资源项;
循环引用检测模块用于检测在各个游戏资源之间的依赖关系是否存在循环依赖,并当存在循环依赖时对该循环依赖进行断裂处理;
流水线调度模块用于执行以下至少一项:控制各个流水线的拼接、控制管道之间的数据流入与数据流出、调度各个管道的并行处理、调度各个管道的回调处理;
加载流水线模块用于进行流水线的动态拼接、删除、增加及移位中的至少一项处理;
资源依赖解析模块用于在反序列化后,解析游戏资源依赖的相关资源,并加载解析得到的相关资源;
错误处理模块用于记录游戏资源的加载过程中的异常信息,并返回异常信息。
进一步地,加载流水线模块包括资源标识解析管道、资源MD5解析管道、平台适配管道、资源下载管道及资源加载管道;
资源标识解析管道用于将游戏资源标识信息转化为游戏资源的全局唯一标识信息,并将该全局唯一标识信息转化为游戏资源的实际路径;
资源MD5解析管道用于通过将游戏资源的哈希值添加到该游戏资源的实际路径中,获取该游戏资源的版本路径;
平台适配管道用于根据不同游戏运行平台进行相应的应用程序编程接口API的匹配;
资源下载管道用于根据游戏资源的类型确定对应的用于进行游戏资源下载的下载器;
资源加载管道用于根据游戏资源的类型确定对应的用于进行游戏资源加载的加载器。
进一步地,资源管理器包括资源策略模块、资源获取模块、资源缓存模块及资源释放模块;
其中,资源策略模块用于针对不同游戏资源确定不同的管理策略;
资源获取模块用于通过查询资源缓存模块确定是否存在游戏资源,并当存在时返回该游戏资源,当不存在时通过资源加载器进行该游戏资源的加载;
资源缓存模块用于对游戏中用到的所有资源进行缓存,以使得复用公共游戏资源;
资源释放模块用于根据用户选择,确定对游戏资源进行释放或者对游戏资源依赖的相关资源进行释放。
进一步地,资源注册表包括资源路径处理模块、资源信息模块、资源标识映射表模块及资源MD5映射表模块;
资源路径处理模块用于将游戏资源的全局唯一标识信息转化为游戏资源的路径信息;
资源信息模块用于存储以下至少一项:游戏资源的类型、游戏资源的相对路径、游戏资源的名称、游戏资源的标识信息、指示游戏资源是否为子资源的标识;
资源标识映射表模块用于将游戏资源的标识信息与游戏资源的全局唯一标识信息进行映射;
资源MD5映射表模块用于将游戏资源的全局唯一标识信息与游戏资源的哈希值进行映射,以使得查询游戏资源的版本信息。
进一步地,通过资源管理系统获取任一游戏资源,包括:
步骤a、通过第一预设接口调用资源注册表的第二预设接口,并通过资源注册表查询任一游戏资源的相关信息,以获取任一游戏资源的标识信息;
步骤b、根据任一游戏资源的标识信息,调用资源管理器的第三预设接口,并通过资源管理器获取任一游戏资源。
进一步地,通过资源管理器获取任一游戏资源,包括:
查询资源管理器的资源缓存模块中缓存的游戏资源,并确定缓存的游戏资源中是否包括任一游戏资源;
如果包括任一游戏资源,则返回任一游戏资源;
如果不包括任一游戏资源,则通过资源管理器调用资源加载器的第四预设接口,并通过资源加载器加载任一游戏资源。
进一步地,通过资源加载器加载任一游戏资源,包括:
判断加载队列模块是否正在加载任一游戏资源;
如果正在加载任一游戏资源,则注册相应的回调函数,并通过回调函数返回加载完成的任一游戏资源;
如果未在加载任一游戏资源,则在加载队列模块中增加用于加载任一游戏资源的资源项,并基于资源项对任一游戏资源进行加载处理。
进一步地,基于资源项对任一游戏资源进行加载处理,包括:
通过循环引用检测模块检测资源项是否存在循环依赖;
若存在循环依赖,则对该循环依赖进行断裂处理,并加载所述任一游戏资源;
若不存在循环依赖,则通过流水线调度模块对资源项进行流水线的调度,以使得任一游戏资源的相关数据流入调度后的流水线,并通过加载流水线模块基于调度后的流水线加载任一游戏资源。
进一步地,通过加载流水线模块基于调度后的流水线加载任一游戏资源,包括:
通过资源标识解析管道调用第二预设接口,将任一游戏资源的标识信息转化为任一游戏资源的实际路径;
通过资源MD5解析管道调用第二预设接口,将任一游戏资源的哈希值添加到实际路径中,得到任一游戏资源的版本路径;
基于版本路径,通过平台适配管道确定适配于任一运行平台的API;
基于API,通过资源下载管道根据任一游戏资源的类型,确定下载任一游戏资源的下载器,并通过下载器下载任一游戏资源;
基于API,通过资源下载管道根据任一游戏资源的类型,确定加载任一游戏资源的加载器,并通过加载器加载任一游戏资源。
进一步地,在通过加载流水线模块基于调度后的流水线加载任一游戏资源之后,还包括:
通过资源依赖解析模块对任一游戏资源依赖的相关资源进行解析,并根据解析结果判断任一游戏资源是否存在依赖;
如果存在依赖,则循环执行步骤b;
如果不存在依赖,则调用资源管理器的第三预设接口,并通过资源管理器的资源策略模块确定任一游戏资源的管理策略,同时通过资源管理器的资源缓存模块缓存任一游戏资源,以使得返回任一游戏资源。
第二方面,提供了一种游戏引擎资源处理装置,包括:
接收模块,被配置为通过游戏引擎的第一预设接口接收针对任一运行平台的任一游戏资源的获取请求;
获取模块,被配置为基于获取请求,通过游戏引擎的资源管理系统获取任一游戏资源,资源管理系统包括第一预设接口、资源、资源管理器、资源加载器及资源注册表中的至少一项;
返回模块,被配置为返回获取到的任一游戏资源。
具体地,资源管理器用于缓存已有游戏资源、处理游戏资源释放及根据游戏资源类型确定游戏资源释放策略;
资源加载器用于基于管道化的加载流水线加载各种游戏资源;
资源注册表用于存储游戏资源的相关信息,相关信息包括标识信息、哈希值、资源路径到实际路径的转换信息。
进一步地,资源加载器包括加载队列模块、循环引用检测模块、流水线调度模块、加载流水线模块、资源依赖解析模块及错误处理模块;
加载队列模块被配置为存储各个正在加载的游戏资源项和/或待加载的游戏资源项;
循环引用检测模块被配置为检测在各个游戏资源之间的依赖关系是否存在循环依赖,并当存在循环依赖时对该循环依赖进行断裂处理;
流水线调度模块被配置为执行以下至少一项:控制各个流水线的拼接、控制管道之间的数据流入与数据流出、调度各个管道的并行处理、调度各个管道的回调处理;
加载流水线模块被配置为进行流水线的动态拼接、删除、增加及移位中的至少一项处理;
资源依赖解析模块被配置为在反序列化后,解析游戏资源依赖的相关资源,并加载解析得到的相关资源;
错误处理模块被配置为记录游戏资源的加载过程中的异常信息,并返回异常信息。
进一步地,加载流水线模块包括资源标识解析管道、资源MD5解析管道、平台适配管道、资源下载管道及资源加载管道;
资源标识解析管道用于将游戏资源标识信息转化为游戏资源的全局唯一标识信息,并将该全局唯一标识信息转化为游戏资源的实际路径;
资源MD5解析管道用于通过将游戏资源的哈希值添加到该游戏资源的实际路径中,获取该游戏资源的版本路径;
平台适配管道用于根据不同游戏运行平台进行相应的应用程序编程接口API的匹配;
资源下载管道用于根据游戏资源的类型确定对应的用于进行游戏资源下载的下载器;
资源加载管道用于根据游戏资源的类型确定对应的用于进行游戏资源加载的加载器。
进一步地,资源管理器包括资源策略模块、资源获取模块、资源缓存模块及资源释放模块;
其中,资源策略模块被配置为针对不同游戏资源确定不同的管理策略;
资源获取模块被配置为通过查询资源缓存模块确定是否存在游戏资源,并当存在时返回该游戏资源,当不存在时通过资源加载器进行该游戏资源的加载;
资源缓存模块被配置为对游戏中用到的所有资源进行缓存,以使得复用公共游戏资源;
资源释放模块被配置为根据用户选择,确定对游戏资源进行释放或者对游戏资源依赖的相关资源进行释放。
进一步地,资源注册表包括资源路径处理模块、资源信息模块、资源标识映射表模块及资源MD5映射表模块;
资源路径处理模块被配置为将游戏资源的全局唯一标识信息转化为游戏资源的路径信息;
资源信息模块被配置为存储以下至少一项:游戏资源的类型、游戏资源的相对路径、游戏资源的名称、游戏资源的标识信息、指示游戏资源是否为子资源的标识;
资源标识映射表模块被配置为将游戏资源的标识信息与游戏资源的全局唯一标识信息进行映射;
资源MD5映射表模块被配置为将游戏资源的全局唯一标识信息与游 戏资源的哈希值进行映射,以使得查询游戏资源的版本信息。
进一步地,获取模块包括第一处理子模块与第二处理子模块;
第一处理子模块,被配置为通过第一预设接口调用资源注册表的第二预设接口,并通过资源注册表查询任一游戏资源的相关信息,以获取任一游戏资源的标识信息;
第二处理子模块,被配置为根据任一游戏资源的标识信息,调用资源管理器的第三预设接口,并通过资源管理器获取任一游戏资源。
进一步地,第二处理子模块包括查询单元与第一结果处理单元;
查询单元,用于查询资源管理器的资源缓存模块中缓存的游戏资源,并确定缓存的游戏资源中是否包括任一游戏资源;
第一结果处理单元,用于当包括任一游戏资源时,返回任一游戏资源;以及用于当不包括任一游戏资源时,通过资源管理器调用资源加载器的第四预设接口,并通过资源加载器加载任一游戏资源。
进一步地,第一结果处理单元具体用于判断加载队列模块是否正在加载任一游戏资源;以及用于当正在加载任一游戏资源时,注册相应的回调函数,并通过回调函数返回加载完成的任一游戏资源;以及用于当未在加载任一游戏资源时,在加载队列模块中增加用于加载任一游戏资源的资源项,并基于资源项对任一游戏资源进行加载处理。
进一步地,第一结果处理单元具体用于通过循环引用检测模块检测资源项是否存在循环依赖;以及当存在循环依赖时,对该循环依赖进行断裂处理,并加载任一游戏资源;以及当不存在循环依赖时,通过流水线调度模块对资源项进行流水线的调度,以使得任一游戏资源的相关数据流入调度后的流水线,并通过加载流水线模块基于调度后的流水线加载任一游戏资源。
进一步地,第一结果处理单元具体用于通过资源标识解析管道调用第二预设接口,将任一游戏资源的标识信息转化为任一游戏资源的实际路径;以及用于通过资源MD5解析管道调用第二预设接口,将任一游戏资源的哈希值添加到实际路径中,得到任一游戏资源的版本路径;以及用于基于 版本路径,通过平台适配管道确定适配于任一运行平台的API;以及用于基于API,通过资源下载管道根据任一游戏资源的类型,确定下载任一游戏资源的下载器,并通过下载器下载任一游戏资源;以及用于基于API,通过资源下载管道根据任一游戏资源的类型,确定加载任一游戏资源的加载器,并通过加载器加载任一游戏资源。
进一步地,第二处理子模块还包括第二结果处理单元;
第二结果处理单元,用于通过资源依赖解析模块对任一游戏资源依赖的相关资源进行解析,并根据解析结果判断任一游戏资源是否存在依赖;以及当存在依赖时循环执行第二处理子模块的动作;以及当不存在依赖时,调用资源管理器的第三预设接口,并通过资源管理器的资源策略模块确定任一游戏资源的管理策略,同时通过资源管理器的资源缓存模块缓存任一游戏资源,以使得返回任一游戏资源。
第三方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述程序时实现上述的游戏引擎资源处理方法。
第四方面,提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述的游戏引擎资源处理方法。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例的游戏引擎资源处理方法的流程示意图;
图2为本申请实施例的游戏引擎的系统架构示意图;
图3为本申请实施例的游戏引擎的资源管理系统的结构示意图;
图4为本申请实施例的获取游戏资源的基本过程示意图;
图5为本申请实施例的游戏引擎资源处理装置的基本结构示意图;
图6为本申请实施例的游戏引擎资源处理装置的详细结构示意图;以及
图7为本申请实施例的电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
实施例一
本申请实施例提供了一种游戏引擎资源处理方法,如图1所示,包括:
步骤S110,通过游戏引擎的第一预设接口接收针对任一运行平台的 任一游戏资源的获取请求。
具体地,游戏引擎的上层的应用层与引擎子系统,发起针对任一运行平台的任一游戏资源的获取请求时,终端设备通过游戏引擎的第一预设接口接收该获取请求,该第一预设接口为游戏引擎的资源管理系统的统一接口,终端设备可以为智能手机、iPad、台式计算机、笔记本电脑等。
其中,游戏引擎的应用层包括插件、用户组件、游戏性及编辑器等,游戏引擎的引擎子系统包括场景管理器、动画系统、音频系统及渲染系统等,如图2所示。
步骤S120,基于获取请求,通过游戏引擎的资源管理系统获取任一游戏资源,资源管理系统包括第一预设接口、资源、资源管理器、资源加载器及资源注册表。
具体地,游戏引擎的资源管理系统的第一预设接口接收到该获取请求后,可以基于该获取请求,获取该任一游戏资源。其中,资源管理系统包括第一预设接口、资源、资源管理器、资源加载器及资源注册表。换言之,对资源管理系统进行了模块拆分,使其包括上层统一接口(即第一预设接口)、资源管理器、资源加载器、资源注册表等部分,如图2所示。其中,资源管理系统可以通过资源加载器适配不同的游戏运行平台,例如iOS(苹果操作系统)、Android(安卓操作系统)、Windows(微软操作系统)等,并从其中获取相应的游戏资源,使得游戏引擎上层的应用层和引擎子系统可以利用资源管理器提供的第一预设接口获取不同游戏运行平台的游戏资源。
进一步地,如图2所示,游戏引擎的系统架构除包括应用层、引擎子系统、资源管理系统外还包括平台适配与目标运行平台,其中,在整个游戏引擎中,资源管理系统处于游戏引擎的底层,是引擎各个子系统以及应用层的基础。
步骤S130,返回获取到的任一游戏资源。
具体地,资源管理系统获取到该任一游戏资源后,向游戏引擎的上层返回获取到的任一游戏资源。
本申请实施例提供的游戏引擎资源处理方法,与现有技术相比,通过游戏引擎的资源管理系统的第一预设接口,接收任一运行平台的任一游戏资源的获取请求,并通过资源管理系统基于该获取请求,获取任一游戏资源,其中,资源管理系统包括第一预设接口、资源、资源管理器、资源加载器及资源注册表,使得可以通过资源加载器适配不同的游戏运行平台,例如iOS(苹果操作系统)、Android(安卓操作系统)、Windows(微软操作系统)等,并从其中获取相应的游戏资源,从而游戏引擎上层的应用层和引擎子系统可以利用资源管理器提供的第一预设接口获取不同游戏运行平台的游戏开发资源,实现了各大游戏运行平台的不同格式资源的高效和灵活管理,满足了对资源管理系统的扩展性需求以及快速地加载不同游戏运行平台的大量资源的需求。
本申请实施例提供了另一种可能的实现方式,其中:
资源管理器用于缓存已有游戏资源、处理游戏资源释放及根据游戏资源类型确定游戏资源释放策略,通过缓存已有游戏资源可以确保游戏资源不会被重复加载。
资源加载器用于基于管道化的加载流水线加载各种游戏资源,即资源加载器是基于管道化设计的,使得基于管道化设计的加载流水线能够支持快速拓展及适配各类需求。
资源注册表用于存储游戏资源的相关信息,相关信息包括标识信息、哈希值、资源路径到实际路径的转换信息中的至少一项,而且资源注册表还可以提供对外接口以用于进行游戏资源的相关信息的查询。
资源管理系统的第一预设接口为资源管理系统对上层提供的统一接口,以供游戏引擎各个部分进行调用,其包括一系列游戏资源的获取、查询、加载及释放等的接口。
具体地,如图3所示,基于管道化设计的资源加载器包括加载队列模块、循环引用检测模块、流水线调度模块、加载流水线模块、资源依赖解析模块及错误处理模块,其中,各个模块的详细内容及功能如下:
加载队列模块用于存储各个正在加载的游戏资源项和/或待加载的游 戏资源项,从而控制游戏资源项之间的依赖等工作。
循环引用检测模块用于检测在各个游戏资源之间的依赖关系是否存在循环依赖,并当存在循环依赖时对该循环依赖进行断裂处理,相当于检测在各个游戏资源之间的依赖关系是否存在环的问题,如果存在环,则必须进行环的断裂处理,避免发生死锁的情况。
其中,循环依赖是指循环往复依赖,比如A依赖B,B依赖C,C又依赖A,依赖关系形成了一个环,即A->B->C->A。循环依赖会造成在加载A时必须先加载B,加载B又必须先加载C,加载C又必须先加载A,导致永远完成不了,形成无限循环。上述环的问题就是指循环依赖。
由于循环依赖会造成无限循环,所以必须在依赖关系的环中找一个地方进行断开,比如上述的A->B->C->A,这是一个环,这个时候就需要把B依赖C这条依赖关系断开,变成A->B与C->A,这样在加载到B时就会停止,从而断开了这个环(即循环依赖)。其中,对循环依赖进行断裂处理的操作方式是指:在加载一个子资源时,先查找一下这个子资源是否是自己的祖先资源,如果是,表示存在循环依赖,就不再加载该子资源了,而是直接完成当前资源的加载。
流水线调度模块可以用于控制各个流水线的拼接、控制管道之间的数据流入与数据流出、调度各个管道的并行处理、调度各个管道的回调处理等。
加载流水线模块用于进行流水线的动态拼接、删除、增加及移位中的至少一项处理,且整个加载流水线是基于管道化设计的,其中的管道可以进行动态拼接、删除、增加及移位等操作,从而实现用户定制的功能。
资源依赖解析模块用于在反序列化后,解析游戏资源依赖的相关资源,并加载解析得到的相关资源,即将游戏资源中依赖的其他资源解析出来,并进行依赖资源的加载工作。
其中,反序列化和序列化是一对相对的概念。序列化是指将运行中的对象状态以一种紧密有序的形式保存下来,可以保存在任何可存储数据的介质中比如数据库,硬盘等等。反序列化是指读取上面序列化之后保存的 数据文件,解析恢复成当时运行时的状态。
错误处理模块用于记录游戏资源的加载过程中的异常信息,并返回异常信息,即检测资源加载过程中是否发生异常,并当发生异常时记录异常,同时在回调中返回该异常。
进一步地,如图3所示,加载流水线模块包括资源标识解析管道、资源MD5解析管道、平台适配管道、资源下载管道及资源加载管道,其中,各个管道的详细内容及功能如下:
资源标识解析管道用于将游戏资源的标识信息(例如ID)转化为游戏资源的全局唯一标识信息,并将该全局唯一标识信息转化为游戏资源的实际路径(例如真实路径地址)。
资源MD5解析管道用于通过将游戏资源的哈希值添加到该游戏资源的实际路径中,获取该游戏资源的版本路径。
平台适配管道用于根据不同游戏运行平台进行相应的应用程序编程接口API的匹配,即根据不同目标游戏运行平台进行对应API的适配工作。
资源下载管道用于根据游戏资源的类型确定对应的用于进行游戏资源下载的下载器,即根据游戏资源类型选择对应的下载器进行资源下载。
资源加载管道用于根据游戏资源的类型确定对应的用于进行游戏资源加载的加载器,即根据游戏资源类型选择对应的加载器进行资源加载,包括资源的解析、反序列化等操作。
需要说明的是,上述的资源加载器将加载流程进行管道化设计,每一个管道负责其中一项业务,各个管道之间业务上没有直接关系,管道串联成一个加载流水线。当任一资源请求进入流水线后,便可转换为对应资源,通过将各个游戏运行平台的适配、多个游戏资源格式的处理放入到多个不同的管道中进行工作,从而避免了相互干扰的问题,而且逻辑变得更加清晰和更加符合面向对象的设计思想,这极大地降低了开发和维护的难度,提升了工作效率。此外,各个管道是可热插拔、可修改顺序的,用户可根据具体需求增删、修改各个管道,从而在很大程度上增加了游戏开发的灵 活性。同时,在可预见的未来,新的标准都可通过增删、修改管道来进行适配,这使得资源管理系统的扩展性大大提高。另外,由于各个管道之间的工作互不相关,故可通过生产者和消费者模型进行并行化处理,从而大大利用了并行的效率,极大减少资源加载的时间。
其中,上述新的标准可以指新的图形库,或者现有图形库的新版本,opengl、directx、Vulkan、或者新的JavaScript标准,ES7等等,或者新的游戏平台,比如微信小游戏,百度小游戏等等都可以算作新标准。
本申请实施例提供了另一种可能的实现方式,其中,如图3所示,资源管理系统中的资源管理器又可以划分为若干个子模块,各个子模块的详细内容及功能如下:
资源策略模块用于针对不同游戏资源确定不同的管理策略,即针对不同资源使用不同的策略进行管理,例如,对于引擎的内部资源以及用户需要长期使用的资源路径下的资源,采取的是用户手动控制,引擎不做释放工作;针对普通资源,则根据对应场景的设置情况进行控制,如果场景设置为自动释放资源,则对应资源将在场景切换时,根据下一场景是否依然需要用到此资源来决定,若彻底不需要此资源,则该资源将在场景切换时自动进行释放。
资源获取模块用于通过查询资源缓存模块确定是否存在游戏资源,并当存在时返回该游戏资源,当不存在时通过所述资源加载器进行该游戏资源的加载。
资源缓存模块用于对游戏中用到的所有资源进行缓存,以使得复用公共游戏资源,此外还可以确保游戏资源不会被重复加载。
资源释放模块用于根据用户选择,确定对游戏资源进行释放或者对游戏资源依赖的相关资源进行释放,即根据用户选择对游戏资源本身进行释放,还是对资源所依赖的所有其他资源进行释放,析构所有相关资源,并从缓存中移除该对象。
另外,如图3所示,资源管理系统中的资源注册表又可以划分为若干个子模块,各个子模块的详细内容及功能如下:
资源路径处理模块用于将游戏资源的全局唯一标识信息转化为游戏资源的路径信息。
资源信息模块用于存储以下至少一项:游戏资源的类型、游戏资源的相对路径、游戏资源的名称、游戏资源的标识信息、指示游戏资源是否为子资源的标识。
资源标识映射表模块用于将游戏资源的标识信息与游戏资源的全局唯一标识信息进行映射。
资源MD5映射表模块用于将游戏资源的全局唯一标识信息与游戏资源的哈希值进行映射,以使得查询游戏资源的版本信息。
本申请实施例提供了另一种可能的实现方式,步骤S120中的通过资源管理系统获取任一游戏资源,具体包括:步骤a、通过第一预设接口调用资源注册表的第二预设接口,并通过资源注册表查询任一游戏资源的相关信息,以获取任一游戏资源的标识信息;步骤b、根据任一游戏资源的标识信息,调用资源管理器的第三预设接口,并通过资源管理器获取任一游戏资源。
具体地,通过资源管理器获取所述任一游戏资源,包括:
查询资源管理器的资源缓存模块中缓存的游戏资源,并确定所述缓存的游戏资源中是否包括所述任一游戏资源;
如果包括任一游戏资源,则返回所述任一游戏资源;
如果不包括任一游戏资源,则通过资源管理器调用资源加载器的第四预设接口,并通过资源加载器加载所述任一游戏资源。
具体地,通过资源加载器加载任一游戏资源,包括:
判断加载队列模块是否正在加载所述任一游戏资源;
如果正在加载任一游戏资源,则注册相应的回调函数,并通过回调函数返回加载完成的任一游戏资源;
如果未在加载任一游戏资源,则在加载队列模块中增加用于加载任一游戏资源的资源项,并基于资源项对任一游戏资源进行加载处理。
具体地,基于资源项对任一游戏资源进行加载处理,包括:
通过循环引用检测模块检测资源项是否存在循环依赖;
若存在循环依赖,则对该循环依赖进行断裂处理,并加载任一游戏资源;
若不存在循环依赖,则通过流水线调度模块对资源项进行流水线的调度,以使得任一游戏资源的相关数据流入调度后的流水线,并通过加载流水线模块基于调度后的流水线加载任一游戏资源。
具体地,通过加载流水线模块基于调度后的流水线加载任一游戏资源,包括:
通过资源标识解析管道调用所述第二预设接口,将任一游戏资源的标识信息转化为任一游戏资源的实际路径;
通过资源MD5解析管道调用所述第二预设接口,将任一游戏资源的哈希值添加到实际路径中,得到任一游戏资源的版本路径;
基于版本路径,通过平台适配管道确定适配于任一运行平台的API;
基于API,通过资源下载管道根据任一游戏资源的类型,确定下载任一游戏资源的下载器,并通过下载器下载任一游戏资源;
基于API,通过资源下载管道根据任一游戏资源的类型,确定加载任一游戏资源的加载器,并通过加载器加载任一游戏资源。
具体地,在通过加载流水线模块基于调度后的流水线加载任一游戏资源之后,还包括:
通过资源依赖解析模块对任一游戏资源依赖的相关资源进行解析,并根据解析结果判断任一游戏资源是否存在依赖;
如果存在依赖,则循环执行步骤b;
如果不存在依赖,则调用资源管理器的第三预设接口,并通过资源管理器的资源策略模块确定任一游戏资源的管理策略,同时通过资源管理器的资源缓存模块缓存任一游戏资源,以返回任一游戏资源。
其中,图4给出了本实现方式中的通过资源管理系统获取任一游戏资源的基本过程,该基本过程包括如下所示的几个子过程:
1、游戏引擎的上层(例如应用层、引擎子系统)发起获取任一运行平 台的任一游戏资源的获取请求,相应地,游戏引擎的资源管理系统的第一预设接口(即图4中的统一接口)接收该获取请求;
2、通过第一预设接口调用资源注册表的第二预设接口(即图4中的资源注册表的接口),并在资源注册表中查询该任一游戏资源的相关信息,以获取该任一游戏资源的标识信息(例如ID),同时根据该任一游戏资源的标识信息,调用资源管理器的第三预设接口(即图4中的资源管理器的接口),并通过资源管理器获取该任一游戏资源。
3、资源管理器的接口调用资源获取模块,以获取用户需要的该任一游戏资源。
4、资源获取模块通过资源缓存模块对该任一游戏资源进行查询,判断该任一游戏资源是否存在于资源缓存模块中,如果存在于资源缓存模块中,则直接返回该任一游戏资源,如果不存在于资源缓存模块中,则调用资源加载器的第四预设接口(即图4中的资源加载器的接口),并通过资源加载器加载该任一游戏资源;
5、资源加载器的接口判断加载队列模块中是否正在加载该任一游戏资源,如果正在加载该任一游戏资源,则注册回调函数,以通过该回调函数返回加载完成的该任一游戏资源,否则,在加载队列模块中新增用于加载该任一游戏资源的资源项,并基于该资源项对该任一游戏资源进行加载处理;
6、通过循环引用检测模块对该资源项进行依赖循环检测,如果发现存在循环依赖,则将该资源项直接完成,进行循环依赖的环的断裂处理,否则继续加载该任一游戏资源;
7、通过流水线调度模块对资源项进行流水线的调度,以使得该任一游戏资源的相关数据流入调度后的流水线;
8、通过资源标识解析管道调用资源注册表的接口,将该任一游戏资源的标识信息转化为该任一游戏资源的实际路径;
9、通过资源MD5解析管道调用资源注册表的接口,将该任一游戏资源的版本哈希值添加到该任一游戏资源的实际路径中,得到该任一游戏资 源的版本路径;
10、根据不同的游戏运行平台,通过平台适配管道适配该任一游戏资源的游戏运行平台的API;
11、根据该任一游戏资源的类型或格式,选择资源下载器进行该任一游戏资源的下载;
12、根据该任一游戏资源的类型或格式,选择资源加载器进行该任一游戏资源的加载;
13、通过资源依赖解析模块对该任一游戏资源的依赖进行解析,即对该任一游戏资源依赖的相关资源进行解析;
14、根据解析结果判断该任一游戏资源是否存在依赖,如果存在依赖,则返回上述步骤3继续执行,否则执行下面的步骤15;
15、调用资源管理器的接口,通过资源管理器的资源策略模块设置资源管理策略;
16、通过资源管理器的资源缓存模块缓存该任一游戏资源;
17、返回该任一游戏资源。
本申请实施例的游戏引擎资源处理方法,对资源管理系统实现了模块拆分、管道抽象、平台格式适配、并行加载资源的流程,将加载过程中的环节提炼成单独的管道,将所有管道组合成加载流水线,加载流水线中的管道进行并行工作。其中,不仅管道可以自由组合和扩展,以适配多个游戏运行平台,而且在单独的一个管道中可以进行多格式适配。此外,将加载完成的资源进行缓存,便于之后的资源复用,从而实现了各大平台的不同格式资源的高效和灵活管理,从而满足资源管理系统扩展性好、快速地加载不同平台的大量资源的需求。
实施例二
图5为本申请实施例提供的一种游戏资源引擎处理装置的结构示意图,如图5所示,该装置50可以包括接收模块51、获取模块52及返回模块53;其中:
接收模块51被配置为通过游戏引擎的第一预设接口接收针对任一运 行平台的任一游戏资源的获取请求;
获取模块52被配置为基于获取请求,通过游戏引擎的资源管理系统获取任一游戏资源,资源管理系统包括第一预设接口、资源、资源管理器、资源加载器及资源注册表;
返回模块53被配置为返回获取到的任一游戏资源。
具体地,资源管理器用于缓存已有游戏资源、处理游戏资源释放及根据游戏资源类型确定游戏资源释放策略;
资源加载器用于基于管道化的加载流水线加载各种游戏资源;
资源注册表用于存储游戏资源的相关信息,相关信息包括标识信息、哈希值、资源路径到实际路径的转换信息中的至少一项。
进一步地,资源加载器包括加载队列模块、循环引用检测模块、流水线调度模块、加载流水线模块、资源依赖解析模块及错误处理模块;
加载队列模块被配置为存储各个正在加载的游戏资源项和/或待加载的游戏资源项;
循环引用检测模块被配置为检测在各个游戏资源之间的依赖关系是否存在循环依赖,并当存在循环依赖时对该循环依赖进行断裂处理;
流水线调度模块被配置为执行以下至少一项:控制各个流水线的拼接、控制管道之间的数据流入与数据流出、调度各个管道的并行处理、调度各个管道的回调处理;
加载流水线模块被配置为进行流水线的动态拼接、删除、增加及移位中的至少一项处理;
资源依赖解析模块被配置为在反序列化后,解析游戏资源依赖的相关资源,并加载解析得到的相关资源;
错误处理模块被配置为记录游戏资源的加载过程中的异常信息,并返回异常信息。
进一步地,加载流水线模块包括资源标识解析管道、资源MD5解析管道、平台适配管道、资源下载管道及资源加载管道;
资源标识解析管道用于将游戏资源标识信息转化为游戏资源的全局 唯一标识信息,并将该全局唯一标识信息转化为游戏资源的实际路径;
资源MD5解析管道用于通过将游戏资源的哈希值添加到该游戏资源的实际路径中,获取该游戏资源的版本路径;
平台适配管道用于根据不同游戏运行平台进行相应的应用程序编程接口API的匹配;
资源下载管道用于根据游戏资源的类型确定对应的用于进行游戏资源下载的下载器;
资源加载管道用于根据游戏资源的类型确定对应的用于进行游戏资源加载的加载器。
进一步地,资源管理器包括资源策略模块、资源获取模块、资源缓存模块及资源释放模块;
其中,资源策略模块被配置为针对不同游戏资源确定不同的管理策略;
资源获取模块被配置为通过查询资源缓存模块确定是否存在游戏资源,并当存在时返回该游戏资源,当不存在时通过资源加载器进行该游戏资源的加载;
资源缓存模块被配置为对游戏中用到的所有资源进行缓存,以使得复用公共游戏资源;
资源释放模块被配置为根据用户选择,确定对游戏资源进行释放或者对游戏资源依赖的相关资源进行释放。
进一步地,资源注册表包括资源路径处理模块、资源信息模块、资源标识映射表模块及资源MD5映射表模块;
资源路径处理模块被配置为将游戏资源的全局唯一标识信息转化为游戏资源的路径信息;
资源信息模块被配置为存储以下至少一项:游戏资源的类型、游戏资源的相对路径、游戏资源的名称、游戏资源的标识信息、指示游戏资源是否为子资源的标识;
资源标识映射表模块被配置为将游戏资源的标识信息与游戏资源的全局唯一标识信息进行映射;
资源MD5映射表模块被配置为将游戏资源的全局唯一标识信息与游戏资源的哈希值进行映射,以使得查询游戏资源的版本信息。
进一步地,获取模块52包括第一处理子模块521与第二处理子模块522,如图6所示,其中:
第一处理子模块521被配置为通过第一预设接口调用资源注册表的第二预设接口,并通过资源注册表查询任一游戏资源的相关信息,以获取任一游戏资源的标识信息;
第二处理子模块522被配置为根据任一游戏资源的标识信息,调用资源管理器的第三预设接口,并通过资源管理器获取任一游戏资源。
进一步地,第二处理子模块522包括查询单元5221与第一结果处理单元5222,如图6所示,其中:
查询单元5221用于查询资源管理器的资源缓存模块中缓存的游戏资源,并确定缓存的游戏资源中是否包括任一游戏资源;
第一结果处理单元5222用于当包括任一游戏资源时,返回任一游戏资源;以及用于当不包括任一游戏资源时,通过资源管理器调用资源加载器的第四预设接口,并通过资源加载器加载任一游戏资源。
进一步地,第一结果处理单元5222具体用于判断加载队列模块是否正在加载任一游戏资源;以及用于当正在加载任一游戏资源时,注册相应的回调函数,并通过回调函数返回加载完成的任一游戏资源;以及用于当未在加载任一游戏资源时,在加载队列模块中增加用于加载任一游戏资源的资源项,并基于资源项对任一游戏资源进行加载处理。
进一步地,第一结果处理单元5222具体用于通过循环引用检测模块检测资源项是否存在循环依赖;以及当存在循环依赖时,对该循环依赖进行断裂处理,并加载任一游戏资源;以及当不存在循环依赖时,通过流水线调度模块对资源项进行流水线的调度,以使得任一游戏资源的相关数据流入调度后的流水线,并通过加载流水线模块基于调度后的流水线加载任一游戏资源。
进一步地,第一结果处理单元5222具体用于通过资源标识解析管道 调用第二预设接口,将任一游戏资源的标识信息转化为任一游戏资源的实际路径;以及用于通过资源MD5解析管道调用第二预设接口,将任一游戏资源的哈希值添加到实际路径中,得到任一游戏资源的版本路径;以及用于基于版本路径,通过平台适配管道确定适配于任一运行平台的API;以及用于基于API,通过资源下载管道根据任一游戏资源的类型,确定下载任一游戏资源的下载器,并通过下载器下载任一游戏资源;以及用于基于API,通过资源下载管道根据任一游戏资源的类型,确定加载任一游戏资源的加载器,并通过加载器加载任一游戏资源。
进一步地,第二处理子模块522还包括第二结果处理单元5223,如图6所示,其中:
第二结果处理单元5223用于通过资源依赖解析模块对任一游戏资源依赖的相关资源进行解析,并根据解析结果判断任一游戏资源是否存在依赖;以及当存在依赖时循环执行第二处理子模块的动作;以及当不存在依赖时,调用资源管理器的第三预设接口,并通过资源管理器的资源策略模块确定任一游戏资源的管理策略,同时通过资源管理器的资源缓存模块缓存任一游戏资源,以使得返回任一游戏资源。
实施例三
本申请实施例提供了一种电子设备,如图7所示,图7所示的电子设备700包括:处理器701和存储器703。其中,处理器701和存储器703相连,如通过总线702相连。进一步地,电子设备700还可以包括收发器704。需要说明的是,实际应用中收发器704不限于一个,该电子设备700的结构并不构成对本申请实施例的限定。
其中,处理器701应用于本申请实施例中,用于实现图5或图6所示的接收模块、获取模块及返回模块的功能。
处理器701可以是CPU、通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器701也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线702可包括一通路,在上述组件之间传送信息。总线702可以是PCI总线或EISA总线等。总线702可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器703可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器703用于存储执行本申请方案的应用程序代码,并由处理器701来控制执行。处理器701用于执行存储器703中存储的应用程序代码,以实现图5或图6所示实施例提供的游戏资源引擎处理装置的动作。
本申请实施例提供的电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时,与现有技术相比,可实现上述实施例所示的方法。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述实施例所示的方法。
本申请实施例提供的计算机可读存储介质适用于上述方法的任一实施例。在此不再赘述。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (15)

  1. 一种游戏引擎资源处理方法,包括:
    通过游戏引擎的第一预设接口接收针对任一运行平台的任一游戏资源的获取请求;
    基于所述获取请求,通过游戏引擎的资源管理系统获取所述任一游戏资源,所述资源管理系统包括所述第一预设接口、资源、资源管理器、资源加载器及资源注册表;
    返回获取到的所述任一游戏资源。
  2. 根据权利要求1所述的方法,其中,所述资源管理器用于缓存已有游戏资源、处理游戏资源释放及根据游戏资源类型确定游戏资源释放策略;
    所述资源加载器用于基于管道化的加载流水线加载各种游戏资源;
    所述资源注册表用于存储游戏资源的相关信息,所述相关信息包括标识信息、哈希值、资源路径到实际路径的转换信息中的至少一项。
  3. 根据权利要求1或2所述的方法,其中,所述资源加载器包括加载队列模块、循环引用检测模块、流水线调度模块、加载流水线模块、资源依赖解析模块及错误处理模块;
    所述加载队列模块用于存储各个正在加载的游戏资源项和/或待加载的游戏资源项;
    所述循环引用检测模块用于检测在各个游戏资源之间的依赖关系是否存在循环依赖,并当存在循环依赖时对该循环依赖进行断裂处理;
    所述流水线调度模块用于执行以下至少一项:控制各个流水线的拼接、控制管道之间的数据流入与数据流出、调度各个管道的并行处理、调度各个管道的回调处理;
    所述加载流水线模块用于进行流水线的动态拼接、删除、增加及移位中的至少一项处理;
    所述资源依赖解析模块用于在反序列化后,解析游戏资源依赖的相关 资源,并加载解析得到的相关资源;
    所述错误处理模块用于记录游戏资源的加载过程中的异常信息,并返回所述异常信息。
  4. 根据权利要求3所述的方法,其中,所述加载流水线模块包括资源标识解析管道、资源MD5解析管道、平台适配管道、资源下载管道及资源加载管道;
    所述资源标识解析管道用于将游戏资源标识信息转化为游戏资源的全局唯一标识信息,并将该全局唯一标识信息转化为游戏资源的实际路径;
    所述资源MD5解析管道用于通过将游戏资源的哈希值添加到该游戏资源的实际路径中,获取该游戏资源的版本路径;
    所述平台适配管道用于根据不同游戏运行平台进行相应的应用程序编程接口API的匹配;
    所述资源下载管道用于根据游戏资源的类型确定对应的用于进行游戏资源下载的下载器;
    所述资源加载管道用于根据游戏资源的类型确定对应的用于进行游戏资源加载的加载器。
  5. 根据权利要求1或2所述的方法,其中,所述资源管理器包括资源策略模块、资源获取模块、资源缓存模块及资源释放模块;
    其中,所述资源策略模块用于针对不同游戏资源确定不同的管理策略;
    所述资源获取模块用于通过查询资源缓存模块确定是否存在游戏资源,并当存在时返回该游戏资源,当不存在时通过所述资源加载器进行该游戏资源的加载;
    所述资源缓存模块用于对游戏中用到的所有资源进行缓存;
    所述资源释放模块用于根据用户选择,确定对游戏资源进行释放或者对游戏资源依赖的相关资源进行释放。
  6. 根据权利要求1或2所述的方法,其中,所述资源注册表包括资源路径处理模块、资源信息模块、资源标识映射表模块及资源MD5映射表模块;
    所述资源路径处理模块用于将游戏资源的全局唯一标识信息转化为游戏资源的路径信息;
    所述资源信息模块用于存储以下至少一项:游戏资源的类型、游戏资源的相对路径、游戏资源的名称、游戏资源的标识信息、指示游戏资源是否为子资源的标识;
    所述资源标识映射表模块用于将游戏资源的标识信息与游戏资源的全局唯一标识信息进行映射;
    所述资源MD5映射表模块用于将游戏资源的全局唯一标识信息与游戏资源的哈希值进行映射,以使得查询游戏资源的版本信息。
  7. 根据权利要求1-6任一项所述的方法,其中,所述通过资源管理系统获取所述任一游戏资源,包括:
    步骤a、通过所述第一预设接口调用所述资源注册表的第二预设接口,并通过所述资源注册表查询所述任一游戏资源的相关信息,以获取所述任一游戏资源的标识信息;
    步骤b、根据所述任一游戏资源的标识信息,调用所述资源管理器的第三预设接口,并通过所述资源管理器获取所述任一游戏资源。
  8. 根据权利要求7所述的方法,其中,通过所述资源管理器获取所述任一游戏资源,包括:
    查询所述资源管理器的资源缓存模块中缓存的游戏资源,并确定所述缓存的游戏资源中是否包括所述任一游戏资源;
    如果包括所述任一游戏资源,则返回所述任一游戏资源;
    如果不包括所述任一游戏资源,则通过所述资源管理器调用资源加载器的第四预设接口,并通过所述资源加载器加载所述任一游戏资源。
  9. 根据权利要求8所述的方法,其中,通过所述资源加载器加载所述任一游戏资源,包括:
    判断加载队列模块是否正在加载所述任一游戏资源;
    如果正在加载所述任一游戏资源,则注册相应的回调函数,并通过所述回调函数返回加载完成的所述任一游戏资源;
    如果未在加载所述任一游戏资源,则在所述加载队列模块中增加用于加载所述任一游戏资源的资源项,并基于所述资源项对所述任一游戏资源进行加载处理。
  10. 根据权利要求9所述的方法,其中,基于所述资源项对所述任一游戏资源进行加载处理,包括:
    通过循环引用检测模块检测所述资源项是否存在循环依赖;
    若存在循环依赖,则对该循环依赖进行断裂处理,并加载所述任一游戏资源;
    若不存在循环依赖,则通过流水线调度模块对所述资源项进行流水线的调度,以使得所述任一游戏资源的相关数据流入调度后的流水线,并通过加载流水线模块基于所述调度后的流水线加载所述任一游戏资源。
  11. 根据权利要求10所述的方法,其中,通过加载流水线模块基于所述调度后的流水线加载所述任一游戏资源,包括:
    通过资源标识解析管道调用所述第二预设接口,将所述任一游戏资源的标识信息转化为所述任一游戏资源的实际路径;
    通过资源MD5解析管道调用所述第二预设接口,将所述任一游戏资源的哈希值添加到所述实际路径中,得到所述任一游戏资源的版本路径;
    基于所述版本路径,通过平台适配管道确定适配于所述任一运行平台的API;
    基于所述API,通过资源下载管道根据所述任一游戏资源的类型,确定下载所述任一游戏资源的下载器,并通过所述下载器下载所述任一游戏资源;
    基于所述API,通过资源下载管道根据所述任一游戏资源的类型,确定加载所述任一游戏资源的加载器,并通过所述加载器加载所述任一游戏资源。
  12. 根据权利要求10所述的方法,其中,在通过加载流水线模块基于所述调度后的流水线加载所述任一游戏资源之后,还包括:
    通过资源依赖解析模块对所述任一游戏资源依赖的相关资源进行解 析,并根据解析结果判断所述任一游戏资源是否存在依赖;
    如果存在依赖,则循环执行步骤b;
    如果不存在依赖,则调用所述资源管理器的第三预设接口,并通过所述资源管理器的资源策略模块确定所述任一游戏资源的管理策略,同时通过所述资源管理器的资源缓存模块缓存所述任一游戏资源,以使得返回所述任一游戏资源。
  13. 一种游戏引擎资源处理装置,包括:
    接收模块,被配置为通过游戏引擎的第一预设接口接收针对任一运行平台的任一游戏资源的获取请求;
    获取模块,被配置为基于所述获取请求,通过游戏引擎的资源管理系统获取所述任一游戏资源,所述资源管理系统包括所述第一预设接口、资源、资源管理器、资源加载器及资源注册表;
    返回模块,被配置为返回获取到的所述任一游戏资源。
  14. 一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1-12任一项所述的游戏引擎资源处理方法。
  15. 一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现权利要求1-12任一项所述的游戏引擎资源处理方法。
PCT/CN2020/107836 2020-08-07 2020-08-07 游戏引擎资源处理方法及其装置、电子设备及计算机可读存储介质 WO2022027600A1 (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP20948618.2A EP4194067A4 (en) 2020-08-07 2020-08-07 METHOD AND DEVICE FOR PROCESSING GAME ENGINE RESOURCES, AS WELL AS ELECTRONIC DEVICE AND COMPUTER-READABLE STORAGE MEDIUM
PCT/CN2020/107836 WO2022027600A1 (zh) 2020-08-07 2020-08-07 游戏引擎资源处理方法及其装置、电子设备及计算机可读存储介质
US18/020,173 US20230214272A1 (en) 2020-08-07 2020-08-07 Game Engine Resource Processing Method And Apparatus, And Electronic Device And Computer-Readable Storage Medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/107836 WO2022027600A1 (zh) 2020-08-07 2020-08-07 游戏引擎资源处理方法及其装置、电子设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
WO2022027600A1 true WO2022027600A1 (zh) 2022-02-10

Family

ID=80119002

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/107836 WO2022027600A1 (zh) 2020-08-07 2020-08-07 游戏引擎资源处理方法及其装置、电子设备及计算机可读存储介质

Country Status (3)

Country Link
US (1) US20230214272A1 (zh)
EP (1) EP4194067A4 (zh)
WO (1) WO2022027600A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118312245B (zh) * 2024-06-13 2024-09-10 腾讯科技(深圳)有限公司 实现小游戏加载游戏资源的方法及相关装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739458A (zh) * 2009-12-02 2010-06-16 中兴通讯股份有限公司 多语化资源的更新方法和系统
CN106815002A (zh) * 2015-12-01 2017-06-09 北京触控科技有限公司 一种跨平台游戏开发工具的实现方法
CN109347916A (zh) * 2018-09-14 2019-02-15 北京小米移动软件有限公司 游戏交互方法、装置及计算机可读存储介质
CN111569431A (zh) * 2019-02-18 2020-08-25 厦门雅基软件有限公司 游戏引擎资源处理方法、电子设备及计算机可读存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8631414B2 (en) * 2010-09-15 2014-01-14 Qualcomm Incorporated Distributed resource management in a portable computing device
WO2018081732A1 (en) * 2016-10-31 2018-05-03 Dg Holdings, Inc. Portable and persistent virtual identity systems and methods
CN109513211B (zh) * 2018-10-15 2022-06-24 网易(杭州)网络有限公司 美术资源文件的处理方法、装置以及游戏资源展示系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739458A (zh) * 2009-12-02 2010-06-16 中兴通讯股份有限公司 多语化资源的更新方法和系统
CN106815002A (zh) * 2015-12-01 2017-06-09 北京触控科技有限公司 一种跨平台游戏开发工具的实现方法
CN109347916A (zh) * 2018-09-14 2019-02-15 北京小米移动软件有限公司 游戏交互方法、装置及计算机可读存储介质
CN111569431A (zh) * 2019-02-18 2020-08-25 厦门雅基软件有限公司 游戏引擎资源处理方法、电子设备及计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP4194067A4 *

Also Published As

Publication number Publication date
US20230214272A1 (en) 2023-07-06
EP4194067A1 (en) 2023-06-14
EP4194067A4 (en) 2024-05-08

Similar Documents

Publication Publication Date Title
CN111569431B (zh) 游戏引擎资源处理方法、电子设备及计算机可读存储介质
US10140461B2 (en) Reducing resource consumption associated with storage and operation of containers
CN110865888B (zh) 一种资源加载方法、装置、服务器及存储介质
US9170855B2 (en) Virtual application extension points
US20060020937A1 (en) System and method for extraction and creation of application meta-information within a software application repository
US20180039652A1 (en) Symbolic link based placeholders
CN109614167B (zh) 一种管理插件的方法和系统
JP2012146327A (ja) ドキュメントプレビューを提供する方法、システムおよび装置
CN106713469B (zh) 用于分布式容器的动态加载方法、装置及系统
US11907296B2 (en) Method and system for traversing an object graph using traversal context objects
CN112783760B (zh) 测试用例的处理方法、装置和存储介质
JP2012530972A (ja) 管理されたシステム拡張子機能
CN112860507B (zh) 分布式链路跟踪系统采样率的控制方法和装置
US20070038670A1 (en) Context sensitive media and information
CN114756627B (zh) 基于联盟链的数字资产处理方法、系统和存储介质
WO2022027600A1 (zh) 游戏引擎资源处理方法及其装置、电子设备及计算机可读存储介质
US11762760B1 (en) Scalable test workflow service
CN104054308B (zh) 应用层资源选择的方法、装置和系统
US11586482B2 (en) Deployment of services with dependencies
CN112988062B (zh) 一种元数据读取限制方法、装置、电子设备及介质
WO2023143545A1 (zh) 资源处理方法、装置、电子设备及计算机可读存储介质
US9298473B2 (en) System and method for a generic object access layer
CN116594717A (zh) 一种类加载隔离方法、装置、设备及介质
JP2006146615A (ja) オブジェクト関連情報管理プログラム、管理方法、および管理装置。
US7010454B1 (en) Test services provider

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20948618

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2020948618

Country of ref document: EP

Effective date: 20230307