WO2024051420A1 - 虚拟场景的数据处理方法、装置、电子设备及计算机存储介质 - Google Patents
虚拟场景的数据处理方法、装置、电子设备及计算机存储介质 Download PDFInfo
- Publication number
- WO2024051420A1 WO2024051420A1 PCT/CN2023/111425 CN2023111425W WO2024051420A1 WO 2024051420 A1 WO2024051420 A1 WO 2024051420A1 CN 2023111425 W CN2023111425 W CN 2023111425W WO 2024051420 A1 WO2024051420 A1 WO 2024051420A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- player character
- player
- npc
- player characters
- rule
- Prior art date
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 39
- 238000003860 storage Methods 0.000 title claims abstract description 29
- 238000000034 method Methods 0.000 claims abstract description 87
- 238000012545 processing Methods 0.000 claims abstract description 50
- 230000008569 process Effects 0.000 claims description 52
- 230000015654 memory Effects 0.000 claims description 44
- 230000004044 response Effects 0.000 claims description 33
- 230000003068 static effect Effects 0.000 claims description 18
- 239000000284 extract Substances 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012217 deletion Methods 0.000 claims description 8
- 230000037430 deletion Effects 0.000 claims description 8
- 238000001914 filtration Methods 0.000 claims description 6
- 210000005155 neural progenitor cell Anatomy 0.000 description 383
- 238000005516 engineering process Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 15
- 230000008859 change Effects 0.000 description 12
- 238000007726 management method Methods 0.000 description 9
- 238000013480 data collection Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000003993 interaction Effects 0.000 description 6
- 230000003042 antagnostic effect Effects 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 206010033307 Overweight Diseases 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 244000025254 Cannabis sativa Species 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011002 quantification Methods 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 206010034719 Personality change Diseases 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000009916 joint effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
-
- 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/40—Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
- A63F13/42—Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
- A63F13/426—Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving on-screen location information, e.g. screen coordinates of an area at which the player is aiming with a light gun
-
- 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/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
- A63F13/56—Computing the motion of game characters with respect to other game characters, game objects or elements of the game scene, e.g. for simulating the behaviour of a group of virtual soldiers or for path finding
-
- 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/80—Special adaptations for executing a specific game genre or game mode
- A63F13/822—Strategy games; Role-playing games
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/30—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by output arrangements for receiving control signals generated by the game device
- A63F2300/308—Details of the user interface
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/80—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game
- A63F2300/807—Role playing or strategy games
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- the present application relates to the field of Internet technology, and in particular to a virtual scene data processing method, device, electronic equipment and storage medium.
- NPC basic data in the game will be created and managed without reservation. For example, after obtaining the basic data of a certain NPC, the NPC will be instantiated immediately. However, the player character will always be limited in the game process. It is a very small area in the game map, so most NPCs are player characters and will not have any interaction at present. Therefore, if the basic data of each NPC is instantiated and created in real time to create corresponding entity objects, it will inevitably lead to server and Very high resource overhead on end devices.
- Embodiments of the present application provide a virtual scene data processing method, device, electronic device, computer-readable storage medium, and computer program product, which can effectively save resource overhead of servers and terminal devices.
- Embodiments of the present application provide a virtual scene data processing method, which is executed by an electronic device, including:
- the first number of entity objects is sent to the client controlling the player character, so that the client displays the avatars corresponding to the first number of non-player characters within the current query range.
- An embodiment of the present application provides a data processing device for a virtual scene, including:
- a non-player character NPC data manager configured to obtain the current position of the player character in the virtual scene and determine the current query range including the current position
- the NPC data indexer is configured to query basic data corresponding to multiple non-player characters to be generated within the current query range from the basic database according to the current query range, wherein the basic data of each non-player character is
- the base data includes a plurality of attributes used to instantiate the non-player character
- NPC filtering filter configured to determine the weights of the plurality of non-player characters and determine the weights of the plurality of non-player characters to sort the results in descending order
- An NPC instantiator configured to perform the instantiation process on a first number of non-player characters starting from the first position in the descending sorting result, and obtain a first number of non-player characters respectively corresponding to the first number of non-player characters. Entity objects, wherein the first number is less than the total number of the plurality of non-player characters;
- the NPC instantiator is further configured to send the first number of entity objects to the client controlling the player character, so that the client displays the first number of non-entity objects within the current query range.
- the avatar corresponding to the player character is further configured to send the first number of entity objects to the client controlling the player character, so that the client displays the first number of non-entity objects within the current query range.
- An embodiment of the present application provides an electronic device, including:
- Memory used to store executable instructions
- a processor configured to implement the virtual scene data processing method provided by embodiments of the present application when executing executable instructions stored in the memory.
- Embodiments of the present application provide a computer-readable storage medium that stores computer-executable instructions for implementing the virtual scene data processing method provided by the embodiments of the present application when executed by a processor.
- Embodiments of the present application provide a computer program product, which includes a computer program or computer executable instructions, used to implement the virtual scene data processing method provided by the embodiments of the present application when executed by a processor.
- some non-player characters that is, the first number of non-player characters are filtered out from the multiple non-player characters to be generated within the current query range, and then the first number of filtered non-player characters are The player characters are instantiated and the first number of entity objects are sent to the client. Since the first number of non-player characters are filtered in descending order of weight, it is ensured that important non-player characters within the current query range will not be missed. , based on the data of non-player characters within the current query range, necessary interactions can be carried out with players, ensuring the integrity of the player's game experience.
- player character data can save resource overhead on servers and terminal devices.
- the terminal only needs to load some non-player character data, it also speeds up the loading of virtual scenes.
- Figure 1 is a schematic architectural diagram of a virtual scene data processing system 100 provided by an embodiment of the present application
- FIG. 2 is a schematic structural diagram of the server 200 provided by the embodiment of the present application.
- Figure 3 is a schematic flowchart of a virtual scene data processing method provided by an embodiment of the present application.
- Figure 4A is a schematic diagram of the principle of a virtual scene data processing method provided by an embodiment of the present application.
- Figure 4B is a schematic diagram of the principle of the virtual scene data processing method provided by the embodiment of the present application.
- Figure 5 is a schematic flowchart of a virtual scene data processing method provided by an embodiment of the present application.
- Figure 6 is a schematic diagram of an application scenario of the virtual scene data processing method provided by the embodiment of the present application.
- Figure 7 is a schematic diagram of the octree structure provided by the embodiment of the present application.
- FIG. 8 is a schematic diagram of the NPC generation and management principles provided by the embodiment of the present application.
- Figures 9A and 9B are schematic flow diagrams of a virtual scene data processing method provided by an embodiment of the present application.
- Figure 10 is a schematic diagram of an application scenario of the virtual scene data processing method provided by the embodiment of the present application.
- first ⁇ second ⁇ involved are only used to distinguish similar objects and do not represent a specific ordering of objects. It is understandable that "first ⁇ second ⁇ ..” .” The specific order or sequence may be interchanged where permitted, so that the embodiments of the application described herein can be implemented in an order other than that illustrated or described herein.
- Virtual scene It is the scene displayed (or provided) when the application is running on the terminal device.
- the virtual scene can be a simulation environment of the real world, a semi-simulation and semi-fictitious virtual environment, or a purely fictitious virtual environment.
- the virtual scene may be any one of a two-dimensional virtual scene, a 2.5-dimensional virtual scene, or a three-dimensional virtual scene.
- the embodiments of this application do not limit the dimensions of the virtual scene.
- the virtual scene can include the sky, land, ocean, etc.
- the land can include environmental elements such as deserts and cities, and the player can control the player character to move in the virtual scene.
- Player Character refers to the character controlled by the player in the game.
- the player character can be a virtual avatar in the virtual scene used to represent the player, such as a virtual character, a virtual animal, and an anime character. etc., the player character has its own shape and volume in the virtual scene, occupying a part of the space in the virtual scene.
- Non-Player Character refers to a character in the game that is not controlled by the player.
- NPC is generally controlled by the computer's artificial intelligence and is a character with its own behavior pattern. It can be divided into plot NPC, combat NPC and service NPC. Sometimes there are NPCs with multiple functions. Among them, plot NPC and service NPC are usually not attackable objects, or they are attackable objects but do not actively attack. In addition, some NPCs will drop props, which can provide players with some game information or trigger plots.
- NPC generation rules are the conditions that need to be met for the appearance of NPCs in games (such as open world games) (including trigger conditions and rule execution conditions), and the NPC types that need to be generated when the conditions are met.
- trigger conditions can include attributes such as time and player character level
- rule execution conditions include attributes such as location and weather.
- the configuration data formed by abstracting these attributes is the NPC generation rule.
- the types of NPC generation rules can include static generation rules and dynamic generation rules. Static generation rules are generation rules for NPCs with fixed attributes (such as guide NPCs), and dynamic generation rules are rules for NPCs with dynamically changing attributes (such as combat NPCs). Generation rules, for example, the attack power of combat NPCs will increase as the level of the player character increases.
- NPC basic data is the multi-dimensional attributes of NPC extracted from NPC generation rules, including type, level, location, attack power and appearance. Based on these attributes, game-ready NPC entity object.
- Instantiation processing refers to the server allocating a storage area in the memory space, and then generating a certain number of entity objects corresponding to non-player characters in the storage area. Among them, the capacity of the storage area is positively related to the number of non-player characters that need to be instantiated. Variables of various attributes in the entity objects are stored in the storage area.
- Area of Interest Similar to the visual range of how far humans can see in the real world, it refers to the area that the player character sees in real time in the virtual scene. The AOI will change as the player character moves. changes occur. In a broad sense, the AOI system supports individual objects in any game world to process events that occur within a certain radius, but in most cases, it only cares about objects leaving or entering events that occur within the player character's field of view.
- Open World Game Also known as Free Roam, a type of game level design in which players can freely roam in a virtual world and freely choose the time to complete game tasks. Points and ways.
- Quad Tree Also known as Quad Tree, it is a tree-like data structure that can be used to place and locate files (called records or keys) in the database. The record to be found is divided into 4 parts for matching search until only one record is left.
- Octree A tree-like data structure used to describe space.
- Each middle node of the octree represents a volume element of a cube, and each middle node has 8 leaf nodes.
- the volume elements represented by the 8 leaf nodes are added together to equal the volume of the middle node. If it is not an empty tree, the number of leaf nodes of any intermediate node in the tree will only be 8 or 0, which means that the number of leaf nodes will not be other than 0 and 8.
- Entity object refers to a data collection that includes multiple different types of attribute data of non-player characters.
- entity objects can include attribute data such as appearance, attack power, level, and type of non-player characters.
- the server when a player character is registered, the server will create all NPC generation rules in real time, and store the created NPC generation rules on the player character (that is, bind it to the player character), completing the entire registration process of the player character and After all components of the player character are initialized, the NPC data manager starts working and iteratively detects all NPC generation rules of the player character. If the NPC generation rule is triggered, the NPC basic data that should be generated will be calculated in real time, and then the NPC entity object will be instantiated and saved. to the server memory space and broadcast to the client.
- the solution provided by the relevant technology is very applicable, simple and efficient in game business scenarios where the number of exclusive NPCs for players is small, or most NPCs are shared by all players.
- games with a large number (e.g., thousands) of player-exclusive NPCs such as open-world games
- the server will be greatly increased.
- the memory and processing pressure on the client may even have a great impact on the player's gaming experience.
- the solutions provided by related technologies have the following shortcomings:
- Disadvantage 1 A large number of NPC generation rules and NPC basic data are created in real time during registration. On the one hand, it will cause the registration process to take a long time, thereby reducing the number of concurrent registrations; on the other hand, it will also cause the server CPU processing peak to be relatively high and unstable;
- Disadvantage 2 The gameplay in open world games is rich and colorful, so the number of NPC generation rules configured by planners is very large, possibly thousands. However, many NPC generation rules only take effect at the beginning when the player creates an account, and will not be used thereafter. Any changes occur. In addition, the triggering conditions of each NPC generation rule are also different. Therefore, iteratively detecting all the player's NPC generation rules in real time is very time-consuming, labor-intensive, and unnecessary;
- Disadvantage 3 Instantiate the NPC immediately after generating the basic data of the NPC.
- the player character will always be limited to a small area in the open world during the game process. Therefore, for the vast majority of NPCs in the open world, the player character is There will not be any interaction at present, so if each NPC basic data is instantiated to create the corresponding entity object, it will cause a huge waste of memory space and CPU processing power of the server and client.
- embodiments of the present application provide a virtual scene data processing method, device, electronic device, computer-readable storage medium, and computer program product, which can save resource overhead of servers and terminal devices.
- the following describes exemplary applications of the electronic device provided by the embodiments of the present application.
- the electronic device provided by the embodiments of the present application can be implemented as a server, or implemented by a terminal device and a server in collaboration.
- the following description takes the data processing method of the virtual scene provided by the embodiment of the present application in which the terminal device and the server cooperate to implement it as an example.
- FIG 1 is a schematic architectural diagram of a virtual scene data processing system 100 provided by an embodiment of the present application.
- the processing system 100 includes: a server 200, a network 300 and a terminal device 400.
- the terminal device 400 is connected to the server 200 through the network 300.
- the network 300 can be a wide area network or a local area network, or a combination of the two.
- the client 410 runs on the terminal device 400.
- the client 410 can be various types of game applications, such as open world game applications, shooting game applications, strategy game applications, etc., on the client 410
- a virtual scene is displayed in the human-computer interaction interface, and the client 410 can send the current position of the player character in the virtual scene to the server 200 through the network 300 .
- the server 200 After receiving the current location of the player character in the virtual scene sent by the client 410, the server 200 first determines the current query range including the current location, and queries the basic database according to the current query range to obtain multiple data to be generated within the current query range.
- Basic data corresponding to each non-player character for example, 100 NPCs
- the server 200 determines the weights of the multiple non-player characters, and sorts them in descending order according to the weights of the multiple non-player characters to obtain the descending sorting result; then the server 200
- the first number (for example, 50) of non-player characters starting from the first position in the descending order sorting result is instantiated to obtain the first number of entity objects (for example, filtered from 100 NPCs) corresponding to the first number of non-player characters.
- the server 200 sends the first number of entity objects to the terminal device 400, so that the client 410 renders the first number of entity objects based on the first number of entity objects sent by the server 200.
- Cloud Technology refers to the unification of a series of resources such as hardware, software, and networks within a wide area network or a local area network to realize data calculation and storage.
- Cloud technology is a general term for network technology, information technology, integration technology, management platform technology, and application technology based on the cloud computing business model. It can form a resource pool and use it on demand, which is flexible and convenient. Cloud computing technology will become an important support. The background services of technical network systems require a large amount of computing and storage resources.
- the server 200 in Figure 1 can be an independent physical server, a server cluster or a distributed system composed of multiple physical servers, or it can provide cloud services, cloud databases, cloud computing, cloud functions, and cloud storage. , network services, cloud communications, middleware services, domain name services, security services, content distribution network (CDN, Content Delivery Network), as well as cloud servers for basic cloud computing services such as big data and artificial intelligence platforms.
- the terminal device 400 may be a smartphone, a tablet computer, a notebook computer, a desktop computer, a smart speaker, a smart watch, a vehicle-mounted terminal, etc., but is not limited thereto.
- the terminal device 400 and the server 200 can be connected directly or indirectly through wired or wireless communication methods, which are not limited in the embodiments of this application.
- FIG. 2 is a schematic structural diagram of a server 200 provided by an embodiment of the present application.
- the server 200 shown in Figure 2 includes: at least one processor 210, a memory 240, and at least one network interface 220.
- the various components in server 200 are coupled together by bus system 230 .
- bus system 230 is used to implement connection communication between these components.
- the bus system 230 also includes a power bus, a control bus and a status signal bus.
- the various buses are labeled as bus system 230 in FIG. 2 .
- the processor 210 may be an integrated circuit chip with signal processing capabilities, such as a general-purpose processor, a digital signal processor (DSP, Digital Signal Processor), or other programmable logic devices, discrete gate or transistor logic devices, or discrete hardware Components, etc., wherein the general processor can be a microprocessor or any conventional processor, etc.
- DSP Digital Signal Processor
- Memory 240 may be removable, non-removable, or a combination thereof.
- Exemplary hardware devices include solid state memory, hard disk drives, optical disk drives, etc.
- Memory 240 optionally includes one or more storage devices physically located remotely from processor 210 .
- Memory 240 includes volatile memory or non-volatile memory, and may include both volatile and non-volatile memory.
- Non-volatile memory can be read-only memory (ROM, Read Only Memory), and volatile memory can be random access memory (RAM, Random Access Memory).
- RAM Random Access Memory
- the memory 240 described in the embodiments of this application is intended to include any suitable type of memory.
- the memory 240 is capable of storing data to support various operations, examples of which include programs, modules, and data structures, or subsets or supersets thereof, as exemplarily described below.
- the operating system 241 includes system programs used to process various basic system services and perform hardware-related tasks, such as the framework layer, core library layer, driver layer, etc., which are used to implement various basic services and process hardware-based tasks;
- Network communication module 242 for reaching other computing devices via one or more (wired or wireless) network interfaces 220.
- Exemplary network interfaces 220 include: Bluetooth, Wireless Compliance Certification (WiFi), and Universal Serial Bus ( USB, Universal Serial Bus), etc.;
- the device provided by the embodiment of the present application can be implemented in a software manner.
- Figure 2 shows a data processing device 243 of a virtual scene stored in the memory 240, which can be software in the form of programs, plug-ins, etc., including The following software modules: NPC data manager 2431, NPC data indexer 2432, NPC filter filter 2433, NPC instantiator 2434, NPC data pre-creator 2435 and NPC generation rule configuration pre-processor 2436, these modules are logical , so any combination or further split can be done according to the functions implemented.
- Figure 3 is a schematic flowchart of a virtual scene data processing method provided by an embodiment of the present application, which will be described in conjunction with the steps shown in Figure 3.
- step 101 the current position of the player character in the virtual scene is obtained, and the current query range including the current position is determined.
- the server receives the current position of the player character in the virtual scene sent by the client.
- the current query range that includes the current location can be determined in the following way: determine the field of view based on the first-person perspective or the third-person perspective of the current location (that is, the area of interest, the size of which is equal to the size of the player character's field of view) as including the current location.
- the current query range; or, an area of set size (such as a circle, rectangle, etc.) centered on the current position is determined as the current query range including the current position.
- the client can send position 1 to the server, so that the server determines that position 1 is included.
- the current query range for example, the server can determine a circle with a radius of 2 centered at position 1 as the current query range including position 1.
- the above radius can be a preset value.
- the unit of the radius can be pixels.
- an area with a radius of 10 represents a circle with position 1 as the center and a distance of 10 pixels from position 1.
- the unit of radius can be a map grid, and the virtual scene is divided into multiple map grids for display. For example, an area with a radius of 10 is represented by location 1 as the center, and the distance from location 1 is 10 map grids. Area.
- the server may also determine an area (such as a rectangle, a circle, etc.) that is larger than the field of view centered on the current position as the current query range that includes the current position. For example, the server may determine an area that is larger than the field of view of the player character. The rectangle is determined to include the current query range of the current position. In this way, the number of queries when the player character moves in the virtual scene can be effectively reduced, thereby saving communication resources and computing resources of the terminal device and the server.
- the current query range can also be personalized and calculated based on the movement characteristics of the player character. For example, in the past game process, for the game character with a larger movement range, the corresponding current query range is also larger. In this way, it can Meet the individual needs of different players.
- step 102 basic data corresponding to multiple non-player characters to be generated within the current query range is queried from the basic database according to the current query range.
- the basic data of each non-player character includes multiple attributes used to instantiate the non-player character, where the types of attributes may include: level, type, location, attack power, appearance, etc.
- the basic database can store basic data of all non-player characters in the virtual scene through a polynomial (such as a quadtree or octree) structure, where the polynomial structure includes: a top-level node representing Virtual scene; multiple intermediate nodes, each intermediate node represents a space in the virtual scene, which space includes indexes of multiple subordinate subspaces; multiple leaf nodes, each leaf node represents the intermediate node to which it belongs (represented by space), and the subspace includes basic data of non-player characters located in the subspace, then the server can implement the above step 102 in the following way: query the multi-fork number structure according to the current query range, and obtain the multi-fork At least one intermediate node in the tree structure covered by the current query range; query each leaf node included in each intermediate node covered, and use the basic data corresponding to the multiple non-player characters queried as the corresponding basic data within the current query range.
- the server can query the octree structure according to the current query range to obtain at least one intermediate point in the octree structure that is covered by the current query range. Node, assuming that intermediate node 1 and intermediate node 2 in the octree structure are covered by the current query range, then the server can query each leaf node included in intermediate node 1 and intermediate node 2 respectively.
- intermediate node 1 includes leaf node 1 (assuming that the basic data of non-player character 1 is stored) and leaf node 2 (assuming that the basic data of non-player character 2 is stored)
- intermediate node 2 includes leaf node 3 (assuming that the basic data of non-player character 3 is stored) and leaf node Node 4 (assuming that the basic data of non-player character 4 is stored)
- the multiple queried non-player characters i.e. non-player character 1, non-player character 2, non-player character 3 and non-player character 4
- the multiple queried non-player characters i.e. non-player character 1, non-player character 2, non-player character 3 and non-player character 4
- Basic data is determined as basic data corresponding to multiple non-player characters to be generated within the current query range.
- the basic data of the non-player character may be extracted from the generation rules of the non-player character (for example, the basic data of the non-player character 1 is extracted from the dynamic generation rule 1), where the generated Types of generation rules include static generation rules (that is, generation rules for non-player characters with fixed attributes, such as generation rules for guide NPCs in the game. The attributes of the guide NPC will not change during the game) and dynamic generation rules. (That is, the generation rules of non-player characters with dynamically changing attributes, such as the generation rules of combat NPCs in the game.
- the server can also perform the following processing: in response to the expiration of any dynamic generation rule (such as dynamic generation rule 1) in the rule database, delete any dynamic generation rule from the basic database
- any dynamic generation rule such as dynamic generation rule 1
- the server can delete the basic data of the non-player character 1 extracted from the dynamic generation rule 1 from the basic database
- the multi-tree At least part of the basic data in multiple (i.e. at least 2) subspaces represented by any intermediate node of the structure is deleted, and the data amount of the remaining basic data in the multiple subspaces is less than the data amount threshold (for example, 10 bits), the Multiple subspaces are combined into 1 leaf node.
- the basic data of the non-player character may be extracted from the generation rules of the non-player character (for example, taking the guide NPC as an example, the basic data of the guide NPC may be extracted from the static generation rule 1), where,
- the types of generation rules can include static generation rules and dynamic generation rules, and dynamic generation rules are stored in the rule database.
- the server can also perform the following processing: in response to the rules in the rule database Any rule execution condition included in any dynamic generation rule is satisfied, and the basic data corresponding to the non-player character is extracted from any dynamic generation rule; the extracted basic data of the non-player character is stored in the target leaf in the multi-tree structure.
- Node for example, leaf node 4 in the multi-tree structure
- the extracted basic data of the non-player character includes the position of the non-player character in the virtual scene, and the position of the non-player character belongs to the subspace of the target leaf node; respond
- the data volume of the target leaf node reaches (i.e., is greater than or equal to) the data volume threshold
- the target leaf node is converted into a new intermediate node, and the basic data stored in the target leaf node is transferred to the two new intermediate nodes subordinate to the new intermediate node.
- the above-mentioned data volume threshold can be a preset value.
- dynamic generation rule 1 Assume that dynamic generation rule 1 is "When the player character reaches level 10 and the player character reaches the grassland in the virtual scene, generate a character with an attack power of 100 at position A of the virtual scene. , NPC1 with level 10 and grass type", then when the server detects that any rule execution condition included in the dynamically generated rule 1 in the rule database is met (for example, it detects that a player character with level 10 arrives in the virtual scene grass), you can extract the basic data corresponding to NPC1 (such as NPC1's location, attack power, level, type, etc.) from the dynamic generation rule 1, and store the extracted basic data of NPC1 in a multi-tree (such as eight The target leaf node (for example, leaf node 4 of the octree structure) in the octree structure, where the position of NPC1 belongs to the subspace of leaf node 4; then when the server detects that the data volume of leaf node 4 is greater than the data volume threshold ( For example,
- step 103 weights of the plurality of non-player characters are determined, and the weights of the plurality of non-player characters are determined to sort the results in descending order.
- the server may determine the weights of the plurality of non-player characters by performing, for each of the plurality of non-player characters, the following: quantifying a state of at least one dimension of the non-player character. , corresponding to at least one quantized value; when the number of at least one quantized value is one, the quantized value is determined as the weight of the non-player character; when the number of at least one quantized value is multiple, multiple quantized values are processed
- the weighted summation process determines the obtained weighted summation result as the weight of the non-player character, where the type of state may include at least one of the following: the geographical location relationship between the non-player character and the player character, where the geographical location The relationship can include the distance between the non-player character and the player character (referring to the two-dimensional or three-dimensional straight line length spanned in the map of the virtual scene), orientation (for example, when the non-player character is located directly in front of the player character, the corresponding quantification The value can be 1.
- the corresponding quantized value can be 0
- orientation e.g.
- the corresponding quantified value can be 1; when the non-player character faces away from the player character, the corresponding quantified value can be 0
- the non-player character is in the same team as the player character, The social relationship between the non-player character and the player character, whether there is an antagonistic relationship between the non-player character and the player character, and whether the non-player character appears in the historical perspective of the player character.
- the server can determine the weight of the status of the non-player character in different dimensions in the following way
- the distance between the non-player character and the player character can be divided by the preset distance to determine the corresponding quantified value. For example, assuming that the distance between the non-player character and the player character is The distance is 7, and the distance is set to 10, then the quantized value corresponding to the distance is 0.7).
- the corresponding quantitative value can be 1; when a non-player character and a player character are not in the same team, the corresponding The quantized value can be 0).
- the corresponding quantified value may be 1; when a non-player character does not have a social relationship with a player character, the corresponding quantified value may be 0).
- the corresponding quantitative value can be 1; when there is no antagonistic relationship between a non-player character and a player character, the corresponding quantitative value
- the quantized value can be 0.
- the corresponding quantified value can be 1; when a non-player character does not appear in the player character's historical field of view , the corresponding quantization value can be 0,
- non-player character 1 For example, taking non-player character 1 as an example, assume that the distance between non-player character 1 and the player character is 8, non-player character 1 and the player character are in the same team, and non-player character 1 does not have a friend relationship with the player character. , there is an antagonistic relationship between non-player character 1 and player character (for example, the player character once attacked non-player character 1, resulting in a hostile relationship between non-player character 1 and player character), non-player character 1 is in the historical field of view of player character appeared in , then after the server quantifies the status of the above-mentioned multiple dimensions of the non-player character 1, it can obtain multiple quantified values, which are 0.8, 1, 0, 1, and 1 respectively. Then the server can quantify the multiple quantified values.
- the server can quantify the multiple quantified values.
- the weight values corresponding to different quantified values can also be different.
- the planner can configure the corresponding weight value respectively. This is not specifically limited in the embodiment of the present application.
- step 104 the first number of non-player characters starting from the first position in the descending order result are instantiated to obtain a first number of entity objects respectively corresponding to the first number of non-player characters.
- the first number is less than the total number of the plurality of non-player characters.
- the first number may be 80.
- the first number can be a fixed value (for example, 80), or it can change dynamically according to the type of area where the player character's current query range is located. That is, when the player character is in a different type of area, the first number The value of the quantity is also different. The following is a detailed description of the case where the first quantity is a dynamic value.
- the server may also perform the following processing: According to the type of the area where the current query range is located, use the method corresponding to the type.
- the adjustment method adjusts the weights of multiple non-player characters; at least one non-player character whose weight exceeds a weight threshold among the adjusted multiple non-player characters is determined as the first number of non-player characters.
- the current query range can be increased.
- the weights of multiple non-player characters can be multiplied by a preset coefficient greater than 1 (for example, 1.5), so that non-player characters that exceed the weight threshold (that is, need to be instantiated)
- the number of non-player characters increases (for example, assuming the weight threshold is 1, and assuming the weight of NPC1 is 0.8, that is, the weight of NPC1 before adjustment is less than the weight threshold, after adjusting the weight of NPC1, the weight of NPC1 becomes 1.2, greater than the weight threshold, NPC1 can be instantiated) to display more non-player characters in the client for players to interact with.
- the area where the current query range is located is a private area such as the player character's residence or training ground in the virtual scene
- multiple non-contexts within the current query range can be reduced.
- the weight of the player character for example, can be multiplied by the weight of multiple non-player characters with a coefficient less than 1 (for example, 0.7), so that the weight of the non-player character that exceeds the weight threshold (that is, the non-player character that needs to be instantiated)
- the number is reduced to display fewer non-player characters in the client, thereby further reducing resource overhead on servers and terminal devices while meeting player needs.
- the first number may also be dynamically determined based on the load of the server, and the server may also perform the following processing before instantiating the first number of non-player characters starting from the first in the descending order results.
- Determine the first quantity by performing one of the following processes: comparing the current load of the server with a set reference load; where the reference load is calibrated by a preset value; when the current load of the server is lower than the reference load, Increase the preset value by a predetermined amplitude or proportion, and determine the increased preset value as the first quantity; when the current load of the server is higher than the reference load, decrease the preset value by a predetermined amplitude or proportion, and Determine the reduced preset value as the first number; determine the interval in which the current load of the server is located among the multiple preset reference load intervals, and determine the number of instantiations corresponding to the interval as the first number, where , different reference load intervals correspond to different numbers of instantiations.
- Reference load, and then the load status of the server can be obtained through the interface provided by the server load detector; when the current load of the server is lower than the reference load, it means that the current pressure of the server is small, and the preset value can be increased by a predetermined amount (for example 5) or proportion (for example, 10%), and determine the increased preset value (i.e.
- the load of the server is fully balanced, and the use of It improves the server's capabilities without affecting the player's gaming experience.
- multiple reference load intervals can also be preset, where each reference load interval corresponds to an instantiation number.
- 5 reference load intervals can be preset, namely reference load interval 1 (0%-20%), Reference load interval 2 (20%-40%), reference load interval 3 (40%-60%), reference load interval 4 (60%-80%) and reference load interval 5 (80%-100%), where, The number of instantiations corresponding to reference load interval 1 is 100, the number of instantiations corresponding to reference load interval 2 is 80, the number of instantiations corresponding to reference load interval 3 is 60, the number of instantiations corresponding to reference load interval 4 is 40, and the reference load The number of instantiations corresponding to interval 5 is 20.
- the load of the server can be obtained through the interface provided by the server load detector. Assume that the current load of the server is 50%, that is, the current load of the server is in the reference load interval 3, then the reference The number of instantiations corresponding to load interval 3 (that is, 60) is determined as the first number.
- the first number may also be a fixed value (for example, 50), or a fixed proportion of the total number of multiple non-player characters (for example, 60%), which is not specifically limited in the embodiments of this application.
- the server can implement the above-mentioned step 104 in the following manner: allocate a storage area in the memory space; generate a first number of entity objects corresponding to non-player characters in the storage area, where: The body object contains variables that represent the properties of the non-player character.
- the server can Allocate a storage area in the memory space (the size of the storage area is positively related to the first number), and then the server can generate 10 entity objects corresponding to the non-player characters in the allocated storage area, and record these 10 in the memory space.
- Variables of attributes such as attack power, appearance, position, level, etc.
- filter and filter to obtain some NPCs ranked in the head range by weight, and Instantiating some of the filtered NPCs effectively controls the number of NPC entity objects, which can also greatly save the resource overhead of the client and server without affecting the player's gaming experience.
- step 105 a first number of entity objects are sent to the client controlling the player character, so that the client displays the first number of avatars corresponding to the non-player characters within the current query range.
- the client can render the virtual images corresponding to the first number of non-player characters based on the first number of entity objects. For example, the client can render based on the entity of NPC1 The appearance data included in the object renders the avatar of NPC1 for display within the current query range.
- the server may also perform the following processing: compare the current query range with the historical query range, where the historical query range is a query that includes historical locations. Range, the historical position is the position the player character was in the virtual scene before the current position (for example, assuming the player character moves from position 1 to position 2 in the virtual scene, then position 1 is the historical position and position 2 is the current position); In response to the fact that the current query range is completely different from the historical query range, the process of sending the first number of entity objects to the client controlling the player character is transferred to the client; in response to the intersection area between the current query range and the historical query range, the process of sending the first number of entity objects to the client controlling the player character is executed.
- the client sends entity objects corresponding to other non-player characters (i.e., non-player characters located outside the intersection area among the first number of non-player characters), so that the client continues to display entity objects corresponding to the non-player characters in the intersection area, and Entity objects corresponding to non-player characters in other areas (that is, areas other than the intersection area in the current query range); in response to the difference between the historical query range and the current query range, send a notification message to the client controlling the player character, The notification message is used to notify the client to delete the entity object corresponding to the non-player character in the difference area.
- entity objects corresponding to other non-player characters i.e., non-player characters located outside the intersection area among the first number of non-player characters
- Entity objects corresponding to non-player characters in other areas that is, areas other than the intersection area in the current query range
- Figure 4A is a schematic diagram of the principle of a data processing method for a virtual scene provided by an embodiment of the present application.
- a player character 401 is displayed in the virtual scene 400. It is assumed that the player character 401 comes from the virtual scene.
- the historical location 402 in 400 moves to the current location 403 (eg, location 2 in the virtual scene), and the historical query range 404 including the historical location 402 and the current query range 405 including the current location 403 Completely different (that is, the historical query range 404 and the current query range 405 do not overlap), then the server can send the first number of entity objects to the client controlling the player character 401, so that the client displays the first number within the current query range 405 The entity object corresponding to the non-player character. At the same time, the server can also send a notification message to the client controlling the player character 401, so that the client deletes the entity objects corresponding to the non-player characters in the historical query range 404. In this way, the memory resources of the terminal device can be effectively saved.
- FIG. 4B is a schematic diagram of the principle of a virtual scene data processing method provided by an embodiment of the present application.
- a player character 401 is displayed in the virtual scene 400. It is assumed that the player character 401 comes from the virtual scene.
- the historical location 402 in 400 moves to the current location 403, and there is an intersection area 406 (ie, the shaded area shown in Figure 4B) between the historical query range 404 including the historical location 402 and the current query range 405 including the current location 403, Then the server can only send the first number of non-player characters to the client controlling the player character 401.
- intersection area 406 ie, the shaded area shown in Figure 4B
- the server can also send a notification message to the client so that the client deletes the entity object corresponding to the non-player character in the difference area 408 (that is, the area obtained by subtracting the intersection area 406 from the historical query range 404). In this way, on the one hand, It can improve the display efficiency of entity objects corresponding to non-player characters. On the other hand, it can also save communication resources and computing resources of servers and terminal devices.
- the server may also perform the following processing: perform the following processing for each non-player character located in the difference area: in the basic database Add a new field to store the status data of the entity object corresponding to the non-player character (such as the current health value, magic value, skills possessed by the non-player character, etc.) into the new field.
- the basic database stores the basic data of all non-player characters in the virtual scene through a multi-tree structure.
- Leaf node 1 of the multi-tree structure stores the basic data and leaf nodes of non-player character 1.
- the basic data of non-player character 2 is stored in 2
- the basic data of non-player character 3 is stored in leaf node 3.
- the server can store the state data of the entity object corresponding to non-player character 1 in leaf node 1, store the state data of the entity object corresponding to non-player character 2 in leaf node 2, and store the state data of the entity object corresponding to non-player character 2 in leaf node 2.
- the state data of the entity object corresponding to 3 is stored in leaf node 3. In this way, when the entity object corresponding to the non-player character in the difference area needs to be displayed again, it can be created accurately based on the stored state data.
- Figure 5 is a schematic flowchart of a virtual scene data processing method provided by an embodiment of the present application. As shown in Figure 5, after step 105 shown in Figure 3 is performed, you can also perform Step 106 shown in Figure 5 will be described in conjunction with the steps shown in Figure 5 .
- step 106 in response to the player character leaving the current query range and returning to the current query range again, entity objects of other non-player characters are sent to the client.
- non-player characters are non-player characters other than the first number of non-player characters in the current query range.
- the server can first Send entity objects corresponding to the first number (for example, 10) of non-player characters (for example, the 10 non-player characters starting from the first in the descending sorting result) to the client that controls the player character, so that the client is in the area of interest 1 Display the entity objects of 10 non-player characters; then when the player character leaves the area of interest 1 and returns to the area of interest 1 again, the server can sort the remaining 10 non-player characters, for example, the bottom 10 in the descending order.
- the first number for example, 10
- the 10 non-player characters for example, the 10 non-player characters starting from the first in the descending sorting result
- the server can deliver the entity objects of the previously missing NPC to The client allows the client to display the remaining 10 entity objects of non-player characters in area of interest 1, thereby ensuring the integrity of the player's gaming experience.
- the basic data of each non-player character is stored in the basic database
- the generation rules corresponding to each non-player character are stored in the rules database
- the types of the generation rules are all dynamic generation rules
- dynamic generation rules are generation rules for non-player characters with dynamically changing attributes.
- Each dynamic generation rule includes multiple rule execution conditions, such as location conditions, weather conditions, etc., and when different rule execution conditions are met, from If the basic data extracted from the dynamic generation rules is different, when the player character is in the process of the virtual scene, the server can also perform the following processing: update the basic database in the following way: perform an expiration check on each dynamic generation rule stored in the rule database ;In response to the occurrence of an expired dynamically generated rule in the rules database (For example, dynamic generation rule 1), delete the basic data extracted from the expired dynamic generation rule in the basic database, and delete the expired dynamic generation rule from the rule database.
- update the basic database in the following way: perform an expiration check on each dynamic generation rule stored in the rule database ;In response to the occurrence of an expired dynamically generated rule in the rules database (For example, dynamic generation rule 1), delete the basic data extracted from the expired dynamic generation rule in the basic database, and delete the expired dynamic generation rule from the rule database.
- the server detects that the dynamic generation rule 1 in the rule database has expired, Then you can delete the basic data extracted from the dynamic generation rule 1 in the basic database, such as the basic data of NPC1, and the server can also delete the dynamic generation rule 1 from the rule database; in response to any dynamic generation rule in the rule database (such as dynamic When the rule execution conditions included in the generation rule 2) are met, new basic data is extracted from any dynamic generation rule, and the original basic data corresponding to any dynamic generation rule in the basic database is replaced with the new basic data, so as to Take dynamic generation rule 2 as an example.
- the basic data extracted from the dynamic generation rule 1 in the basic database such as the basic data of NPC1
- the server can also delete the dynamic generation rule 1 from the rule database
- any dynamic generation rule in the rule database such as dynamic When the rule execution conditions included in the generation rule 2 are met, new basic data is extracted from any dynamic generation rule, and the original basic data corresponding to any dynamic generation rule in the basic database is replaced with the new basic data, so as to Take dynamic generation rule 2 as an example.
- dynamic generation rule 2 is: "When the weather in the virtual scene is sunny, generate an NPC1 with an attack power of 20 and level 3 at position A of the virtual scene; when the weather changes from sunny to When it is rainy, NPC1's attack power will increase from 20 to 40.” Then when the server detects that the rule execution conditions included in dynamically generated rule 2 are met, for example, when it detects that the weather in the virtual scene changes from sunny to rainy,
- the new basic data of NPC1 can be extracted from the dynamic generation rule 2, for example, the attack power is 40, and the original basic data corresponding to the dynamic generation rule 2 (for example, the attack power is 20) in the basic database is replaced with the new basic data.
- each dynamic generation rule also includes unlocking conditions (for example, including level conditions, time conditions, etc.); then when the player character is in the virtual scene, the server can also perform the following processing: Update the rule database in the following manner: in response to any dynamically generated rule in the rule database meeting the rule deletion condition (for example, the non-player character corresponding to the dynamically generated rule is deleted), treating any dynamically generated rule as an expired dynamically generated rule, and Delete expired dynamically generated rules from the rule database, for example when the server detects that a certain type of NPC in the virtual scene has been deleted (for example, as the game version is updated, a certain type of NPC is removed from the game by the game developer) ), the server can regard the dynamic generation rules corresponding to this type of NPC as expired dynamic generation rules and delete the expired dynamic generation rules from the rule database; in response to the unlocking conditions included in any dynamic generation rules in the full database is met, for example, if the player character's level reaches the player threshold level 10, any dynamic generation rule will be
- generation rules that is, static generation rules, only store the NPC basis extracted from them, and the generation rules themselves are no longer stored, so they will no longer be detected; while the attack power, level and other attributes may change during the game process.
- the generation rules (i.e., dynamic generation rules) corresponding to NPCs can be classified according to the type of unlocking conditions (such as level, time, etc.), so that when a certain condition changes, only the generation that includes this type of condition needs to be checked. Rules are enough to achieve accurate detection.
- the dynamic generation rules stored in the full database can include level conditions.
- dynamic generation rule 1 can be "when the player character reaches level 5. , generate an NPC1 with an attack power of 30 and a level of 5 at position A of the virtual scene.” Then when the server detects that the player character's level reaches level 5, the dynamic generation rule 1 can be saved as a newly unlocked dynamic generation rule. into the rules database.
- the dynamic generation rules stored in the full database can include time conditions.
- the dynamic generation rule 2 can be "When the game time reaches 30 minutes, in "Generate an NPC2 with an attack power of 50 and level 6 at position B of the virtual scene.” Then when the server detects that the player's game time reaches 30 minutes, the dynamic generation rule 2 can be stored as a newly unlocked dynamic generation rule. in the database.
- the server before obtaining the current position of the player character in the virtual scene, can also perform the following processing: during the registration phase of the player character, initialize the rule database and the basic database in the following manner: obtain all data from the full database Generate rules; classify all generation rules into static generation rules and dynamic generation rules; extract basic data corresponding to non-player characters (such as guide NPC) with fixed attributes from the static generation rules, and extract non-player characters with dynamically changing attributes from the dynamic generation rules.
- Basic data corresponding to player characters (such as combat NPCs), And store the extracted basic data in the basic database.
- the basic data can be the basic data of non-player characters with fixed attributes and the basic data of non-player characters with dynamically changing attributes; all generation rules will be processed
- the dynamically generated rules obtained by classification are stored in the rule database.
- certain attributes (such as attack power, level, etc.) included in the basic data of non-player characters stored in the basic database can also be modified according to the level of the player character in the registration phase.
- level For example, assuming that the level of the player character is level 1 during the registration phase, the level of the non-player character included in the basic data stored in the basic database can be corrected to level 1.
- NPC1 As an example, assuming that the basis of NPC1 stored in the basic database The level of NPC1 in the data is level 3. Then the level of NPC1 can be corrected to level 1 according to the level of the player character, so that the level of the non-player character matches the level of the player character.
- the server can also perform the following processing: in the initialization phase, obtain all the generation rules configured by the planner for the virtual scene, where the initialization phase includes At least one of the following: During the startup phase of the server, the load of the server is lower than the load threshold; Determine the type of non-player characters that need to be generated in the virtual scene based on all generation rules; Extract each type of non-player characters from all generation rules Basic data of player characters, and store the extracted basic data of each type of non-player character and all generation rules into a full database. In this way, all NPC generation rules and NPC basics are pre-created when the server is started or idle. The data can be directly accessed by players when registering, and is created in real time without the need for registration, effectively reducing the registration time and the server's CPU peak.
- the virtual scene data processing method provided by the embodiment of the present application, after obtaining the basic data of multiple non-player characters to be generated within the current query range, based on the weights of the multiple non-player characters, from the multiple non-player characters to be generated within the current query range Filter out some non-player characters (for example, a first number of non-player characters) among the non-player characters, then instantiate the first number of filtered out non-player characters, and send the first number of entity objects. To the client, in this way, the number of entity objects corresponding to non-player characters displayed in the client is effectively controlled, thereby effectively saving resource overhead on the server and terminal devices without affecting the player's gaming experience.
- Embodiments of the present application provide a data processing method for virtual scenes, which can be applied to single-player open world games to achieve the generation and management of a large number of NPC basic data in the game, the creation and maintenance of NPC entity objects, and the visibility of player characters. Sexual management.
- the solution provided by the embodiment of this application divides the creation process of NPC entity objects into two stages: basic data generation (ie, refresh generation process) and entity object creation (ie, instantiation process).
- the NPC data manager generates and manages NPC basic data during the game according to the NPC generation rules.
- the NPC instantiator obtains all NPC basic data within the specified range (corresponding to the current query range mentioned above) from the NPC data manager, and then uses the NPC filter to filter out the highest priority data based on weight.
- a batch of NPC basic data creates corresponding NPC entity objects and sends them to the client for display.
- the solution provided by the embodiment of this application has a high degree of modularity and good abstraction, can well control memory usage, improves the processing efficiency of the entire process, and avoids other modules from wasting time on unnecessary NPC entity objects. And it does not affect the player's gaming experience at all.
- FIG. 6 is a schematic diagram of an application scenario of the virtual scene data processing method provided by the embodiment of the present application.
- the character controlled by the player in the game ie, the player character 600
- the player character 600 is flying in the air
- the player Three NPCs can be seen within the field of view 601 of character 600, namely NPC602, NPC603 and NPC604.
- the NPCs within the field of view of player character 600 continue to change, such as some old NPCs.
- the player character 600 can disappear from the current field of view (such as the field of view 605) as the player character moves.
- NPC 602 and NPC 603 shown in Figure 6 are NPCs that only exist in a specific area of the virtual scene. When the player When character 600 leaves this area, NPC602 and NPC603 will disappear from the current sight range of player character 600.
- NPC604 in the field of view 601 is a virtual flying vehicle used to carry the player character 600. It will move with the player character 600, so NPC604 will not follow the player. The character moves 600 degrees and disappears from the field of view. Of course, after the NPC 604 sends the player character 600 to the destination, it can be recovered into the player character's virtual backpack, thereby disappearing within the player character's field of vision.
- new NPCs will appear within the field of view of the player character 600 at the same time.
- the NPCs that appear within the field of view 605 have changed greatly, and the types have also changed.
- New NPC606, NPC607 and NPC608 appeared, and at least some NPCs in the field of view 601 (such as NPC602 and NPC603) not only disappeared in the field of view 605, but were optimized and deleted in both the client and the server.
- the server will notify the client which old NPCs have left the field of view and which new NPCs have appeared.
- the server will delete the old NPCs that have left the field of view and create new NPC entity objects that appear, and notify the client.
- the client receives the notification message. Afterwards, the old NPC entity object is deleted and the new NPC entity object is displayed.
- NPC data pre-creator The NPC data pre-creator, NPC data manager, NPC data indexer, NPC instantiator, and NPC filter filter involved in the embodiment of the present application are first described below.
- the gameplay of open world games is rich and diverse, resulting in very large NPC generation rules and NPC basic data, numbering in the thousands. If all NPC generation rules and basic NPC data are created in real time when players register accounts, it will consume a lot of CPU time and increase server pressure, thereby reducing the number of concurrent registrations and affecting game activity.
- the NPC data pre-creator can be used to pre-create the basic data of all NPCs in the game when the server is started or idle, and then access it when registering. This not only optimizes the registration process, but also makes full use of the server's capabilities.
- the generation of NPC basic data may be solely responsible for the NPC data manager, and all NPC generation rules configured by planners are also managed and implemented by it, where the NPC generation rules include attributes that will not change.
- the NPC data manager will effectively check the generation rules corresponding to NPCs and NPCs whose attributes may change.
- the NPC data manager will effectively check the generation rules corresponding to NPCs whose attributes may change.
- the NPC's basic data is extracted from the NPC generation rules. At this time, only the NPC's basic data is obtained, and the NPC entity object is not instantiated and created. Therefore, the process is short and fast, and the memory usage of the data is also very small.
- an optimized octree can be used to index the data. In this way, only the retrieval range needs to be specified, and the data can be retrieved in a short time. Get the NPC basic data set within the specified range (that is, the basic data of multiple NPCs that appear within the specified range).
- NPCs may be distributed in two-dimensional or three-dimensional space.
- embodiments of the present application may use an optimized octree structure to establish a set based on the location of the NPCs.
- Index to manage NPC basic data.
- the nodes between the root node and the leaf nodes i.e., the intermediate nodes
- FIG. 7 is a schematic diagram of an octree structure provided by an embodiment of the present application.
- the octree structure shown in FIG. 7 has three layers.
- the NPC data indexer is an encapsulation of the octree structure shown in FIG. 7 .
- the box nodes shown in Figure 7 (such as nodes 1-2, nodes 1-6, etc.) are intermediate nodes. Their main function is to manage subordinate subspaces and provide The function of spatial index does not store basic NPC data; the circular nodes (such as node A and node B) shown in Figure 7 are leaf nodes, which not only manage their own subspace, but also store information belonging to that subspace. NPC basic data.
- node 1-2 if the amount of data managed by a leaf node (such as node 1-2 shown in Figure 7) exceeds the data amount threshold, then node 1-2 will be split, and the subspace it manages will also be split into two, Two new leaf nodes are formed (such as node A and node B).
- the basic NPC data managed by node 1-2 will also be handed over to the newly created two leaf nodes for management. Node 1-2 itself will become a new intermediate node. In this way, by using the octree structure and specifying a specific range, the NPC data indexer can find all NPC basic data within the range in logarithmic time, improving the efficiency of NPC management.
- the creation of NPC entity objects may be solely responsible for the NPC instantiator.
- the NPC instantiator may use the range retrieval function provided by the NPC data indexer to quickly obtain the NPC basic data collection within the AOI range.
- the server only needs to create a part of the necessary NPCs without affecting the player's gaming experience at all. This can not only reduce the server's memory, but also Ability to reduce client memory and traffic. Therefore, the NPC instantiator can also introduce NPC filters, filter out a certain number of high-weight NPCs for instantiation processing according to the set filtering rules, and deliver the created NPC entity objects to the client.
- the generation rules in scene B may also be in effect. According to the solution provided by the relevant technology, the generation rules will be simultaneously Generate NPC entity objects in two scenes. However, in the solution provided by the embodiment of this application, since the player character is currently in scene A, only the NPC in scene A is instantiated, and the NPC in scene B is not instantiated. When the player character moves to scene B, the NPC in scene B is instantiated. In this way, through the two-stage process of NPC entity object creation, unnecessary NPC entity objects can be avoided from being generated and sent in advance.
- the NPC filter can filter multiple NPCs appearing within a specified range according to the configured filtering policy, and can load and unload the policy conveniently and flexibly. For example, you can use the distance between the NPC and the player character (the closer the NPC is to the player character, the greater the corresponding weight), the business importance of the NPC (the NPC with higher business importance, the greater the corresponding weight), and the past Whether it appears in the player character's field of view and other strategies are filtered. Compared with NPCs that do not appear in the player character's field of view, NPCs that have ever appeared in the player character's field of view have a greater corresponding weight.
- the NPC filter can effectively filter out the NPC collection that is most important to the player's current game process.
- the number of NPC entity objects for each player can be effectively controlled within a reasonable range, which will not only not affect the player's game experience, but also reduce the cost of the game.
- the memory, CPU consumption and traffic of servers and terminal devices are measured.
- embodiments of the present application can also learn the load of the server in time according to the interface provided by the server load detector, and adjust the maximum number of NPC instantiations in real time according to the load of the server. When the load is higher than the set reference load, the maximum number can be reduced; when the server load is lower than the reference load, the maximum number can be increased. In most cases, it is maintained at a preset value. In this way, It fully balances the load of the server and utilizes the server's capabilities without affecting the player's gaming experience.
- the virtual scene data processing method provided by the embodiment of this application is composed of the above-mentioned division of labor and cooperation of the five modules.
- Each module only provides necessary interfaces and shields implementation details, and can realize the generation of complex NPC entity objects like building blocks. Create and manage systems with high abstraction, reusability and maintainability. if its Other modules that need to reference related functions or need to introduce functions from other modules can also be easily accessed and have excellent scalability.
- the NPC data manager is responsible for the generation of all NPC basic data and is managed by the NPC data indexer.
- the NPC instantiator obtains the data within the specified range from the NPC data indexer.
- the NPC basic data collection is then filtered by the NPC filter to obtain a certain number of NPC basic data collections that are most important to the player.
- the NPC entity object is created, and finally distributed to the client, and can detect the load of the server. Situation adjusts the maximum number of instantiated NPCs in real time.
- Figure 8 is a schematic diagram of the NPC generation and management principles provided by the embodiment of the present application. As shown in Figure 8, the entire solution includes six layers, starting from the data flow direction, followed by NPC generation rule configuration preprocessing.
- the NPC data pre-creator is responsible for all NPC generation rules configured by the classification planner; the NPC data pre-creator is responsible for creating complete NPC basic data when the server is started or idle, which can be used when players register to avoid real-time creation during registration, which consumes a lot of time.
- NPC data indexer establishes a two-dimensional or three-dimensional index according to the location of NPC, so as to quickly find the NPC basic data collection within the specified range
- NPC data manager combines and manages the above three modules, and performs NPC generation and execution
- NPC The filter is responsible for filtering out a certain number of NPCs with high weights for the NPC collection within the specified range
- the NPC instantiator is responsible for creating entity objects corresponding to the high-weight NPCs filtered out by the NPC filter, and managing the entities.
- the AOI field of view data of the object is explained in detail below for each module.
- NPC generation rules there are many types of NPCs in open world games, and the types of gameplay are also very rich. In order to generate these NPCs and implement related gameplays, the number of NPC generation rules is also very large, which may reach thousands. In order to avoid checking whether each generation rule is triggered at all times, the solution provided by the embodiment of this application classifies all NPC generation rules. First of all, it is divided into two categories. One category is the generation rules corresponding to NPCs (such as wizard NPCs) whose basic data will not change once it is generated. This type of generation rules does not need to spend time to detect, nor does it need to be stored. In the player character's own data; the second category is NPC generation rules with trigger conditions, which need to be stored in the player character's own data by the NPC data manager, or the identification corresponding to the generation rule is stored to avoid repeated storage.
- NPCs such as wizard NPCs
- the NPC generation rule configuration preprocessor will further classify according to specific trigger conditions, such as level conditions.
- This type of generation rules only need to be detected when the level of the player character changes; Time conditions are classified again according to the time period of all NPC generation rules. Only when the current time is in a specific time period, the NPC generation rules including this time period will be detected.
- the size of the set of generation rules that need to be detected can be effectively reduced, and the NPC generation rules can be accurately implemented, effectively improving the efficiency of detection and reducing server resources. consumption.
- NPC generation rules When a player registers, there will be a large amount of data initialization, including NPC generation rules and a large amount of NPC basic data, which need to be created and stored in the player's own data. Since there may be thousands of NPC generation rules, there is also a lot of NPC basic data generated by them. These data are created in real time when players register, which is too inefficient and greatly affects player registration, resulting in low game registration concurrency.
- embodiments of the present application can use an NPC data pre-creator to pre-create the NPC basic data required for player registration, and directly retrieve it for the player to use when registering, instead of creating it in real time after registration.
- the first is to pre-create when the server starts.
- the second is to decide based on the load of the server. When the current load of the server is lower than the load threshold, pre-creation can be performed. Prepare for emergencies; the final guarantee is that the basic data pre-created during registration cannot cover all the basic data required during registration. If you need basic data, then create it in real time, giving priority to ensuring that players can be registered.
- the NPC data manager is the link part of the entire technical solution and is mainly responsible for the organization and management of the two parts of data.
- the first part is NPC generation rules, which regularly detect relevant generation rules. If the player character meets the trigger conditions (such as level conditions) in the generation rules, the corresponding generation rules will be added to the set of NPC generation rules owned by the player character (corresponding to the above (rule database), for example, taking the level condition as an example, when the player character's level reaches the level threshold, the generation rules under the corresponding level can be unlocked, and the unlocked generation rules (or the identification of the rules) can be added to the player character's existing NPC generation rules set.
- the trigger conditions such as level conditions
- the corresponding generation rules will be added to the set of NPC generation rules owned by the player character (corresponding to the above (rule database), for example, taking the level condition as an example, when the player character's level reaches the level threshold, the generation rules under the corresponding level can be unlocked, and the unlocked generation rules (or the
- the NPC data manager will also regularly check the generation rules and execute the corresponding logic based on the check results, including deleting expired rules and executing the hit NPC generation rules to generate NPC basic data.
- the second part is the NPC basic data.
- the NPC basic data can be organized into different data collections according to various business dimensions. With the relevant interfaces provided by the NPC data manager, it can be easily used by other components and modules. Access and use.
- the main function of the NPC filter is to select the top N NPCs from the NPC basic data collection for instantiation processing, create corresponding NPC entity objects and deliver them to the client.
- the amount of NPC basic data obtained through the NPC data indexer based on the player character's AOI is very large, which is likely to be higher than the amount that can be displayed in the client's field of view, and too much data puts great pressure on the server and the client. . Therefore, in order to select the NPC that needs to be presented most, it is necessary to filter multiple NPCs that exist within the specified range. For example, the multiple states of each NPC that exist within a specified range can be quantified, and then the multiple quantified values obtained can be weighted and summed to obtain the final weight of each NPC, and finally the multiple NPCs can be sorted in descending order based on the weight.
- NPC status selection There are many dimensions for NPC status selection, and the strategies are relatively complex, and are usually highly coupled with business needs, such as distance, team, friends, ashamed, and historical perspective.
- abstract packaging can also be performed. Each dimension only needs to implement its own weight calculation strategy, and there is no need to care about other aspects.
- NPC basic data After the data generation and screening of the above components, a specified amount of NPC basic data is finally obtained. These data are processed by the NPC instantiator to create the corresponding NPC entity object. Only the entity object has various functions required for the game, such as movement. , interaction, combat, explosion rewards, etc.
- the NPC instantiator will call the unified underlying interface to create entity objects, and initialize these entity objects based on the NPC basic data. After this process is completed, the AOI field of view data of the player character will be updated and notified to the client.
- the NPC instantiator will respond promptly and continuously obtain the current NPC basic data collection in the AOI from the NPC data manager through the interface.
- new NPC entity objects appearing in the current AOI will be created to seamlessly update and switch the player's field of view to ensure the player's gaming experience.
- the entity objects in the old field of view will be deleted to release Memory and traffic consumption; of course, the state data of the entity object will be saved to the corresponding NPC basic data before deletion so that it can be created accurately next time.
- the data flow in the technical solution provided by the embodiment of this application mainly includes four processes. Each process is connected in series using NPC generation rules and NPC basic data. This series process is completely implemented through the public interface and does not involve each data flow. implementation details. For each data flow, their data processing and processing are the main functions of each component mentioned above, and have good cohesion and encapsulation. Using serial interfaces between different components, all components can be assembled like an assembly line to achieve the required functions and have good scalability.
- the data processing method of the virtual scene provided by the embodiment of the present application can be divided into three stages, namely Initialization phase, registration phase and game phase.
- the initialization phase includes steps 901 to 905, the registration phase includes steps 906 to 909, and the game phase includes steps 910 to 915.
- the initialization phase will be described in detail below.
- step 901 it is determined whether the server is in the startup stage or the load is lower than the threshold. If not, step 902 is executed; if yes, step 903 is executed.
- step 902 the server determines not to perform pre-creation.
- step 903 the server obtains all NPC generation rules configured by the planner.
- step 904 the server extracts NPC basic data from all NPC generation rules.
- step 905 the server stores the NPC generation rules and basic data into the full database.
- the server has completed the initialization of NPC generation rules and basic data.
- the initialization phase is over and it will enter the registration phase.
- the registration phase is explained in detail below.
- step 906 the server obtains NPC generation rules and basic data from the full database.
- all NPC generation rules and NPC basic data extracted from the NPC generation rules can be obtained from the full database.
- step 907 the server corrects the NPC basic data.
- the server can modify certain fields of the NPC basic data according to the player's level when registering. For example, assuming that the player character's level when registering is level 1, the level included in the NPC basic data can also be modified. Corrected to level 1, so that the level of the NPC in the game matches the level of the player character, thereby improving the player's gaming experience.
- step 908 the server initializes other components.
- components in the game other than the five components mentioned above, including, for example, components responsible for transactions in the game, components responsible for battles between different game characters, etc.
- step 909 the server generates a rule database for the player character.
- the server can add the generation rules that satisfy the level conditions among all NPC generation rules to the set of NPC generation rules owned by the player according to the current level of the player character to obtain the rule database of the player character. For example, assuming that the current level of the player character is level 1, the generation rules for NPCs corresponding to level 1 in all NPC generation rules can be used as the generation rules that the player has currently unlocked, and added to the set of NPC generation rules that the player already owns.
- step 910 the server iteratively detects each NPC generation rule in the rule database.
- step 911 the server determines whether the relevant condition is triggered. If yes, step 912 is executed; if not, step 910 is executed.
- step 912 the server processes various types of conditions respectively.
- step 913 is executed; when the triggering rule execution condition is determined, step 914 is executed.
- step 913 the server first deletes the basic data extracted from the generation rule, and then deletes the generation rule.
- the server when the server detects that a certain NPC generation rule in the rule database has expired (that is, the rule deletion condition is triggered), the basic data extracted from the generation rule can be deleted from the basic database and deleted from the rule database. Delete the generation rule in .
- step 914 the server extracts NPC base data from the generation rules.
- step 915 the server updates the base database.
- the server when the server detects that the rule execution conditions included in a certain NPC generation rule in the rule database are met, it can extract new NPC basic data from the NPC generation rule, and transfer the NPC basic data stored in the basic database from The original NPC basic data extracted by this NPC generation rule is replaced with the new NPC basic data. In order to achieve the update of the basic database.
- FIG. 9B is a schematic flowchart of a virtual scene data processing method provided by an embodiment of the present application, which will be described in conjunction with the steps shown in FIG. 9B .
- step 916 the client sends the current AOI of the player character to the server.
- step 917 the server obtains the NPC basic data set within the specified range based on the AOI.
- the client can report the player character's current AOI in the open world to the server in real time, so that the server calls the NPC data indexer according to the player character's current AOI to obtain NPC basic data within a specified range (i.e., the current AOI). gather.
- step 918 the server filters out the top N NPCs with the highest weights through the NPC filter.
- step 919 the server uses the NPC instantiator to create entity objects corresponding to the filtered N NPCs.
- step 920 the server sends N NPC entity objects to the client.
- step 921 the client displays N entity objects in the current AOI.
- the client may display the newly appearing N entity objects in the player character's current AOI.
- step 922 the server sends a deletion notification message to the client.
- step 923 the client deletes the NPC entity object in the old view.
- the server can notify the server efficiently in real time.
- the client player character's field of view changes, and the player character's field of view range is seamlessly updated and switched to ensure the player's gaming experience.
- memory can be released and traffic consumption can be reduced.
- the player downloads the game and opens the game client to register he starts to initialize the new account data.
- the initialization process comes to the NPC basic data the relevant components will take out a pre-created NPC full data list from the pre-created NPC full data list.
- the processed NPC basic data is directly given to the player. Without the initialization work of the entire huge data, the registration process will be greatly improved.
- the server After the player registers to enter the game, the server will select a batch of NPCs with the highest weight based on the AOI of the character controlled by the player, and then instantiate the filtered NPCs to obtain the corresponding NPC entity objects and send them to the client for display. As the player character moves, the client will continuously report the player character's current position in the open world. When the server detects that the player character's position movement reaches a certain threshold, it will trigger an update of the player character's AOI. For example, the server can select a batch of NPCs with the highest weight in the current AOI for instantiation processing to obtain object set B, and perform difference calculation with the object set A in the old AOI.
- the entity objects in the intersection of set A and set B are NPC entity objects that exist before and after the field of view change are retained without any processing. Objects that are in set B but not in set A belong to the NPC entity objects that newly enter the field of view.
- the server will send relevant data to the client for display; objects that are not in set B but are not in the field of view are Some of the objects in set A are NPC entity objects in the old AOI.
- the server will notify the client to delete them. Through this process, the server can efficiently notify the client of changes in the player character's field of view in real time.
- Figure 10 is a schematic diagram of an application scenario of the virtual scene data processing method provided by the embodiment of the present application.
- the character controlled by the player ie, the player character 1000
- a batch of NPC entity objects with the highest weight are displayed in the field of view 1001, including seed monster 1002 and stone monster 1003.
- the field of view changes, and two NPC entities appear in the new field of view 1004.
- a new NPC entity object such as the man in black 1005 and the black box 1006 he guards.
- the virtual scene data processing method provided by the embodiments of the present application has the following beneficial effects:
- the solution provided by the embodiment of this application makes a very useful classification, and adopts corresponding processing strategies for different types of generation rules, such as generation rules that should exist and be effective at the beginning of player registration. In fact, there is no need to store it. You can directly extract the NPC basic data from the generation rule, and there is no need to iteratively detect it later. The generation rules that need to be detected will also be classified again according to different trigger conditions, so that Achieve accurate and efficient detection and processing, reduce the memory usage of the server, and improve the efficiency of detection and processing;
- NPC generation rules and NPC basic data belong to players and their important data.
- the embodiment of this application uses creating a certain number of NPC basic data when the server is idle.
- the data is temporarily stored for direct access during registration instead of real-time creation, which effectively utilizes the computing power of the server and prevents the server from being very idle sometimes and very busy sometimes, keeping its CPU consumption stable;
- the number of NPC entity objects in the player character's AOI adopts a strategy that is limited but does not affect the player's gaming experience.
- the purpose is to reduce the memory usage and CPU processing pressure of the server, and also to reduce traffic consumption and the processing burden of the client.
- the NPC instantiator obtains the NPC basic data set in the AOI from the NPC data manager, and then filters it through the NPC filter to obtain the basic data of the top N NPCs, and then instantiates it. Create the corresponding entity object;
- the virtual scene data processing device 243 provided by the embodiment of the present application is implemented as a software module.
- the virtual scene data processing device 243 stored in the memory 240 The software modules in may include: NPC data manager 2431, NPC data indexer 2432, NPC filter 2433, and NPC instantiator 2434.
- the NPC data manager 2431 is configured to obtain the current location of the player character in the virtual scene and determine the current query range including the current location; the NPC data indexer 2432 is configured to query the basic database according to the current query range and the current query range.
- NPC filter 2433 is configured to determine multiple the weights of the non-player characters, and determine the weights of the multiple non-player characters to the descending sorting result;
- the NPC instantiator 2434 is configured to instantiate the first number of non-player characters starting from the first position in the descending sorting result, Obtaining a first number of entity objects respectively corresponding to the first number of non-player characters, wherein the first number is less than the total number of the plurality of non-player characters; and for sending the first number of entity objects to the client controlling the player character. , so that the client displays the first number of avatars corresponding
- the NPC filter 2433 is also configured to perform the following processing for each non-player character: perform quantification processing on the state of at least one dimension of the non-player character, corresponding to at least one quantified value; when at least one quantization When the number of values is one, the quantified value is determined as the weight of the non-player character; when the number of at least one quantified value is multiple, the multiple quantified values are weighted and summed, and the weighted summation result is determined as The weight of non-player characters.
- the NPC filter 2433 is also configured to adjust the weights of multiple non-player characters in an adjustment manner corresponding to the type according to the type of the area where the current query range is located; At least one non-player character among the player characters whose weight exceeds the weight threshold is determined as the first number of non-player characters.
- the first quantity is dynamically determined based on the load of the server; the NPC instantiator 2434 is further configured to determine the first quantity by performing one of the following processes: comparing the current load of the server with a set reference load. Comparison, wherein the reference load is calibrated by a preset value; when the load is lower than the reference load, the preset value is increased by a predetermined amplitude or proportion, and the increased preset value is determined as the first quantity; when When the load is higher than the reference load, Reduce the preset value by a predetermined amplitude or proportion, and determine the reduced preset value as the first quantity; determine the interval in which the server's current load is located among the multiple preset reference load intervals, and set the interval The corresponding number of instantiations is determined as the first number, where different reference load intervals correspond to different numbers of instantiations.
- the basic database stores basic data of all non-player characters in the virtual scene through a multi-tree structure.
- the multi-tree structure includes: a top-level node, representing the virtual scene; multiple intermediate nodes, each intermediate node represents A space in the virtual scene. The space includes the indexes of multiple subordinate subspaces; multiple leaf nodes. Each leaf node represents a subspace in the intermediate node to which it belongs. The subspace includes the indexes of non-player characters located in the subspace.
- Basic data; NPC filter 2433 is also configured to query the multi-fork structure according to the current query range, and obtain at least one intermediate node in the multi-fork structure that is covered by the current query range; query every intermediate node included in each covered intermediate node. Each leaf node uses the basic data corresponding to the queried multiple non-player characters as the basic data corresponding to the multiple non-player characters to be generated within the current query range.
- the basic data of the non-player character is extracted from the generation rules of the non-player character.
- the types of generation rules include static generation rules and dynamic generation rules, and the dynamic generation rules are stored in the rules database; NPC data manager 2431, further configured to delete base data extracted from any dynamically generated rule from the base database in response to expiration of any dynamically generated rule in the rules database; in response to at least a portion of the bases in the plurality of subspaces represented by any intermediate node The data is deleted, and the data volume of the remaining basic data in multiple subspaces is less than the data volume threshold, and the multiple subspaces are merged into one leaf node.
- the basic data of non-player characters is extracted from the generation rules of non-player characters.
- the types of generation rules include static generation rules and dynamic generation rules, and the dynamic generation rules are stored in the rules database; NPC data management
- the processor 2431 is also configured to extract the basic data corresponding to the non-player character from any dynamically generated rule in response to any rule execution condition included in any dynamically generated rule in the rule database being satisfied; the extracted basic data of the non-player character
- the data is stored in the target leaf node in the multi-fork structure, where the extracted basic data of the non-player character includes the position of the non-player character, and the position of the non-player character belongs to the subspace of the target leaf node; in response to the target leaf node When the data volume reaches the data volume threshold, the target leaf node is converted into a new intermediate node, and the basic data stored in the target leaf node is transferred to two new leaf nodes subordinate to the new intermediate node.
- the NPC instantiator 2434 is also configured to compare the current query range and the historical query range, where the historical query range is the query range including the historical location, and the historical location is the player character in the virtual scene before the current location. location; and configured to respond to the fact that the current query range is completely different from the historical query range, and transfer to the process of sending the first number of entity objects to the client controlling the player character; the NPC instantiator 2434 is also configured to respond If there is an intersection area between the current query range and the historical query range, send entity objects corresponding to other non-player characters to the client controlling the player character.
- the other non-player characters are non-player characters among the first number of non-player characters that are outside the intersection area.
- the other areas are areas in the current query range except the intersection area; and configured to respond
- a notification message is sent to the client controlling the player character, where the notification message is used to notify the client to delete the entity object corresponding to the non-player character in the difference area.
- the NPC data manager 2431 is also configured to perform the following processing for each non-player character located in the difference area: add a new field in the basic database, and add the status of the entity object corresponding to the non-player character. Data is stored in new fields.
- the NPC instantiator 2434 is further configured to send entity objects of other non-player characters to the client in response to the player character leaving the current query range and returning to the current query range again, where the other non-player characters are currently Query the non-player characters except the first number of non-player characters in the query range.
- the NPC data manager 2431 is further configured to convert the first-person view based on the current location A field of view from an angular or third-person perspective, determined to include the current query range of the current location; alternatively, configured to include a geometric area of set size centered on the current location, determined to include the current query range of the current location.
- the basic data of each non-player character is stored in the basic database; the generation rules corresponding to each non-player character are stored in the rules database, and the types of the generation rules are all dynamic generation rules.
- Dynamic Generation rules are rules for generating non-player characters with dynamically changing attributes. Each dynamic generation rule includes multiple rule execution conditions, and when different rule execution conditions are met, the basic data extracted from the dynamic generation rules is different; NPC The data manager 2431 is further configured to update the base database by: performing an expiration check on each dynamically generated rule stored in the rules database; and in response to the occurrence of an expired dynamically generated rule in the rules database, deleting the expired dynamically generated rule from the base database.
- each dynamically generated rule also includes an unlocking condition; the NPC data manager 2431 is also configured to update the rule database in the following manner: in response to any dynamically generated rule in the rule database meeting the rule deletion condition, any dynamically generated rule in the rule database meets the rule deletion condition.
- a dynamic generation rule is used as an expired dynamic generation rule, and the expired dynamic generation rule is deleted from the rule database; in response to the unlocking condition included in any dynamic generation rule in the full database being met, any dynamic generation rule is stored in the rule in the database.
- the virtual scene data processing device 243 also includes an NPC data pre-creator 2435, configured to initialize the rule database and the basic database in the registration phase of the player character in the following manner: obtain all generation rules from the full database; All generation rules are classified into static generation rules and dynamic generation rules. Among them, static generation rules are the generation rules for non-player characters with fixed attributes, and dynamic generation rules are the generation rules for non-player characters with dynamically changing attributes. From static generation The rules extract basic data corresponding to non-player characters with fixed attributes, extract basic data corresponding to non-player characters with dynamically changing attributes from the dynamic generation rules, and store the extracted basic data in the basic database; save the dynamic generation rules into the rules database.
- NPC data pre-creator 2435 configured to initialize the rule database and the basic database in the registration phase of the player character in the following manner: obtain all generation rules from the full database; All generation rules are classified into static generation rules and dynamic generation rules. Among them, static generation rules are the generation rules for non-player characters with fixed attributes, and dynamic generation rules are the generation rules
- the virtual scene data processing device 243 also includes an NPC generation rule configuration preprocessor 2436, configured to initialize the full database in the following manner: in the initialization phase, obtain all generation rules configured for the virtual scene, where, The initialization phase includes at least one of the following: a startup phase of the server, a phase when the load of the server is lower than the load threshold; determining the types of non-player characters that need to be generated in the virtual scene based on all generation rules; extracting each type from all generation rules Basic data of non-player characters, and store the extracted basic data and all generation rules into the full database.
- the initialization phase includes at least one of the following: a startup phase of the server, a phase when the load of the server is lower than the load threshold; determining the types of non-player characters that need to be generated in the virtual scene based on all generation rules; extracting each type from all generation rules Basic data of non-player characters, and store the extracted basic data and all generation rules into the full database.
- the NPC instantiator 2434 is also configured to allocate a storage area in the memory space; generate a first number of entity objects corresponding to the non-player characters in the storage area, where the entity objects include representatives representing the non-player characters. attribute variable.
- Embodiments of the present application provide a computer program product.
- the computer program product includes a computer program or computer-executable instructions.
- the computer program or computer-executable instructions are stored in a computer-readable storage medium.
- the processor of the computer device reads the computer-executable instructions from the computer-readable storage medium, and the processor executes the computer-executable instructions, so that the computer device executes the virtual scene data processing method described in the embodiments of the present application.
- Embodiments of the present application provide a computer-readable storage medium storing computer-executable instructions.
- the computer-executable instructions are stored therein.
- the computer-executable instructions When executed by a processor, they will cause the processor to execute the steps provided by the embodiments of the present application.
- the data processing method of the virtual scene is, for example, the data processing method of the virtual scene shown in FIG. 3 or FIG. 5 .
- the computer-readable storage medium may be a memory such as FRAM, ROM, PROM, EPROM, EEPROM, flash memory, magnetic surface memory, optical disk, or CD-ROM; it may also include one or any combination of the above memories.
- Various equipment may be a memory such as FRAM, ROM, PROM, EPROM, EEPROM, flash memory, magnetic surface memory, optical disk, or CD-ROM; it may also include one or any combination of the above memories.
- Various equipment may be a memory such as FRAM, ROM, PROM, EPROM, EEPROM, flash memory, magnetic surface memory, optical disk, or CD-ROM; it may also include one or any combination of the above memories.
- executable instructions may take the form of a program, software, software module, script, or code, written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages, and their May be deployed in any form, including deployed as a stand-alone program or deployed as a module, component, subroutine, or other unit suitable for use in a computing environment.
- executable instructions may be deployed to execute on one electronic device, or on multiple electronic devices located at one location, or on multiple electronic devices distributed across multiple locations and interconnected by a communications network. execute on.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供了一种虚拟场景的数据处理方法、装置、电子设备及存储介质;方法包括:获取玩家角色在虚拟场景中的当前位置,确定包括当前位置的当前查询范围;根据所述当前查询范围从基础数据库查询与所述当前查询范围内待生成的多个非玩家角色分别对应的基础数据;确定多个非玩家角色的权重,并确定所述多个非玩家角色的权重到降序排序结果;将降序排序结果中从首位开始的第一数量的非玩家角色进行实例化处理,得到与第一数量的非玩家角色分别对应的第一数量的实体对象;向控制玩家角色的客户端发送第一数量的实体对象,以使客户端在当前查询范围内显示第一数量的非玩家角色对应的虚拟形象。
Description
相关申请的交叉引用
本申请基于申请号为2022110938022、申请日为2022年9月8日的中国专利申请提出,并要求该中国专利申请的优先权,该中国专利申请的全部内容在此引入本申请作为参考。
本申请涉及互联网技术领域,尤其涉及一种虚拟场景的数据处理方法、装置、电子设备及存储介质。
相关技术中,游戏中的所有NPC基础数据都会毫无保留地全部创建和管理,例如在得到某个NPC的基础数据后会马上实例化该NPC,然而,玩家角色在游戏进程中永远只会局限在游戏地图中很小的一个范围,因此绝大部分NPC是玩家角色目前不会有任何交互的,所以如果针对每个NPC基础数据都去实时实例化创建对应的实体对象,必然会导致服务器和终端设备非常高的资源开销。
发明内容
本申请实施例提供一种虚拟场景的数据处理方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够有效节约服务器和终端设备的资源开销。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种虚拟场景的数据处理方法,由电子设备执行,包括:
获取玩家角色在虚拟场景中的当前位置,确定包括所述当前位置的当前查询范围;
根据所述当前查询范围从基础数据库查询与所述当前查询范围内待生成的多个非玩家角色分别对应的基础数据,其中,每个所述非玩家角色的基础数据包括用于对所述非玩家角色进行实例化处理的多个属性;
确定所述多个非玩家角色的权重,并确定所述多个非玩家角色的权重到降序排序结果;
将所述降序排序结果中从首位开始的第一数量的非玩家角色进行所述实例化处理,得到与所述第一数量的非玩家角色分别对应的第一数量的实体对象,其中,所述第一数量小于所述多个非玩家角色的总数;
向控制所述玩家角色的客户端发送所述第一数量的实体对象,以使所述客户端在所述当前查询范围内显示所述第一数量的非玩家角色对应的虚拟形象。
本申请实施例提供一种虚拟场景的数据处理装置,包括:
非玩家角色NPC数据管理器,配置为获取玩家角色在虚拟场景中的当前位置,并确定包括所述当前位置的当前查询范围;
NPC数据索引器,配置为根据所述当前查询范围从基础数据库查询与所述当前查询范围内待生成的多个非玩家角色分别对应的基础数据,其中,每个所述非玩家角色的基
础数据包括用于对所述非玩家角色进行实例化处理的多个属性;
NPC过滤筛选器,配置为确定所述多个非玩家角色的权重,并确定所述多个非玩家角色的权重到降序排序结果;
NPC实例化器,配置为将所述降序排序结果中从首位开始的第一数量的非玩家角色进行所述实例化处理,得到与所述第一数量的非玩家角色分别对应的第一数量的实体对象,其中,所述第一数量小于所述多个非玩家角色的总数;
所述NPC实例化器,还配置为向控制所述玩家角色的客户端发送所述第一数量的实体对象,以使所述客户端在所述当前查询范围内显示所述第一数量的非玩家角色对应的虚拟形象。
本申请实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的虚拟场景的数据处理方法。
本申请实施例提供一种计算机可读存储介质,存储有计算机可执行指令,用于被处理器执行时,实现本申请实施例提供的虚拟场景的数据处理方法。
本申请实施例提供一种计算机程序产品,包括计算机程序或计算机可执行指令,用于被处理器执行时,实现本申请实施例提供的虚拟场景的数据处理方法。
本申请实施例具有以下有益效果:
根据多个非玩家角色的权重,从当前查询范围内待生成的多个非玩家角色中筛选出部分非玩家角色,也即第一数量的非玩家角色,随后对筛选出的第一数量的非玩家角色进行实例化处理,并将第一数量的实体对象发送至客户端,由于第一数量的非玩家角色是按照权重降序筛选的,保证了当前查询范围内重要的非玩家角色不会被遗漏,基于当前查询范围内的非玩家角色的数据能够与玩家进行必要的交互,保证了玩家游戏体验的完整性,同时由于过滤掉了一部分不重要的非玩家角色,在服务器中不需要维护全部非玩家角色的数据,一方面,能够节约服务器和终端设备的资源开销,另一方面,由于终端仅需要加载部分非玩家角色的数据,从而也加快了虚拟场景的加载速度。
图1是本申请实施例提供的虚拟场景的数据处理***100的架构示意图;
图2是本申请实施例提供的服务器200的结构示意图;
图3是本申请实施例提供的虚拟场景的数据处理方法的流程示意图;
图4A是本申请实施例提供的虚拟场景的数据处理方法的原理示意图;
图4B是本申请实施例提供的虚拟场景的数据处理方法的原理示意图;
图5是本申请实施例提供的虚拟场景的数据处理方法的流程示意图;
图6是本申请实施例提供的虚拟场景的数据处理方法的应用场景示意图;
图7是本申请实施例提供的八叉树结构示意图;
图8是本申请实施例提供的NPC生成和管理原理示意图;
图9A和图9B是本申请实施例提供的虚拟场景的数据处理方法的流程示意图;
图10是本申请实施例提供的虚拟场景的数据处理方法的应用场景示意图。
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一
步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
可以理解的是,在本申请实施例中,涉及到用户信息等相关的数据(例如玩家角色的数据),当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
在以下的描述中,所涉及的术语“第一\第二\...”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\...”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)响应于:用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
2)虚拟场景:是应用程序在终端设备上运行时显示(或提供)的场景。该虚拟场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的虚拟环境,还可以是纯虚构的虚拟环境。虚拟场景可以是二维虚拟场景、2.5维虚拟场景或者三维虚拟场景中的任意一种,本申请实施例对虚拟场景的维度不加以限定。例如,虚拟场景可以包括天空、陆地、海洋等,该陆地可以包括沙漠、城市等环境元素,玩家可以控制玩家角色在该虚拟场景中进行移动。
3)玩家角色(PCC,Player-Controlled Character):指游戏中由玩家操控的角色,玩家角色可以是虚拟场景中的一个虚拟的用于代表玩家的虚拟形象,例如虚拟人物、虚拟动物、动漫人物等,玩家角色在虚拟场景中具有自身的形状和体积,占据虚拟场景中的一部分空间。
4)非玩家角色(NPC,Non-Player Character):指游戏中不受玩家控制的角色,NPC一般由计算机的人工智能控制,是拥有自身行为模式的角色。可以分为剧情NPC、战斗NPC和服务NPC等,有时也会有兼具多种功能的NPC,其中,剧情NPC及服务NPC通常不属于可攻击对象,或者属于可攻击对象但不主动攻击。此外,某些NPC会掉落道具,可以为玩家提供一些游戏信息,或触发剧情。
5)生成规则:即NPC生成规则,是在游戏(例如开放世界游戏)中NPC的出现需要满足的条件(包括触发条件和规则执行条件)、以及满足条件时需要生成的NPC类型。其中,触发条件可以包括时间、玩家角色的等级等属性、规则执行条件包括位置、天气等属性,提炼抽象这些属性形成的配置化数据就是NPC生成规则。NPC生成规则的类型可以包括静态生成规则和动态生成规则,其中,静态生成规则是具有固定属性的NPC(例如向导NPC)的生成规则,动态生成规则是具有动态变化属性的NPC(例如战斗NPC)的生成规则,例如战斗NPC的攻击力会随着玩家角色的等级的提升而增加。
6)基础数据:即NPC基础数据,是从NPC生成规则提取得到的NPC的多维度的属性,例如包括种类、等级、位置、攻击力和外观。根据这些属性可以创建出可供游戏
的NPC实体对象。
7)实例化处理:指由服务器在内存空间中分配一段存储区域,接着在存储区域中生成一定数量的非玩家角色对应的实体对象。其中,存储区域的容量与需要进行实例化处理的非玩家角色的数量正相关,实体对象中的各种属性的变量存储在存储区域中。
8)感兴趣区域(AOI,Area Of Interest):与现实世界中人类能看到多远的视觉范围类似,指玩家角色在虚拟场景中实时看到的区域,AOI会随着玩家角色的移动而发生变化。在广义上,AOI***支持任何游戏世界中的对象个体对一定半径范围内发生的事件进行处理,但绝大多数情况下,只关心玩家角色的视野半径范围内发生的对象离开或者进入事件。
9)开放世界(Open World)游戏:也称为漫游式游戏(Free Roam),游戏关卡设计的一种,在其中玩家可以自由地在一个虚拟世界中漫游,并可自由选择完成游戏任务的时间点和方式。
10)四叉树(Quad Tree):又称四元树,是一种树状数据结构,可以用来在数据库中放置和定位文件(称作记录或键),其可以通过不停的把想要查找的记录分成4部分来进行匹配查找,直到仅剩下一条记录为止。
11)八叉树(Octree):一种用于描述空间的树状数据结构。八叉树的每个中间节点表示一个正方体的体积元素,每个中间节点有8个叶子节点,将8个叶子节点所表示的体积元素加在一起就等于中间节点的体积。若不为空树的话,树中任一中间节点的叶子节点的数量恰好只会有8个或者0个,也就是说叶子节点的数量不会有0与8以外的数目。
12)实体对象:指包括非玩家角色的多个不同类型的属性数据的数据集合,例如实体对象可以包括非玩家角色的外观、攻击力、等级和类型等属性数据。
相关技术中,在玩家角色注册时,服务器会实时创建所有的NPC生成规则,并将所创建的NPC生成规则存储在玩家角色身上(即与玩家角色进行绑定),完成玩家角色整个注册流程以及玩家角色所有组件初始化之后,NPC数据管理器开始工作,迭代检测玩家角色所有的NPC生成规则,如果触发了NPC生成规则,则会实时计算应该生成的NPC基础数据,接着马上实例化NPC实体对象保存到服务器内存空间,并且广播下发给客户端。
可以看出,相关技术提供的方案中,不管是玩家角色当前游戏进程需要的NPC,还是离玩家控制的角色(即玩家角色)很远的NPC,或者跟玩家角色也许永远不会有交互的NPC,都会得到创建和管理。随着玩家角色在游戏地图中的移动和状态变化,AOI相关组件会实时根据AOI范围得到其内的所有NPC,和旧AOI范围内的NPC计算差集,新出现和离开视野的NPC均会实时广播下发给客户端,但是服务器还是存储着这些NPC的实体对象。在这种方案中,NPC基础数据一生成就会实例化处理,不存在任何实例化优化策略。
然而,申请人发现:相关技术提供的方案在玩家的专属NPC数量较少,或者所有玩家共享绝大部分NPC的游戏业务场景中,具有很好的应用性,简单而且效率也不错。但是,在具有大量(例如数以千计)玩家专属NPC的游戏中(例如开放世界游戏),如果玩家角色的每个NPC基础数据都毫无保留地全部创建和管理,则会极大增加服务器和客户端的内存和处理压力,甚至很有可能对玩家的游戏体验造成很大影响。也就是说,相关技术提供的方案存在以下缺点:
缺点一:注册时实时创建大量NPC生成规则和NPC基础数据,一方面会导致注册流程时间比较长,从而降低了注册并发数;另一方面也会导致服务器CPU处理峰值比较高,不稳定;
缺点二:开放世界游戏中玩法丰富多彩,因此策划人员配置的NPC生成规则的数量非常多,可能有数千条,然而,很多NPC生成规则只在玩家创建账号的伊始才起作用,此后不会发生任何变更,此外,各个NPC生成规则的触发条件也各不相同,因此,实时迭代检测玩家所有的NPC生成规则十分耗时耗力,且没有必要;
缺点三:生成NPC基础数据后马上就实例化该NPC,然而,玩家角色在游戏进程中永远只会局限在开放世界中很小的一个范围,因此开放世界中的绝大多数NPC,玩家角色是目前不会有任何交互的,所以每个NPC基础数据如果都去实例化创建对应的实体对象,导致非常浪费服务器和客户端的内存空间和CPU处理能力。
鉴于此,本申请实施例提供一种虚拟场景的数据处理方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够节约服务器和终端设备的资源开销。下面说明本申请实施例提供的电子设备的示例性应用,本申请实施例提供的电子设备可以实施为服务器,或者由终端设备和服务器协同实施。
下面以由终端设备和服务器协同实施本申请实施例提供的虚拟场景的数据处理方法为例进行说明。
参见图1,图1是本申请实施例提供的虚拟场景的数据处理***100的架构示意图,为实现支撑一个有效节约服务器和终端设备的资源开销的应用,如图1所示,虚拟场景的数据处理***100包括:服务器200、网络300和终端设备400,其中,终端设备400通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合。
在一些实施例中,终端设备400上运行有客户端410,客户端410可以是各种类型的游戏应用,例如开放世界游戏应用,射击类游戏应用,策略类游戏应用等,在客户端410的人机交互界面中显示有虚拟场景,客户端410可以通过网络300将玩家角色在虚拟场景中的当前位置发送至服务器200。服务器200在接收到客户端410发送的玩家角色在虚拟场景中的当前位置之后,首先确定包括当前位置的当前查询范围,并根据当前查询范围查询基础数据库,得到与当前查询范围内待生成的多个非玩家角色(例如100个NPC)分别对应的基础数据;接着服务器200确定多个非玩家角色的权重,并根据多个非玩家角色的权重进行降序排序,得到降序排序结果;随后服务器200将降序排序结果中从首位开始的第一数量(例如50)的非玩家角色进行实例化处理,得到与第一数量的非玩家角色分别对应的第一数量的实体对象(例如从100个NPC中过滤筛选出权重排序靠前的50个NPC进行实例化处理);最后,服务器200向终端设备400发送第一数量的实体对象,以使客户端410基于服务器200发送的第一数量的实体对象渲染出第一数量的非玩家角色分别对应的虚拟形象,从而在当前查询范围内显示第一数量的非玩家角色对应的虚拟形象,供玩家进行互动,如此,通过有效控制进行实例化处理的非玩家角色的数量,在不影响玩家的游戏体验的前提下,可以有效节约服务器和终端设备的资源开销。
在另一些实施例中,本申请实施例还可以借助于云技术(Cloud Technology)实现,云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、以及应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络***的后台服务需要大量的计算、存储资源。
示例的,图1中的服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(CDN,
Content Delivery Network)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备400可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载终端等,但并不局限于此。终端设备400以及服务器200可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
下面继续对图1中示出的服务器200的结构进行说明。参见图2,图2是本申请实施例提供的服务器200的结构示意图,图2所示的服务器200包括:至少一个处理器210、存储器240、至少一个网络接口220。服务器200中的各个组件通过总线***230耦合在一起。可理解,总线***230用于实现这些组件之间的连接通信。总线***230除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线***230。
处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
存储器240可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器240可选地包括在物理位置上远离处理器210的一个或多个存储设备。
存储器240包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器240旨在包括任意适合类型的存储器。
在一些实施例中,存储器240能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作***241,包括用于处理各种基本***服务和执行硬件相关任务的***程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块242,用于经由一个或多个(有线或无线)网络接口220到达其他计算设备,示例性的网络接口220包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图2示出了存储在存储器240中的虚拟场景的数据处理装置243,其可以是程序和插件等形式的软件,包括以下软件模块:NPC数据管理器2431、NPC数据索引器2432、NPC过滤筛选器2433、NPC实例化器2434、NPC数据预创建器2435和NPC生成规则配置预处理器2436,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。需要指出的是,在图2中为了方便表达,一次性示出了上述所有模块,但是不应视为在虚拟场景的数据处理装置243排除了可以只包括NPC数据管理器2431、NPC数据索引器2432、NPC过滤筛选器2433和NPC实例化器2434的实施,将在下文中说明各个模块的功能。
下面将结合本申请实施例提供的服务器的示例性应用和实施,对本申请实施例提供的虚拟场景的数据处理方法进行具体说明。
参见图3,图3是本申请实施例提供的虚拟场景的数据处理方法的流程示意图,将结合图3示出的步骤进行说明。
在步骤101中,获取玩家角色在虚拟场景中的当前位置,确定包括当前位置的当前查询范围。
在一些实施例中,服务器在接收到客户端发送的玩家角色在虚拟场景中的当前位置
之后,可以通过以下方式确定包括当前位置的当前查询范围:将基于当前位置的第一人称视角或第三人称视角的视野(即感兴趣区域,其大小等于玩家角色的视野大小),确定为包括当前位置的当前查询范围;或者,将以当前位置为中心的设定尺寸的区域(例如圆形、矩形等),确定为包括当前位置的当前查询范围。
示例的,以玩家角色为游戏角色A为例,客户端在获取到游戏角色A在虚拟场景中的当前位置(例如位置1)之后,可以将位置1发送至服务器,以使服务器确定包括位置1的当前查询范围,例如服务器可以将以位置1为中心的半径为2的圆形,确定为包括位置1的当前查询范围。
上述的半径可以预先设定的数值。
半径的单位可以是像素点,例如半径为10的区域,表征以位置1为中心,与位置1的距离为10个像素点的圆形。
半径的单位可以是地图网格,虚拟场景是被划分为多个地图网格的形式展示的,例如半径为10的区域,表征以位置1为中心,与位置1的距离为10个地图网格的区域。
在另一些实施例中,服务器也可以将大于以当前位置为中心的视野的区域(例如矩形、圆形等),确定为包括当前位置的当前查询范围,例如服务器可以将大于玩家角色的视野的矩形,确定为包括当前位置的当前查询范围,如此,可以有效减少玩家角色在虚拟场景中移动时的查询次数,进而节约了终端设备和服务器的通信资源和计算资源。当然,当前查询范围也可以是根据玩家角色的移动特性进行个性化计算的,例如在以往的游戏过程中,针对移动范围越大的游戏角色,其对应的当前查询范围也越大,如此,可以满足不同玩家的个性化需求。
在步骤102中,根据当前查询范围从基础数据库查询与当前查询范围内待生成的多个非玩家角色分别对应的基础数据。
这里,每个非玩家角色的基础数据包括用于对非玩家角色进行实例化处理的多个属性,其中,属性的类型可以包括:等级、种类、位置、攻击力、外观等。
在一些实施例中,基础数据库可以通过多叉数(例如四叉树或者八叉树)结构存储虚拟场景中的所有非玩家角色的基础数据,其中,多叉数结构包括:一个顶层节点,代表虚拟场景;多个中间节点,每个中间节点代表虚拟场景中的一个空间,该空间包括下属的多个子空间的索引;多个叶子节点,每个叶子节点代表所归属的中间节点(所代表的空间)中的一个子空间,该子空间包括位于该子空间中的非玩家角色的基础数据,则服务器可以通过以下方式实现上述的步骤102:根据当前查询范围查询多叉数结构,得到多叉树结构中被当前查询范围覆盖的至少一个中间节点;查询被覆盖的每个中间节点包括的每个叶子节点,将查询到的多个非玩家角色分别对应的基础数据,作为与当前查询范围内待生成的多个非玩家角色分别对应的基础数据。
示例的,以八叉树结构为例,服务器在确定出包括当前位置的当前查询范围之后,可以根据当前查询范围查询八叉树结构,得到八叉树结构中被当前查询范围覆盖的至少一个中间节点,假设八叉树结构中的中间节点1和中间节点2被当前查询范围覆盖,接着服务器可以分别查询中间节点1和中间节点2包括的每个叶子节点,例如假设中间节点1包括叶子节点1(假设存储有非玩家角色1的基础数据)和叶子节点2(假设存储有非玩家角色2的基础数据),中间节点2包括叶子节点3(假设存储有非玩家角色3的基础数据)和叶子节点4(假设存储有非玩家角色4的基础数据),并将查询到的多个非玩家角色(即非玩家角色1、非玩家角色2、非玩家角色3和非玩家角色4)分别对应的基础数据,确定为与当前查询范围内待生成的多个非玩家角色分别对应的基础数据。
在一些实施例中,承接上述示例,非玩家角色的基础数据可以是从非玩家角色的生成规则提取的(例如非玩家角色1的基础数据是从动态生成规则1提取的),其中,生
成规则的类型包括静态生成规则(即具有固定属性的非玩家角色的生成规则,例如游戏中的向导NPC的生成规则,向导NPC的属性在游戏过程中是不会发生变化的)和动态生成规则(即具有动态变化属性的非玩家角色的生成规则,例如游戏中的战斗NPC的生成规则,战斗NPC的攻击力会随着游戏的进行不断增大),且动态生成规则是存储于规则数据库中的,则在玩家角色处于虚拟场景的过程中时,服务器还可以执行以下处理:响应于规则数据库中的任一动态生成规则(例如动态生成规则1)过期,从基础数据库中删除从任一动态生成规则提取的基础数据(例如当检测到规则数据库中的动态生成规则1过期时,服务器可以从基础数据库中删除从动态生成规则1提取的非玩家角色1的基础数据);响应于多叉树结构的任一中间节点代表的多个(即至少2个)子空间中的至少部分基础数据被删除,且多个子空间中剩余的基础数据的数据量小于数据量阈值(例如10比特),将多个子空间合并为1个叶子节点。
在另一些实施例中,非玩家角色的基础数据可以是从非玩家角色的生成规则提取的(例如以向导NPC为例,向导NPC的基础数据可以是从静态生成规则1提取的),其中,生成规则的类型可以包括静态生成规则和动态生成规则,且动态生成规则是存储于规则数据库中的,则在玩家角色处于虚拟场景的过程中时,服务器还可以执行以下处理:响应于规则数据库中的任一动态生成规则包括的任意一个规则执行条件被满足,从任一动态生成规则提取非玩家角色对应的基础数据;将提取的非玩家角色的基础数据存入多叉树结构中的目标叶子节点(例如多叉树结构中的叶子节点4),其中,提取的非玩家角色的基础数据包括非玩家角色在虚拟场景中的位置,且非玩家角色的位置属于目标叶子节点的子空间;响应于目标叶子节点的数据量达到(即大于或等于)数据量阈值,将目标叶子节点转换为新的中间节点,并将目标叶子节点中存储的基础数据转移到新的中间节点下属的两个新的叶子节点。
其中,上述的数据量阈值可以预先设定的数值。
示例的,以动态生成规则1为例,假设动态生成规则1为“当玩家角色的等级达到10级、且玩家角色到达虚拟场景中的草地时,在虚拟场景的位置A生成一个攻击力为100、等级为10级、种类为草系的NPC1”,则当服务器检测到规则数据库中的动态生成规则1包括的任意一个规则执行条件被满足(例如检测到等级为10级的玩家角色到达虚拟场景中的草地)时,可以从动态生成规则1提取NPC1对应的基础数据(例如NPC1的位置、攻击力、等级、种类等),并将所提取的NPC1的基础数据存入多叉树(例如八叉树)结构中的目标叶子节点(例如八叉树结构的叶子节点4),其中,NPC1的位置属于叶子节点4的子空间;随后当服务器检测到叶子节点4的数据量大于数据量阈值(例如10比特)时,可以将叶子节点4转换为新的中间节点,并将叶子节点4中存储的基础数据转移到新的中间节点下属的两个新的叶子节点。
在步骤103中,确定多个非玩家角色的权重,并确定多个非玩家角色的权重到降序排序结果。
在一些实施例中,服务器可以通过以下方式确定多个非玩家角色的权重:针对多个非玩家角色中的每个非玩家角色执行以下处理:对非玩家角色的至少一个维度的状态进行量化处理,对应得到至少一个量化值;当至少一个量化值的数量为一个时,将该量化值确定为该非玩家角色的权重;当至少一个量化值的数量为多个时,对多个量化值进行加权求和处理,将得到的加权求和结果确定为该非玩家角色的权重,其中,状态的类型可以包括以下至少之一:非玩家角色与玩家角色之间的地理位置关系,其中,地理位置关系可以包括非玩家角色与玩家角色之间的距离(指虚拟场景的地图中所跨越的二维或者三维的直线长度)、方位(例如当非玩家角色位于玩家角色的正前方时,对应的量化值可以为1,当非玩家角色位于玩家角色的后方时,对应的量化值可以为0)、朝向(例
如当非玩家角色面向玩家角色时,对应的量化值可以为1,当非玩家角色背向玩家角色时,对应的量化值可以为0)等、非玩家角色是否与玩家角色处于同一个队伍、非玩家角色与玩家角色之间的社交关系、非玩家角色与玩家角色之间是否具有对抗关系、非玩家角色是否在玩家角色的历史视野中出现。
示例的,针对每个非玩家角色,服务器可以通过以下方式确定非玩家角色的不同维度的状态的权重
作为确定距离的量化值的示例,可以将非玩家角色与玩家角色之间的距离与预先设定的距离的相除结果,确定为对应的量化值,例如假设非玩家角色与玩家角色之间的距离为7,设定距离为10,则距离对应的量化值为0.7)。
作为确定是否处于同一个队伍的量化值的示例,例如当非玩家角色与玩家角色处于同一个队伍时,对应的量化值可以为1;当非玩家角色与玩家角色没有处于同一个队伍时,对应的量化值可以为0)。
作为确定社交关系的量化值的示例,例如当非玩家角色与玩家角色具有社交关系时,对应的量化值可以为1;当非玩家角色与玩家角色不具有社交关系时,对应的量化值可以为0)。
作为是否具有对抗关系的量化值的示例,例如当非玩家角色与玩家角色之间具有对抗关系时,对应的量化值可以为1;当非玩家角色与玩家角色之间不具有对抗关系时,对应的量化值可以为0。
作为是否在历史视野中出现的量化值示例,例如当非玩家角色曾经在玩家角色的历史视野中出现时,对应的量化值可以为1;当非玩家角色没有在玩家角色的历史视野中出现时,对应的量化值可以为0、
对多个量化值进行加权求和处理,将得到的加权求和结果确定为非玩家角色的权重。
举例来说,以非玩家角色1为例,假设非玩家角色1与玩家角色之间的距离为8、非玩家角色1与玩家角色处于同一个队伍、非玩家角色1与玩家角色不具有好友关系、非玩家角色1与玩家角色之间具有对抗关系(例如玩家角色曾经攻击过非玩家角色1,导致非玩家角色1与玩家角色之间形成敌对关系)、非玩家角色1在玩家角色的历史视野中出现过,则服务器对非玩家角色1的上述多个维度的状态进行量化处理后,可以对应得到多个量化值,分别为0.8、1、0、1、1,接着服务器可以对多个量化值进行加权求和处理,将得到的加权求和结果(例如假设每个量化值对应的权重值均为0.5,则加权求和结果为:0.5×0.8+0.5×1+0.5×0+0.5×1+0.5×1=1.9)确定为非玩家角色1的权重(即非玩家角色1的权重为1.9)。当然,不同量化值对应的权重值也可以是不同的,例如针对每个量化值,可以由策划人员分别配置对应的权重值,本申请实施例对此不做具体限定。
在步骤104中,将降序排序结果中从首位开始的第一数量的非玩家角色进行实例化处理,得到与第一数量的非玩家角色分别对应的第一数量的实体对象。
这里,第一数量小于多个非玩家角色的总数,例如假设多个非玩家角色的总数为100,则第一数量可以是80。
需要说明的是,第一数量可以是固定值(例如80),也可以是根据玩家角色的当前查询范围所在区域的类型变化而动态变化的,即当玩家角色处于不同类型的区域时,第一数量的取值也是不同的,下面针对第一数量为动态值的情况进行具体说明。
在一些实施例中,服务器在将降序排序结果中从首位开始的第一数量的非玩家角色进行实例化处理之前,还可以执行以下处理:根据当前查询范围所在区域的类型,采用与类型对应的调整方式对多个非玩家角色的权重进行调整;将经过调整后的多个非玩家角色中权重超过权重阈值的至少一个非玩家角色,确定为第一数量的非玩家角色。
示例的,当当前查询范围所在的区域为虚拟场景中的竞技场、城镇等公共区域时,由于玩家在竞技场、城镇等公共区域中有着较强的交互需求,因此可以增大当前查询范围内的多个非玩家角色的权重,例如可以将多个非玩家角色的权重与大于1的预设系数(例如1.5)进行相乘,从而使得超过权重阈值的非玩家角色(即需要进行实例化处理的非玩家角色)的数量增加(例如假设权重阈值为1,同时假设NPC1的权重为0.8,即NPC1调整前的权重是小于权重阈值的,在对NPC1的权重进行调整之后,NPC1的权重变成1.2,大于权重阈值,则可以对NPC1进行实例化处理),以在客户端中显示更多的非玩家角色供玩家进行交互。
示例的,当当前查询范围所在的区域为虚拟场景中的玩家角色的住宅、训练场等私人区域时,由于玩家在私人区域中交互需求较弱,因此可以减小当前查询范围内的多个非玩家角色的权重,例如可以将多个非玩家角色的权重与小于1的系数(例如0.7)进行相乘,从而使得超过权重阈值的非玩家角色(即需要进行实例化处理的非玩家角色)的数量减少,以在客户端中显示更少的非玩家角色,从而在满足玩家需求的前提下,进一步降低服务器和终端设备的资源开销。
在一些实施例中,第一数量也可以是根据服务器的负载动态确定的,则服务器在将降序排序结果中从首位开始的第一数量的非玩家角色进行实例化处理之前,还可以执行以下处理:通过执行以下处理之一确定第一数量:将服务器当前的负载与设定的参考负载进行比较;其中,参考负载是通过预设值进行标定的;当服务器当前的负载低于参考负载时,对预设值增大预定的幅度或比例,并将增大后的预设值确定为第一数量;当服务器当前的负载高于参考负载时,对预设值减小预定幅度或比例,并将减小后的预设值确定为第一数量;在预先设置的多个参考负载区间中,确定服务器当前的负载所处的区间,并将区间对应的实例化数量确定为第一数量,其中,不同的参考负载区间对应不同的实例化数量。
示例的,可以首先根据以往的实例化数量,确定一个预设值(例如可以将以往多个实例化数量的平均值确定为预设值),并根据预设值(例如假设为50)标定一个参考负载,接着可以通过服务器负载检测器提供的接口获取服务器的负载情况;当服务器当前的负载低于参考负载时,说明服务器当前的压力较小,则可以对预设值增大预定幅度(例如5)或者比例(例如10%),并将增大后的预设值(即55)确定为第一数量;当服务器当前的负载高于参考负载时,说明服务器当前的压力较大,则可以对预设值减小预定幅度(例如5)或者比例(例如10%),并将减小后的预设值(即45)确定为第一数量,如此,既充分平衡了服务器的负载,利用了服务器的能力,又不会影响玩家的游戏体验。
示例的,也可以预先设置多个参考负载区间,其中,每个参考负载区间对应一个实例化数量,例如可以预先设置5个参考负载区间,分别为参考负载区间1(0%-20%)、参考负载区间2(20%-40%)、参考负载区间3(40%-60%)、参考负载区间4(60%-80%)和参考负载区间5(80%-100%),其中,参考负载区间1对应的实例化数量为100、参考负载区间2对应的实例化数量为80、参考负载区间3对应的实例化数量为60、参考负载区间4对应的实例化数量为40、参考负载区间5对应的实例化数量为20,接着可以通过服务器负载检测器提供的接口获取服务器的负载情况,假设服务器当前的负载为50%,即服务器当前的负载处于参考负载区间3,则可以将参考负载区间3对应的实例化数量(即60)确定为第一数量。
在另一些实施例中,第一数量也可以是固定值(例如50),或者是多个非玩家角色的总数的固定比例(例如60%),本申请实施例对此不做具体限定。
在一些实施例中,服务器可以通过以下方式实现上述的步骤104:在内存空间中分配存储区域;在存储区域中生成第一数量的非玩家角色分别对应的实体对象,其中,实
体对象包括代表非玩家角色的属性的变量。
示例的,在对当前查询范围内待生成的多个非玩家角色(例如20个非玩家角色)进行过滤筛选,得到第一数量的非玩家角色(例如10个非玩家角色)之后,服务器可以在内存空间中分配一段存储区域(存储区域的大小与第一数量正相关),接着服务器可以在所分配的存储区域中生成10个非玩家角色分别对应的实体对象,并在内存空间中记录这10个非玩家角色的属性(例如攻击力、外观、位置、等级等)的变量,如此,对于当前查询范围内待生成的多个NPC,进行过滤筛选得到权重排在头部区间的部分NPC,并对筛选得到的部分NPC进行实例化处理,有效控制了NPC实体对象的数量,在不影响玩家的游戏体验的前提下,还能极大节省客户端和服务器的资源开销。
在步骤105中,向控制玩家角色的客户端发送第一数量的实体对象,以使客户端在当前查询范围内显示第一数量的非玩家角色对应的虚拟形象。
这里,客户端在接收到服务器发送的第一数量的实体对象之后,可以基于第一数量的实体对象,渲染出第一数量的非玩家角色分别对应的虚拟形象,例如客户端可以基于NPC1的实体对象包括的外观数据,渲染出NPC1的虚拟形象,以在当前查询范围内进行显示。
为表述方便,下文中简称为显示非玩家角色对应的实体对象,可以理解的是,下文中记载的“显示非玩家角色对应的实体对象”即指“显示基于实体对象渲染得到的非玩家角色对应的虚拟形象”。
在一些实施例中,服务器在向控制玩家角色的客户端发送第一数量的实体对象之前,还可以执行以下处理:比较当前查询范围与历史查询范围,其中,历史查询范围是包括历史位置的查询范围,历史位置是玩家角色在当前位置之前在虚拟场景中所处的位置(例如假设玩家角色从虚拟场景中的位置1移动至位置2,则位置1为历史位置,位置2为当前位置);响应于当前查询范围与历史查询范围完全不同,转入执行向控制玩家角色的客户端发送第一数量的实体对象的处理;响应于当前查询范围与历史查询范围存在交叉区域,向控制玩家角色的客户端发送其他非玩家角色(即第一数量的非玩家角色中位于交叉区域以外的非玩家角色)对应的实体对象,以使客户端继续显示交叉区域中的非玩家角色对应的实体对象、以及其他区域(即当前查询范围中除交叉区域外的区域)中的非玩家角色对应的实体对象;响应于历史查询范围相对于当前查询范围存在差异区域,向控制玩家角色的客户端发送通知消息,其中,通知消息用于通知客户端删除差异区域中的非玩家角色对应的实体对象。
示例的,参见图4A,图4A是本申请实施例提供的虚拟场景的数据处理方法的原理示意图,如图4A所示,在虚拟场景400中显示有玩家角色401,假设玩家角色401从虚拟场景400中的历史位置402(例如虚拟场景中的位置1)移动至当前位置403(例如虚拟场景中的位置2),且包括历史位置402的历史查询范围404与包括当前位置403的当前查询范围405完全不同(即历史查询范围404和当前查询范围405没有重叠),则服务器可以向控制玩家角色401的客户端发送第一数量的实体对象,以使客户端在当前查询范围405内显示第一数量的非玩家角色对应的实体对象。同时,服务器还可以向控制玩家角色401的客户端发送通知消息,以使客户端删除历史查询范围404中的非玩家角色对应的实体对象,如此,可以有效节约终端设备的内存资源。
示例的,参见图4B,图4B是本申请实施例提供的虚拟场景的数据处理方法的原理示意图,如图4B所示,在虚拟场景400中显示有玩家角色401,假设玩家角色401从虚拟场景400中的历史位置402移动至当前位置403,且包括历史位置402的历史查询范围404与包括当前位置403的当前查询范围405之间存在交叉区域406(即图4B中示出的阴影区域),则服务器可以仅向控制玩家角色401的客户端发送第一数量的非玩
家角色中位于交叉区域406之外的部分非玩家角色对应的实体对象,以使客户端继续显示交叉区域406中的非玩家角色(即旧非玩家角色)对应的实体对象、以及其他区域407(即当前查询范围405减去交叉区域406后得到的区域)中的非玩家角色(即玩家角色401移动至当前位置403后新出现的非玩家角色)对应的实体对象。同时,服务器还可以向客户端发送通知消息,以使客户端删除差异区域408(即历史查询范围404减去交叉区域406后得到的区域)中的非玩家角色对应的实体对象,如此,一方面可以提高非玩家角色对应的实体对象的显示效率,另一方面也能够节约服务器和终端设备的通信资源和计算资源。
在另一些实施例中,承接上述示例,服务器在向控制玩家角色的客户端发送通知消息之前,还可以执行以下处理:针对位于差异区域中的每个非玩家角色执行以下处理:在基础数据库中增加一个新的字段,将非玩家角色对应的实体对象的状态数据(例如非玩家角色当前的生命值、魔法值、所具有的技能等)存储至新的字段中。
示例的,以基础数据库是通过多叉树结构存储虚拟场景中的所有非玩家角色的基础数据为例,其中,多叉树结构的叶子节点1中存储有非玩家角色1的基础数据、叶子节点2中存储有非玩家角色2的基础数据、叶子节点3中存储有非玩家角色3的基础数据,同时假设差异区域中存在3个非玩家角色,分别为非玩家角色1、非玩家角色2和非玩家角色3,则服务器可以将非玩家角色1对应的实体对象的状态数据存储至叶子节点1中,将非玩家角色2对应的实体对象的状态数据存储至叶子节点2中,将非玩家角色3对应的实体对象的状态数据存储至叶子节点3中,如此,当需要再次显示差异区域中的非玩家角色对应的实体对象时,可以根据存储的状态数据准确无误地创建出来。
在一些实施例中,参见图5,图5是本申请实施例提供的虚拟场景的数据处理方法的流程示意图,如图5所示,在执行完图3示出的步骤105之后,还可以执行图5示出的步骤106,将结合图5示出的步骤进行说明。
在步骤106中,响应于玩家角色离开当前查询范围后再次返回当前查询范围,向客户端发送其他非玩家角色的实体对象。
这里,其他非玩家角色为当前查询范围中除第一数量的非玩家角色之外的非玩家角色。
在一些实施例中,以当前查询范围为虚拟场景中的感兴趣区域1为例,假设感兴趣区域1中总存在20个非玩家角色,当玩家角色首次进入感兴趣区域1时,服务器可以先向控制玩家角色的客户端发送第一数量(例如10)的非玩家角色(例如降序排序结果中从首位开始的10个非玩家角色)分别对应的实体对象,以使客户端在感兴趣区域1中显示10个非玩家角色的实体对象;随后当玩家角色离开感兴趣区域1后再次返回感兴趣区域1,服务器可以对剩余的10个非玩家角色,例如,降序排序结果中排在后10位的非玩家角色)进行实例化处理,并向客户端发送剩余的10个非玩家角色的实体对象(即当玩家角色再次进入相同的AOI时,服务器可以将之前缺失的NPC的实体对象下发到客户端,以使客户端在感兴趣区域1中显示剩余的10个非玩家角色的实体对象,从而保证了玩家游戏体验的完整性。
在一些实施例中,在基础数据库中存储有每个非玩家角色的基础数据,在规则数据库中存储有与每个非玩家角色对应的生成规则,且生成规则的类型均为动态生成规则,其中,动态生成规则是具有动态变化属性的非玩家角色的生成规则,每个动态生成规则包括多个规则执行条件,例如包括位置条件、天气条件等,且当不同的规则执行条件被满足时,从动态生成规则提取得到的基础数据不同,则当玩家角色处于虚拟场景的过程中时,服务器还可以执行以下处理:通过以下方式更新基础数据库:对规则数据库中存储的每个动态生成规则进行过期检查;响应于规则数据库中出现过期的动态生成规则
(例如动态生成规则1),删除基础数据库中从过期的动态生成规则提取的基础数据、以及从规则数据库中删除过期的动态生成规则,例如假设服务器检测到规则数据库中的动态生成规则1过期,则可以删除基础数据库中从动态生成规则1提取的基础数据,例如NPC1的基础数据,同时服务器还可以从规则数据库中删除动态生成规则1;响应于规则数据库中的任一动态生成规则(例如动态生成规则2)包括的规则执行条件被满足,从任一动态生成规则提取新的基础数据,并将基础数据库中与任一动态生成规则对应的原有的基础数据替换为新的基础数据,以动态生成规则2为例,假设动态生成规则2为:“当虚拟场景中的天气为晴天时,在虚拟场景的位置A生成一个攻击力为20、等级为3级的NPC1;当天气从晴天转换为雨天时,NPC1的攻击力将从20增大至40”,则当服务器检测到动态生成规则2包括的规则执行条件被满足时,例如检测到虚拟场景中的天气从晴天转换为雨天时,可以从动态生成规则2提取NPC1新的基础数据,例如攻击力为40,并将基础数据库中与动态生成规则2对应的原有的基础数据(例如攻击力为20)替换为新的基础数据。
在另一些实施例中,承接上述示例,每个动态生成规则还包括解锁条件(例如包括等级条件、时间条件等);则在玩家角色处于虚拟场景的过程中时,服务器还可以执行以下处理:通过以下方式更新规则数据库:响应于规则数据库中的任一动态生成规则满足规则删除条件(例如动态生成规则对应的非玩家角色被删除),将任一动态生成规则作为过期的动态生成规则,并从规则数据库中删除过期的动态生成规则,例如当服务器检测到虚拟场景中的某种类型的NPC被删除(例如随着游戏版本的更新,某种类型的NPC被游戏开发人员从游戏中移除)时,则服务器可以将该类型的NPC对应的动态生成规则作为过期的动态生成规则,并从规则数据库中删除过期的动态生成规则;响应于全量数据库中的任一动态生成规则包括的解锁条件被满足,例如玩家角色的等级达到玩家阈值10级,将任一动态生成规则作为新解锁的动态生成规则存入规则数据库中,如此,针对注册之后属性再也不会变化的NPC(例如向导NPC)对应的生成规则,即静态生成规则,只存储从中提取的NPC基础,对于生成规则本身则不再存储,因此不再会被检测;而针对游戏进程中的攻击力、等级等属性可能发生变化的NPC(例如战斗NPC)对应的生成规则(即动态生成规则),可以根据解锁条件的类型(例如等级、时间等)进行分类,这样在某个条件发生变化时只需要检查包括该类条件的生成规则即可,从而实现精准检测。
示例的,以解锁条件为等级条件为例,全量数据库中存储的动态生成规则可以包括等级条件,例如以动态生成规则1为例,动态生成规则1可以是“当玩家角色的等级达到5级时,在虚拟场景的位置A生成一个攻击力为30、等级为5级的NPC1”,则当服务器检测到玩家角色的等级达到5级时,可以将动态生成规则1作为新解锁的动态生成规则存入规则数据库中。
示例的,以解锁条件为时间条件为例,全量数据库中存储的动态生成规则可以包括时间条件,例如以动态生成规则2为例,动态生成规则2可以是“当游戏时间达到30分钟时,在虚拟场景的位置B生成一个攻击力为50、等级为6级的NPC2”,则当服务器检测到玩家的游戏时长达到30分钟时,可以将动态生成规则2作为新解锁的动态生成规则存入规则数据库中。
在另一些实施例中,服务器在获取玩家角色在虚拟场景中的当前位置之前,还可以执行以下处理:在玩家角色的注册阶段,通过以下方式初始化规则数据库和基础数据库:从全量数据库中获取全部生成规则;将全部生成规则分类为静态生成规则和动态生成规则;从静态生成规则提取具有固定属性的非玩家角色(例如向导NPC)对应的基础数据,从动态生成规则提取具有动态变化属性的非玩家角色(例如战斗NPC)对应的基础数据,
并将所提取的基础数据存入基础数据库中,作为示例,基础数据可以是具有固定属性的非玩家角色的基础数据、以及具有动态变化属性的非玩家角色的基础数据;将对全部生成规则进行分类得到的动态生成规则存入规则数据库中。
在一些实施例中,还可以根据玩家角色在注册阶段的等级,对基础数据库中存储的非玩家角色的基础数据包括的某些属性(例如攻击力、等级等)进行修正,以等级为例,例如假设玩家角色在注册阶段的等级为1级,则可以将基础数据库中存储的基础数据包括的非玩家角色的等级修正为1级,例如以NPC1为例,假设基础数据库中存储的NPC1的基础数据中NPC1的等级为3级,则可以根据玩家角色的等级将NPC1的等级也修正成1级,从而使非玩家角色的等级与玩家角色的等级适配。
在另一些实施例中,承接上述示例,在从全量数据库中获取全部生成规则之前,服务器还可以执行以下处理:在初始化阶段,获取策划人员针对虚拟场景配置的全部生成规则,其中,初始化阶段包括以下至少之一:在服务器的启动阶段,服务器的负载低于负载阈值的阶段;基于全部生成规则,确定在虚拟场景中需要生成的非玩家角色的类型;从全部生成规则提取每个类型的非玩家角色的基础数据,并将所提取的每种类型的非玩家角色的基础数据、以及全部生成规则存入全量数据库中,如此,在服务器启动或者空闲时预先创建所有的NPC生成规则和NPC基础数据,供玩家注册时直接取用,无需注册时实时创建,有效降低了注册时长和服务器的CPU峰值。
本申请实施例提供的虚拟场景的数据处理方法,在得到当前查询范围内待生成的多个非玩家角色的基础数据之后,根据多个非玩家角色的权重,从当前查询范围内待生成的多个非玩家角色中过滤筛选出部分非玩家角色(例如第一数量的非玩家角色),随后对过滤筛选出的第一数量的非玩家角色进行实例化处理,并将第一数量的实体对象发送至客户端,如此,有效控制了在客户端中显示的非玩家角色对应的实体对象的数量,从而在不影响玩家的游戏体验的前提下,有效节省了服务器和终端设备的资源开销。
下面,以开放世界游戏为例说明本申请实施例在一个实际的应用场景中的示例性应用。
本申请实施例提供了一种虚拟场景的数据处理方法,可以应用于单人开放世界游戏,实现对游戏中大量NPC基础数据的生成和管理、NPC实体对象的创建、维护以及对于玩家角色的可见性管理。本申请实施例提供的方案将NPC实体对象的创建过程分为两段式:基础数据生成(即刷新生成过程)和实体对象创建(即实例化过程)。在刷新生成过程中,由NPC数据管理器根据NPC生成规则,在游戏过程中生成和管理NPC基础数据。在实例化过程中,则由NPC实例化器从NPC数据管理器中得到指定范围(对应于上述的当前查询范围)内所有NPC基础数据,然后采用NPC过滤筛选器基于权重筛选出优先级最高的一批NPC基础数据创建对应的NPC实体对象,并且下发给客户端进行显示。本申请实施例提供的方案中,模块化程度高,抽象性好,能够很好地控制内存使用,提高了整个流程的处理效率,同时避免了其他模块在不必要的NPC实体对象上浪费时间,且丝毫不影响玩家的游戏体验。
示例的,参见图6,图6是本申请实施例提供的虚拟场景的数据处理方法的应用场景示意图,如图6所示,游戏内玩家控制的角色(即玩家角色600)在空中飞翔,玩家角色600的视野范围601内能够看到3个NPC,分别为NPC602、NPC603和NPC604,随着玩家角色600继续飞翔降落后,玩家角色600的视野范围的内NPC不断发生变化,例如部分旧的NPC可以随着玩家角色的移动从玩家角色600当前的视野范围(例如视野范围605)内消失,例如图6中示出的NPC602和NPC603是仅在虚拟场景的某个特定区域存在的NPC,当玩家角色600离开这个区域时,NPC602和NPC603就会从玩家角色600当前的视野范围内消失。
部分旧的NPC可以一直处于玩家角色600的视野范围,例如视野范围601中的NPC604是用于承载玩家角色600的虚拟飞行载具,会随着玩家角色600一起移动,因此NPC604不会随着玩家角色600的移动而从视野范围中消失。当然,当NPC604将玩家角色600送到目的地之后,可以被回收到玩家角色的虚拟背包中,从而在玩家角色的视野范围内消失。
当然同时会有新的NPC在玩家角色600的视野范围内出现,例如当玩家角色600落地后,视野范围605内出现的NPC发生了极大改变,并且种类也有所变化,例如在视野范围605中出现了新的NPC606、NPC607和NPC608,而视野范围601中的至少部分NPC(例如NPC602和NPC603)不仅仅只是消失在视野范围605中,而且在客户端和服务器中都被优化删除了。此时,服务器会通知客户端有哪些旧NPC离开视野、以及有哪些新NPC出现,同时删除离开视野的旧NPC以及创建新出现的NPC实体对象,并通知客户端,客户端在接收到通知消息之后,将旧NPC实体对象删除,并显示新NPC实体对象。
下面首先对本申请实施例涉及的NPC数据预创建器、NPC数据管理器、NPC数据索引器、NPC实例化器、NPC过滤筛选器分别进行说明。
(1)NPC数据预创建器
在一些实施例中,开放世界游戏的玩法丰富多样,导致NPC生成规则和NPC基础数据都非常庞大,数以千计。如果在玩家注册账号时实时创建所有的NPC生成规则和NPC基础数据会消耗大量的CPU时间,增大服务器压力,从而降低注册并发数,影响游戏活跃度。而采用NPC数据预创建器可以在服务器启动或者空闲的时候预先创建游戏中所有NPC的基础数据,等到注册时再来取用即可,不仅优化了注册流程,而且充分利用了服务器的能力。
(2)NPC数据管理器
在一些实施例中,NPC基础数据的生成可以是由NPC数据管理器全权负责的,策划人员配置的所有NPC生成规则也都由它管理和实现,其中,NPC生成规则包括针对属性不会发生变化的NPC对应的生成规则、以及属性可能发生变化的NPC对应的生成规则,针对各种属性可能发生变化的NPC对应的生成规则,NPC数据管理器都会进行有效的检查,并且在满足生成规则的触发条件时,从NPC生成规则中提取NPC的基础数据,此时仅得到了NPC的基础数据,并不会进行NPC实体对象的实例化创建,因此流程简短快速,数据的内存占用也是极少的。
(3)NPC数据索引器
为了能够高效地从玩家角色所有的NPC基础数据中快速检索到指定范围内的NPC的基础数据,可以采用优化八叉树对数据进行索引管理,这样仅需指定检索范围,即可在较短时间得到指定范围内的NPC基础数据集合(即在指定范围内出现的多个NPC的基础数据)。
在一些实施例中,NPC可以是在二维或者三维空间中分布的,为了快速有效地根据指定空间范围获取NPC基础数据集合,本申请实施例可以采用优化的八叉树结构根据NPC的位置建立索引,从而管理NPC基础数据。从根节点到叶子节点之间的节点(即中间节点)提供了路径查询(索引)的功能,这也是一个将原始的大场景空间进行细化的过程,到了叶子节点这一层才真正保存属于该叶子节点(也就是子空间)的NPC基础数据,这些NPC的位置就处于该区域。
示例的,图7是本申请实施例提供的八叉树结构示意图,图7示出的八叉树结构具有3层,NPC数据索引器就是对图7示出的八叉树结构的封装。图7中示出的方框节点(例如节点1-2、节点1-6等)就是中间节点,主要作用是管理下属的子空间并且提供
空间索引的功能,不存储NPC基础数据;图7中示出的圆形节点(例如节点A、节点B)则是叶子节点,其不仅管理了自己的子空间,而且存储了属于该子空间的NPC基础数据。此外,如果一个叶子节点(例如图7中示出的节点1-2)管理的数据量超过数据量阈值,那么节点1-2就会***,它所管理的子空间也会***成两个,形成两个新的叶子节点(例如节点A和节点B),节点1-2所管理的NPC基础数据也会交给新创建的两个叶子节点管理,节点1-2本身则会成为一个新的中间节点。如此,通过利用八叉树结构,指定具体范围,NPC数据索引器就能够在对数时间内找到处于该范围内的所有NPC基础数据,提高了NPC的管理效率。
(4)NPC实例化器
在一些实施例中,NPC实体对象的创建可以是由NPC实例化器全权负责的,例如NPC实例化器可以利用NPC数据索引器提供的范围检索功能快速获取AOI范围内的NPC基础数据集合。然而,AOI范围内可能存在很多的NPC,导致超出了客户端的显示上限,或者说在完全不影响玩家的游戏体验的前提下只需要服务器创建一部分必要的NPC,这样不仅可以减少服务器的内存,还能够降低客户端的内存和流量。因此,NPC实例化器还可以引入NPC过滤筛选器,根据设定的过滤规则筛选出一定数量的高权重的NPC进行实例化处理,并将创建出的NPC实体对象下发给客户端。
在另一些实施例中,在多场景下NPC基础数据的管理中,玩家在控制角色在场景A中进行游戏时,可能场景B中的生成规则也在生效,按照相关技术提供的方案,会同时生成两个场景中的NPC实体对象。然而,在本申请实施例提供的方案中,由于玩家角色当前处于场景A中,那么只对场景A中的NPC进行实例化处理,而对于场景B中的NPC则不进行实例化处理,当后续玩家角色移动至场景B时,再对场景B中的NPC进行实例化处理,如此,通过NPC实体对象创建的两段式过程,可以避免预先生成和发送不必要的NPC实体对象。
(5)NPC过滤筛选器
在一些实施例中,NPC过滤筛选器可以根据配置的过滤策略对指定范围内出现的多个NPC进行过滤,且能够方便灵活地加载和卸载策略。例如可以使用NPC与玩家角色之间的距离(距离玩家角色越近的NPC,对应的权重越大)、NPC业务重要性(业务重要性程度越高的NPC,对应的权重越大)、以及过去是否出现在玩家角色的视野中等策略进行过滤,相较于没有在玩家角色的视野中出现的NPC,曾经出现在玩家角色的视野中的NPC,对应的权重更大。通过NPC过滤筛选器可以有效筛选出对玩家当前游戏进程来说最为重要的NPC集合。也就是说,在NPC实例化器和NPC过滤筛选器的共同作用下,可以有效地将每个玩家的NPC实体对象的数量控制在一个合理的范围,不仅不会影响玩家的游戏体验,而且降低了服务器和终端设备的内存、CPU消耗以及流量。
在另一些实施例中,由于游戏在运行过程中,具有非常明显的时段集中性,某些时间段玩家的数量非常多,服务器的压力很大,某些时间段的玩家数量很少,服务器非常空闲。为了使服务器的压力都维持在一个稳定的水平,本申请实施例还可以根据服务器负载检测器提供的接口及时了解服务器的负载情况,根据服务器的负载实时调整NPC实例化的最大数量,当服务器的负载高于设定的参考负载时,可以降低最大数量的数值;当服务器的负载低于参考负载时,可以提高最大数量的数值,大多数情况都维持在一个预先设定好的数值,如此,既充分平衡了服务器的负载,利用了服务器的能力,也不会影响玩家的游戏体验。
本申请实施例提供的虚拟场景的数据处理方法,以上述五个模块分工协作组成,每个模块之间仅提供必要的接口,屏蔽实现细节,能够像搭积木一样实现复杂的NPC实体对象生成、创建和管理***,***抽象性高,可复用性和可维护性也非常好。如果其
他模块要引用相关功能,或者是需要引入其他模块的功能,也能够方便的接入,可伸缩性优异。
也就是说,本申请实施例提供的方案中,NPC数据管理器负责所有NPC基础数据的生成,并交由NPC数据索引器进行管理,NPC实例化器从NPC数据索引器中获取指定范围内的NPC基础数据集合,随后经过NPC过滤筛选器进行过滤处理后得到一定数量的对玩家最为重要的NPC基础数据集合,依此创建NPC实体对象,最后下发给客户端,并且能够通过检测服务器的负载情况实时调整实例化NPC的最大数量。
下面对本申请实施例提供的虚拟场景的数据处理方法进行具体说明。
在一些实施例中,参见图8,图8是本申请实施例提供的NPC生成和管理原理示意图,如图8所示,整个方案包括六层,从数据流动方向依次是NPC生成规则配置预处理器,负责分类策划人员配置的所有NPC生成规则;NPC数据预创建器,负责在服务器启动或者空闲的时候创建完整的NPC基础数据,用于玩家注册时使用,避免注册时实时创建消耗大量的时间;NPC数据索引器,按照NPC的位置建立二维或者三维索引,从而能够快速查找到指定范围内的NPC基础数据集合;NPC数据管理器,组合和管理上述三个模块,执行NPC生成执行;NPC过滤筛选器,对于指定范围内的NPC集合,负责筛选出一定数量的权重靠前的NPC;NPC实例化器,负责创建NPC过滤筛选器筛选出的高权重的NPC对应的实体对象,并且管理实体对象的AOI视野数据,下面对每个模块分别进行具体说明。
(1)NPC生成规则配置预处理器
在一些实施例中,开放世界游戏中NPC种类非常多,玩法类型也非常丰富,为满足生成这些NPC以及实现相关的玩法,NPC生成规则的数量也非常多,可能达到几千条。为了避免时刻去检测每条生成规则是否被触发,本申请实施例提供的方案对所有的NPC生成规则进行了分类。首先分为两大类,一类是基础数据一旦生成后就不会再发生任何变化的NPC(例如向导NPC)对应的生成规则,这类生成规则不需要花费时间再去检测,也不需要存储在玩家角色自身数据中;第二类是有触发条件约束的NPC生成规则,需要由NPC数据管理器存储在玩家角色自身数据中,或者存储生成规则对应的标识,避免重复存储。
示例的,针对第二类生成规则,NPC生成规则配置预处理器会根据具体的触发条件进行进一步的分类,例如等级条件,这类生成规则只需要在玩家角色的等级发生变更时才需要检测;时间条件,根据所有的NPC生成规则的时间段再次分类,只有当前时间处于特定的时间段时,才会检测包括该时间段的NPC生成规则。如此,通过按照生成规则的触发条件,再分类检测各类生成规则,可以有效降低需要检测的生成规则集合大小,精准地实施NPC生成规则,有效提高了检测的效率,同时也降低了服务器的资源消耗。
(2)NPC数据预创建器
玩家注册时会存在大量的数据初始化,其中就包括NPC生成规则和大量的NPC基础数据,这些数据需要创建并且存储在玩家自身数据里。由于NPC生成规则可能高达几千条,由其生成的NPC基础数据也非常多。在玩家注册的时候才实时创建这些数据,效率太低,极大影响玩家注册,导致游戏注册并发比较低。
针对上述问题,本申请实施例可以采用NPC数据预创建器预创建玩家注册时所需的NPC基础数据,在玩家注册时直接取回来给玩家使用,而不是到了注册时才实时创建。关于预创建的间点主要有两处,第一处是服务器启动时进行预创建,第二处是根据服务器的负载情况来决定,当服务器的当前负载低于负载阈值时,可以进行预创建以备不时之需;最后的保底方案是在注册时预创建的基础数据无法覆盖注册时需要的全部基
础数据,那就实时创建,优先保证玩家能够得到注册。
(3)NPC数据管理器
NPC数据管理器是整个技术方案的纽带部分,主要负责两部分数据的组织管理。第一部分是NPC生成规则,定期检测相关的生成规则,如果玩家角色满足生成规则中的触发条件(例如等级条件),则将相应的生成规则加入玩家角色已拥有的NPC生成规则集合(对应于上述的规则数据库)中,例如以等级条件为例,当玩家角色的等级达到等级阈值时,则可以解锁相应等级下的生成规则,并把解锁的生成规则(或者规则的标识)加入玩家角色已拥有的NPC生成规则集合中。此外,针对玩家角色已经拥有的NPC生成规则,NPC数据管理器也会定期检查生成规则,并根据检查结果执行对应的逻辑,包括过期规则删除、以及执行命中的NPC生成规则以生成NPC基础数据。第二部分则是NPC基础数据,根据游戏业务需要,可以将NPC基础数据按照各种业务维度组织成不同的数据集合,配合NPC数据管理器提供的相关接口,可以非常方便地被其他组件和模块访问和使用。
(4)NPC过滤筛选器
NPC过滤筛选器的主要功能是从NPC基础数据集合中选择出权重靠前的N个NPC进行实例化处理,创建对应的NPC实体对象并下发给客户端。
在一些实施例中,通过NPC数据索引器根据玩家角色的AOI得到的NPC基础数据的数量很多,很有可能高于客户端的视野可显示数量,且数据太多对服务器和客户端的压力也比较大。因此,为了选取最需要呈现的NPC,就需要对指定范围内存在的多个NPC进行筛选。例如可以针对在指定范围内存在的各个NPC的多种状态进行量化处理,然后对得到的多个量化值进行加权求和处理,得到每个NPC最终的权重,最后基于权重对多个NPC进行降序排序,并选择降序排序结果中处于头部区间的N个NPC即可。NPC状态选取的维度有很多,策略也比较复杂,而且通常和业务需求高度耦合,例如距离、队伍、好友、仇恨以及历史视野等。此外,为了提高移植性,还可以进行抽象分装,各个维度只需要实现各自的权重计算策略即可,其他无需关心。
(5)NPC实例化器
在经过上述组件的数据生成和筛选,最终得到指定数量的NPC基础数据,这些数据经过NPC实例化器处理才能创建对应的NPC实体对象,实体对象才具有游戏进行所需要的各种功能,例如移动、交互、战斗、爆出奖励等。NPC实例化器会调用统一的底层接口创建实体对象,并根据NPC基础数据对这些实体对象进行初始化,该过程完成后,将会更新到玩家角色的AOI视野数据,并通知给客户端。
此外,随着玩家游戏的进行,玩家角色的位置和状态可能发生变更,NPC实例化器都会做出及时的响应,不断通过接口从NPC数据管理器中得到当前的AOI内的NPC基础数据集合,经过NPC过滤筛选器的筛选后,再创建当前的AOI内新出现的NPC实体对象,无缝更新和切换玩家视野,保证玩家的游戏体验,同时旧视野中的实体对象将会被删除,以释放内存和降低流量消耗;当然,删除前会将实体对象的状态数据保存到对应的NPC基础数据中,以便下次能够准确无误地创建出来。
本申请实施例提供的技术方案中数据流主要包括四个过程,各个过程之间以NPC生成规则和NPC基础数据进行串联起来,该串联过程完全通过公共接口实现,不会涉及到每个数据流的实现细节。对于每个数据流而言,它们的数据加工和处理都是上述的各个组件的主要功能,具有很好的内聚性和封装性。不同组件之间利用接口串联可以犹如流水线一样组装所有组件,实现所需要的功能,具有很好的扩展性。
下面继续结合图9A对本申请实施例提供的虚拟场景的数据处理方法进行说明,如图9A所示,本申请实施例提供的虚拟场景的数据处理方法可以分为三个阶段,分别为
初始化阶段、注册阶段和游戏阶段,其中,初始化阶段包括步骤901至步骤905、注册阶段包括步骤906至步骤909、游戏阶段包括步骤910至步骤915,下面首先对初始化阶段进行具体说明。
在步骤901中,判断服务器是否处于启动阶段或者负载低于阈值,如果不是,则执行步骤902;如果是,则执行步骤903。
在步骤902中,服务器确定不进行预创建。
在步骤903中,服务器获取策划人员配置的所有NPC生成规则。
在步骤904中,服务器从所有NPC生成规则提取NPC基础数据。
在步骤905中,服务器将NPC生成规则和基础数据存入全量数据库。
至此,服务器已经完成了NPC生成规则和基础数据的初始化,初始化阶段结束,将进入注册阶段,下面对注册阶段进行具体说明。
在步骤906中,服务器从全量数据库中获取NPC生成规则和基础数据。
在一些实施例中,当服务器检测到有新玩家进行注册时,可以从全量数据库中获取所有的NPC生成规则和从NPC生成规则中提取的NPC基础数据。
在步骤907中,服务器对NPC基础数据进行修正。
在一些实施例中,服务器可以根据玩家注册时的等级,对NPC基础数据的某些字段进行修正,例如假设玩家角色在注册时的等级为1级,则可以将NPC基础数据中包括的等级也修正为1级,从而使游戏中NPC的等级与玩家角色的等级适配,从而提高玩家的游戏体验。
在步骤908中,服务器对其他组件进行初始化。
这里,其他组件是游戏中除了上文提到的5个组件之外的组件,例如包括用于负责游戏中的交易的组件,用于负责不同游戏角色之间的战斗的组件等。
在步骤909中,服务器生成玩家角色的规则数据库。
在一些实施例中,服务器可以根据玩家角色当前的等级,将所有NPC生成规则中满足等级条件的生成规则加入玩家已拥有的NPC生成规则集合中,得到玩家角色的规则数据库。例如假设玩家角色的当前等级为1级,则可以将所有NPC生成规则中对应1级的NPC的生成规则作为玩家当前已经解锁的生成规则,并加入玩家已拥有的NPC生成规则集合中。
至此,玩家注册完毕,注册阶段结束,将进入游戏阶段,下面对游戏阶段进行具体说明。
在步骤910中,服务器迭代检测规则数据库中的每条NPC生成规则。
在步骤911中,服务器判断是否触发相关条件,如果是,则执行步骤912;如果否,则执行步骤910。
在步骤912中,服务器分别处理各类条件,当确定触发规则删除条件时,执行步骤913;当确定触发规则执行条件时,执行步骤914。
在步骤913中,服务器先删除从生成规则提取的基础数据,再删除生成规则。
在一些实施例中,当服务器检测到规则数据库中的某条NPC生成规则过期时(即触发了规则删除条件),则可以从基础数据库中删除从该生成规则提取的基础数据,并从规则数据库中删除该生成规则。
在步骤914中,服务器从生成规则提取NPC基础数据。
在步骤915中,服务器对基础数据库进行更新。
在一些实施例中,服务器在检测到规则数据库中的某条NPC生成规则包括的规则执行条件被满足时,可以从该NPC生成规则中提取新的NPC基础数据,并将基础数据库中存储的从该条NPC生成规则提取的原始NPC基础数据替换为新的NPC基础数据,
从而实现对基础数据库的更新。
下面继续结合图9B对NPC实体对象的创建过程进行说明。
示例的,参见图9B,图9B是本申请实施例提供的虚拟场景的数据处理方法的流程示意图,将结合图9B示出的步骤进行说明。
在步骤916中,客户端向服务器发送玩家角色当前的AOI。
在步骤917中,服务器根据AOI得到指定范围内的NPC基础数据集合。
在一些实施例中,客户端可以向服务器实时上报玩家角色在开放世界中的当前AOI,以使服务器根据玩家角色当前的AOI调用NPC数据索引器获取指定范围(即当前AOI)内的NPC基础数据集合。
在步骤918中,服务器通过NPC过滤筛选器筛选出权重排名前N的NPC。
在步骤919中,服务器通过NPC实例化器创建出筛选得到的N个NPC对应的实体对象。
在步骤920中,服务器将N个NPC实体对象发送至客户端。
在步骤921中,客户端在当前AOI中显示N个实体对象。
在一些实施例中,客户端在接收到服务器发送的N个实体对象之后,可以在玩家角色当前的AOI中显示新出现的N个实体对象。
在步骤922中,服务器向客户端发送删除通知消息。
在步骤923中,客户端删除旧视野中的NPC实体对象。
需要说明的是,在玩家角色在开放世界移动的过程中,会重复执行上述的步骤916至步骤923,即当检测到玩家角色在开放世界中移动的距离大于距离阈值时,服务器可以实时高效地通知客户端玩家角色的视野变化,无缝更新和切换玩家角色的视野范围,保证玩家的游戏体验,同时旧视野中的NPC实体对象被删除之后,可以释放内存,降低流量消耗。
在一些实施例中,玩家下载完游戏,打开游戏客户端注册时开始初始化新账号数据,当初始化进程来到NPC基础数据时,相关组件会从预创建出的NPC全量数据列表中取出一份事先处理好的NPC基础数据直接赋予玩家,没有了整个庞大数据的初始化工作,注册流程会有很大的改善。
玩家注册进入游戏后,服务器根据玩家控制的角色的AOI会选取权重最高的一批NPC,接着对筛选得到的NPC进行实例化处理,得到对应的NPC实体对象,并且下发给客户端展示。随着玩家角色的移动,客户端会不断上报玩家角色在开放世界中的当前位置,当服务器检测到玩家角色的位置移动达到某一阈值时,便会触发玩家角色的AOI的更新。例如服务器可以选择当前AOI内权重最高的一批NPC进行实例化处理,得到对象集合B,并且和旧的AOI内的对象集合A进行差集计算,集合A和集合B的交集中的实体对象是视野变化前后均有的NPC实体对象,保留不做任何处理,集合B有但集合A没有的对象属于新进入视野的NPC实体对象,服务器会下发相关数据给客户端进行展示;集合B没有但集合A有的对象是旧AOI里的NPC实体对象,服务器会通知客户端进行删除,通过这样的流程处理,服务器可以实时高效地通知客户端玩家角色的视野变化。
示例的,参见图10,图10是本申请实施例提供的虚拟场景的数据处理方法的应用场景示意图,如图10所示,玩家注册进入游戏后,在玩家控制的角色(即玩家角色1000)的视野范围1001中显示有权重最高的一批NPC实体对象,例如包括种子怪1002和石头怪1003,随后当玩家角色1000在注册地附近移动后视野发生变化,在新的视野范围1004出现了两个新的NPC实体对象,例如黑衣人1005和他守护的黑箱1006。
综上所述,本申请实施例提供的虚拟场景的数据处理方法具有以下有益效果:
(1)针对所有的NPC生成规则,本申请实施例提供的方案做出了非常有益的分类,针对不同类型的生成规则采取相对应的处理策略,例如玩家注册伊始就应该存在且生效的生成规则其实就没有存储的必要,直接从该生成规则中提取NPC基础数据即可,而且也不必要后续再去迭代检测;而针对需要检测的生成规则,也会根据不同的触发条件再次进行分类,从而做到精准高效的检测处理,降低了服务器的内存使用,提高了检测处理效率;
(2)NPC生成规则和NPC基础数据属于玩家及其重要的数据,为了提高注册效率,降低注册时延,针对这部分的数据,本申请实施例采用在服务器空闲的时候创建一定数量的NPC基础数据进行暂存,供注册时直接取用,而不是实时创建,有效利用了服务器的算力,避免服务器有时候非常空闲,有时候非常繁忙,使其CPU消耗处于稳定;
(3)玩家角色的AOI内NPC实体对象的数量采取有限但是不影响玩家游戏体验的策略,目的在于减少服务器的内存使用和CPU处理压力,同时也是为了降低流量消耗和客户端的处理负担。为了达到这一目的,NPC实例化器从NPC数据管理器中获取AOI内的NPC基础数据集合,然后经过NPC过滤筛选器筛选得到权重靠前的N个NPC的基础数据,再进行实例化处理,创建对应的实体对象;
(4)每个数据流处理过程封装成组件,具有高度内聚性,对外提供必需的数据访问接口,犹如搭积木一般实现所需的功能,扩展性和可维护性都非常好。
下面继续说明本申请实施例提供的虚拟场景的数据处理装置243的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器240的虚拟场景的数据处理装置243中的软件模块可以包括:NPC数据管理器2431、NPC数据索引器2432、NPC过滤筛选器2433和NPC实例化器2434。
NPC数据管理器2431,配置为获取玩家角色在虚拟场景中的当前位置,并确定包括当前位置的当前查询范围;NPC数据索引器2432,配置为根据当前查询范围从基础数据库查询与当前查询范围内待生成的多个非玩家角色分别对应的基础数据,其中,每个非玩家角色的基础数据包括用于对非玩家角色进行实例化处理的多个属性;NPC过滤筛选器2433,配置为确定多个非玩家角色的权重,并确定多个非玩家角色的权重到降序排序结果;NPC实例化器2434,配置为将降序排序结果中从首位开始的第一数量的非玩家角色进行实例化处理,得到与第一数量的非玩家角色分别对应的第一数量的实体对象,其中,第一数量小于多个非玩家角色的总数;以及用于向控制玩家角色的客户端发送第一数量的实体对象,以使客户端在当前查询范围内显示第一数量的非玩家角色对应的虚拟形象。
在一些实施例中,NPC过滤筛选器2433,还配置为针对每个非玩家角色执行以下处理:对非玩家角色的至少一个维度的状态进行量化处理,对应得到至少一个量化值;当至少一个量化值的数量为一个时,将量化值确定为非玩家角色的权重;当至少一个量化值的数量为多个时,对多个量化值进行加权求和处理,将得到的加权求和结果确定为非玩家角色的权重。
在一些实施例中,NPC过滤筛选器2433,还配置为根据当前查询范围所在区域的类型,采用与类型对应的调整方式对多个非玩家角色的权重进行调整;将经过调整后的多个非玩家角色中权重超过权重阈值的至少一个非玩家角色,确定为第一数量的非玩家角色。
在一些实施例中,第一数量是根据服务器的负载动态确定的;NPC实例化器2434,还配置为通过执行以下处理之一确定第一数量:将服务器当前的负载与设定的参考负载进行比较,其中,参考负载是通过预设值进行标定的;当负载低于参考负载时,对预设值增大预定幅度或比例,并将增大后的预设值确定为第一数量;当负载高于参考负载时,
对预设值减小预定幅度或比例,并将减小后的预设值确定为第一数量;在预先设置的多个参考负载区间中,确定服务器当前的负载所处的区间,并将区间对应的实例化数量确定为第一数量,其中,不同的参考负载区间对应不同的实例化数量。
在一些实施例中,基础数据库通过多叉树结构存储虚拟场景中的所有非玩家角色的基础数据,多叉树结构包括:一个顶层节点,代表虚拟场景;多个中间节点,每个中间节点代表虚拟场景中的一个空间,空间包括下属的多个子空间的索引;多个叶子节点,每个叶子节点代表所归属的中间节点中的一个子空间,子空间包括位于子空间中的非玩家角色的基础数据;NPC过滤筛选器2433,还配置为根据当前查询范围查询多叉数结构,得到多叉数结构中被当前查询范围覆盖的至少一个中间节点;查询被覆盖的每个中间节点包括的每个叶子节点,将查询到的多个非玩家角色分别对应的基础数据,作为与当前查询范围内待生成的多个非玩家角色分别对应的基础数据。
在一些实施例中,非玩家角色的基础数据是从非玩家角色的生成规则提取的,生成规则的类型包括静态生成规则和动态生成规则,且动态生成规则存储于规则数据库中;NPC数据管理器2431,还配置为响应于规则数据库中的任一动态生成规则过期,从基础数据库中删除从任一动态生成规则提取的基础数据;响应于任一中间节点代表的多个子空间中的至少部分基础数据被删除,且多个子空间中剩余的基础数据的数据量小于数据量阈值,将多个子空间合并为1个叶子节点。
在一些实施例中,非玩家角色的基础数据是从非玩家角色的生成规则提取得到的,生成规则的类型包括静态生成规则和动态生成规则,且动态生成规则存储于规则数据库中;NPC数据管理器2431,还配置为响应于规则数据库中的任一动态生成规则包括的任意一个规则执行条件被满足,从任一动态生成规则提取非玩家角色对应的基础数据;将提取的非玩家角色的基础数据存入多叉数结构中的目标叶子节点,其中,提取的非玩家角色的基础数据包括非玩家角色的位置,且非玩家角色的位置属于目标叶子节点的子空间;响应于目标叶子节点的数据量达到数据量阈值,将目标叶子节点转换为新的中间节点,并将目标叶子节点中存储的基础数据转移到新的中间节点下属的两个新的叶子节点。
在一些实施例中,NPC实例化器2434,还配置为比较当前查询范围和历史查询范围,其中,历史查询范围是包括历史位置的查询范围,历史位置是玩家角色在当前位置之前在虚拟场景中所处的位置;以及配置为响应于当前查询范围与历史查询范围完全不同,转入执行向控制玩家角色的客户端发送第一数量的实体对象的处理;NPC实例化器2434,还配置为响应于当前查询范围与历史查询范围存在交叉区域,向控制玩家角色的客户端发送其他非玩家角色对应的实体对象,其他非玩家角色为第一数量的非玩家角色中位于交叉区域以外的非玩家角色,以使客户端继续显示交叉区域中的非玩家角色对应的虚拟形象、以及其他区域中的非玩家角色对应的虚拟形象,其他区域为当前查询范围中除交叉区域外的区域;以及配置为响应于历史查询范围相对于当前查询范围存在差异区域,向控制玩家角色的客户端发送通知消息,其中,通知消息用于通知客户端删除差异区域中的非玩家角色对应的实体对象。
在一些实施例中,NPC数据管理器2431,还配置为针对位于差异区域中的每个非玩家角色执行以下处理:在基础数据库中增加一个新的字段,将非玩家角色对应的实体对象的状态数据存储至新的字段中。
在一些实施例中,NPC实例化器2434,还配置为响应于玩家角色离开当前查询范围后再次返回当前查询范围,向客户端发送其他非玩家角色的实体对象,其中,其他非玩家角色为当前查询范围中除第一数量的非玩家角色之外的非玩家角色。
在一些实施例中,NPC数据管理器2431,还配置为将基于当前位置的第一人称视
角或第三人称视角的视野,确定为包括当前位置的当前查询范围;或者,配置为将以当前位置为中心的设定尺寸的几何区域,确定为包括当前位置的当前查询范围。
在一些实施例中,在基础数据库中存储有每个非玩家角色的基础数据;在规则数据库中存储有与每个非玩家角色对应的生成规则,且生成规则的类型均为动态生成规则,动态生成规则是具有动态变化属性的非玩家角色的生成规则,每个动态生成规则包括多个规则执行条件,且当不同的规则执行条件被满足时,从动态生成规则提取得到的基础数据不同;NPC数据管理器2431,还配置为通过以下方式更新基础数据库:对规则数据库中存储的每个动态生成规则进行过期检查;响应于规则数据库中出现过期的动态生成规则,删除基础数据库中从过期的动态生成规则提取的基础数据、以及从规则数据库中删除过期的动态生成规则;响应于规则数据库中的任一动态生成规则包括的规则执行条件被满足,从任一动态生成规则提取新的基础数据,并将基础数据库中与任一动态生成规则对应的原有的基础数据替换为新的基础数据。
在一些实施例中,每个动态生成规则还包括解锁条件;NPC数据管理器2431,还配置为通过以下方式更新规则数据库:响应于规则数据库中的任一动态生成规则满足规则删除条件,将任一动态生成规则作为过期的动态生成规则,并从规则数据库中删除过期的动态生成规则;响应于全量数据库中的任一动态生成规则包括的解锁条件被满足,将任一动态生成规则存入规则数据库中。
在一些实施例中,虚拟场景的数据处理装置243还包括NPC数据预创建器2435,配置为在玩家角色的注册阶段,通过以下方式初始化规则数据库和基础数据库:从全量数据库中获取全部生成规则;将全部生成规则分类为静态生成规则和动态生成规则,其中,静态生成规则是具有固定属性的非玩家角色的生成规则,动态生成规则是具有动态变化属性的非玩家角色的生成规则;从静态生成规则提取具有固定属性的非玩家角色对应的基础数据,从动态生成规则提取具有动态变化属性的非玩家角色对应的基础数据,并将所提取的基础数据存入基础数据库中;将动态生成规则存入规则数据库中。
在一些实施例中,虚拟场景的数据处理装置243还包括NPC生成规则配置预处理器2436,配置为通过以下方式初始化全量数据库:在初始化阶段中,获取针对虚拟场景配置的全部生成规则,其中,初始化阶段包括以下至少之一:服务器的启动阶段,服务器的负载低于负载阈值的阶段;基于全部生成规则,确定在虚拟场景中需要生成的非玩家角色的类型;从全部生成规则提取每个类型的非玩家角色的基础数据,并将所提取的基础数据、以及全部生成规则存入全量数据库中。
在一些实施例中,NPC实例化器2434,还配置为在内存空间中分配存储区域;在存储区域中生成第一数量的非玩家角色分别对应的实体对象,其中,实体对象包括代表非玩家角色的属性的变量。
需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本申请实施例提供的虚拟场景的数据处理装置中未尽的技术细节,可以根据图3、或图5任一附图的说明而理解。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序或计算机可执行指令,该计算机程序或计算机可执行指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机可执行指令,处理器执行该计算机可执行指令,使得该计算机设备执行本申请实施例上述的虚拟场景的数据处理方法。
本申请实施例提供一种存储有计算机可执行指令的计算机可读存储介质,其中存储有计算机可执行指令,当计算机可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的虚拟场景的数据处理方法,例如,如图3、或图5示出的虚拟场景的数据处理方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可被部署为在一个电子设备上执行,或者在位于一个地点的多个电子设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个电子设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (20)
- 一种虚拟场景的数据处理方法,由电子设备执行,所述方法包括:获取玩家角色在虚拟场景中的当前位置,确定包括所述当前位置的当前查询范围;根据所述当前查询范围从基础数据库查询与所述当前查询范围内待生成的多个非玩家角色分别对应的基础数据,其中,每个所述非玩家角色的基础数据包括用于对所述非玩家角色进行实例化处理的多个属性;确定所述多个非玩家角色的权重,并确定所述多个非玩家角色的权重到降序排序结果;将所述降序排序结果中从首位开始的第一数量的非玩家角色进行所述实例化处理,得到与所述第一数量的非玩家角色分别对应的第一数量的实体对象,其中,所述第一数量小于所述多个非玩家角色的总数;向控制所述玩家角色的客户端发送所述第一数量的实体对象,以使所述客户端在所述当前查询范围内显示所述第一数量的非玩家角色对应的虚拟形象。
- 根据权利要求1所述的方法,其中,所述确定所述多个非玩家角色的权重,包括:针对每个所述非玩家角色执行以下处理:确定所述非玩家角色的至少一个维度的状态分别对应的至少一个量化值;当所述至少一个量化值的数量为一个时,将所述量化值确定为所述非玩家角色的权重;当所述至少一个量化值的数量为多个时,对所述多个量化值进行加权求和处理,将得到的加权求和结果确定为所述非玩家角色的权重。
- 根据权利要求1所述的方法,其中,在将所述降序排序结果中从首位开始的第一数量的非玩家角色进行所述实例化处理之前,所述方法还包括:根据所述当前查询范围所在区域的类型,采用与所述类型对应的调整方式对所述多个非玩家角色的权重进行调整;将经过调整后的所述多个非玩家角色中权重超过权重阈值的至少一个非玩家角色,确定为所述第一数量的非玩家角色。
- 根据权利要求1所述的方法,其中,所述第一数量是根据服务器的负载动态确定的;在将所述降序排序结果中从首位开始的第一数量的非玩家角色进行所述实例化处理之前,所述方法还包括:通过执行以下处理之一确定所述第一数量:将所述服务器当前的负载与设定的参考负载进行比较,其中,所述参考负载是通过预设值进行标定的;当所述负载低于所述参考负载时,对所述预设值增大预定幅度或比例,并将增大后的所述预设值确定为所述第一数量;当所述负载高于所述参考负载时,对所述预设值减小预定幅度或比例,并将减小后的所述预设值确定为所述第一数量;在预先设置的多个参考负载区间中,确定所述服务器当前的负载所处的区间,并将所述区间对应的实例化数量确定为所述第一数量,其中,不同的所述参考负载区间对应不同的所述实例化数量。
- 根据权利要求1至4任一项所述的方法,其中,所述基础数据库通过多叉树结构存储所述虚拟场景中的所有非玩家角色的基础数据,所述多叉树结构包括:一个顶层节点,代表所述虚拟场景;多个中间节点,每个所述中间节点代表所述虚拟场景中的一个空间,所述空间包括下属的多个子空间的索引; 多个叶子节点,每个所述叶子节点代表所归属的所述中间节点中的一个子空间,所述子空间包括位于所述子空间中的所述非玩家角色的基础数据;所述根据所述当前查询范围查询基础数据库,得到与所述当前查询范围内待生成的多个非玩家角色分别对应的基础数据,包括:根据所述当前查询范围查询所述多叉数结构,得到所述多叉数结构中被所述当前查询范围覆盖的至少一个中间节点;查询被覆盖的每个所述中间节点包括的每个叶子节点,将查询到的多个非玩家角色分别对应的基础数据,作为与所述当前查询范围内待生成的多个非玩家角色分别对应的基础数据。
- 根据权利要求5所述的方法,其中,所述非玩家角色的基础数据是从所述非玩家角色的生成规则提取的,所述生成规则的类型包括静态生成规则和动态生成规则,且所述动态生成规则存储于规则数据库中;在所述玩家角色处于所述虚拟场景的过程中,所述方法还包括:响应于所述规则数据库中的任一动态生成规则过期,从所述基础数据库中删除从所述任一动态生成规则提取的基础数据;响应于任一中间节点代表的多个子空间中的至少部分基础数据被删除,且所述多个子空间中剩余的基础数据的数据量小于数据量阈值,将所述多个子空间合并为1个叶子节点。
- 根据权利要求5所述的方法,其中,所述非玩家角色的基础数据是从所述非玩家角色的生成规则提取得到的,所述生成规则的类型包括静态生成规则和动态生成规则,且所述动态生成规则存储于规则数据库中;在所述玩家角色处于所述虚拟场景的过程中,所述方法还包括:响应于所述规则数据库中的任一动态生成规则包括的任意一个规则执行条件被满足,从所述任一动态生成规则提取所述非玩家角色对应的基础数据;将提取的所述非玩家角色的基础数据存入所述多叉数结构中的目标叶子节点,其中,所述提取的所述非玩家角色的基础数据包括所述非玩家角色的位置,且所述非玩家角色的位置属于所述目标叶子节点的子空间;响应于所述目标叶子节点的数据量达到数据量阈值,将所述目标叶子节点转换为新的中间节点,并将所述目标叶子节点中存储的基础数据转移到所述新的中间节点下属的两个新的叶子节点。
- 根据权利要求1至7任一项所述的方法,其中,在向控制所述玩家角色的客户端发送所述第一数量的实体对象之前,所述方法还包括:比较所述当前查询范围和历史查询范围,其中,所述历史查询范围是包括历史位置的查询范围,所述历史位置是所述玩家角色在所述当前位置之前在所述虚拟场景中所处的位置;响应于所述当前查询范围与所述历史查询范围完全不同,转入执行向控制所述玩家角色的客户端发送所述第一数量的实体对象的处理;响应于所述当前查询范围与所述历史查询范围存在交叉区域,向控制所述玩家角色的客户端发送其他非玩家角色对应的实体对象,所述其他非玩家角色为所述第一数量的非玩家角色中位于所述交叉区域以外的非玩家角色,以使所述客户端继续显示所述交叉区域中的非玩家角色对应的虚拟形象、以及其他区域中的非玩家角色对应的虚拟形象,所述其他区域为所述当前查询范围中除所述交叉区域外的区域;响应于所述历史查询范围相对于所述当前查询范围存在差异区域,向控制所述玩家角色的客户端发送通知消息,其中,所述通知消息用于通知所述客户端删除所述差异区域中的非玩家角色对应的实体对象。
- 根据权利要求8所述的方法,其中,在向控制所述玩家角色的客户端发送通知消息之前,所述方法还包括:针对位于所述差异区域中的每个非玩家角色执行以下处理:在所述基础数据库中增加一个新的字段,将所述非玩家角色对应的实体对象的状态数据存储至所述新的字段中。
- 根据权利要求1至9任一项所述的方法,其中,在向控制所述玩家角色的客户端发送所述第一数量的实体对象之后,所述方法还包括:响应于所述玩家角色离开所述当前查询范围后再次返回所述当前查询范围,向所述客户端发送其他非玩家角色的实体对象,其中,所述其他非玩家角色为所述当前查询范围中除所述第一数量的非玩家角色之外的非玩家角色。
- 根据权利要求1至9任一项所述的方法,其中,所述确定包括所述当前位置的当前查询范围,包括:将基于所述当前位置的第一人称视角或第三人称视角的视野,确定为包括所述当前位置的当前查询范围;或者,将以所述当前位置为中心的设定尺寸的几何区域,确定为包括所述当前位置的当前查询范围。
- 根据权利要求1至9任一项所述的方法,其中,在所述基础数据库中存储有每个所述非玩家角色的基础数据;在规则数据库中存储有与每个所述非玩家角色对应的生成规则,且所述生成规则的类型均为动态生成规则,所述动态生成规则是具有动态变化属性的非玩家角色的生成规则,每个所述动态生成规则包括多个规则执行条件,且当不同的所述规则执行条件被满足时,从所述动态生成规则提取得到的基础数据不同;在所述玩家角色处于所述虚拟场景的过程中,所述方法还包括:通过以下方式更新所述基础数据库:对所述规则数据库中存储的每个所述动态生成规则进行过期检查;响应于所述规则数据库中出现过期的动态生成规则,删除所述基础数据库中从所述过期的动态生成规则提取的基础数据、以及从所述规则数据库中删除所述过期的动态生成规则;响应于所述规则数据库中的任一动态生成规则包括的规则执行条件被满足,从所述任一动态生成规则提取新的基础数据,并将所述基础数据库中与所述任一动态生成规则对应的原有的基础数据替换为所述新的基础数据。
- 根据权利要求12所述的方法,其中,每个所述动态生成规则还包括解锁条件;在所述玩家角色处于所述虚拟场景的过程中,所述方法还包括:通过以下方式更新所述规则数据库:响应于所述规则数据库中的任一动态生成规则满足规则删除条件,将所述任一动态生成规则作为过期的动态生成规则,并从所述规则数据库中删除所述过期的动态生成规则;响应于全量数据库中的任一动态生成规则包括的解锁条件被满足,将所述任一动态生成规则存入所述规则数据库中。
- 根据权利要求12或13所述的方法,其中,在获取所述玩家角色在虚拟场景中的当前位置之前,所述方法还包括:在所述玩家角色的注册阶段,通过以下方式初始化所述规则数据库和所述基础数据库:从全量数据库中获取全部生成规则;将所述全部生成规则分类为静态生成规则和动态生成规则,其中,所述静态生成规则是具有固定属性的非玩家角色的生成规则,所述动态生成规则是具有动态变化属性的非玩家角色的生成规则;从所述静态生成规则提取所述具有固定属性的非玩家角色对应的基础数据,从所述动态生成规则提取所述具有动态变化属性的非玩家角色对应的基础数据,并将所提取的所述基础数据存入所述基础数据库中;将所述动态生成规则存入所述规则数据库中。
- 根据权利要求13所述的方法,其中,所述方法还包括:通过以下方式初始化所述全量数据库:在初始化阶段中,获取针对所述虚拟场景配置的全部生成规则,其中,所述初始化阶段包括以下至少之一:服务器的启动阶段,服务器的负载低于负载阈值的阶段;基于所述全部生成规则,确定在所述虚拟场景中需要生成的非玩家角色的类型;从所述全部生成规则提取每个所述类型的所述非玩家角色的基础数据,并将所提取的所述基础数据、以及所述全部生成规则存入所述全量数据库中。
- 根据权利要求1至9任一项所述的方法,其中,所述将所述降序排序结果中从首位开始的第一数量的非玩家角色进行所述实例化处理,得到与所述第一数量的非玩家角色分别对应的第一数量的实体对象,包括:在内存空间中分配存储区域;在所述存储区域中生成所述第一数量的非玩家角色分别对应的实体对象,其中,所述实体对象包括代表所述非玩家角色的属性的变量。
- 一种虚拟场景的数据处理装置,所述装置包括:非玩家角色NPC数据管理器,配置为获取玩家角色在虚拟场景中的当前位置,并确定包括所述当前位置的当前查询范围;NPC数据索引器,配置为根据所述当前查询范围从基础数据库查询与所述当前查询范围内待生成的多个非玩家角色分别对应的基础数据,其中,每个所述非玩家角色的基础数据包括用于对所述非玩家角色进行实例化处理的多个属性;NPC过滤筛选器,配置为确定所述多个非玩家角色的权重,并确定所述多个非玩家角色的权重到降序排序结果;NPC实例化器,配置为将所述降序排序结果中从首位开始的第一数量的非玩家角色进行所述实例化处理,得到与所述第一数量的非玩家角色分别对应的第一数量的实体对象,其中,所述第一数量小于所述多个非玩家角色的总数;所述NPC实例化器,还配置为向控制所述玩家角色的客户端发送所述第一数量的实体对象,以使所述客户端在所述当前查询范围内显示所述第一数量的非玩家角色对应的虚拟形象。
- 一种电子设备,包括:存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至16任一项所述的虚拟场景的数据处理方法。
- 一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令被处理器执行时,实现权利要求1至16任一项所述的虚拟场景的数据处理方法。
- 一种计算机程序产品,包括计算机程序或计算机可执行指令,所述计算机程序或计算机可执行指令被处理器执行时,实现权利要求1至16任一项所述的虚拟场景的数据处理方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211093802.2A CN116999794A (zh) | 2022-09-08 | 2022-09-08 | 虚拟场景的数据处理方法、装置、电子设备及存储介质 |
CN202211093802.2 | 2022-09-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2024051420A1 true WO2024051420A1 (zh) | 2024-03-14 |
Family
ID=88560663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2023/111425 WO2024051420A1 (zh) | 2022-09-08 | 2023-08-07 | 虚拟场景的数据处理方法、装置、电子设备及计算机存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116999794A (zh) |
WO (1) | WO2024051420A1 (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100029384A1 (en) * | 2008-07-22 | 2010-02-04 | Sony Online Entertainment Llc | System and method for physics interactions in a simulation |
WO2015034098A1 (ja) * | 2013-09-09 | 2015-03-12 | フィールズ株式会社 | ゲーム処理装置、ゲーム処理方法及びコンピュータプログラム |
CN109499059A (zh) * | 2018-11-15 | 2019-03-22 | 腾讯科技(深圳)有限公司 | 对象的渲染方法和装置、存储介质、电子装置 |
CN113457147A (zh) * | 2021-06-25 | 2021-10-01 | 网易(杭州)网络有限公司 | 一种游戏中的信息提示方法、装置、电子设备及存储介质 |
CN113713388A (zh) * | 2021-09-01 | 2021-11-30 | 网易(杭州)网络有限公司 | 一种游戏数据处理方法、装置、设备及存储介质 |
-
2022
- 2022-09-08 CN CN202211093802.2A patent/CN116999794A/zh active Pending
-
2023
- 2023-08-07 WO PCT/CN2023/111425 patent/WO2024051420A1/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100029384A1 (en) * | 2008-07-22 | 2010-02-04 | Sony Online Entertainment Llc | System and method for physics interactions in a simulation |
WO2015034098A1 (ja) * | 2013-09-09 | 2015-03-12 | フィールズ株式会社 | ゲーム処理装置、ゲーム処理方法及びコンピュータプログラム |
CN109499059A (zh) * | 2018-11-15 | 2019-03-22 | 腾讯科技(深圳)有限公司 | 对象的渲染方法和装置、存储介质、电子装置 |
CN113457147A (zh) * | 2021-06-25 | 2021-10-01 | 网易(杭州)网络有限公司 | 一种游戏中的信息提示方法、装置、电子设备及存储介质 |
CN113713388A (zh) * | 2021-09-01 | 2021-11-30 | 网易(杭州)网络有限公司 | 一种游戏数据处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116999794A (zh) | 2023-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112044074B (zh) | 对非玩家角色寻路的方法、装置、存储介质及计算机设备 | |
US20200030700A1 (en) | Virtual environment mapping system | |
WO2021244322A1 (zh) | 瞄准虚拟对象的方法、装置、设备及存储介质 | |
CN108463273A (zh) | 基于游戏者的移动历史来进行非游戏者角色的路径寻找的游戏***等 | |
KR20210028728A (ko) | 가상 환경에서 가상 객체를 스케줄링하기 위한 방법, 장치 및 디바이스 | |
Dos Santos et al. | Distributed clustering for group formation and task allocation in multiagent systems: A swarm intelligence approach | |
US8998716B2 (en) | Gaming system for updating a presentation of a virtual game environment | |
CN111544889B (zh) | 虚拟对象的行为控制方法和装置及存储介质 | |
CN112386911B (zh) | 导航网格生成方法、装置、非易失性存储介质及电子装置 | |
CN111558221B (zh) | 虚拟场景的显示方法和装置、存储介质及电子设备 | |
CN110170171A (zh) | 一种目标对象的控制方法及装置 | |
WO2023142587A1 (zh) | 虚拟对象的控制方法、装置、设备、介质及程序产品 | |
US8260728B1 (en) | System and method for influencing behavior in a distributed virtual environment | |
WO2023142609A1 (zh) | 虚拟场景中的对象处理方法、装置、设备、存储介质及程序产品 | |
Roberts et al. | Evolutionary multi-objective optimization for landscape system design | |
CN114191822B (zh) | 一种测试方法、装置、计算机设备、存储介质和产品 | |
Asperti et al. | Crawling in rogue’s dungeons with (partitioned) a3c | |
WO2024051420A1 (zh) | 虚拟场景的数据处理方法、装置、电子设备及计算机存储介质 | |
CN114344905A (zh) | 虚拟对象的团队交互处理方法、装置、设备、介质及程序 | |
WO2024131205A1 (zh) | 预计算单元格显示方法、预计算单元格生成方法及装置 | |
Zhu et al. | Computer application in game map path-finding based on fuzzy logic dynamic hierarchical ant colony algorithm | |
CN112860579A (zh) | 业务测试方法、装置、存储介质及设备 | |
CN117695623A (zh) | 虚拟世界中物理场景资源的管理方法、装置及计算机设备 | |
CN111298432B (zh) | 虚拟对象信息获取方法、装置、服务器及可读存储介质 | |
WO2024078270A1 (zh) | 虚拟场景的处理方法、设备、***、计算机可读存储介质及计算机程序产品 |
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: 23862118 Country of ref document: EP Kind code of ref document: A1 |