Game program, information processing system, information processing device, and game processing method
The game program and system dynamically generate game events by updating voxel data, enabling interactive game environments through voxel transformations and events, enhancing player engagement.
Patent Information
- Application Number
- JP2024211587
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2024-12-04
- Publication Date
- 2026-02-19
- Estimated Expiration
- 2044-12-04
AI Technical Summary
Conventional methods only utilize voxel data for generating meshes, lacking the ability to generate game events in response to changes in voxel data.
A game program and information processing system that updates voxel data based on game processing, generating and updating display meshes, and triggering events based on voxel updates, including density changes, material transformations, and cumulative updates, to create dynamic game events.
Enables the generation of game events in response to voxel data changes, providing incentives for players to transform voxel objects by offering rewards and item placement based on voxel deformations and transformations.
Smart Images

Figure 0007818063000001 
Figure 0007818063000002 
Figure 0007818063000003
Abstract
Description
[Technical Field]
[0001] The present invention relates to a game program, an information processing system, an information processing device, and a game processing method for generating objects in a virtual space using voxel data. [Background technology]
[0002] Conventionally, a mesh of an object has been generated based on voxel data (see, for example, Non-Patent Document 1). [Prior art documents] [Non-patent literature]
[0003] [Non-Patent Document 1] "Marchingcubes: A highresolution 3D surface construction algorithm", Computer Graphics, Volume 21, Number 4, WE Lorensen, HE Cline, 1987 Summary of the Invention [Problem to be solved by the invention]
[0004] Conventionally, voxel data is only used to generate meshes.
[0005] Therefore, an object of the present invention is to provide a game program, an information processing system, an information processing device, and a game processing method that are capable of generating game events in response to changes in voxel data. [Means for solving the problem]
[0006] In order to solve the above problems, the present invention employs the following configurations (1) to (12).
[0007] (1) An example of the present invention is a game program that causes a computer to execute the following process. A process of updating voxel data defined in a virtual space, in which, for each of a plurality of voxels, at least a density indicating the degree to which the space defined by the voxel is virtually occupied by the contents is set, based on game processing. A process of generating and updating a display mesh that corresponds to voxel data and is drawn based on a virtual camera by determining the vertex coordinates of the display mesh based at least on the density included in the voxel data. When a first event occurs based on the game processing, a first voxel update process is performed to generate a first voxel update range in the virtual space and to decrease or increase the density of each voxel in the voxel data that corresponds to the first voxel update range in the virtual space. A process of updating the first parameter that indicates the degree of change to the voxel made by the first voxel update. In game processing, a process of generating a second event based on the first parameter
[0008] According to the above configuration (1), an event can be generated in response to the deformation of the voxel object, and game processing can be executed in response to the degree of deformation.
[0009] (2) In the above configuration (1), the first voxel update may be an update that reduces density, and the first parameter may be calculated based on a cumulative total of the amount of reduction in density.
[0010] According to the above configuration (2), an event can be generated in response to a transformation that erases a voxel object.
[0011] (3) In the above configuration (1), the first voxel update may be an update that reduces density, and the first parameter may be calculated based on a cumulative total of reductions in the volume of the voxel, which is based on the volume of a space in which the voxel is defined and the reduction in density of the voxel.
[0012] According to the above configuration (3), an event can be generated according to the amount of reduction in the volume of the internal region of a voxel object in virtual space.
[0013] (4) In the above configuration (1), the first parameter may be calculated based on the number of times the first voxel update has been performed.
[0014] According to the above configuration (4), an event can be generated according to the number of times the voxel object is transformed.
[0015] (5) In any of the above configurations (1) to (4), the voxel data may further include a material indicating the type of content for each of the plurality of voxels. The game program may further cause the computer to execute the following process. - Processing to determine the material of the mesh to be displayed based at least on the material contained in the voxel data A process for drawing a virtual space including a display mesh based on the vertex coordinates of the display mesh and the texture corresponding to the material of the display mesh. Calculating the first parameter for each material based on the degree of change to the voxel to which the material is set
[0016] According to the above configuration (5), an event can be generated in response to a change in each material of a voxel object.
[0017] (6) In any of the above configurations (1) to (4), the game program may further cause the computer to execute the following process. Processing to control the player character in a virtual space based on operational input A process that causes the player character to perform a first action as the first event. A process of increasing the number of times the player character can perform the second action as the first parameter based on an increase in the degree. If there are remaining execution times, a process of consuming the remaining execution times and causing the player character to perform a second action as a second event.
[0018] According to the above configuration (6), the number of times the player character can perform the second action is increased in accordance with the change in the voxel object, thereby providing the player with an incentive to transform the voxel object.
[0019] (7) In the above configuration (6), the voxel data may further include a material indicating the type of content for each of the plurality of voxels. The game program may further cause the computer to execute the following process. - Processing to determine the material of the mesh to be displayed based at least on the material contained in the voxel data A process for drawing a virtual space including a display mesh based on the vertex coordinates of the display mesh and the texture corresponding to the material of the display mesh. As the number of possible executions increases, a process of setting the material corresponding to the second action for the increased number of possible executions based on the material of the voxel changed by the first voxel update. A process of making the player character perform, as a second action, an action of releasing an object to which a material corresponding to the second action is set.
[0020] According to the above configuration (7), the material of the object related to the second action can be made to be the material based on the material of the updated voxel.
[0021] (8) In the above configuration (7), the first voxel update may be an update that decreases density. The game program may further cause the computer to execute the following process each time the number of times the first voxel update has been performed reaches a first number. -Processing to increase the number of times it can be executed A process of determining the most reduced material based on the amount of reduction in material and density of each voxel that has changed due to the first voxel update when the first number of times is reached or the first voxel updates until the first number of times is reached, and determining the most reduced material as the material corresponding to the second action.
[0022] According to the above configuration (8), the material of the object related to the second action can be made to be based on the material of the voxels whose density has decreased when or until the number of times the second action can be performed is increased.
[0023] (9) In any of the configurations (1) to (8) above, the second event may be an in-game event that occurs in response to the degree of change in the voxel indicated by the first parameter reaching a predetermined degree.
[0024] According to the above configuration (9), it is possible to provide the player with an incentive to transform as many voxel objects as possible.
[0025] (10) In the above configuration (9), the game program may cause the computer to execute the following process. A process of generating and updating vertices of a display mesh based on a method of setting vertices for a portion where a voxel having a density in a first range is adjacent to a voxel having a density in a second range lower than the first range, based on voxel data. As a second event, a process of placing an item object at a position in the virtual space where voxels having the density in the first range are defined.
[0026] According to the above configuration (10), by arranging item objects in accordance with changes in the voxel object, it is possible to give the player an incentive to transform the voxel object.
[0027] (11) In the above configuration (10), the game program may cause the computer to make an appearance determination as to whether or not to make an item object appear each time the degree of change in the voxel indicated by the first parameter increases by a predetermined degree, and if it is determined that the item object should appear, cause the item object to appear and be placed.
[0028] According to the above configuration (11), by continuously changing the voxels, item objects are periodically placed, which can motivate the player to continuously transform the voxel objects.
[0029] (12) In the above configuration (9), the game program may cause the computer to grant an in-game item to the player when the degree of change in the voxel indicated by the first parameter reaches a predetermined degree.
[0030] According to the above feature (12), by providing an item in accordance with a change in the voxel object, it is possible to give the player an incentive to transform the voxel object.
[0031] Another example of the present invention may be an information processing device or an information processing system that executes the processes in (1) to (12) above. Also, another example of the present invention may be a game processing method that causes an information processing system to execute the processes in (1) to (12) above. [Effects of the Invention]
[0032] According to the above game program, information processing system, information processing device, or game processing method, a game event can be generated in response to a change in voxel data. [Brief explanation of the drawings]
[0033] [Figure 1] A diagram showing an example of the left and right controllers attached to the main unit. [Figure 2] A diagram showing an example of the state when the left controller and right controller are detached from the main unit. [Figure 3] Six-sided views showing an example of the main unit [Figure 4] Six-sided diagram showing an example of the left controller [Figure 5] Six-sided diagram showing an example of the right controller [Figure 6] A block diagram showing an example of the internal configuration of a main unit. [Figure 7] A block diagram showing an example of the internal configuration of the main unit, left controller, and right controller. [Figure 8] FIG. 1 is a diagram showing an example of a terrain object that is a voxel object. [Figure 9] 9A and 9B are diagrams showing an example of the state before and after a part of the terrain object shown in FIG. 8 is deleted. [Figure 10] 9A and 9B are diagrams showing an example of the state before and after a part of the terrain object shown in FIG. 8 is deleted. [Figure 11] A diagram showing an example of voxel data [Figure 12] A diagram showing an example of material data [Figure 13] A diagram showing an example of the game space when an update event occurs. [Figure 14] A diagram showing an example of an update range [Figure 15] A diagram showing an example of how to set vertices [Figure 16] A diagram showing one example of how vertex materials are determined [Figure 17] A diagram showing an example of vertex simplification [Figure 18] An example of material conditions [Figure 19] FIG. 10 is a diagram showing an example of a mesh generated based on each vertex. [Figure 20] An example of how a mesh quadrilateral is divided into two triangles. [Figure 21] A diagram showing an example of how to determine the material of polygons that make up the display mesh [Figure 22] An example of materials set at each vertex of two adjacent polygons [Figure 23] An example of applying a texture to a polygon [Figure 24] A diagram showing an example of a method for determining the material of polygons that make up the judgment mesh [Figure 25] FIG. 10 is a diagram showing an example of a game image showing a player character moving on a terrain object. [Figure 26] FIG. 10 is a diagram showing an example of a game image showing a player character pulling out a fragment object from a terrain object. [Figure 27] FIG. 10 is a diagram showing an example of a game image illustrating how a fragment object is generated when a player character destroys a terrain object; [Figure 28] FIG. 10 is a diagram showing an example of a game image in a state where a throwing action by a player character is possible; [Figure 29] FIG. 29 shows an example of a game image after a change has been made to the terrain object shown in FIG. 28 due to a debris object coming into contact with the terrain object. [Figure 30]FIG. 10 is a diagram showing an example of a game image in a state where the player character is ready to perform a sucking action, but before performing the sucking action; [Figure 31] FIG. 10 is a diagram showing an example of a game image in which a player character is performing a sucking action. [Figure 32] 32A and 32B are diagrams showing an example of the state before and after the land object shown in FIG. 31 is transformed in accordance with the suck-in action; [Figure 33] An example diagram showing how the material of part of a voxel object can be changed by a suck action. [Figure 34] FIG. 10 is a diagram showing an example of a case where a fragmented portion of a voxel object occurs and a case where an erasure process is performed so that the fragmented portion does not occur. [Figure 35] FIG. 10 is a diagram showing an example of a game image in a scene after a sucking action has been performed and before a throwing action has been performed; [Figure 36] A diagram showing an example of a method for determining bullet increments and the material of the incremented bullets. [Figure 37] A diagram showing an example of how items are arranged in accordance with the transformation of a terrain object. [Figure 38] FIG. 10 is a diagram showing an example of a result image showing the results of transforming a terrain object. [Figure 39] FIG. 10 is a diagram showing an example of various data used in information processing in a game system. [Figure 40] A flowchart showing an example of the flow of game processing executed by the game system. [Figure 41] 41 is a sub-flowchart showing an example of a detailed flow of the voxel update process in step S4 shown in FIG. [Figure 42] A sub-flowchart showing an example of the detailed flow of the player character control process in step S11 shown in FIG. 40. [Figure 43] A sub-flowchart showing an example of the detailed flow of the event processing in step S12 shown in FIG. 40. DETAILED DESCRIPTION OF THE INVENTION
[0034] [1. Game system configuration] A game system according to an example of this embodiment will be described below. An example of the game system 1 according to this embodiment includes a main unit (information processing device; in this embodiment, it functions as a game device main unit) 2, a left controller 3, and a right controller 4. The left controller 3 and the right controller 4 are each detachable from the main unit 2. In other words, the game system 1 can be used as an integrated device by attaching the left controller 3 and the right controller 4 to the main unit 2. The game system 1 can also be used by separating the main unit 2 from the left controller 3 and the right controller 4 (see FIG. 2). Below, the hardware configuration of the game system 1 according to this embodiment will be described, followed by a description of the control of the game system 1 according to this embodiment.
[0035] FIG. 1 is a diagram showing an example of a state in which a left controller 3 and a right controller 4 are attached to a main unit 2. As shown in FIG. 1, the left controller 3 and the right controller 4 are each attached to and integrated with the main unit 2. The main unit 2 is a device that executes various processes (e.g., game processes) in the game system 1. The main unit 2 is equipped with a display 12. The left controller 3 and the right controller 4 are devices that have operation units that allow the user to perform inputs.
[0036] Fig. 2 is a diagram showing an example of the state in which the left controller 3 and the right controller 4 are detached from the main unit 2. As shown in Figs. 1 and 2, the left controller 3 and the right controller 4 are detachable from the main unit 2. Note that, below, the left controller 3 and the right controller 4 may be collectively referred to as "controllers."
[0037] Fig. 3 is a six-sided view showing an example of the main unit 2. As shown in Fig. 3, the main unit 2 includes a substantially plate-shaped housing 11. In this embodiment, the main surface of the housing 11 (in other words, the front surface, i.e., the surface on which the display 12 is provided) is generally rectangular.
[0038] The shape and size of the housing 11 are arbitrary. As an example, the housing 11 may be of a portable size. Furthermore, the main unit 2 alone or an integrated device in which the left controller 3 and right controller 4 are attached to the main unit 2 may be a portable device. Furthermore, the main unit 2 or the integrated device may be a handheld device. Furthermore, the main unit 2 or the integrated device may be a portable device.
[0039] 3, the main unit 2 includes a display 12 provided on the main surface of the housing 11. The display 12 displays images generated by the main unit 2. In this embodiment, the display 12 is a liquid crystal display (LCD). However, the display 12 may be any type of display device.
[0040] The main device 2 also includes a touch panel 13 on the screen of the display 12. In this embodiment, the touch panel 13 is of a type that allows multi-touch input (for example, a capacitance type). However, the touch panel 13 may be of any type, and may be of a type that allows single-touch input (for example, a resistive type).
[0041] The main unit 2 is provided with a speaker (i.e., speaker 88 shown in FIG. 6) inside the housing 11. As shown in FIG. 3, speaker holes 11a and 11b are formed on the main surface of the housing 11. The output sound of the speaker 88 is output from these speaker holes 11a and 11b, respectively.
[0042] The main unit 2 also has a left terminal 17, which is a terminal for the main unit 2 to communicate with the left controller 3 via a wired connection, and a right terminal 21, which is a terminal for the main unit 2 to communicate with the right controller 4 via a wired connection.
[0043] As shown in FIG. 3, the main unit 2 includes a slot 23. The slot 23 is provided on the upper side of the housing 11. The slot 23 has a shape that allows a predetermined type of storage medium to be inserted therein. The predetermined type of storage medium is, for example, a storage medium (e.g., a dedicated memory card) dedicated to the game system 1 and the same type of information processing device. The predetermined type of storage medium is used, for example, to store data used by the main unit 2 (e.g., application save data, etc.) and / or programs executed by the main unit 2 (e.g., application programs, etc.). The main unit 2 also includes a power button 28.
[0044] The main unit 2 has a lower terminal 27. The lower terminal 27 is a terminal through which the main unit 2 communicates with the cradle. In this embodiment, the lower terminal 27 is a USB connector (more specifically, a female connector). When the all-in-one device or the main unit 2 alone is placed on the cradle, the game system 1 can display images generated and output by the main unit 2 on a stationary monitor. In this embodiment, the cradle also has the function of charging the all-in-one device or the main unit 2 alone that is placed on it. The cradle also has the function of a hub device (specifically, a USB hub).
[0045] FIG. 4 is a six-sided view showing an example of the left controller 3. As shown in FIG. 4, the left controller 3 includes a housing 31. In this embodiment, the housing 31 has a vertically long shape, that is, a shape that is long in the up-down direction (i.e., the y-axis direction shown in FIGS. 1 and 4). The left controller 3 can also be held in a vertically long orientation when detached from the main unit 2. The housing 31 has a shape and size that allows it to be held in one hand, particularly the left hand, when held in a vertically long orientation. The left controller 3 can also be held in a horizontally long orientation. When the left controller 3 is held in a horizontally long orientation, it may be held with both hands.
[0046] The left controller 3 includes an analog stick 32. As shown in FIG. 4, the analog stick 32 is provided on the main surface of the housing 31. The analog stick 32 can be used as a direction input unit that can input directions. By tilting the analog stick 32, the user can input a direction corresponding to the tilt direction (and input a magnitude corresponding to the tilt angle). Note that instead of an analog stick, the left controller 3 may be equipped with a cross key or a slide stick that can perform slide inputs as a direction input unit. In this embodiment, input can be made by pressing the analog stick 32.
[0047] The left controller 3 is equipped with various operation buttons. The left controller 3 is equipped with four operation buttons 33 to 36 (specifically, a right button 33, a down button 34, an up button 35, and a left button 36) on the main surface of the housing 31. The left controller 3 also is equipped with a record button 37 and a - (minus) button 47. The left controller 3 is equipped with a first L button 38 and a ZL button 39 on the upper left of the side of the housing 31. The left controller 3 is also equipped with a second L button 43 and a second R button 44 on the side of the housing 31 that is attached to the main unit 2. These operation buttons are used to issue instructions according to various programs (for example, OS programs and application programs) executed on the main unit 2.
[0048] The left controller 3 also includes a terminal 42 for wired communication between the left controller 3 and the main unit 2.
[0049] FIG. 5 is a six-sided view showing an example of the right controller 4. As shown in FIG. 5, the right controller 4 includes a housing 51. In this embodiment, the housing 51 has a vertically long shape, that is, a shape that is long in the up-down direction. The right controller 4 can also be held in a vertically long orientation when detached from the main unit 2. The housing 51 has a shape and size that allows it to be held in one hand, particularly the right hand, when held in a vertically long orientation. The right controller 4 can also be held in a horizontally long orientation. When the right controller 4 is held in a horizontally long orientation, it may be held with both hands.
[0050] Like the left controller 3, the right controller 4 is equipped with an analog stick 52 as a directional input unit. In this embodiment, the analog stick 52 has the same configuration as the analog stick 32 of the left controller 3. The right controller 4 may also be equipped with a cross key or a slide stick that allows slide input, instead of an analog stick. Like the left controller 3, the right controller 4 is equipped with four operation buttons 53 to 56 (specifically, an A button 53, a B button 54, an X button 55, and a Y button 56) on the main surface of the housing 51. The right controller 4 is also equipped with a + (plus) button 57 and a home button 58. The right controller 4 is also equipped with a first R button 60 and a ZR button 61 on the upper right side of the housing 51. Like the left controller 3, the right controller 4 is also equipped with a second L button 65 and a second R button 66.
[0051] The right controller 4 also includes a terminal 64 for wired communication between the right controller 4 and the main unit 2.
[0052] Fig. 6 is a block diagram showing an example of the internal configuration of main unit 2. In addition to the configuration shown in Fig. 3, main unit 2 includes components 81-91, 97, and 98 shown in Fig. 6. Some of these components 81-91, 97, and 98 may be mounted on an electronic circuit board as electronic components and housed in housing 11.
[0053] The main unit 2 includes a processor 81. The processor 81 is an information processing unit that executes various types of information processing executed in the main unit 2, and may be composed of, for example, only a CPU (Central Processing Unit), or may be composed of an SoC (System-on-a-chip) that includes multiple functions such as a CPU function and a GPU (Graphics Processing Unit) function. The processor 81 executes various types of information processing by executing an information processing program (for example, a game program) stored in a storage unit (specifically, an internal storage medium such as flash memory 84, or an external storage medium inserted into slot 23, etc.).
[0054] The main device 2 includes a flash memory 84 and a DRAM (Dynamic Random Access Memory) 85 as examples of internal storage media built into the main device 2. The flash memory 84 and the DRAM 85 are connected to the processor 81. The flash memory 84 is a memory used primarily to store various types of data (which may be programs) saved in the main device 2. The DRAM 85 is a memory used to temporarily store various types of data used in information processing.
[0055] The main device 2 includes a slot interface (hereinafter abbreviated as "I / F") 91. The slot I / F 91 is connected to the processor 81. The slot I / F 91 is connected to the slot 23, and reads and writes data from and to a predetermined type of storage medium (e.g., a dedicated memory card) inserted into the slot 23 in accordance with instructions from the processor 81.
[0056] The processor 81 reads and writes data from and to the flash memory 84, DRAM 85, and the above-mentioned storage media as appropriate, to execute the above-mentioned information processing.
[0057] The main unit 2 includes a network communication unit 82. The network communication unit 82 is connected to the processor 81. The network communication unit 82 communicates with external devices via a network (specifically, wireless communication). In this embodiment, the network communication unit 82 connects to a wireless LAN and communicates with external devices using a method conforming to the Wi-Fi (registered trademark) standard as a first communication mode. The network communication unit 82 also performs wireless communication with other main units 2 of the same type using a predetermined communication method (e.g., communication using a proprietary protocol or infrared communication) as a second communication mode. Note that the wireless communication using the second communication mode enables wireless communication with other main units 2 located within a closed local network area, and realizes a function that enables so-called "local communication," in which data is transmitted and received by direct communication between multiple main units 2.
[0058] The main unit 2 is equipped with a controller communication unit 83. The controller communication unit 83 is connected to the processor 81. The controller communication unit 83 performs wireless communication with the left controller 3 and / or right controller 4. Any communication method may be used between the main unit 2 and the left controller 3 and right controller 4, but in this embodiment, the controller communication unit 83 performs communication with the left controller 3 and right controller 4 in accordance with the Bluetooth (registered trademark) standard.
[0059] The processor 81 is connected to the left terminal 17, right terminal 21, and lower terminal 27. When performing wired communication with the left controller 3, the processor 81 transmits data to the left controller 3 via the left terminal 17 and receives operation data from the left controller 3 via the left terminal 17. When performing wired communication with the right controller 4, the processor 81 transmits data to the right controller 4 via the right terminal 21 and receives operation data from the right controller 4 via the right terminal 21. When performing wired communication with the right controller 4, the processor 81 transmits data to the cradle via the lower terminal 27. As described above, in this embodiment, the main unit 2 can perform both wired and wireless communication with the left controller 3 and the right controller 4. When an integrated device in which the left controller 3 and the right controller 4 are attached to the main unit 2 or the main unit 2 alone is attached to the cradle, the main unit 2 can output data (e.g., image data and audio data) to a stationary monitor or the like via the cradle.
[0060] Here, the main unit 2 can communicate simultaneously (in other words, in parallel) with multiple left controllers 3. The main unit 2 can also communicate simultaneously (in other words, in parallel) with multiple right controllers 4. Therefore, multiple users can simultaneously input to the main unit 2 using their own sets of left controllers 3 and right controllers 4. For example, a first user can input to the main unit 2 using a first set of left controllers 3 and right controllers 4, while a second user can simultaneously input to the main unit 2 using a second set of left controllers 3 and right controllers 4.
[0061] The display 12 is also connected to the processor 81. The processor 81 displays on the display 12 an image generated (for example, by executing the above-described information processing) and / or an image acquired from the outside.
[0062] The main unit 2 includes a codec circuit 87 and speakers (specifically, a left speaker and a right speaker) 88. The codec circuit 87 is connected to the speakers 88 and the audio input / output terminal 25, and is also connected to the processor 81. The codec circuit 87 is a circuit that controls the input and output of audio data to and from the speakers 88 and the audio input / output terminal 25.
[0063] The main device 2 includes a power control unit 97 and a battery 98. The power control unit 97 is connected to the battery 98 and the processor 81. Although not shown, the power control unit 97 is also connected to each part of the main device 2 (specifically, each part that receives power from the battery 98, the left terminal 17, and the right terminal 21). The power control unit 97 controls the power supply from the battery 98 to each of the above parts based on instructions from the processor 81.
[0064] Furthermore, battery 98 is connected to lower terminal 27. When an external charging device (for example, a cradle) is connected to lower terminal 27 and power is supplied to main device 2 via lower terminal 27, battery 98 is charged with the supplied power.
[0065] Figure 7 is a block diagram showing an example of the internal configuration of the main unit 2, left controller 3, and right controller 4. Note that details of the internal configuration of the main unit 2 are omitted in Figure 7 because they are shown in Figure 6.
[0066] The left controller 3 is equipped with a communication control unit 101 that communicates with the main unit 2. As shown in FIG. 7 , the communication control unit 101 is connected to each component, including the terminal 42. In this embodiment, the communication control unit 101 can communicate with the main unit 2 both via wired communication via the terminal 42 and via wireless communication without using the terminal 42. The communication control unit 101 controls the method of communication between the left controller 3 and the main unit 2. That is, when the left controller 3 is attached to the main unit 2, the communication control unit 101 communicates with the main unit 2 via the terminal 42. When the left controller 3 is detached from the main unit 2, the communication control unit 101 communicates wirelessly with the main unit 2 (specifically, with the controller communication unit 83). Wireless communication between the controller communication unit 83 and the communication control unit 101 is performed in accordance with, for example, the Bluetooth (registered trademark) standard.
[0067] The left controller 3 also includes a memory 102, such as a flash memory. The communication control unit 101 is configured, for example, by a microcomputer (also called a microprocessor), and executes firmware stored in the memory 102 to perform various processes.
[0068] The left controller 3 includes buttons 103 (specifically, buttons 33 to 39, 43, 44, and 47). The left controller 3 also includes an analog stick (referred to as "stick" in FIG. 7) 32. Each button 103 and analog stick 32 repeatedly outputs information related to operations performed on the button 103 and analog stick 32 to the communication control unit 101 at appropriate timing.
[0069] The communication control unit 101 acquires information related to the input (specifically, information related to the operation or the detection results from the sensor) from each input unit (specifically, each button 103 and analog stick 32). The communication control unit 101 transmits operation data including the acquired information (or information obtained by performing a predetermined process on the acquired information) to the main unit 2. The operation data is repeatedly transmitted once every predetermined time. The interval at which the information related to the input is transmitted to the main unit 2 may or may not be the same for each input unit.
[0070] By transmitting the above operation data to the main unit 2, the main unit 2 can obtain the input made to the left controller 3. In other words, the main unit 2 can determine the operation of each button 103 and analog stick 32 based on the operation data.
[0071] The left controller 3 is equipped with a power supply unit 108. In this embodiment, the power supply unit 108 has a battery and a power control circuit. Although not shown, the power control circuit is connected to the battery and to each part of the left controller 3 (specifically, each part that receives power from the battery).
[0072] As shown in FIG. 7, the right controller 4 is equipped with a communication control unit 111 that communicates with the main unit 2. The right controller 4 also has a memory 112 that is connected to the communication control unit 111. The communication control unit 111 is connected to each component, including the terminal 64. The communication control unit 111 and memory 112 have the same functions as the communication control unit 101 and memory 102 of the left controller 3. Therefore, the communication control unit 111 can communicate with the main unit 2 both via wired communication via the terminal 64 and via wireless communication that does not use the terminal 64 (specifically, communication in accordance with the Bluetooth (registered trademark) standard), and controls the method of communication between the right controller 4 and the main unit 2.
[0073] The right controller 4 has input units similar to those of the left controller 3. Specifically, it has buttons 113 and an analog stick 52. These input units have the same functions as those of the left controller 3 and operate in the same manner.
[0074] The right controller 4 is equipped with a power supply unit 118. The power supply unit 118 has the same functions as the power supply unit 108 of the left controller 3 and operates in the same manner.
[0075] [2. Overview of processing in the game system] Next, an overview of the processing executed in the game system 1 will be described with reference to Figs. 8 to 29. In this embodiment, the game system 1 generates a game image in which terrain objects and characters (for example, a player character operated by a player) are arranged in a game space, which is a three-dimensional virtual space, and displays the game image on a display device. Note that in this embodiment, the display device on which the game image is displayed may be the above-mentioned display 12 or a stationary monitor.
[0076] [2-1. Voxel] In this embodiment, the shapes of some objects in the game space are defined by voxel data. Here, a voxel is a rectangular parallelepiped (more specifically, cubic) region arranged in a grid pattern in the game space, and voxel data is data that indicates information about each voxel. Hereinafter, an object whose shape is defined by voxel data will be referred to as a "voxel object." In this embodiment, the game system 1 stores voxel data for a plurality of voxels set in the game space as data for generating voxel objects in the game space.
[0077] Fig. 8 is a diagram showing an example of a terrain object that is a voxel object. As shown in Fig. 8, in this embodiment, the shape of a terrain object that represents terrain such as the ground is defined by voxel data (i.e., it is a voxel object). Each cube shown in Fig. 8 represents a terrain object. Note that in Fig. 8, the edges of the terrain object are shown with thick lines, but these thick lines are added to make the drawing easier to read, and in reality, the edges of the terrain object do not need to be displayed thick.
[0078] The terrain object shown in FIG. 8 is generated according to a rule such that, for example, "if a parameter included in the voxel data set for a voxel is greater than a predetermined value, a cube is placed at the position of the voxel, and if the parameter is equal to or less than the predetermined value, nothing is placed at the position of the voxel." The terrain object shown in FIG. 8 is shown for the purpose of clearly illustrating the relationship between voxels and voxel objects. In this embodiment, a voxel object is actually generated (based on voxel data) according to a rule that results in a complex shape, such as the terrain object shown in FIG. 13 (described later). Note that the rule for determining the shape of the voxel object based on the voxel data is arbitrary. In other embodiments, the game system 1 may generate a voxel object such as that shown in FIG. 8 or that shown in FIG. 13 based on object data.
[0079] The shape of a voxel object can be changed by changing the voxel data of each voxel. FIGS. 9 and 10 are diagrams showing an example of the state before and after a portion of the terrain object shown in FIG. 8 is deleted. That is, when the hatched portion of the terrain object shown in FIG. 9 is destroyed, the terrain object changes to a shape as shown in FIG. 10. At this time, the game system 1 can easily erase the terrain object by rewriting the voxel data (described later) for the voxels in the hatched portion so that they indicate that the terrain object does not exist. Note that when adding a terrain object, the game system 1 can easily change the shape of the terrain object by changing the voxel data of each voxel, just as when erasing a terrain object.
[0080] In this way, the game system 1 can freely change the shape of a voxel object by rewriting the voxel data. For example, when a terrain object is destroyed in a game for some reason (for example, when a player character hits the terrain object), resulting in a change in the shape of the terrain object, the game system 1 can freely change the shape of the terrain object by changing the voxel data used to generate the terrain object, rather than directly changing the data indicating the outer shape of the terrain object (i.e., a mesh, which will be described later).
[0081] In this embodiment, voxels are defined throughout the entire game space (i.e., the voxel space in which voxels are set corresponds to the entire game space). However, the voxel space does not need to be set throughout the entire game space, and may be set in a partial area of the game space. When the voxel space is set in a partial area of the game space, the shape of the voxel object is defined by voxel data related to the voxels in the voxel space, and the position of the voxel object in the game space is defined by the position of the voxel space in the game space. Furthermore, the game space may be set with a main voxel space set over the entire game space and a sub-voxel space set in a partial area of the game space. In this case, the game system 1 stores voxel data for each voxel space.
[0082] 11 is a diagram showing an example of voxel data. The voxel data includes density data, a first material ID, a second material ID, material mixing ratio data, and state data for each voxel defined in the game space. In the voxel data of this embodiment, these data are set for each voxel.
[0083] The density data indicates density, which is an index used to define the shape of a voxel object based on the voxel (specifically, the shape defined by a mesh, which will be described later). As will be described in detail later, the position and shape of the surface of the voxel object (i.e., the mesh, which will be described later) are determined based on the density.
[0084] In this embodiment, density can take an integer value ranging from a lower limit (e.g., 0) to an upper limit (e.g., 255). In this embodiment, the game system 1 determines the surface shape of a voxel object based on density such that a high density value set for a voxel tends to increase the volume ratio of the area inside the voxel object within that voxel, and a low density value tends to decrease that ratio. In this way, density is an index that affects the volume ratio of the area inside the voxel object within that voxel. Density can also be considered an index that indicates the degree to which the space of that voxel is occupied by virtual contents (i.e., the virtual contents of the voxel object). For example, a density of 0 means that the voxel is empty; a density of 255 means that the entire voxel is occupied by the contents of the voxel object; and a density value between 0 and 255 means that the contents of the voxel object occupy the voxel at a ratio according to the value. Then, the shape of the mesh, i.e., the surface shape of the voxel object, can be determined based on the density. The mesh can be described as the surface of the portion of the voxel where content exists, or as the boundary between the portion of the voxel where content exists and the portion of the voxel where content does not exist. Note that the volume occupied by the region within the voxel object generated based on the density does not need to be a volume that strictly matches the proportion indicated by the density. For example, the volume of the voxel object generated by a method such as that shown in Figure 8 and a method such as that shown in Figure 13 may differ even if they are based on the same density.
[0085] In other embodiments, the density may indicate either the entire area of the voxel being occupied by the volume of the area in the voxel object, or the area in the voxel not including the volume of the area in the voxel object. For example, the density data may be data that can only take on the values 0 or 1.
[0086] The first material ID and the second material ID are information indicating the material (in other words, the substance) of the voxel. In this embodiment, a material such as sand, rock, or soil is set to the voxel. Note that the game system 1 provides a plurality of types of materials that can be set to the voxel (see the material data shown in FIG. 12). In this embodiment, up to two materials from the plurality of types of materials provided can be set to one voxel. The first material ID is an ID indicating the first material set to the voxel, and the second material ID is an ID indicating the second material set to the voxel. As will be described in detail later, the material of a voxel object (i.e., the material set to the polygons of the voxel object) is determined based on the material set to the voxel.
[0087] As described above, in this embodiment, the voxel data includes an ID indicating the material, but in other embodiments, the voxel data may have a data structure that includes data that directly indicates the content of the material (i.e., the name, properties, and drawing setting information described below).
[0088] The material mixing ratio data is an example of data indicating the ratio of each material in a voxel. In this embodiment, since up to two material IDs can be set for one voxel, the material mixing ratio data indicating the ratio of one of the materials indicated by the first material ID and the second material ID can also indicate the ratio of the other material. In this embodiment, the material mixing ratio is a value between 0 and 1 indicating the ratio of the second material to the entire first and second materials. For example, if the material mixing ratio set for a certain voxel is 0.4, this indicates that the first material and the second material are composed in a ratio of 0.6:0.4 in that voxel. As will be described in detail later, the appearance and properties of a voxel object are determined based on the materials. The material mixing ratio is used to determine the appearance and properties of a voxel object. In other embodiments, the material mixing ratio may be a value indicating the ratio of the first material. Furthermore, the ratio of materials in a voxel may be represented by individual values indicating the ratio of each material. In particular, in other embodiments, when three or more types of materials can be set instead of two, the ratio of the materials within the voxel is expressed as a plurality of values indicating the proportion of each material.
[0089] In this embodiment, two types of materials do not necessarily have to be set for a voxel, and one type of material may be set. For example, if one type of material is set for a certain voxel, the first material ID indicates that material, and the material mixing ratio is set to 0.
[0090] The state data indicates the state set for the voxel. The specific content and number of types of state data are arbitrary. In this embodiment, the state data includes data indicating the amount of damage set for the voxel. Note that in other embodiments, the state data may include, for example, data indicating whether or not the voxel is wet (and to what extent).
[0091] As described above, in this embodiment, the voxel data includes a material ID, and the game system 1 stores material data that defines the content of the material indicated by the material ID. Fig. 12 is a diagram showing an example of material data. As shown in Fig. 12, the material data in this embodiment associates, for each material, the material ID with information about the name, properties, rendering settings, and internal material ID that are set for that material.
[0092] The name included in the material data is the name set for the material (for example, earth, sand, grass, etc.). As will be described in detail later, the name of the material of a voxel object may be displayed during the game (see Figure 28). To display it in this way, the material data includes information on the name of the material.
[0093] The properties included in the material data are properties that are set for the material. The material properties are properties that the voxel object to which the material is set has in the game. The specific content and number of types of material properties are arbitrary. For example, at least one of the following information may be set as the material properties: Hardness Weight Slipperiness - Damage settings when the player character comes into contact ·temperature Whether other objects can be glued to the voxel object The amount of health recovered by the player character when the player character destroys or acquires a voxel object The amount of in-game currency the player character will acquire when they destroy or acquire a voxel object. In other embodiments, information other than the above may be set as information indicating the properties of the material.
[0094] In this embodiment, the material data includes an ID indicating the property as information specifying the property of the material (see FIG. 12). Although not shown, the game system 1 stores property information for each prepared property in which the content of the property (for example, values indicating the weight and slipperiness described above) is associated with the property ID. The game system 1 can specify the specific content of the property set for the material by referring to the property information.
[0095] The rendering settings included in the material data are information indicating settings related to rendering, such as textures used to render the voxel object to which the material is set. In this embodiment, the material data includes, as information on the rendering settings, the IDs of the textures used to render the voxel object to which the material is set (see FIG. 12). Although not shown, the game system 1 stores texture information that associates a texture ID with the texture indicated by the texture ID for each texture provided. By referring to the texture information, the game system 1 can identify the specific content of the texture set for the material. Note that in other embodiments, in addition to texture information, any information related to shading settings may be set as information on the rendering settings. For example, information related to reflectance, normals, etc. may be set.
[0096] As shown in FIG. 12 , in the material data of this embodiment, an internal material ID is associated with a material ID. When the associated material ID indicates a material for the exterior of a certain object, the internal material ID indicates the material for the interior of the object (hereinafter referred to as the “internal material”). For example, the ID of a material representing the bark of a tree may be associated with the ID of a material representing the interior of the tree as the internal material ID. Also, for example, the ID of a material representing a grassy ground may be associated with the ID of a material representing the soil inside when the grass on the ground surface is removed as the internal material ID. In this embodiment, an internal material is set in advance for each material type. However, depending on the material type, an internal material may not be set, that is, an internal material ID may not be associated with a material ID. As will be described in detail later, the internal material is used as the changed material when a material change process is performed on a voxel to which a material associated with the internal material is set (see [2-8-1. Examples of Events in Which the Number of Bullets is Increased and an Event in which the Player Character Throws Bullets] described below).
[0097] In the material data of this embodiment, the same value as the ID set as the internal material ID is set as the material ID. For example, in the example shown in FIG. 12, the ID of the earth material (001 in FIG. 12), which is the internal material ID associated with the ID of the grass material (003 in FIG. 12), is also set as the material ID. Therefore, by referencing the material data, it is possible to identify the name, properties, and rendering setting information associated with the internal material ID. Note that the material data may have any data structure capable of identifying information corresponding to the internal material ID. The material data may have a data structure in which the name, properties, and rendering setting information are indirectly associated with the internal material ID as described above, or a data structure in which these pieces of information are directly associated with the internal material ID.
[0098] Furthermore, the material data may include data other than the data shown in Fig. 13. For example, the material data may include data related to sound settings. For example, the data related to sound settings may be data that defines footsteps to be output when a player character walks on a voxel object based on the voxel.
[0099] The material data may be data in any format that can identify the properties and / or rendering settings of a material. For example, in another embodiment, the material data may have a data structure that includes data that directly indicates the properties and / or rendering settings of a material, instead of a data structure that includes a material ID or a texture ID.
[0100] [2-2. Updating Voxel Data] During the game, the voxel data is updated, thereby deforming the voxel object. In this embodiment, when a game event for updating the voxel object (hereinafter referred to as an "update event") occurs, the game system 1 updates the voxel data. The specific content of the update event is arbitrary. The update event may be, for example, an action by a character appearing in the game that deforms the voxel object (e.g., a player character punching a voxel object), or the occurrence of an event that deforms the voxel object (e.g., an object thrown by a character coming into contact with a voxel object, or a bomb exploding).
[0101] Fig. 13 is a diagram showing an example of a game space when an update event has occurred. The situation shown in Fig. 13 is a situation in which a player character 201 has performed a punch action on a terrain object 202, which is a voxel object. Details will be described later, but in the example shown in Fig. 13, the voxel data is updated so that the terrain object 202 around the position where the punch action by the player character 201 has landed is erased. This expresses the situation in which the terrain object 202 is destroyed by the punch action by the player character 201.
[0102] In this embodiment, when an update event occurs, the game system 1 sets an update range in the game space (an update range 203 in the example shown in FIG. 13 ) in which the voxel object is updated. The position, shape, and size of the update range are arbitrary. The position of the update range may be determined based on, for example, the position of contact between an object related to the update event that has occurred (e.g., the player character that delivered the punch) and the voxel object. In the example shown in FIG. 13 , the position of the update range 203 may be determined based on the position where a punch from the player character 201 has landed. For example, the center position of the update range 203 may be the position of the hit or a position a predetermined distance forward from the position of the hit. The shape and size of the update range may be determined in advance to be a shape according to the type of update event. For example, when an update event occurs due to a punch from the player character 201, the shape and size of the update range may be determined as a sphere of a predetermined size as shown in FIG. 13 . The size of the update range may also be determined according to a value indicating the degree of influence of the update event that has occurred (e.g., the strength of the punch or the size of the explosion).
[0103] The game system 1 changes the density of voxels corresponding to the set update range. Note that voxels corresponding to the update range are, for example, voxels within the update range or voxels that overlap with the update range. As a result of changing the density, the mesh of the voxel object is changed by processing described below, thereby changing the shape of the voxel object (the visible shape and the shape used for collision detection). Note that in other embodiments, in addition to changing the density of voxels included in the update range, the game system 1 may change the materials (i.e., the first material, the second material, and the material mixing ratio) of the voxels, or may change the state of the voxels.
[0104] In this embodiment, the game system 1 determines whether a voxel is included in the update range using an SDF (Signed Distance Field). The game system 1 sets an SDF indicating the update range set in the game space and performs the above determination based on the value of the SDF. The SDF represents the distance from a specified shape to an arbitrary position using a signed value. FIG. 14 is a diagram illustrating an example of the update range. In the example shown in FIG. 14, a spherical update range is set in the game space. For example, in the example shown in FIG. 14, the SDF is set so that, among positions in the game space, positions inside the shape represented by the SDF have negative SDF values and positions outside the shape represented by the SDF have positive SDF values. In this example, whether a voxel is included in the update range can be determined based on whether the SDF value is positive or negative. Furthermore, by using the signed distance value, not only simple inside / outside determination but also processes such as correction and interpolation can be performed.
[0105] In the above, an example has been described in which a change is made to a voxel object such that the voxel objects within the update range are transformed as if they were deleted, but the change made to a voxel object using the update range is not limited to this. For example, a change may be made to a voxel object such that a new voxel object is added within the update range (i.e., the volume occupied by the area within the voxel object increases by the amount of the update range) (see FIG. 29, described later). Also, a change may be made to a voxel object such that only the material of the voxels within the update range changes, without changing the density of the voxels. Also, a change in voxel density and a change in material may be made in combination.
[0106] [2-3. Calculating the vertices] When the voxel density is updated as described above, the game system 1 sets vertices based on the updated voxel data. These vertices can become vertices of the mesh of the voxel object. As will be described in detail later, in this embodiment, the vertices are simplified, and the simplified vertices become vertices of the mesh of the voxel object.
[0107] FIG. 15 is a diagram showing an example of a method for setting vertices. In the following descriptions of FIGS. 15 to 24, voxels, vertices, meshes, etc. are depicted in two dimensions for the purpose of making the drawings easier to see and the explanation easier to understand. However, in reality, vertices and meshes are set in three-dimensional space based on voxels in the three-dimensional space. In this embodiment, the game system 1 uses a method for setting vertices at coordinates based on the positions and densities of multiple surrounding voxels in an area where voxels having a density set to indicate their presence (i.e., a density equal to or greater than a reference value, described later) are adjacent to voxels having a density set to indicate their absence (i.e., a density less than a reference value, described later). Details of this method are described below.
[0108] As described above, in this embodiment, the density set for a voxel is set in the range of 0 to 255. A voxel with a density of 0 represents a completely empty state, and a voxel with a density of 255 represents a completely filled state. Densities between 0 and 255 are treated as interpolation and used to determine vertices. In this embodiment, voxels with a density equal to or greater than a reference value are virtually considered to be inside the object, and voxels with a density less than the reference value are virtually considered to be outside the object. It is also possible to virtually consider voxels with a density equal to or greater than a reference value as voxels indicating presence, and voxels with a density less than the reference value as voxels indicating absence. It is not necessary to define only voxels with a density of 0 as outside the object (i.e., the reference value = 1); the reference value may be, for example, 128. In the example shown in FIG. 15, the density of voxel 211 and the other outer voxels is set to 0, the density of voxel 212 is set to 100, which is less than the reference value, and the densities of voxels 213 and 214 are set to 150 and 210, which are greater than or equal to the reference value. In this embodiment, the game system 1 generates vertices between voxels whose densities are greater than or equal to the reference value and voxels whose densities are less than the reference value. Specifically, for each region (region surrounded by dotted lines in the drawing) spanning eight adjacent voxels (four in the drawing), a determination is made as to whether or not to generate a vertex. In other words, a vertex is generated in a region spanning both voxels whose densities are greater than or equal to the reference value and voxels whose densities are less than the reference value. The coordinates of the vertex are determined by comparing the densities of adjacent voxels along each of the X, Y, and Z axes and interpolating based on the difference in density. Note that by setting normal information that defines the position and orientation of the line connecting the vertices, the coordinates of the vertices can be further calculated based on the normal information. Normal information may be stored in advance for at least some voxels, or if not stored, normal information may be calculated based on the densities of adjacent voxels. In Fig. 15, the density of voxel 212 is less than the reference value, so voxel 212 is treated as outside the object in determining whether or not a vertex exists, but the density value of voxel 212 itself is used to calculate the coordinates of the vertices to be generated.If the reference value were set to a value lower than the density of the voxel 212, the result would be that the number of vertices would increase further to the upper right and upper left of the voxel 212 in FIG.
[0109] By setting vertices as described above, when generating a mesh connecting the set vertices (or the vertices after performing the simplification process described below on the set vertices), it is possible to generate a shape having a volume that reflects the density of each voxel to some extent. However, depending on the relationship with adjacent voxels, it is possible that a voxel with a density of 0 may include a part of an area inside the object, or that a voxel with a density of 255 may include a part of an area outside the object. Furthermore, in this embodiment, voxels with a density less than the reference value are processed as outside the object, so that the number of vertices is reduced compared to when voxels are processed as inside the object, and therefore the volume is also reduced accordingly. In this way, it is not necessary to calculate a polygon mesh so that the volume strictly corresponds to the density value.
[0110] [2-4. Determining the vertex material] The game system 1 determines a material for each vertex set as described above. The material of a vertex is determined based on the materials of the voxels surrounding the vertex. The voxels surrounding the vertex are, for example, the voxels used to determine whether or not to generate the vertex (i.e., the voxels that overlap with the "voxel-spanning area" described above). Note that in other embodiments, the voxels used to determine the material of a vertex and the voxels used to determine whether or not to generate the vertex do not need to be the same, and may be different.
[0111] FIG. 16 is a diagram showing an example of a method for determining the material of a vertex. In the example shown in FIG. 16, a vertex 219 is set for four voxels 215 to 218, and these four voxels 215 to 218 are the "voxels surrounding the vertex" described above. In an actual three-dimensional space, the number of voxels surrounding a vertex is eight. In the example shown in FIG. 16, the density of voxel 215 is set to 255, the first material is set to "sand," and the material mixture ratio is set to 0 (i.e., first material:second material = 1:0, or the second material may not be set). The density of voxel 216 is set to 0 (the first and second materials may not be set). For voxel 217, the density is set to 204, the first material is "sand," the second material is "grass," and the material mixing ratio is set to 0.3 (i.e., first material:second material = 0.7:0.3). For voxel 218, the density is set to 153, the first material is "earth," the second material is "grass," and the material mixing ratio is set to 0.4 (i.e., first material:second material = 0.6:0.4). Furthermore, the coordinates indicating the position of vertex 219 are set to (X,Y) = (0.8,0.6). Note that in this coordinate system, the left-right direction in FIG. 16 is the X coordinate, the up-down direction is the Y coordinate, and the center position of voxel 217, the bottom-left one of voxels 215 to 218 (the positions of the white circles in FIG. 13), is set to (0,0).
[0112] When determining the material of a vertex, the game system 1 calculates an evaluation value for each material in surrounding voxels based on the density of the material and a weight value based on the distance from the voxel to the vertex. First, a weight value is calculated for each voxel, and the closer the distance from the center position of the voxel to the vertex, the larger the weight value is calculated. In this embodiment, when the center position of the voxel is (x1, y1) and the coordinates of the vertex are (x2, y2), the weight value for a certain voxel is calculated according to the following formula (1): (weight value) = |(1-x1)-x2|·|(1-y1)-y2|…(1) In the example shown in FIG. 16, the weight values of the voxels 215 to 218 calculated according to the above formula (1) are as follows: (Weight value of voxel 215) = |(1-0)-0.8|·|(1-1)-0.6| = 0.12 (Weight value of voxel 216) = |(1-1)-0.8|·|(1-1)-0.6| = 0.48 (Weight value of voxel 217) = |(1 - 0) - 0.8| · |(1 - 0) - 0.6| = 0.08 (Weight value of voxel 218) = |(1-1)-0.8|·|(1-0)-0.6| = 0.32
[0113] The game system 1 also calculates the density of the material for each voxel. Here, the density of a material is a value obtained by multiplying the proportion of the material in the materials set for that voxel by the density of that voxel. In this embodiment, the density of the voxel is calculated by normalizing the values from 0 to 255 to values from 0 to 1. In the example shown in FIG. 16, the only material set for voxel 215 is sand, so the proportion of the sand material is 1 and the density of that voxel is 1, so the density of the sand material is 1. For voxel 216, the density is 0 and no material is set, so the density of the material is not calculated. Alternatively, if some material is set, the density of that material is 0. For voxel 217, the ratios of the sand and grass materials are 0.7 and 0.3, respectively, and the density of the voxel is 204 / 255 = 0.8, so the density of the sand material is 0.7 · 0.8 = 0.56, and the density of the grass material is 0.3 · 0.8 = 0.24. For voxel 218, the ratios of the dirt and grass materials are 0.6 and 0.4, respectively, and the density of the voxel is 153 / 255 = 0.6, so the density of the dirt material is 0.6 · 0.6 = 0.36, and the density of the dirt material is 0.4 · 0.6 = 0.24.
[0114] The game system 1 then calculates the evaluation value for each material based on the weight value and the material density. In this embodiment, the evaluation value for a material is the sum of the material densities calculated for each voxel, weighted according to the weight value for each voxel, for each surrounding voxel. In the example shown in FIG. 16 , the evaluation value for the sand material is 1·0.12+0.56·0.08=0.1648 because the material density for voxel 215 is 1 and the weight value is 0.12, and the material density for voxel 217 is 0.56 and the weight value is 0.08. The evaluation value for the grass material is 0.24·0.08+0.24·0.32=0.096 because the material density for voxel 217 is 0.24 and the weight value is 0.08, and the material density for voxel 218 is 0.24 and the weight value is 0.32. Furthermore, the evaluation value of the soil material for voxel 218 is 0.36·0.32=0.1152, since the material density is 0.36 and the weighting value is 0.32.
[0115] The game system 1 determines the material of the vertex based on the evaluation value of each material. Specifically, a predetermined number of materials are determined as the materials of the vertex in descending order of evaluation value. In this embodiment, the two materials with the highest evaluation values are determined as the materials of the vertex. In the example shown in FIG. 16, the evaluation values of the sand, grass, and soil materials are 0.1648, 0.096, and 0.1152, respectively. Therefore, the sand material and the soil material are determined as the materials of the vertex. The game system 1 also calculates the ratio of the two determined materials based on the evaluation values. In this embodiment, the ratio of the two materials may be expressed as a second material ratio, which is the proportion of the second material to the whole, similar to the material mixture ratio. In the example shown in FIG. 16, for example, if the first material is soil and the second material is sand, the second material ratio is expressed as 0.1648 / (0.1648+0.1152)≒0.59. In other embodiments, the value representing the ratio of the two materials may be a value representing the proportion of the first material, or a value representing the proportion of each material may be used.
[0116] In this embodiment, the game system 1 generates and stores vertex data indicating the position of a vertex, the material IDs of the first and second materials set at the vertex, and the ratio of the materials. However, any method may be used to manage the materials set at the vertices. In other embodiments, the vertex data may have a data structure that includes data that directly indicates the contents of the first and second materials.
[0117] As described above, in this embodiment, for each vertex, the game system 1 calculates a priority parameter (e.g., an evaluation value) for each material ID included in the voxel data of multiple surrounding voxels based on the voxel data. Then, based on the priority parameters, up to a predetermined number (here, two) of material IDs with high priorities are selected and determined as the material ID for the vertex. Note that the specific parameter used as the priority parameter is not limited to the evaluation value. For example, in other embodiments, an evaluation value calculated using the density of the material without using the weight value may be used as the priority parameter.
[0118] In this embodiment, the evaluation value, which is an example of a priority parameter, is calculated based on the density of multiple voxels surrounding the vertex so that the material set in a voxel with a higher density has a higher priority (i.e., the evaluation value of the material is larger, making it more likely to be selected). This allows the material of the vertex to be determined by reflecting the magnitude of the density set in the voxels.
[0119] In this embodiment, an evaluation value, which is an example of a priority parameter, is calculated based on the distance from the reference position (specifically, the center position) of multiple voxels surrounding the vertex to the vertex so that the priority of a material set to a voxel close to the vertex is higher. This allows the material of the vertex to be determined by reflecting the distance between the voxel and the vertex.
[0120] In addition, in this embodiment, the evaluation value, which is an example of a priority parameter, can be said to be calculated based on the material mixture ratios of multiple voxels surrounding the vertex, so that a material with a higher material mixture ratio has a higher priority. This makes it possible to determine the material of the vertex by reflecting the ratio of each material when multiple materials are set for one voxel.
[0121] [2-5. Simplifying vertices] In this embodiment, the game system 1 simplifies each of the vertices calculated as described above. That is, the game system 1 reduces the number of vertices by replacing some of the vertices calculated as described above with a single vertex. Note that, as will be described in detail later, the coordinates (i.e., position) and material of the replaced vertex are set based on the multiple vertices before replacement. This simplification can reduce the number of vertices and polygons that make up the mesh of a voxel object, thereby reducing the amount of memory used for processing and the processing load.
[0122] In this embodiment, the game system 1 performs simplification by representing each vertex using SVO (Sparse Voxel Octree). FIG. 17 is a diagram showing an example of vertex simplification. In FIG. 17, one square indicated by a solid line in FIG. 17(a) represents one vertex segment. Here, a vertex segment is a square region with the center position of a voxel as its vertex (in an actual three-dimensional space, a vertex segment is a cube or rectangular parallelepiped), and is a region with the dotted lines in FIG. 15 and FIG. 16 as its edges. In FIG. 17, a vertex segment with the letter "v" inside it indicates a vertex segment in which a vertex is set.
[0123] In this embodiment, the game system 1 determines whether simplification is possible for vertices in a predetermined number of adjacent vertex division regions (four in FIG. 17, eight in actual three-dimensional space). If it is determined that simplification is possible, simplification is performed for the vertices in the predetermined number of vertex division regions.
[0124] (a) of Figure 17 shows the state before simplification is performed. In the example shown in Figure 17, it is assumed that the vertex division areas within the range surrounded by the dotted line are determined to be simplifiable. At this time, the game system 1 performs simplification so that the vertices in each of the predetermined number of vertex division areas determined to be simplifiable are replaced with a single vertex (see (b) of Figure 17). As a result, the vertices in the predetermined number of vertex division areas are simplified to a single vertex.
[0125] In this embodiment, the game system 1 performs simplification in multiple stages. The number of stages is arbitrary, but FIG. 17 illustrates and explains up to the second stage. FIG. 17(b) shows the state after the first stage of simplification has been performed, and FIG. 17(c) shows the state after the second stage of simplification has been performed. In the second stage of simplification, a determination is made as to whether simplification is possible for the vertices resulting from the first stage of simplification. In the example shown in FIG. 17, if it is determined that simplification is possible for the vertex segment area within the range surrounded by the dotted line in FIG. 17(b), the vertices of that vertex segment area are simplified, resulting in the state shown in FIG. 17(c). Note that the conditions for determining whether the first stage of simplification is possible and the conditions for determining whether the second stage of simplification is possible may be the same or different.
[0126] The specific method for determining whether simplification is possible is arbitrary. In this embodiment, the conditions used for the determination are a condition related to the shape of the voxel object and a condition related to the material. In this embodiment, if both the condition related to the shape of the voxel object and the condition related to the material are satisfied, it is determined that simplification is possible, and if at least one of the condition related to the shape of the voxel object and the condition related to the material is not satisfied, it is determined that simplification is not possible.
[0127] The shape condition may be, for example, that the shape of each vertex before simplification does not change significantly from the shape of each vertex after simplification. For example, whether the shape of each vertex does not change significantly before and after simplification can be determined by calculating an index indicating the error between the mesh before simplification and the mesh after simplification and determining whether the index is equal to or less than a predetermined tolerance. For example, if the shape of each vertex before simplification is hollow, but the shape of each vertex after simplification becomes solid (i.e., the hollow information is lost due to simplification), it is determined that the shape condition is not satisfied. Whether or not the above case occurs can be determined based on, for example, the density of each voxel corresponding to the vertex segment area being determined. For example, if the shape of each vertex before simplification can be expressed only by two or more vertices, but cannot be expressed by a single vertex, it is determined that the shape condition is not satisfied. The shape condition of a voxel object may be the same as that of a conventional method using SVO.
[0128] In this embodiment, the material condition is a condition regarding the number of material types set for each vertex within the predetermined number of vertex segment regions to be simplified. FIG. 18 is a diagram illustrating an example of the material condition. FIG. 18(a) illustrates a case where the materials of vertices 221 to 224 are (grass), (grass), (grass and earth), and (grass and earth), respectively. FIG. 18(b) illustrates a case where the materials of vertices 221 to 224 are (grass and sand), (grass), (grass and earth), and (grass and earth), respectively. In this embodiment, the material condition is that the total number of material types set for each vertex to be simplified is equal to or less than a predetermined number. For example, the material condition is that the total number of material types set for each vertex to be simplified is equal to or less than the number of materials that can be set for one vertex. In this embodiment, the predetermined number is 2. For example, in the case of FIG. 18(a), the total number of material types set for vertices 221 to 224 to be simplified is two, grass and earth, so the material condition is satisfied. At this time, provided that the above-mentioned conditions regarding the shape of the object are satisfied, each of the vertices 221 to 224 is determined to be simplifiable. On the other hand, in the case of Figure 18(b), the total number of material types set for each of the vertices 221 to 224 to be simplified is three: grass, earth, and sand, so the material conditions are not satisfied. At this time, regardless of whether the above-mentioned conditions regarding the shape of the object are satisfied, each of the vertices 221 to 224 is determined to be unsimplifiable.
[0129] Note that in the game system 1, multiple types of materials may be prepared that have the same set properties but different appearances, even if they are strictly classified as different types. Some of these multiple types of materials may be considered to be the same type when determining whether or not a material satisfies a condition related to the material. For example, with regard to soil materials, multiple types of soil materials may be prepared that have the same properties but similar appearances (e.g., texture color or pattern). In such a case, the game system 1 may consider these multiple types of soil materials to be the same type when determining whether or not a material satisfies a condition related to the material.
[0130] In this embodiment, up to two types of material can be set for a vertex, just as with voxels. In contrast, in this embodiment, if the total number of material types set for each vertex to be simplified is three or more, simplification is not performed. In other words, if the total number of material types exceeds the number of materials that can be set for one vertex, simplification is not performed. Therefore, even if the number of vertices is reduced by simplification, the information about the materials set for the vertices is not lost as a result of the simplification, and the material information can be maintained.
[0131] In this embodiment, the material of a vertex after simplification is determined based on the material of each vertex before simplification. Specifically, the game system 1 sets one or two types of material set at the vertex before simplification as the first material and the second material at the vertex after simplification. This allows the material information to be maintained. The ratio of the material after simplification is determined based on the ratio of the material at each vertex before simplification. In this embodiment, the ratio of the material after simplification is calculated in the same manner as the method for calculating the ratio of the material at each vertex using the evaluation value described above. That is, the game system 1 calculates a weight value based on the distance between the vertex after simplification and the vertex before simplification, and calculates an evaluation value for each material based on the weight value and the density of the material at the vertex before simplification (note that the evaluation value of the material described above in [2-4. Determining the Material at a Vertex] can be used as the material density here). Then, the ratio of the material is calculated based on the calculated evaluation value of each material.
[0132] [2-6. Mesh Generation] In this embodiment, a mesh of a voxel object is generated based on the vertices simplified as described above. FIG. 19 is a diagram showing an example of a mesh generated based on the vertices. Note that the squares shown in FIG. 19 represent the vertex division regions described above, or vertex division regions formed by combining multiple vertex division regions into one vertex division region through simplification. As shown in FIG. 19, the game system 1 generates a mesh composed of polygons whose sides are straight lines connecting adjacent vertices of the vertex division regions. Each polygon that makes up the mesh is a triangle or a quadrangle.
[0133] In this embodiment, the game system 1 generates two types of meshes: a display mesh and a determination mesh. The display mesh is a mesh used for displaying voxel objects. The determination mesh is a mesh used for collision determination of voxel objects. As will be described in detail later, by using the above two types of meshes, the game system 1 can perform processing using meshes that are suitable for displaying voxel objects and for collision determination.
[0134] In this embodiment, the game system 1 generates the display mesh and the determination mesh based on the above-mentioned SVO data (i.e., based on the simplified vertices). This allows the vertex data used to generate the two types of meshes to be shared, thereby improving processing efficiency. Note that in other embodiments, the game system 1 may not simplify the vertices, and may generate the display mesh and / or the determination mesh based on the unsimplified vertices.
[0135] In this embodiment, the game system 1 generates a determination mesh with a simpler shape than the display mesh. Specifically, the game system 1 sets the number of vertices of the determination mesh to be fewer than the number of vertices of the display mesh. In this embodiment, the SVO data is data that stores data on vertices before simplification and data on simplified vertices in an octree structure, but also includes data used to determine whether simplification is possible. This data includes, for example, data on vertices (referred to as provisional vertices) calculated as candidates for vertices after simplification, and data on the aforementioned indicators indicating the errors between the pre-simplification vertices and the provisional vertices. For example, the game system 1 may use, among the provisional vertices, vertices whose indicators are equal to or smaller than a predetermined threshold (this threshold is assumed to be greater than the aforementioned allowable value) to generate the determination mesh. This allows the number of vertices of the determination mesh to be fewer than the number of vertices of the display mesh. By setting the number of vertices of the determination mesh to be fewer than the number of vertices of the display mesh, the processing load due to collision determination can be reduced. In addition, since the number of vertices in the display mesh is not excessively reduced, the appearance of the voxel object can be expressed in detail.
[0136] In other embodiments, the display mesh and the judgment mesh may be generated based on the same data or different data. The display mesh and the judgment mesh may have the same shape (although even in this case, the materials set for the two may be different). The number of vertices in the judgment mesh may be the same as the number of vertices in the display mesh or may be greater than the number of vertices in the display mesh.
[0137] [2-6-1.Determining the material of the display mesh] Next, an example of a method for determining the material and appearance of a display mesh will be described. In this embodiment, the game system 1 determines a material for each polygon that constitutes the display mesh. As will be described in detail later, in this embodiment, the polygons corresponding to the polygons are drawn using up to two types of textures corresponding to up to two types of materials. Therefore, the game system 1 ensures that no more than two types of material are ultimately set for each polygon that constitutes the mesh. In other embodiments, three or more types of material may be set. For example, in an embodiment in which there are three or more types of voxel materials and three or more types of vertex materials, the same number of materials may be set for the polygons.
[0138] In this embodiment, a quadrangle may be formed as a polygon that constitutes a display mesh (see FIG. 19). When determining the material of the display mesh, the game system 1 first divides the quadrangle that constitutes the display mesh into two triangles under certain conditions. The process of dividing a quadrangle into two triangles will be described below with reference to FIG. 20.
[0139] Fig. 20 is a diagram showing an example in which a quadrangle constituting a mesh is divided into two triangles. Fig. 20(a) shows the quadrangle formed by vertices 231 to 234, which are part of the vertices of the mesh, before division, and Fig. 20(b) shows the two triangles into which the quadrangle is divided. In the example shown in Fig. 20, the materials set for each of vertices 231 to 234 are grass, dirt, sand and grass, and grass, respectively.
[0140] In this embodiment, the game system 1 determines whether a division condition is satisfied when a total of three or more types of materials are set at the vertices of a quadrangle. In this embodiment, the division condition is that by dividing the quadrangle into two triangles, a total of two or fewer types of materials can be set at the vertices of the triangles. If the division condition is satisfied, the game system 1 divides the quadrangle into two triangles such that a total of two or fewer types of materials are set at the vertices. In the example shown in FIG. 20, the materials set at the vertices 231 to 234 forming the quadrangle are three types: grass, earth, and sand. Furthermore, if the quadrangle is divided into a triangle formed by vertices 231, 232, and 234 and a triangle formed by vertices 231, 233, and 234, the materials set at the vertices of the former triangle are two types: sand and grass, and the materials set at the vertices of the latter triangle are two types: grass and earth (see (b) of FIG. 20). Therefore, the division condition is satisfied for the quadrangle, and the game system 1 divides the quadrangle into two triangles.
[0141] Since there are two ways to divide a quadrangle into two triangles, if the division condition is satisfied for a triangle divided by at least one of the two methods, the game system 1 performs the division by the method that satisfies the division condition. On the other hand, if the division condition is not satisfied for a triangle divided by either of the two methods, the game system 1 performs the division by one of the two methods.
[0142] By dividing the polygon as described above, the game system 1 can generate two triangles in which two or fewer types of material are set at each vertex of the quadrangle, minimizing loss of information about three or more types of material that are set at each vertex. As described above, each polygon that makes up a mesh is rendered using up to two types of texture. Therefore, by dividing the polygon as described above, the game system 1 can render the polygon using two types of texture, minimizing loss of information about the material that is set at each vertex.
[0143] In this embodiment, the game system 1 sets polygons corresponding to the polygons after the above division. That is, the vertices of the polygons after the above division become the vertices of the polygons of the display mesh.
[0144] In this embodiment, when a total of three or more types of materials are set for each vertex of a polygon constituting a display mesh, the game system 1 determines the material of the polygon by selecting two types of materials. FIG. 21 is a diagram illustrating an example of a method for determining the material of a polygon constituting a display mesh. In the example shown in FIG. 21, for vertex 241 of a triangular polygon constituting the display mesh, the first material is set to "grass," the second material is set to "earth," and the material ratio of the first material to the second material is set to 0.8:0.2. For vertex 242 of the polygon, the first material is set to "grass," the second material is set to "sand," and the material ratio of the first material to the second material is set to 0.5:0.5. For vertex 243 of the polygon, the first material is set to "sand," the second material is set to "earth," and the material ratio of the first material to the second material is set to 0.7:0.3.
[0145] When a total of three or more types of materials are set for each vertex of a polygon, the game system 1 calculates a judgment value for each material. The judgment value is calculated as the sum of the ratios of the materials set for each vertex. The game system 1 then selects the two materials with the largest judgment values as the material for the polygon. In the example shown in FIG. 21, the judgment value for the grass material is 0.8+0.5=1.3, the judgment value for the sand material is 0.5+0.7=1.2, and the judgment value for the earth material is 0.2+0.3=0.5. Therefore, the grass and sand materials are selected as the materials for the polygon shown in FIG. 21 (see (a) of FIG. 21).
[0146] Note that the specific method for selecting the material of a polygon of a display mesh is arbitrary. In other embodiments, the material of a polygon of a display mesh may be selected by any method based on information set at the vertices of the polygon. For example, the material of a polygon of a display mesh may be selected for each vertex by identifying the material with the largest proportion at that vertex, and the material identified most frequently for each vertex may be selected as the material of that polygon.
[0147] In this embodiment, the material of the polygon selected as described above is indicated by the material set at each vertex of the polygon. That is, when a material for a polygon is selected, the game system 1 changes the material set at each vertex of the polygon (i.e., the material ID included in the vertex data) to the selected material. In the example shown in FIG. 21, before the selection of the polygon material, grass and earth and sand and earth materials were set for vertices 241 and 243, respectively (see FIG. 21(a)). When grass and sand materials are selected as the polygon material as described above, the materials set at vertices 241 and 243 are changed to grass and sand (see FIG. 21(b)). Note that the material set at vertex 242 before selection is the same as the material of the selected polygon, so the material is not changed. As described above, when two types of materials are selected as the polygon material, the information on the third and subsequent materials set at each vertex of the polygon is erased.
[0148] Furthermore, the game system 1 changes the ratio of materials set for a vertex in accordance with a change in the material set for that vertex. For example, for vertex 241, the first material is grass and the second material is earth, and the first material is grass and the second material is sand. Here, the proportion of sand material is 0, so the material ratio is set to first material:second material = 1:0. In this way, the above change formally changes the material of each vertex in order to represent the material of the polygon by the material of each vertex of the polygon.
[0149] According to the above, the material set for each vertex of one polygon is only the material corresponding to the texture used for rendering, which will be described later, making it easier to execute rendering processing using texture.
[0150] Note that the above change may result in all materials being changed for a certain vertex (i.e., none of the materials before and after the change match). Such a case may occur, for example, when the material set for the vertex before the change is earth and the materials selected for the polygon are grass and sand. In such a case, the material ratio for the vertex may be set based on the material ratio for the other vertices of the polygon. For example, in the above example, if the first material set for one of the other vertices of the triangular polygon is grass and has a material ratio of grass:sand = 1:0, and the material set for the other vertex is sand and has a material ratio of sand:grass = 1:0, the material ratio for the vertex may be set to grass:sand = 0.5:0.5. The game system 1 may also determine the material ratio for the vertex taking into account the distance between the vertex and the other vertices (e.g., based on a weight value that increases as the distance decreases).
[0151] As described above, in this embodiment, for each polygon, the game system 1 selects up to a predetermined number (here, two) of material IDs from among the material IDs set to the vertices included in the polygon (i.e., material IDs set to the vertices of the polygon corresponding to the polygon), and determines them as the material ID for the polygon. This allows the game system 1 to perform rendering processing while reducing the number of textures used, while reflecting the materials set to the vertices in the appearance of the polygon.
[0152] In this embodiment, if the number of materials for all vertices constituting a polygon is equal to or less than the predetermined number, the game system 1 determines the material as the polygon's material, and if the number of materials exceeds the predetermined number, it selects a predetermined number of materials with high priority based on the priority parameters of each vertex (specifically, based on the judgment value calculated based on the evaluation value) and determines them as the polygon's material. This allows the polygon to be made up of a predetermined number of materials or less, taking priority into consideration, even if the total number of materials set for each vertex exceeds the predetermined number.
[0153] As described above, in this embodiment, the first and second materials set for each vertex of a polygon are changed to two types of materials set for that polygon. When such a change is made, there is a possibility that a discrepancy will occur between the first and second materials set for a vertex shared by two adjacent polygons.
[0154] FIG. 22 is a diagram showing an example of materials set at the vertices of two adjacent polygons. FIG. 22 shows a state ((b) of FIG. 20) in which two polygons are formed by the vertices 231 to 234 shown in FIG. 20. In the example shown in FIG. 22, the materials of the first polygon formed by the vertices 231, 233, and 234 are determined to be grass and sand, and therefore the first and second materials of these vertices should be set to grass and sand, respectively. On the other hand, the materials of the second polygon formed by the vertices 231, 232, and 234 are determined to be grass and earth, and therefore the first and second materials of these vertices should be set to grass and earth, respectively. Therefore, in the example shown in FIG. 22, a discrepancy occurs in the materials to be set for the vertices 231 and 234 shared by the two polygons.
[0155] Therefore, in this embodiment, if a discrepancy occurs in the materials to be set for a vertex shared by two polygons, the game system 1 adds another vertex at the same position as the vertex. FIG. 22(b) is a diagram showing an example of a state in which a vertex 231' is added for the vertex 231 and a vertex 234' is added for the vertex 234. In the example of FIG. 22, the game system 1 sets the first and second materials for the vertices 231 and 234 to grass and sand in accordance with the material of the first polygon. Also, the game system 1 sets the first and second materials for the vertices 231' and 234' to grass and earth in accordance with the material of the second polygon. In this way, by formally setting two vertices as vertices shared by two polygons (i.e., generating two vertex data sets having the same position but different materials), it is possible to prevent discrepancies in the materials set for the vertices.
[0156] The game system 1 generates a display mesh made up of polygons whose vertices and materials have been determined as described above. The game system 1 also draws the voxel object by drawing the polygons based on the material information (i.e., the first material and the second material) set for each vertex.
[0157] Fig. 23 is a diagram showing an example of applying a texture to a polygon. Fig. 23 shows a triangular polygon formed by the vertices 241 to 243 shown in Fig. 21. The materials set for the vertices 241 to 243 are those shown in Fig. 21(b).
[0158] The vertices of a polygon are drawn by mapping that blends the texture of the first material and the texture of the second material set for that vertex at the ratio of the materials set for that vertex (i.e., that ratio is used as the blend ratio). The textures of the first and second materials used for drawing are the textures indicated by the drawing setting information associated with each material ID associated with the vertex data in the material data (see FIG. 12) described above. In the example shown in FIG. 23, the material ratio for the vertex 241 is grass:sand = 1:0, so drawing is performed using only the grass texture. The first material for the vertex 243 is sand, so the material ratio for the sand:grass is 1:0, so drawing is performed using only the sand texture. The first material for the vertex 242 is grass, the second material for the vertex 242 is sand, so the material ratio for the grass:sand is 0.5:0.5, so drawing is performed by blending the grass texture and the sand texture at a blend ratio of 0.5:0.5.
[0159] Furthermore, for positions other than the vertices of a polygon, the game system 1 determines the blend ratio by interpolating the blend ratio at each vertex. Then, rendering is performed by mapping, blending the textures of the two materials set at each vertex based on the interpolated blend ratio. Note that any specific interpolation method may be used. One example is linear interpolation of the blend ratio between vertices. In FIG. 23, positions where a high proportion of grass material texture is applied are indicated in white, and positions where a high proportion of sand material texture is applied are indicated in black. In the example shown in FIG. 23, a grass texture is applied to vertex 241, and the blend ratio of the sand texture increases toward vertex 243. At vertex 242, the grass-to-sand blend ratio is 1:1, and at vertex 243, only the sand texture is applied. In this way, by blending and rendering the two textures set at the polygon (i.e., set at each vertex of the polygon) at a blend ratio according to the material ratio, the boundary between different materials in the display mesh can appear natural. This allows the display mesh to have a plurality of types of materials set thereto to appear natural.
[0160] [2-6-2.Determining the material of the judgment mesh] Next, an example of a method for determining the material of a determination mesh will be described. Details will be given later, but in this embodiment, a collision determination for a voxel object is performed using the determination mesh, and processing may be performed according to the material of the voxel object for which a collision has been determined. Therefore, in this embodiment, the material is also determined for the determination mesh.
[0161] In this embodiment, the game system 1 sets one type of material for each polygon that constitutes the determination mesh. Specifically, the game system 1 determines the material to be set for a polygon of the determination mesh based on information about the material set at the vertices of the polygon (i.e., information about the first and second materials and the ratio of the materials).
[0162] Fig. 24 is a diagram showing an example of a method for determining the material of polygons that make up a determination mesh. Fig. 24 shows an example of determining the material for a triangular polygon formed by each of the vertices 241 to 243 shown in Fig. 21. The materials set for each of the vertices 241 to 243 are those shown in Fig. 21(a).
[0163] When determining the material of a polygon, the game system 1 calculates a judgment value for each material set at each vertex of the polygon. In this embodiment, the method for calculating the judgment value is the same as the method for calculating the judgment value used to select the material set at the polygon of the display mesh. Note that the specific method for calculating the judgment value is arbitrary. In other embodiments, the judgment value may be calculated by any method based on the information set at the vertices of the polygon of the judgment mesh.
[0164] In the example shown in Fig. 24, the judgment values for each material are the same as in the case shown in Fig. 21, with the grass material judgment value being 1.3, the sand material judgment value being 1.2, and the earth material judgment value being 0.5. Therefore, the grass material is selected as the material for the polygon shown in Fig. 24.
[0165] As described above, in this embodiment, for each polygon, the game system 1 selects up to a predetermined number (here, one) of material IDs from among the material IDs set at the vertices of the polygon (i.e., material IDs set at the vertices of the polygon corresponding to the polygon) and determines the material ID for the polygon. This allows the game system 1 to keep the number of materials set in the determination mesh below a predetermined number. This prevents the processing according to the type of material, which is performed according to the results of collision determination using the determination mesh, from becoming complicated. Note that the method for determining the material of the polygon of the determination mesh is arbitrary and is not limited to the above. In other embodiments, the material of the polygon of the determination mesh may be determined by any method based on the information set at the vertices of the polygon.
[0166] Furthermore, in this embodiment, up to two types of material are set for the polygons of the display mesh, while one type of material is set for the polygons of the determination mesh. This allows the polygons of the display mesh to have a natural appearance using two types of texture, and prevents the processing of the determination mesh performed based on the results of collision determination using the determination mesh from becoming complicated. Note that, in other embodiments, any type of material can be set for the polygons of the display mesh and the determination mesh. The number of materials that can be set for the polygons of the display mesh and the determination mesh may both be multiple, may be the same, or may be different.
[0167] In this embodiment, up to two types of materials can be set for one voxel, and up to two types of materials can be set for one polygon in a display mesh. This makes it possible to reduce the amount of voxel data while reflecting material information set in the voxel data on the materials of the display mesh. Furthermore, in this embodiment, up to two types of materials can also be set for vertices set based on the voxel data (see FIG. 16). This allows two types of materials to be set for vertices generated during the process of obtaining a display mesh from voxel data, so that the material information set in the voxel data is not lost during the process, and the material information set in the voxel data can be reflected on the display mesh.
[0168] In another embodiment, the game system 1 may set different materials for vertices used to generate a display mesh and for vertices used to generate a determination mesh, with respect to vertices set based on voxel data. For example, the game system 1 may set up to two types of materials for vertices used to generate a display mesh, as described above, and set one type of material for vertices used to generate a determination mesh. Similarly, two types of materials may be set for polygons of the display mesh, and one type of material may be set for polygons of the determination mesh based on one type of material set for each vertex of the polygon. When one type of material is set for vertices used to generate a determination mesh, the material with the largest judgment value calculated for each material may be set as the material for that vertex. As in the present embodiment, this allows up to two types of materials to be set for each polygon in the display mesh, and only one type of material to be set for each polygon in the determination mesh. Therefore, the information about the material set in the voxel data can be reflected in the display mesh, and the processing performed according to the results of collision judgment using the judgment mesh can be prevented from becoming complicated.
[0169] As described above, in this embodiment, a display mesh and a judgment mesh may be set for one voxel object. However, depending on the game situation, it is not necessary to simultaneously set both a display mesh and a judgment mesh for one voxel object (for example, it is not necessary to set both in processing for one frame). For example, a judgment mesh may be generated in a range within the game space where collision determination is performed, but not in a range where collision determination is not performed. As an example, the game system 1 may generate judgment meshes for voxel objects within a predetermined range centered on the player character, and may generate only display meshes for voxel objects outside the predetermined range without generating judgment meshes.
[0170] Furthermore, for display meshes, the game system 1 may store data relating to the generated meshes in memory, and in frames after the meshes are generated, use the data without re-executing the mesh generation process except for the updated range. This reduces the processing load for generating display meshes. For determination meshes, data relating to the generated meshes may not be stored in memory, and meshes may be generated sequentially as needed (for example, whenever collision determination is required). This saves memory space used for mesh generation.
[0171] The above describes a method for generating meshes (i.e., display meshes and determination meshes) based on the changed voxel data when voxel data is changed from its initial state. The above method can also be used when generating meshes based on voxel data in the initial state, for example, at the start of a game. However, meshes based on voxel data in the initial state do not need to be generated based on voxel data in the initial state at the start of the game, and may be prepared in advance before the start of the game.
[0172] [2-7. Processing using meshes] Next, an example of processing using the mesh generated for a voxel object as described above will be described. In the following, we will explain an example in which terrain objects such as the ground and walls are assumed to be voxel objects, and an action occurs in the game as a result of a player character taking an action and a collision determination being performed.
[0173] FIG. 25 is a diagram showing an example of a game image showing a player character moving on a terrain object. In the example shown in FIG. 25, the material of the polygons in a part of an area 251 of the determination mesh of the terrain object, which is the ground, is set to "lava." Note that the material of the polygons in the determination mesh of the terrain object other than the area 251 is set to "rock." In the example shown in FIG. 25, the game system 1 performs a collision determination between the terrain object and the player character 201 using the determination mesh. That is, the game system 1 performs a collision determination as to whether or not the determination mesh of the terrain object comes into contact with a determination area set for the player character (for example, an area of a predetermined shape set based on the position of the player character). Then, when a collision between the polygon made of lava and the player character 201 is determined, a process of reducing the stamina of the player character 201 is performed as a process of generating an in-game action. In the above case, a process of causing the player character 201 to perform a predetermined reaction is also performed.
[0174] In this embodiment, the property information included in the material data is set to a property of lava material that reduces the stamina of the player character that comes into contact with it (for example, the property that the temperature is equal to or higher than a predetermined value). The game system 1 generates an in-game action (in the above example, a reduction in the stamina of the player character) based on the property information corresponding to the material set for the polygon in the determination mesh for which a collision has been determined by collision determination.
[0175] Note that, when a collision between the player character 201 and a polygon made of rock is determined, a process for reducing the player character's vitality is not executed. Furthermore, based on the collision, the player character 201 is controlled so as not to enter the interior of the polygon. Therefore, the player character can stand on or walk on the polygon. In this manner, in this embodiment, by setting a material for each polygon, the game system 1 can execute different processes depending on which part of the voxel object another object has come into contact with. Furthermore, the content of the executed process can be set according to the type of material. Note that in this embodiment, the player character can change the terrain object (for example, by deforming it or changing its material). For example, the player character can erase the lava portion of the terrain object or change the lava to another material. Therefore, by changing the terrain object, the player can avoid the player character's vitality from being reduced due to contact with lava.
[0176] The content of the processing executed when a collision between a voxel object and another object is determined is arbitrary. For example, if the other object is a moving object such as a player character or an enemy character, the processing may be processing to output the sound of footsteps of the object or to display an effect (e.g., an effect representing dust or water splashes) at the location of contact. In this case, the game system 1 can vary the sound of footsteps or the effect depending on the type of material set for the polygon of the contacting portion of the voxel object.
[0177] 26 is a diagram showing an example of a game image depicting a player character pulling out a fragment object from a land object. As shown in Fig. 26, in this embodiment, the player can, by inputting a predetermined operation, cause the player character 201 to perform an action (referred to as a "pull-out action") of grabbing the land object 202 and pulling out and holding a part of it as a fragment object 252. As an in-game effect caused by the pull-out action, the game system 1 erases a part of the land object 202 and generates a fragment object 252.
[0178] When a pull-out action is performed, the game system 1 specifically executes the following process. That is, when the player performs an operation input to cause the player character to perform a pull-out action, the game system 1 causes the player character to perform an action such as digging forward and grabbing, and performs a collision determination. Then, when a collision between the player character performing the pull-out action and the terrain object is determined, an update range 253 is generated based on the position and orientation of the player character. For example, the update range 253 is generated in a predetermined direction (for example, forward) based on the player character. Note that the shape and size of the update range may be determined in advance so as to correspond to the type of action of the player character. Furthermore, the game system 1 reduces the density of voxels corresponding to the update range 253. Then, by updating the mesh in accordance with the reduction in voxel density, the terrain object 202 is deformed so that the portion within the update range 253 is erased (see (b) of FIG. 26 ). In this embodiment, the density of each voxel corresponding to the update range 253 is reduced, but the voxels whose density is to be reduced may be at least a portion of the voxels corresponding to the update range 253.
[0179] Furthermore, in the above description, the voxel object corresponding to the update range 253 is unconditionally deformed by the pull-out action. However, in other embodiments, the voxel object corresponding to the update range 253 may be deformed with the amount of damage set to the voxel as a condition. For example, instead of unconditionally deforming the voxel object corresponding to the update range 253, the game system 1 may increase the amount of damage set to the voxel corresponding to the update range 253, and decrease the density of the voxel when the amount of damage exceeds a predetermined value. In this case, the amount of increase in damage may be determined according to the action performed on the voxel object.
[0180] The game system 1 also generates fragment objects 252 representing the erased portions of the terrain object 202. That is, the game system 1 generates the fragment objects 252 in a state in which the player character holds them, based on the above-mentioned pull-out action. The fragment objects 252 may be generated to have a shape corresponding to the erased portions of the terrain object 202, or may have a predetermined shape. The fragment objects 252 may or may not be voxel objects. If the fragment objects are voxel objects, a voxel space different from the voxel space of voxels corresponding to the terrain object 202, etc., is defined for the fragment objects 252.
[0181] The game system 1 determines the material of the fragment object 252. The material of the fragment object 252 is determined based on the material set for polygons in the determination mesh of the terrain object 202 that come into contact with the update range 253. The material of the fragment object 252 is determined to be the same as any one of the materials set for polygons in the determination mesh that come into contact with the update range 253. This makes it possible to make the material of the fragment object 252 the same as the material of the erased portion of the terrain object. As is clear from the above explanation, the fragment object 252 is not actually part of the terrain object. However, since the fragment object 252 is generated when a portion of the terrain object is erased and the material of the erased portion of the terrain object is inherited by the fragment object 252, the player can be given the impression that the player character 201 has removed a portion of the terrain object 202 by a pull-out action.
[0182] In this embodiment, a priority order is assigned to each type of material provided, and the game system 1 determines the material with the highest priority order among the materials assigned to each polygon of the determination mesh within the update range 253 as the material of the fragment object 252. Consider, for example, a case where the determination mesh within the update range 253 includes a polygon whose material is rock and a polygon whose material is lava. In such a case, if the material of the fragment object 252 is set to lava, an inconvenience may occur, such as the player character's stamina decreasing when the player character grasps the fragment object 252 through a pull-out action (note that, as described in FIG. 25 , the lava material is set to decrease the player character's stamina upon contact). Furthermore, as described above, if the determination mesh within the update range 253 includes polygons assigned different types of materials, it may be difficult for the player to predict what material the fragment object 252 will be made of, and the above-mentioned inconvenience may occur contrary to the player's intention. In contrast to this, in this embodiment, by setting priorities for materials set as materials for fragment objects, it is possible to reduce the possibility of the above inconvenience occurring.
[0183] FIG. 27 is a diagram showing an example of a game image illustrating the generation of fragment objects as a result of the player character destroying a terrain object. As shown in FIG. 27, in this embodiment, the player can cause the player character 201 to perform a punch action by inputting a predetermined operation. As in the case of the punch action described above, the game system 1 erases a portion of the terrain object 202 and generates a fragment object 255 as an in-game effect caused by the punch action. Specifically, the terrain object 202 is deformed so as to appear as if a portion of it has been erased. Note that, unlike the pull-out action described above, when a punch action is performed, the fragment object 255 is not grasped by the player character 201 after the punch action, but is instead placed around the position where the punch action was performed (see (b) of FIG. 27). Note that there may be cases in which the fragments corresponding to the destruction of the terrain object 202 are not generated.
[0184] When a punch action is performed, the game system 1 specifically executes the following process. That is, when a player performs an operation input to have the player character perform a punch action, the game system 1 causes the player character to perform a punch action forward and performs a collision determination. Then, when a collision between the player character performing the punch action and the terrain object is determined, an update range 254 is generated based on the position and orientation of the player character. For example, the update range 254 is generated in a predetermined direction (e.g., forward) based on the player character. Note that the position, shape, and size of the update range 254 due to the punch action may be the same as or different from the update range 253 due to the pull-out action. Then, the game system 1 reduces the density of voxels corresponding to the update range 254. As a result, the terrain object 202 is deformed by the punch action as well, so that the portion within the update range 254 is erased (see (b) of FIG. 27 ). As with the pull-out action, with respect to the punch action, instead of unconditionally deforming the voxel object corresponding to the update range 254, the game system 1 may increase the amount of damage set for the voxels within the update range 254 in response to the punch action, and decrease the density of the voxels when the amount of damage exceeds a predetermined value. Furthermore, the voxels whose density is decreased by the punch action may be at least a portion of the voxels corresponding to the update range 254.
[0185] Furthermore, the game system 1 generates fragment objects 255 corresponding to the erased portions of the terrain object 202. That is, the game system 1 generates the fragment objects 255 based on the punch action in a state where the fragment objects 255 are not held by the player character (for example, in a state where the fragment objects 255 are placed around the position where the punch action was performed). The fragment objects 255 may be generated to have a shape corresponding to the erased portions of the terrain object 202, or may have a predetermined shape. The fragment objects 255 may or may not be voxel objects.
[0186] The game system 1 determines the material of the fragment object 255. The material of the fragment object 255 is determined based on the material set for polygons in the determination mesh that comes into contact with the update range 254, among the determination meshes of the landform object 202. The material of the fragment object 255 is determined to be the same as any one of the materials set for polygons in the determination mesh that comes into contact with the update range 254. This makes it possible to make the material of the fragment object 255 the same as the material of the erased portion of the landform object. Furthermore, by generating the fragment object 255 together with the erasure of a portion of the landform object and inheriting the material of the erased portion of the landform object, the player can be given the impression that a portion of the landform object that has been destroyed by a punch action performed by the player character has been generated as a fragment object.
[0187] In this embodiment, the material of the fragment object 255 is determined to be the material with the greatest degree of decrease in density in the voxel among the materials set for the polygons in the determination mesh that come into contact with the update range 254. This makes it possible to generate a fragment object that more accurately reflects the material configuration of the portion of the terrain object that was erased by the punch action.
[0188] Note that any method can be used to determine the material of the fragment objects generated by the above-described pull-out action or punch action. For example, the method for determining the material of the fragment objects may be the same for pull-out actions and punch actions. Alternatively, for example, the material set for the largest number of polygons in the determination mesh within the update range may be determined as the material of the fragment objects. Alternatively, for example, the material set for polygons in the determination mesh within the update range that satisfy a predetermined condition (for example, polygons that come into contact with the hand of the player character performing the pull-out action or punch action) may be determined as the material of the fragment objects. In other embodiments, multiple types of materials may be set for the fragment objects.
[0189] In this embodiment, the player can cause the player character to perform an action of throwing the fragment object 252 or 255 generated as described above (hereinafter referred to as a "throw action"). The player can also cause the player character to perform an action of holding a fragment object that has been generated in response to a punch action and placed on the ground, by performing a predetermined operational input. The player character is now holding a fragment object by performing the above-described pull-out action or by performing an action of holding a fragment object after the above-described punch action. In this state, the game system 1 causes the player character to perform a throw action in response to the player's operational input, in which the player character releases the fragment object that it is holding in a predetermined direction.
[0190] 28 is a diagram showing an example of a game image in a scene where the player character 201 is ready to perform a throwing action and is deciding the throwing direction while in a throwing stance. As shown in Fig. 28, when the player character 201 is holding a fragment object 261, the player character 201 can perform a throwing action. In this state, as shown in Fig. 28, the game system 1 displays a aiming image 262 and an object information image 263 superimposed on an image showing the game space as a process for generating an action in the game.
[0191] The aiming image 262 indicates the direction (also referred to as the aim direction) in which the fragment object will be released by the throwing action. That is, in response to the player's operation input for performing the throwing action, the game system 1 moves the fragment object 261 from the position of the player character 201 toward the position in the virtual space indicated by the aiming image 262. The aim direction is controlled based on the operation input by the player. For example, the game system 1 may change the aim direction in response to an operation input for changing the orientation of the virtual camera. Specifically, the game system 1 may control the virtual camera in response to the operation input so as to rotate around the player character while maintaining the player character within its field of view, and control the aim direction to be in a direction corresponding to the line of sight of the virtual camera. At this time, the aiming image 262 is displayed, indicating the position where a straight line extending from the position of the player character in the aim direction intersects with the landform object 253. Specifically, the game system 1 performs a collision determination between the aim direction (i.e., the above-mentioned straight line extending in the aim direction) and the determination mesh of the land object 253, and if a collision is determined, displays the aim image 262. The aim image 262 is arranged so as to indicate the position of a polygon in the determination mesh that intersects with the above-mentioned straight line extending in the aim direction.
[0192] The aiming image 262 can indicate to the player the position where the fragment object will come into contact with the voxel object when the player character performs a throwing action. This makes it easier for the player to control the throwing action. Note that the specific method for controlling the aim direction and the aiming image 262 is arbitrary, and conventional methods may be used. For example, in another embodiment, when the aiming image 262 is displayed, the aiming image 262 may be displayed in a first-person perspective game image in which the player character is not displayed.
[0193] With the player character in a stance to throw the fragment object, a throwing action is performed in which the fragment object is thrown in the aimed direction in response to a predetermined operation input by the player.
[0194] The object information image 263 indicates information about the land object 253 at the position indicated by the aiming image 262. In this embodiment, the object information image 263 indicates the name of the material (rock in the example shown in FIG. 28 ) set for the polygon of the determination mesh at the position indicated by the aiming image 262. This makes it possible to present to the player the material of the voxel object that will come into contact with the fragment object thrown by the throwing action. The object information image 263 also indicates information about the properties of the material (here, hardness). This makes it possible to present to the player the properties of the voxel object that will come into contact with the fragment object thrown by the throwing action. Note that the content indicated by the object information image 263 is arbitrary. For example, in other embodiments, the object information image 263 may indicate any property related to the material set for the polygon at the position indicated by the aiming image 262, or may indicate the state of the polygon (for example, the amount of damage described above). In this embodiment, the polygons of the determination mesh have only one type of material, so the material corresponding to the aiming position is specified as one, which is suitable for displaying information about the material.
[0195] In this embodiment, when a fragment object thrown by a throwing action is determined to have come into contact with a voxel object as a result of collision determination, the game system 1 modifies the voxel object as an in-game action. FIG. 29 is a diagram illustrating an example of a game image after a fragment object 261 has come into contact with the terrain object 253 shown in FIG. 28 and modified the terrain object 253. In the example shown in FIG. 29, the terrain object 253 is deformed so that the fragment object is attached to the contact position between the fragment object and the terrain object 253. Specifically, the game system 1 generates an update range to include the contact position, and increases the voxel density in the update range, thereby deforming the terrain object 253 to the above shape. For example, the update range may be set to a shape corresponding to the shape of the fragment object, and the terrain object 253 may be deformed so that the update range is within the terrain object 253. As a result, in the example shown in FIG. 29, the terrain object 253 has a shape in which an additional portion 265 has been added to the terrain object before deformation. In the example shown in FIG. 29, the fragment object is erased in response to contact with the land object 253.
[0196] Furthermore, the material of the polygons in the added portion 265 is determined based on the material of the fragment object that has come into contact with the terrain object 253. Specifically, the game system 1 sets the material of a voxel within the update range to be the material of the fragment object. Then, the materials of the display mesh and the determination mesh are determined based on the material of the voxel. This makes it possible to make the appearance of the added portion 265 the same as that of the fragment object, thereby more easily giving the player the impression that the fragment object has been attached to the terrain object 253 (although in reality, the terrain object 253 has been deformed as described above).
[0197] In the example shown in FIG. 29 , the change made to the voxel object in response to the contact of the fragment object with the voxel object is a deformation that adds an additional portion to the voxel object. However, the change made to the voxel object is not limited to this. The change may be a change to the density of voxels or a change to the material. For example, if the fragment object has the property of exploding, the fragment object may explode in response to contact with the voxel object, and the voxel object may be deformed so that a portion of the voxel object is erased. Specifically, the game system 1 sets an update range to include the contact position and reduces the density of voxels within the update range. For example, if the material of the voxel object is lava and the material of the fragment object is ice, the material of the voxel object may be changed in response to contact with the fragment object. Specifically, the game system 1 may set an update range that includes the contact position and change the lava material of the voxels within the update range to obsidian or rock. This allows you to express a situation where a lava object is cooled by an ice object and turns into obsidian or rock.
[0198] The content of the above changes may be determined based on the material of the voxel object, based on the material of the fragment objects, or based on a combination of the material of the voxel object and the material of the fragment objects, thereby making it possible to bring about various changes to the voxel object.
[0199] The game system 1 may also determine whether to make the above-mentioned changes based on the material of the voxel object, the material of the fragment object, or a combination of the material of the voxel object and the material of the fragment object. For example, when a fragment object made of rock comes into contact with a voxel object made of rock, the game system 1 may make the changes shown in Fig. 29, but when a fragment object made of rock comes into contact with a voxel object made of iron, the game system 1 may not make the changes shown in Fig. 29.
[0200] In this embodiment, as described above, one type of material is set for the polygons of the determination mesh and the fragment objects. If multiple types of material were set for at least one of the polygons of the determination mesh and the fragment objects, it would be difficult to determine the changes to be made to the voxel object according to the material types of the determination mesh and the fragment objects when they come into contact. In contrast, in this embodiment, the determination mesh and the fragment objects determined to be in contact by collision detection each have one type of material, making it easy to determine the changes to be made to the voxel object.
[0201] [2-8. Event processing according to the deformation of voxel objects] In this embodiment, the game system 1 generates game events in response to the deformation of a voxel object. The content of the events is arbitrary. Below, examples of events in response to the deformation of a voxel object will be described, including an event in which the number of bullets thrown by a player character is increased, an event in which a player character throws bullets, an event in which an item is placed in a terrain object, and an event in which a game item is granted.
[0202] [2-8-1. Example 1 (an event in which the number of bullets is increased and an event in which the player character throws a bullet occurs)] As a first example, with reference to FIGS. 30 to 36 , an example will be described in which an event in which the number of bullets thrown by the player character is increased in accordance with the deformation of a voxel object and an event in which the player character throws bullets are performed. In this embodiment, the player character can perform an action of sucking in a voxel object (strictly speaking, an action that appears to be sucking in a voxel object) in accordance with a predetermined operation input by the player. This action deforms a voxel object, such as a terrain object, so as to erase part or all of it, and also increases the number of bullets that the player character can throw under certain conditions. In this way, by enabling the player character to perform other actions through an action that deforms a voxel object, the player can be motivated to deform the voxel object. Note that in this embodiment, the above action gives the player the impression that the player character is sucking in voxel objects to create bullets. Therefore, the above action will be referred to as a sucking action hereinafter. Hereinafter, an example will be described in which the player character performs an action of throwing the bullets obtained by the sucking action after the sucking action.
[0203] FIG. 30 is a diagram showing an example of a game image in a scene in which the player character is in a state in which it can perform a sucking action but has not yet performed the sucking action. In this embodiment, the player character 201 can enter a state in which it can perform a sucking action under certain conditions. The state in which it can perform a sucking action is a state in which the player character can perform a sucking action in response to a predetermined operation input by the player. For example, the player character 201 may be able to transform, and may be able to perform the sucking action when it has transformed into a predetermined form. Note that in other embodiments, the player character 201 may always be in a state in which it can perform a sucking action.
[0204] When the player character 201 is in a state where it is possible to perform a sucking action, the game system 1 displays an aim image 271 together with an image of the game space (see FIG. 30 ). The aim image 271 indicates the direction in which the player character 201 will perform the sucking action. The direction of the sucking action indicated by the aim image 271 is controlled based on an operation input by the player, similar to the aim direction indicated by the aim image 262 described above. Any specific method may be used to control the direction of the sucking action, and for example, it may be controlled in the same manner as the aim direction described above. As will be described in detail later, when the player character 201 performs the sucking action, voxel objects within a range including the position indicated by the aim image 271 are deformed so as to be erased. The position indicated by the aim image 271 is the position of the intersection between a straight line extending from the position of the player character 201 in the direction of the sucking action and the object. The aim image 271 may be the same as the aim image 262 shown in FIG. 28, or the object information image 263 may be displayed together with the aim image 271.
[0205] FIG. 31 is a diagram showing an example of a game image in which the player character 201 is performing a sucking action. The situation shown in FIG. 31 is a situation after the player character 201 starts the sucking action in response to a predetermined operation input by the player, with the aiming image 271 pointing at a terrain object 272 formed like a rock wall. At this time, the game system 1 updates the terrain object 272 so as to decrease the density of voxels within a range including the position pointed to by the aiming image 271, thereby deforming the terrain object 272 so that part of the terrain object 272 within that range is erased. In addition, in this embodiment, the player character 201 continues the sucking action in response to the operation input by the player. For example, the player character 201 continues the sucking action while the operation input is being performed. In this embodiment, the game system 1 causes the player character 201 to perform the sucking action while an input to a predetermined button on the controller is being continued. Therefore, the player can change the length of the sucking action, and therefore the degree of deformation of the terrain object 272, depending on the length of the period during which the operation input is performed. In this embodiment, an upper limit is set for the time that the player character 201 can continue the sucking action. However, in other embodiments, no upper limit may be set.
[0206] Although not shown, the game system 1 may display a gauge image indicating the remaining time for which the player character 201 can continue the sucking action, together with the aiming image 271. Furthermore, the game system 1 may display an image indicating the number of times a throwing action for throwing a bullet, which will be described later, can be executed (in other words, the number of bullets), together with the aiming image 271.
[0207] In this embodiment, while the sucking action continues, the game system 1 continuously executes a process of erasing a portion of the terrain object 272 at the position indicated by the aiming image 271. For example, while the sucking action is ongoing, the process of erasing a portion of the terrain object 272 is repeatedly executed for each frame. Therefore, the voxel object is deformed so that the amount of the voxel object is erased according to the time the above-mentioned predetermined operation input is continuously performed. As will be described in detail later, in this embodiment, a single deformation process deforms the voxel object so that a portion near the surface of the voxel object within a predetermined range including the position indicated by the aiming image 271 is scraped away. Then, by repeatedly executing the deformation process, the voxel object is gradually deformed so that the portion is gradually scraped away from the portion near the surface to the inner portion. Note that in this embodiment, during the sucking action, the direction of the sucking action may be changed in response to an operation input by the player.
[0208] In this embodiment, while the sucking action continues, the game system 1 displays an effect image showing wind and debris blowing from the deformed voxel object towards the player character 201. This makes it possible to create an effect that makes it appear as if the player character 201 is sucking in the voxel object through the sucking action.
[0209] Next, a specific example of processing for deforming a voxel object in accordance with a suck-in action will be described. Figure 32 is a diagram showing an example of the state of the land object shown in Figure 31 before and after being deformed in accordance with a suck-in action. Note that Figure 32 is a cross-sectional view of a wall-like land object 272 viewed from a direction along the wall surface, and the inner region of the land object 272 is indicated by diagonal lines.
[0210] When the player character 201 performs a suck-in action, the game system 1 performs a collision determination between a line 274 extending from the position of the player character 201 in the direction indicated by the aiming image 271 (i.e., the direction of the suck-in action) and the voxel object. When the line 274 comes into contact with the voxel object, the game system 1 identifies the intersection point between the line 274 and the voxel object. In the example shown in FIG. 32, an intersection point 275 between the line 274 and the terrain object 272 is identified. In the above case, the game system 1 sets a density update range 276 in which the density of the terrain object 272 is updated. In this embodiment, the density update range is expressed using an SDF. The density update range 276 is set based on the position of the identified intersection point 275. In this embodiment, the density update range resulting from the suck-in action is a spherical range centered on the intersection point 275 (see FIG. 32). Note that in other embodiments, the position of the density update range based on the position of the intersection point 275 may be arbitrary, and the shape of the density update range resulting from the suck-in action may be arbitrary.
[0211] In this embodiment, the game system 1 executes a process of setting a density update range for each frame while a sucking action is being performed. That is, when a sucking action is performed over multiple frames, the above-mentioned multiple straight lines are successively set at positions based on the sucking action, and when the two come into contact, the density update range is set at the contact position. When the orientation of the player character 201 performing the sucking action changes during the above-mentioned period, the position and direction of the straight lines are changed according to the orientation, and the density update range is set at a different position for each frame. In other embodiments, multiple density update ranges may be set simultaneously (for example, in one frame).
[0212] In this embodiment, the terrain object 272 is deformed by reducing the density of voxels that correspond to the set density update range 276 (for example, voxels within the density update range 276). In this embodiment, the game system 1 reduces the density of voxels within the density update range under certain conditions. In this embodiment, the game system 1 performs density update calculations for voxels that satisfy the conditions among the voxels within the density update range, and as a result of this calculation, the density is reduced. Note that, as will be described in detail later, in this embodiment, there are also voxels for which the density reduction amount is calculated as 0 by the density update calculation, and the density is not substantially reduced.
[0213] In this embodiment, hardness and damage information is set for each voxel. The game system 1 performs density update calculations for voxels within the density update range that satisfy conditions related to hardness and damage. In this embodiment, the hardness set for a voxel is the hardness set in the material data for the material set for the voxel. The hardness information is, for example, information indicating a hardness level, where a larger value indicates a harder material. The damage information is one piece of information indicated by the above-mentioned state data set for the voxel and indicates damage inflicted by an action or the like by the player character 201. The damage information is, for example, numerical information indicating the cumulative amount of damage inflicted. Note that the game system 1 may set, instead of damage information, information indicating a durability value that is reduced by an action or the like by the player character 201 for each voxel.
[0214] In this embodiment, the game system 1 determines voxels for which density update calculations are to be performed among the voxels within the density update range as follows.
[0215] Of the voxels within the density update range, those voxels for which the set hardness is less than the first threshold value are determined to satisfy the condition for performing density update calculations.
[0216] Furthermore, for voxels within the density update range whose set hardness is equal to or greater than the first threshold and less than the second threshold, a predetermined amount of damage is added. If the cumulative damage after the addition is equal to or greater than the predetermined threshold, the condition is determined to be satisfied. Note that if durability information is set for a voxel instead of damage information, for voxels whose set hardness is equal to or greater than the first threshold and less than the second threshold, a predetermined value is subtracted from the durability value. If the durability value after the subtraction is equal to or less than the predetermined threshold, the condition is determined to be satisfied. Note that the damage addition or durability subtraction is performed for each frame in which the voxel is determined to be within the density update range. Therefore, for example, if the voxel is included in the density update range over multiple frames, the condition is satisfied if the damage addition or durability subtraction is performed multiple times. In addition, the game system 1 may determine that the above condition is satisfied during processing in a frame at which the cumulative damage value becomes equal to or greater than a predetermined threshold value or the durability value becomes equal to or less than a predetermined threshold value, and perform the density update calculation, or may determine that the above condition is satisfied during processing in a frame after that frame (for example, the next frame), and perform the density update calculation.
[0217] Furthermore, among the voxels within the density update range, those for which the set hardness is equal to or greater than the second threshold are determined not to satisfy the conditions for performing density update calculations. In other words, for voxels for which the set hardness is equal to or greater than the second threshold, calculations for updating density in response to the suction action are not executed regardless of damage information, and the density is not updated.
[0218] As described above, by determining whether to update the density taking into account the hardness set for the voxels, it is possible to set portions of the terrain object that do not deform or portions that are difficult to deform. Also, by determining whether to update the density taking into account the damage or durability value set for the voxels, it is possible to set the terrain object so that it is deformed by multiple suck-in actions. Also, by setting different thresholds for damage or durability value for each voxel, it is possible to set portions of the terrain object that are easy to deform or portions that are difficult to deform.
[0219] For voxels within the density update range that are determined to satisfy the above conditions, the game system 1 performs a calculation to reduce the density. Note that any specific calculation method for reducing the density may be used. In this embodiment, if a voxel whose density is less than the reference value exists within a predetermined range based on the voxel, the game system 1 reduces the density of the reference voxel by a predetermined value. On the other hand, if no voxel whose density is less than the reference value exists within the predetermined range, the amount of reduction in the density of the reference voxel is set to 0, that is, the density of the reference voxel is not updated. Note that the predetermined range is, for example, a 3×3×3 range of 27 voxels centered on the voxel. According to the above calculation method, the density of voxels within the density update range that are near the position where the mesh of the voxel object is set is reduced. Therefore, in the example shown in FIG. 32 , the terrain object 272 is deformed so that the internal region of the terrain object 272 shrinks within the density update range 276. As described above, the terrain object 272 is deformed by one frame's worth of deformation processing so that the surface of the portion within the density update range 276 is scraped away. Then, by executing the deformation processing multiple times in succession, the terrain object 272 is deformed so that the interior thereof is gradually scraped away.
[0220] In this embodiment, when a voxel object is deformed by a suck-in action, the material of part of the voxel object is changed to the above-mentioned inner material. Figure 33 is a diagram showing an example of a method for changing the material of part of a voxel object by a suck-in action.
[0221] In this embodiment, when the density update range 276 described above is set in response to a suck-in action, the game system 1 sets a material update range 277, which is a range in which the material of the voxels is updated. In this embodiment, the material update range 277, like the density update range 276, is expressed by an SDF. In this embodiment, the material update range 277 is set so as to include the density update range 276 (see FIG. 33). According to this, in the terrain object 272 after the change processing, the material is changed to the internal material for the part that has been deformed as if erased and its surrounding parts. As will be described in detail later, this makes it possible to give the terrain object 272 a more natural appearance for the part that has been deformed as if erased and its surrounding parts.
[0222] In this embodiment, the game system 1 generates the material update range 277 by expanding the density update range 276. In the example of FIG. 33 , the material update range 277 is a sphere with a larger radius than the density update range 276. Using the method of expanding the density update range 276 described above, it is possible to easily generate the material update range 277 that encompasses the density update range 276. Note that in other embodiments, the material update range does not need to be generated based on the density update range and may be included in the game program in advance, similar to the density update range. Also, in this embodiment, the center position of the material update range 277 is set to the same position as the center position of the density update range 276. However, the material update range 277 may be set to any position that encompasses the density update range 276. The shape of the material update range 277 is arbitrary. In other embodiments, the material update range 277 and the density update range 276 do not need to be similar in shape.
[0223] The game system 1 changes the material of voxels within the material update range 277 among the voxels related to the terrain object 272. In this embodiment, the material of the voxels within the material update range 277 is changed to the material indicated by the internal material ID associated with the ID of the material before the change in the above-mentioned material data (see FIG. 12). For example, a material ID representing the surface of a rock is associated with a material ID representing the interior of the rock as the internal material ID. Therefore, in the example shown in FIG. 33, the material of the voxels within the material update range 277 is changed from the material of the rock surface to the material of the rock interior through the change process. Specifically, the game system 1 updates the material ID indicated by the voxel data for the voxels within the material update range 277 to indicate the internal material ID, thereby changing the material set for the voxels.
[0224] As described above, in this embodiment, the voxel data holds multiple (specifically, up to two) material IDs per voxel. When multiple types of materials are set for a voxel, the material change process changes each material ID set for each voxel within the material update range to its corresponding internal material ID. For example, if a rock material and an earth material are set for a voxel within the material update range, the changed material for that voxel becomes an internal material associated with the rock material and an internal material associated with the earth material. This reduces the possibility of a problem occurring when multiple types of materials are set for a voxel, such as the appearance of a changed voxel object becoming unnatural due to, for example, changing only one type of material.
[0225] When the process of updating the voxel density and material of the terrain object 272 is performed as described above, the game system 1 generates meshes (specifically, a display mesh and a determination mesh) for the terrain object 272 based on the voxel density and material after the update process, according to the methods described in [2-4. Determining Vertex Materials] to [2-6. Generating Meshes]. As a result, the terrain object 272 is deformed as if a portion has been erased, and the material of the polygons in the deformed portion and its surrounding portion is set to the internal material. When the terrain object 272 is rendered, the polygons are rendered using a texture that represents, for example, the interior of a rock. As a result, the deformed portion and its surrounding portion of the terrain object 272 after the update process have the appearance of the interior of a rock, and the overall appearance can be such that a portion has been destroyed to expose the interior.
[0226] As described above, in this embodiment, when a voxel object is deformed to appear destroyed, the mesh material in the deformed portion is changed to a material representing the interior, thereby making it appear as if the voxel object is partially destroyed and its interior is exposed. Another possible method for making a voxel object appear partially destroyed and its interior exposed is to assign a material representing the outer shell of the object to voxels located on the surface of the mesh of a voxel object representing an object, and assign a material representing the interior of the object to voxels located in an area inside the mesh of the voxel object. With this method, when a voxel located in an area inside the mesh of a voxel object is transformed so that it is now located on the surface of the transformed mesh, the voxel object appears to have its interior exposed. However, with this method, the portion of the voxel object's mesh that appears to be the outer shell becomes thick, making it difficult to make the portion that appears to be the outer shell appear thin.
[0227] In contrast, this embodiment employs a method of changing the material of voxels within the material update range that includes the density update range. This changes the appearance of not only the deformed portion of the voxel object but also the surrounding portion to represent the interior of the tree. While the mesh of the surrounding portion is not deformed, its appearance is changed to represent the interior. By creating such portions, the voxel object after the update process appears as if a thin outer shell has been peeled off. In this way, this embodiment can represent the thin outer shell that appears when an object is destroyed.
[0228] Furthermore, when a voxel object is deformed by a sucking action, it is conceivable that fragments of the voxel object will be generated. FIG. 34 is a diagram showing an example of a case in which a fragment of a voxel object is generated and a case in which a deletion process is executed so as not to generate fragments. The situation (a) in FIG. 34 is a situation in which the player character 201 is performing a sucking action on a terrain object 278, and the situation (b) is a situation in which the terrain object 272 is deformed by a sucking action without executing a deletion process. Here, as in the example shown in FIG. 34, as a result of the deformation of the terrain object 278, a portion of the terrain object 278 may be generated as a fragment 278a. The fragment 278a is arranged as if floating in the air, and the generation of such a fragment 278a may cause a player to feel uncomfortable. Furthermore, if the material of such fragment portion 278a has properties that adversely affect the player character 201, such as the lava material described above, the player may not notice the small fragment portion 278a and cause the player character 201 to come into contact with the fragment portion 278a, which may result in an adverse effect on the player character 201. For the reasons described above, in this embodiment, the game system 1 executes an erasure process that changes the density of voxels corresponding to fragment portions so that the above-described fragment portions are not generated by the deformation of the voxel object due to the sucking action.
[0229] In the erasure process, the game system 1 first identifies a small region corresponding to the fragment to be erased from within a predetermined determination range. The small region is a region where voxels having a density equal to or greater than the reference value are adjacent and continuous, and where the size of the small region is smaller than the predetermined reference value. A region of a single voxel having a density equal to or greater than the reference value and where the densities of all adjacent voxels are less than the reference value may also be considered a small region. The determination range may be set in any manner, for example, to the entire voxel space or to a range based on the density update range, which is the range in which the voxel object is deformed. The range based on the density update range is, for example, a range that includes the density update range. More specifically, the range based on the density update range may be set to have an enlarged shape of the density update range and have the same center position as the density update range. The game system 1 may also rewrite voxel data for each predetermined unit region (for example, a region consisting of a voxel group consisting of a predetermined number of voxels). In this case, a range consisting of one or more unit areas including the voxels whose densities have been updated may be set as the determination range. Furthermore, the game system 1 may identify, as a small area, an area that satisfies the above conditions for a small area and is entirely contained within the determination range, or may identify, as a small area, an area that satisfies the above conditions for a small area and is at least partially contained within the determination range.
[0230] The game system 1 updates the density of the voxels corresponding to the identified small region to a value less than a reference value (for example, 0). This makes it possible to prevent the generation of a mesh of a voxel object that will become a fragment corresponding to the small region (see (c) of FIG. 34). Note that the above-mentioned predetermined reference regarding the size of the small region is set to a size smaller than the player character 201, for example. At this time, the deletion process prevents the generation of voxel objects that will become fragments smaller than the player character 201 and that are arranged as if floating in the air.
[0231] In the above, the game system 1 may specify the size of the small region for each material or for each material group. A material group is, for example, a group to which multiple types of materials having the same properties belong. In this case, if a voxel object made of a specific material (or a specific group of materials) remains as small fragments due to a suck-in action, the fragments will not be generated by the erasure process. If the size of the small region is not specified for each material or for each material group, for example, a suck-in action performed on a terrain object including rock and lava materials may result in a small portion of the lava material remaining in contact with the rock terrain object. In such a case, the player may not notice the portion and may accidentally cause the player character 201 to come into contact with the portion. By specifying the size of the small region for each material or for each material group, the portion will not be generated, thereby reducing the possibility of the above-mentioned inconvenience occurring.
[0232] In this embodiment, the player character 201 can perform a throw action to throw a bullet obtained by a suck action under certain conditions. FIG. 35 is a diagram showing an example of a game image in a scene after a suck action has been performed and before a throw action is performed. In FIG. 35, as a result of continuous suck actions being performed, the terrain object 272, which is formed like a rock wall, is deformed so that a hole appears in part of the terrain object 272. In the situation shown in FIG. 35, the player character 201 is in a state in which, after a suck action, the player character 201 has performed an action to assume a stance to throw a bullet object 273 (hereinafter referred to as a "stance state"). For example, in a state in which the number of bullets that the player character 201 can throw is one or more, in response to an operation input by the player giving a stance instruction, the player character 201 performs a stance action to enter the stance state. Furthermore, in the stance state, in response to an operation input by the player giving a throw instruction, the player character 201 performs a throw action to throw the bullet object 273 in the direction indicated by the aiming image 271.
[0233] When the player character is in the above-described ready state, the game system 1 generates a bullet object 273. As will be described in detail later, the material of the bullet object 273 is determined based on the material of the voxels whose density is reduced when the bullet is increased. In this embodiment, the bullet object 273 is a voxel object based on voxels in a sub-voxel space that is different from the main voxel space of the terrain object. In other embodiments, the bullet object 273 does not have to be a voxel object.
[0234] In this embodiment, if a condition related to the deformation of the voxel object is satisfied during the sucking action, the number of bullets is increased. The number of bullets can also be said to be the number of times that a throwing action of throwing bullets can be executed. As will be described in detail later, the player character 201 can increase the number of bullets by causing a greater deformation of the voxel object through the sucking action.
[0235] Next, a process for increasing bullets in accordance with the deformation of a voxel object will be described. FIG. 36 is a diagram illustrating an example of a method for determining the increase in bullets and the material of the bullets to be added. The example shown in FIG. 36 illustrates the material of the erased portion during the period from the start of the suck action to the sixth frame, the timing at which bullets are added during that period, and the material. The material of the erased portion refers to the material set in the voxels whose density has been reduced when the terrain object 272 is deformed by the suck action. If multiple types of material are set in one or more voxels whose density has been reduced, the material of the erased portion is the material that has been reduced the most among the multiple types of material. For example, the game system 1 calculates a value for each voxel by multiplying the amount of density reduction for each voxel by the proportion of that material in that voxel (this proportion is obtained from the material mixture ratio), and determines the material with the largest total value obtained by adding up the values for each voxel as the "most reduced material."
[0236] In this embodiment, the process of increasing the number of bullets is performed based on the degree of change to the voxels due to the suck action. The degree of change can also be referred to as the degree of change to the voxel object. In a first example, the game system 1 calculates the number of times the voxel density has been updated due to the suck action as the degree of change. The process of increasing the number of bullets is performed based on this number. For example, in the example shown in FIG. 36 , the process of increasing the number of bullets by one is performed each time the number of times reaches a predetermined number (here, five times). In other words, when the terrain object is deformed by the suck action over five frames, the number of times that the throw action of throwing bullets can be performed is incremented by one. Note that the specific method of increasing the number of bullets based on the number of times the voxel density has been updated due to the suck action is not limited to the above. For example, in other embodiments, the number of times may be used as the number of bullets, or a predetermined number of consecutive density updates may be used as a condition for increasing the number of bullets. Furthermore, for example, in other embodiments, the number of times may be counted for each material. In this case, when the number of times counted for a certain material reaches a predetermined number, bullets of that material may be added.
[0237] As described above, in this embodiment, an event that increases the number of times that a throwing action for throwing a bullet can be performed and an event in which the player character 201 throws a bullet are performed in accordance with the deformation of a voxel object. In this way, the deformation of a voxel object becomes a condition for generating an event in the game, so that the player can be motivated to transform the voxel object, and the strategic and entertaining aspects of the game can be improved.
[0238] In the first example, the "number of times the voxel density has been updated" is used as the index indicating the degree of change, but any specific index may be used to indicate the degree of change. For example, in other embodiments, the "amount of decrease in voxel volume" or the "current voxel volume" used in the second and third examples described below may be used as the index in the first example. In this case, the game system 1 may increase the number of bullets each time the amount of decrease in voxel volume reaches a predetermined threshold.
[0239] In this embodiment, the material of the added bullet is determined based on the material of the voxel whose density has changed due to the suck action. In this embodiment, the material of the added bullet is determined based on the material of the erased portion in the frame in which the increase in the number of bullets is determined. For example, in the example of FIG. 36 , the "earth" material, which is the material of the erased portion in the fifth frame in which the increase in the number of bullets is determined, is determined as the material of the bullet. In this way, the material of the portion of the terrain object 272 that is transformed by the suck action and appears to have been erased at the time the bullet is added, becomes the material of the added bullet. This makes it easier for the player to understand the material of the added bullet. Furthermore, the player considers which portion of the terrain object to suck the action on, taking into account the material of the added bullet, thereby improving the strategic aspect of the game.
[0240] In other embodiments, the game system 1 may determine the material of the bullets to be added based on the material that was decreased in the voxel updates before the decision to increase the number of bullets, not limited to the voxel update when the decision to increase the number of bullets is made. For example, in the example of FIG. 36, the material of the bullets to be added may be determined as the material that was most frequently used as the "erased portion material" in the first to fifth frames before the decision to increase the number of bullets (the "grass" material in the example of FIG. 36). Furthermore, for example, the game system 1 may determine the material of the erased portion for the first to fifth frames before the decision to increase the number of bullets is made. Specifically, the game system 1 may calculate, for each voxel, a value obtained by multiplying the total amount of density decrease for each voxel in the first to fifth frames (the total for the first to fifth frames) by the proportion of the material in that voxel, and may determine the material with the largest total value of the values for each voxel as the "material of the erased portion for the first to fifth frames." The material determined in this manner may be the material of the bullets to be added.
[0241] In this embodiment, an example of an action whose executable number of times can be increased under certain conditions in response to a sucking action is an action in which the player character throws a bullet. However, in other embodiments, the action whose executable number of times can be increased under certain conditions in response to a sucking action may be any action. For example, the action may be an action of emitting a beam of light, or an action such as a punch or a kick. In this case, a material may be set for these actions in the same manner as the material of a bullet is determined, and the properties of the material may be imparted to the above-mentioned actions of the beam of light, punch, and kick.
[0242] [2-8-2. Example 2 (Example of an event in which an item is placed in a terrain object)] As a second example, an example will be described in which an event is performed in which an item is placed in a terrain object in response to a transformation that erases a portion of the terrain object. FIG. 37 is a diagram showing an example of how an item is placed in response to a transformation of the terrain object. As shown in FIG. 37, in this embodiment, the player character 201 can perform the above-mentioned punch action, suck action, or the like to transform the terrain object 281 so that it is erased. Here, in this embodiment, when a transformation that erases a portion of the terrain object 281 is performed, an event is executed in which an item object 282 is placed under certain conditions (see (b) of FIG. 37). Although details will be described later, in this embodiment, the item object 282 is placed in response to a predetermined reduction in the volume of voxels related to the terrain object 281. This can motivate the player to transform the terrain object. The above event will be described in detail below.
[0243] In the second example, when a terrain object is deformed by the player character 201, the game system 1 calculates the amount of decrease in the volume of voxels related to the terrain object as an index showing the degree of change in the voxels. Here, the deformation of a terrain object by the player character 201 refers to the deformation of a terrain object caused by the action of the player character 201. For example, the deformation of a terrain object caused by an action by the player character 201, such as the punch action or suck action described above, is an example of the deformation of a terrain object by the player character 201. Also, for example, the deformation of a terrain object caused by the player character 201 using an item (for example, by exploding a bomb) may also be an example of the deformation of a terrain object caused by the player character 201. Also, for example, the deformation of a terrain object caused by the player character 201 blowing away an enemy character with a punch action or the like, resulting in the enemy character colliding with the terrain object and causing the terrain object to deform, may also be an example of the deformation of a terrain object caused by the player character 201. In other embodiments, the reduction in the volume of a voxel may be calculated based not only on the deformation of a terrain object caused by the actions of the player character 201, but also on the deformation of a terrain object caused by other factors.
[0244] In this embodiment, the reduction in the volume of a voxel is calculated based on the size of the voxel in the game space and the reduction in the density of the voxel. Specifically, when a terrain object is deformed, the game system 1 calculates a reduction in the volume of one or more voxels whose density has been reduced by multiplying the volume of the voxel in the game space by the reduction in density, and then calculates a total reduction in the volume of the voxel by adding up the reductions in the volume of each voxel for the one or more voxels. This allows the reduction to be calculated with greater precision than the volume of a single voxel. Note that the method for calculating the reduction in the volume of a voxel is not limited to the above and may be any method. The reduction in the volume of a voxel may be calculated by any method based on the reduction in the density of the voxel. For example, in another embodiment, the game system 1 may calculate the reduction in the volume of a voxel by adding up the reductions in the density of each voxel for one or more voxels whose density has been reduced, without taking the size of the voxel into consideration.
[0245] In this embodiment, the game system 1 calculates the amount of reduction in the volume of the voxels and calculates the cumulative amount of reduction each time the terrain object is transformed. Furthermore, each time the cumulative amount of reduction is updated, the game system 1 determines whether or not to place an item object based on the updated cumulative amount of reduction. In this embodiment, it is determined that the item object is to be placed when the cumulative amount of reduction reaches a predetermined threshold. Note that in this embodiment, the game system 1 resets the cumulative amount of reduction in response to the placement of an item object, and then recalculates the cumulative amount of reduction. As a result, an item object is placed during the game each time the cumulative amount of reduction reaches a predetermined threshold. The player can periodically obtain item objects by having the player character continue to perform an action that transforms the terrain object so that it is erased.
[0246] In the second example, the "amount of reduction in voxel volume" is used as the indicator indicating the degree of change, but any specific indicator may be used to indicate the degree of change. For example, in another embodiment, the "number of times voxel density has been updated" used in the first example may be used as the indicator in the second example. In this case, the game system 1 may place an item object when the number of times reaches a predetermined threshold. Also, for example, in another embodiment, instead of the "accumulated amount of reduction in voxel volume," the current volume of the voxel may be used as the indicator indicating the degree of change. The current volume of the voxel is obtained by subtracting the accumulated amount of reduction from the volume of the voxel at the start of the game. In this case, the game system 1 may place an item object when the current volume of the voxel is equal to or less than a predetermined threshold.
[0247] Furthermore, any method may be used to determine the placement of an item object based on the cumulative decrease amount. For example, in another embodiment, the threshold value may be changed each time the cumulative decrease amount is reset, or may be changed so that the threshold value increases (or decreases) each time the cumulative decrease amount is reset. For another example, the game system 1 may set multiple thresholds and place an item object each time the cumulative decrease amount reaches a threshold without resetting the cumulative decrease amount. For another example, the game system 1 may determine whether to place an item object based on a probability that increases as the cumulative decrease amount increases.
[0248] In another embodiment, the game system 1 may calculate the amount of reduction in the volume of voxels for each material or for each group of materials. Whether or not to place an item object may be determined based on whether the cumulative reduction for each material or group has reached a threshold. The threshold may be set to the size of each material or group. The game system 1 may also place an item object of a type corresponding to the material or group whose cumulative reduction has reached the threshold.
[0249] In another embodiment, the game system 1 may place an item object based on the increase in voxel volume. For example, as shown in the example in FIG. 29, the player character 201 may deform the terrain object so as to increase the volume of the interior area of the terrain object. The game system 1 may calculate a cumulative increase in the voxel volume and determine whether to place an item object based on the cumulative increase. In this case, the game system 1 may not subtract from the cumulative increase even if the density of voxels in the terrain object is reduced. In another embodiment, the game system 1 may calculate a change amount, which is the sum of the increase and decrease in voxel volume, and place an item object based on the change amount.
[0250] In this embodiment, the item object is placed in a position hidden by the terrain object. For example, in the example shown in FIG. 37 , the item object 282 is placed in the interior area of the terrain object 281. That is, the item object is placed in a position in the game space where a voxel whose density is equal to or greater than the reference value is defined. The player character 201 can free the item object from being buried in the terrain object by deforming the terrain object using a punching action, a sucking action, or the like so that the terrain object is further removed. As described above, the item object can be placed naturally without giving the player the impression that the item object has suddenly appeared. Note that in other embodiments, the placement position of the item object is arbitrary, and the item object may be placed outside the terrain object or may be placed partially buried in the terrain object. Note that in other embodiments, the game system 1 may deform the terrain object so that a cavity is formed in an area including the position where the item object is to be placed in the interior area of the terrain object, and place the item object in the formed cavity.
[0251] The game system 1 may determine the placement position of the item object based on the position of the deformation of the terrain object that caused the item object to be placed. For example, the item object may be placed in an area within a predetermined distance from the position or range of the deformation of the terrain object. This allows the item object to be placed in a position that is easy to find. For example, as shown in FIG. 37 , the item object may be placed in an area that is farther from the position or range of the deformation of the terrain object as seen from the player character. This allows the item object to be found by further deforming the deformed portion of the terrain object, so the item object can be placed in a position that is easier to find. The game system 1 may determine the placement position of the item object within the above-mentioned area by any method. For example, the item object may be placed at a predetermined position within the area (e.g., the center of the area), or the placement position may be determined randomly within the area.
[0252] Depending on the direction in which the player character performs an action that transforms the terrain object, the game system 1 may not place an item object even if the cumulative decrease reaches a predetermined threshold. For example, if the player character performs an action in an upward direction, resulting in a transformation of a portion of the terrain object located above the player character, the item object is placed above that portion. In this case, if the player character further transforms the terrain object in an attempt to obtain the item object, the item object may fall as soon as it is no longer buried in the terrain object. Therefore, for example, if the player character performs an action that transforms the terrain object in the vertical direction in the game space, the game system 1 may not place an item object even if the cumulative decrease reaches a predetermined threshold. However, if the player character subsequently performs the action in a direction other than the vertical direction, the item object may be placed.
[0253] The placed item object may be any type of item in the game. In this embodiment, the placed item object is a treasure chest object. The player character 201 can obtain a predetermined reward item, for example, by performing an action to open the treasure chest object or by touching the treasure chest object. Note that the treasure chest object may be embedded in the terrain object when it is placed, and may no longer be embedded in the terrain object when the terrain object around the treasure chest object is transformed so as to be erased. In this case, the player character 201 may not be able to perform the action to open the treasure chest object when the treasure chest object is embedded in the terrain object, but may be able to perform the action when the treasure chest object is no longer embedded in the terrain object. Furthermore, the reward item may be any type of item, for example, an item such as coins that is a collectible target in the game, or an item such as a weapon or recovery item that provides an advantage in the game. Furthermore, in another embodiment, instead of placing a treasure chest object on a terrain object, the reward item itself may be placed. In the above, there may be multiple types of candidates for reward items that can be obtained from treasure chest objects or placed on terrain objects, and one of the multiple types of candidates may be selected in any manner.
[0254] [2-8-3. Example 3 (Example of an event in which an item is awarded in a game)] As a third example, an example will be described in which an event is executed in which an item is awarded in a game in response to a transformation in which part of a terrain object is erased. In this embodiment, the game system 1 calculates an index indicating the degree of change in the voxels described above each time a terrain object is transformed by a player character during a game, and executes an event in which an item is awarded when the index reaches a predetermined threshold. This can motivate the player to transform the terrain object.
[0255] In this embodiment, as described in the second example above, when the player character 201 deforms a terrain object, the game system 1 calculates the reduction in volume of voxels related to the terrain object. At this time, the game system 1 calculates the reduction in volume for each material group. Note that the material groups may be set in any manner. For example, in this embodiment, the groups are set so that materials having the same properties belong to the same group. When calculating the reduction in volume for each material group, the game system 1 calculates the reduction in volume for each voxel for each material for one or more voxels whose density has been reduced by multiplying the volume of that voxel in the game space by the reduction in density and the proportion of that material. Furthermore, the game system 1 adds up the calculated reduction in volume for each material for the one or more voxels, and calculates the total reduction as the "voxel volume reduction" for each material. The calculated "voxel volume reduction" for each material can be calculated by adding up the "voxel volume reduction" for each material group.
[0256] In this embodiment, the game system 1 calculates the amount of reduction in the volume of the voxels for each material group each time the terrain object is transformed, and calculates the cumulative amount of reduction for each material group. Furthermore, each time the cumulative amount of reduction for each material group is updated, the game system 1 determines whether to grant an item based on the updated cumulative amount of reduction. For example, if the cumulative amount of reduction reaches a predetermined threshold, it is determined that an item should be granted. At this time, multiple thresholds may be set for each material group, and when the cumulative amount of reduction for that group reaches a threshold, an item set corresponding to the threshold may be granted. Furthermore, the method of determining the item to be granted is arbitrary. For example, an item may be set for each material group, or an item may be set for each threshold.
[0257] In the third example, the "amount of decrease in voxel volume" is used as the indicator indicating the degree of change, but any specific indicator may be used to indicate the degree of change. For example, in another embodiment, the "number of times voxel density has been updated" used in the first example may be used as the indicator in the third example. In this case, the game system 1 may count the number of times for each material group and award an item when the number reaches a predetermined threshold. Also, in another embodiment, the above-mentioned "current voxel volume" may be used as the indicator indicating the degree of change. In this case, the game system 1 may award an item when the current voxel volume is equal to or less than a predetermined threshold.
[0258] FIG. 38 is a diagram showing an example of an achievement image showing the achievement of transforming a terrain object. In this embodiment, the game system 1 displays an achievement image such as that shown in FIG. 38 in response to a predetermined instruction from the user during the game. The achievement image shows the current cumulative reduction amount for each material group. In the example shown in FIG. 38, the achievement image includes, for each material group, an item indicating the material group (e.g., item 291) and a bar graph indicating the cumulative reduction amount (e.g., bar graph 292). Note that in the example shown in FIG. 38, "tree" and "grass" shown in the item do not indicate the name of the material, but indicate the properties of the material and indicate a group of materials having the same properties. For example, "tree" indicates a group of materials having the properties of wood.
[0259] In another embodiment, the game system 1 may calculate the cumulative reduction amount for each material and determine whether to grant an item based on the calculated reduction amount. In this case, the achievement image may indicate the cumulative reduction amount for each material. For example, the game system 1 may calculate the cumulative reduction amount for the entire terrain object without distinguishing between materials and material groups, and determine whether to grant an item based on the calculated reduction amount. In another embodiment, items may be assigned according to the cumulative reduction amount for each material, items assigned according to the cumulative reduction amount for each material group, and items assigned according to the total cumulative reduction amount.
[0260] The specific content of the item granted to the player is arbitrary. For example, the item may be currency or points that can be used in the game, or an item that the player character uses in the game, such as a weapon or tool. The manner in which an item is granted to a player character is one example of a manner in which an item is granted to a player. Furthermore, the timing at which the player receives the item in an event in which an item is granted is arbitrary. For example, the game system 1 determines that an item will be granted when the cumulative decrease amount reaches a threshold, but the timing at which the player or player character receives the item may be separate from the timing at which the item was granted. For example, the achievement image may include an image showing the granted item, and the player may receive the item by designating the image.
[0261] In the second and third examples described above, the game system 1 executes an event according to the degree of change in voxels related to the terrain object. However, in other embodiments, the game system 1 may execute an event taking into consideration the degree of change in voxels related to voxel objects other than the terrain object.
[0262] As described above, in the first to third examples, each event occurs when the degree of change of the voxel reaches a predetermined degree. This allows more events to occur by transforming the voxel object more, which can motivate the player to transform more voxel objects.
[0263] [3. Specific examples of processing in game systems] Next, a specific example of information processing in the game system 1 will be described with reference to FIGS.
[0264] FIG. 39 is a diagram showing an example of various data used for information processing in the game system 1. Each piece of data shown in FIG. 39 is stored in a memory accessible by the main unit 2 (for example, the flash memory 84, the DRAM 85, and / or a memory card inserted in the slot 23). As shown in FIG. 39, the game system 1 stores a game program. The game program is for executing the game processing in this embodiment (specifically, the game processing shown in FIG. 40). The game program includes the above-mentioned material data (see FIG. 12). The memory also stores the above-mentioned voxel data (see FIG. 11), update range data, mesh data, update count data, bullet data, total reduction amount data, group reduction amount data, object data, and the like (see FIG. 39).
[0265] The update range data is data that indicates the update range described above. In this embodiment, the update range is represented by the SDF described above.
[0266] The mesh data includes various data related to the mesh of the voxel object. As shown in FIG. 39 , in this embodiment, the mesh data includes SVO data, display mesh data, and judgment mesh data. The SVO data is data that holds each vertex calculated from the voxel data in the above-mentioned SVO structure. In this embodiment, the SVO data includes data indicating the position of each vertex, as well as data indicating the material set for each vertex (for example, data indicating the material ID). The display mesh data includes various data related to the display mesh. Specifically, the display mesh data includes data indicating each vertex of the display mesh and data indicating the material set for each vertex (for example, data indicating the material ID). The judgment mesh data includes various data related to the judgment mesh. Specifically, the judgment mesh data includes data indicating each vertex of the judgment mesh and data indicating the material set for each vertex (for example, data indicating the material ID).
[0267] The update count data indicates the number of times the voxel density has been updated by the above-mentioned sucking action. At the start of the game, this count is set to 0. The bullet data indicates the number of bullets that the player character will use to perform the throwing action, and the material of each bullet. At the start of the game, the number of bullets is set to a predetermined number.
[0268] The total reduction data indicates the cumulative reduction amount for the voxels of the terrain object. The group reduction data indicates the cumulative reduction amount for each material group for the voxels of the terrain object. At the start of the game, these cumulative reduction amounts are set to 0.
[0269] The object data includes various data related to objects other than voxel objects (e.g., player characters, debris objects, etc.). The object data is stored for each object that appears in the game space. The object data includes, for example, data indicating the position, speed, status, etc. of the object.
[0270] 40 is a flowchart showing an example of the flow of game processing executed by the game system 1. Execution of the game processing is initiated, for example, when the game is started in response to a command from a player during execution of the game program. Note that a processing loop consisting of a series of processes from steps S1 to S15 is executed once per frame.
[0271] In the present embodiment, the processor 81 of the main unit 2 executes the game program stored in the game system 1 to perform the processing of each step shown in FIG. 40. However, in other embodiments, some of the processing of each step may be performed by a processor (e.g., a dedicated circuit) other than the processor 81. Furthermore, if the game system 1 is capable of communicating with another information processing device (e.g., a server), some of the processing of each step shown in FIG. 40 may be performed in the other information processing device. Furthermore, the processing of each step shown in FIG. 40 is merely an example, and the processing order of each step may be reversed, or another process may be performed in addition to (or instead of) the processing of each step, as long as similar results are obtained.
[0272] 40 using a memory (for example, a DRAM 85). That is, the processor 81 stores information (in other words, data) obtained by each processing step in the memory, and when using the information in a subsequent processing step, reads the information from the memory and uses it.
[0273] 40, processor 81 acquires the operation data indicating an operation input by the player. That is, processor 81 acquires the operation data received from each controller via controller communication unit 83 and / or each of terminals 17 and 21. Following step S1, the process of step S2 is executed.
[0274] In step S2, processor 81 designates, as a processing target, any of the objects in the game space that require processing and for which processing has not been completed. For the designated object, it executes a process of calculating the velocity and a process of reflecting the results of collisions between objects in the previous frame. The velocity of the object is used to calculate the position of the object in the current frame in the process of step S13, which will be described later. For example, if the designated object is a player character, the velocity of the player character is calculated based on the operation data acquired in step S1. Furthermore, if the designated object is an object not controlled by the player (e.g., a fragment object), the velocity of the object is calculated based on rules predetermined in the game program. For example, the velocity of a fragment object is set to 0 if the fragment object is placed on a terrain object and not moving; if the fragment object is held by the player character, the velocity is set to the same as the player character's velocity; and if the fragment object is thrown by a throwing action by the player character, the velocity is set to a velocity that moves in the aim direction at a magnitude determined by the above rules. Specifically, the velocity of the object is calculated based on virtual physical calculations that include interactions between objects. For example, the speed is determined based on factors such as repulsion due to collisions between objects, interactions such as friction due to contact, falling due to virtual gravity, and deceleration due to virtual air resistance.
[0275] Furthermore, the process of reflecting the result of the collision between objects in the previous frame includes a process of influencing the objects due to the collision when it is determined that the objects have collided in the collision determination (step S10) in the previous frame. The above process is, for example, the following process. -Processing to reduce the player character's stamina if it is determined that the player character has come into contact with a lava terrain object in the previous frame Processing to generate debris objects when it is determined that the player character has come into contact with a terrain object due to a pull or punch action in the previous frame -Processing to destroy debris objects when it is determined that the debris object has come into contact with a rock terrain object in the previous frame If the state of the object is changed in the process of step S2 above, processor 81 updates the object data stored in memory for that object to indicate the changed content. After step S2, the process of step S3 is executed.
[0276] In step S3, processor 81 determines whether an update event that updates the voxel object has occurred due to the object specified in step S2. For example, the determination in step S3 is made based on the result of the collision determination (step S10) in the previous frame. For example, if it is determined that the player character has come into contact with the terrain object by a pull-out action or a punch-out action in the previous frame, it is determined that an update event has occurred that deforms the terrain object so that a portion of the terrain object is erased (see FIGS. 26 and 27). Note that such update events include an event in which a punch-out action or a suck-in action by the player character deforms the terrain object so that a portion of the terrain object is erased, and further, under certain conditions, the material of the deformed portion and its surrounding area is changed (see FIGS. 30 and 33). Furthermore, for example, if it is determined that a fragment object has come into contact with a rock terrain object in the previous frame, it is determined that an update event has occurred that deforms the terrain object so that the fragment object is attached to the terrain object (see FIG. 29). If the determination result in step S3 is positive, the process proceeds to step S4. On the other hand, if the determination result in step S3 is negative, the process proceeds to step S5.
[0277] In step S4, the processor 81 executes a voxel update process to update the voxel data related to the voxel object for which it was determined in step S3 that an update event has occurred. Hereinafter, the voxel update process in step S4 will be described in detail with reference to FIG.
[0278] FIG. 41 is a sub-flowchart showing an example of the detailed flow of the voxel update process in step S4 shown in FIG. 40. In the voxel update process, first, in step S21, the processor 81 determines whether the update event determined to have occurred in step S3 is an event that deforms a voxel object. The determination in step S21 is made based on the type of the update event. For example, the update events shown in FIGS. 26, 27, 29, 31, and 37 are determined to be events that deform a voxel object. Note that in this embodiment, an event that changes only the material without changing the density of voxels may also be performed, and such an event is determined not to be an event that deforms a voxel object. If the determination result in step S21 is positive, the process proceeds to step S22. On the other hand, if the determination result in step S21 is negative, the process proceeds to step S24.
[0279] In step S22, processor 81 sets a density update range in the game space for updating the density of voxels related to the voxel object. For example, the specific content of the density update range (i.e., position, shape, and size) is associated with each type of update event in the game program. The density update range set in step S22 is set to have content associated with the type of update event determined to occur in step S3. Processor 81 stores data indicating the set density update range in memory as update range data. Following step S22, the process of step S23 is executed.
[0280] In step S23, processor 81 updates the density of voxels corresponding to the density update range set in step S22 in accordance with the update event. For example, when a voxel object is deformed so as to be erased (also called destroyed), the density of voxels corresponding to the density update range is updated to decrease. Furthermore, for example, when a voxel object is deformed so as to increase the volume of its inner region, the density of voxels corresponding to the density update range is updated to increase. Specifically, processor 81 updates the voxel data stored in memory so as to change the density of voxels corresponding to the density update range. Note that a specific method for updating the density of voxels corresponding to the density update range is associated with each type of update event in the game program. For example, in an event in which a terrain object is deformed in response to a suck-in action, the density is updated by a method in which the inner region of terrain object 272 is deformed so as to contract (see FIG. 32). Following step S23, the process of step S24 is executed.
[0281] In step S24, processor 81 determines whether the update event determined to have occurred in step S3 is an event that changes the material of the voxel object. The determination in step S24 is made based on the type of the update event. For example, an event that deforms a terrain object in response to a suck-in action (see FIG. 31) is determined to be an event that changes the material of the voxel object. On the other hand, the examples of update events shown in FIGS. 26, 27, 29, and 37 are determined not to be events that change the material of the voxel object. If the determination result in step S24 is positive, the process of step S25 is executed. On the other hand, if the determination result in step S24 is negative, the process of step S27 is executed.
[0282] In step S25, processor 81 sets a material update range in the game space for changing the material of voxels related to the voxel object. For example, if a density update range is set by the processing of step S22 above, the material update range is generated based on the density update range (see FIG. 33). Note that, for a material update range for which no corresponding density update range is set, the specific content of the material update range (i.e., position, shape, and size) is associated with, for example, each type of update event in the game program. If the processing of step S22 above is not performed, the material update range is set to have content associated with the type of update event determined to occur in step S3. Processor 81 stores data indicating the set material update range in memory as update range data. Following step S25, the processing of step S26 is performed.
[0283] In step S26, processor 81 changes the material of voxels corresponding to the material update range set in step S25 in response to the update event. For example, processor 81 changes the material of voxels corresponding to the material update range to an internal material associated with the material before the change, or to a predetermined material. Processor 81 updates the voxel data stored in memory so as to change the material of voxels corresponding to the material update range. After step S26, the process of step S27 is executed.
[0284] In step S27, the processor 81 determines whether or not a fragment of a voxel object occurs in the voxel data after the processing of step S23. Specifically, the processor 81 determines whether or not a small area corresponding to the fragment to be erased is identified from within the area within the above-mentioned determination range. If the determination result of step S27 is positive, the process of step S28 is executed. On the other hand, if the determination result of step S27 is negative, the processor 81 ends the voxel update process.
[0285] In step S28, the processor 81 updates the density of the voxels corresponding to the small regions identified in the processing of step S27. Specifically, the processor 81 updates the voxel data stored in memory so that the density of the voxels becomes a value less than the reference value. After step S28, the processor 81 ends the voxel update processing.
[0286] 40, in step S5 following the voxel update process of step S4, processor 81 determines whether or not the processes of steps S2 to S4 have been completed for all objects that require processing. If the determination result of step S5 is positive, the process of step S6 is executed. On the other hand, if the determination result of step S5 is negative, the process of step S2 is executed again.
[0287] In step S6, processor 81 updates the vertices of the voxel object in the game space. That is, if the voxel data is updated in the processing of step S5 above, new vertices are calculated based on the updated voxel data. The positions of the new vertices are calculated according to the method described above in [2-3. Calculating Vertices]. The materials of the new vertices are calculated according to the method described above in [2-4. Determining Vertex Materials]. Following step S6, the processing of step S7 is executed.
[0288] In step S7, processor 81 simplifies the vertices. That is, processor 81 simplifies each vertex after updating by the processing of step S6 according to the method described above in [2-5. Vertex Simplification]. The SVO data stored in memory is updated to indicate each vertex obtained by the processing of steps S6 and S7. Therefore, the SVO data is updated by the processing of steps S6 and S7. Note that the processing of steps S6 and S7 does not need to recalculate the vertices for all of the voxel data, and may be performed only for the part where the voxel content was changed in the processing of step S5. After step S7, the processing of step S8 is performed.
[0289] In step S8, the processor 81 updates the display mesh of the voxel object based on the SVO data stored in memory. The position of each vertex of the display mesh and the material of each polygon of the display mesh (i.e., the material set for each vertex of the polygon) are calculated according to the methods described above in [2-6. Mesh Generation] and [2-6-1. Determination of Material for Display Mesh]. The processor 81 updates the display mesh data stored in memory to indicate the updated position and material of each vertex of the display mesh. After step S8, the process of step S9 is executed. The processor 81 may start the processes from step S9 onwards and execute them in parallel without waiting for the completion of step S8. In this case, step S8 must be completed before the start of step S14.
[0290] In step S9, processor 81 updates the determination mesh of the voxel object based on the SVO data stored in memory. The positions of each vertex of the determination mesh and the material of each polygon of the determination mesh (i.e., the material set for each vertex of the polygon) are calculated according to the methods described above in [2-6. Mesh Generation] and [2-6-2. Determining the Material of the Determination Mesh]. Processor 81 updates the determination mesh data stored in memory to indicate the positions and materials of each vertex of the determination mesh after the update. Following step S9, the process of step S10 is executed.
[0291] In the example shown in FIG. 36, the determination mesh generation process (step S9) is executed for each frame, but the determination mesh generation process does not have to be executed for each frame. For example, if the collision determination process of step S10 is executed only in frames that satisfy a predetermined condition, processor 81 may execute the determination mesh generation process in the frame in which the collision determination of step S10 is performed. Processor 81 may also execute the determination mesh generation process for voxels within an area of the game space in which the collision determination of step S10 is performed. For example, in a situation in which no objects other than voxel objects that are the subject of collision determination exist around the player character in the game space (that is, a situation in which it is sufficient to perform only collision determination between the player character and its surrounding voxel objects), processor 81 may execute the determination mesh generation process for voxels within a predetermined range based on the player character.
[0292] In step S10, processor 81 performs collision determination for each object in the game space based on the determination mesh data and object data stored in memory. That is, processor 81 performs collision determination using a determination mesh for voxel objects, and using a determination area of a predetermined shape set for each object for objects that are not voxel objects. Note that in this embodiment, the collision determination in step S10 is performed taking into account the speed calculated in step S2 above. That is, processor 81 performs collision determination using the position of each object when it moves at the above speed.
[0293] In this embodiment, the collision determination in step S10 determines, for example, whether or not there will be a next contact. - Contact between the player character performing a movement, punch action, or pull action and a terrain object Contact between a character who performs an action to lift a fragment and the fragment - Contact between the line extending from the player character's position in the aim direction and the terrain object -Collision between debris objects thrown by the player character and terrain objects The line extending from the position of the player character performing the suck action in the direction indicated by the aiming image (see Figure 33) and the contact with the terrain object If it is determined in the collision determination of step S10 that the objects have come into contact with each other, a process that reflects the result of the collision between the objects is executed in the process of step S2 in the next frame, or it is determined in the process of step S3 in the next frame that an update event has occurred. After step S10, the process of step S11 is executed.
[0294] In step S11, processor 81 executes a player character control process. In the player character control process, control processing related to the player character is executed based on an operation input by the player. Hereinafter, the player character control process will be described in detail with reference to FIG.
[0295] FIG. 42 is a sub-flowchart showing an example of the detailed flow of the player character control processing of step S11 shown in FIG. 40. In the player character control processing, first, in step S31, processor 81 determines whether or not it is an operation acceptance period during which operation input for the player character is accepted. Here, in the present embodiment, a period during which the player character is performing a predetermined action (for example, an action started in step S36, which will be described later) in response to operation input by the player is excluded from the operation acceptance period. If the determination result in step S31 is positive, the processing of step S32 is executed. On the other hand, if the determination result in step S31 is negative, the processing of step S41, which will be described later, is executed.
[0296] In step S32, processor 81 determines, based on the operation data acquired in step S1, whether or not an operation input has been made to instruct the player character to take an action. The action instruction is, for example, an instruction to cause the player character to perform a punch action, a draw action, a suck action, an action of taking a stance to throw a bullet, or an action of throwing a bullet. If the determination result in step S32 is positive, the process proceeds to step S33. On the other hand, if the determination result in step S32 is negative, the process proceeds to step S39.
[0297] In step S33, processor 81 determines whether the action instruction issued in step S32 is an instruction to cause the player character to take a stance to throw a bullet. If the determination result in step S33 is positive, the process proceeds to step S34. On the other hand, if the determination result in step S33 is negative, the process proceeds to step S36.
[0298] In step S34, processor 81 determines whether the number of bullets that the player character can throw is one or more. Specifically, processor 81 determines whether the number indicated by the bullet data stored in memory is one or more. If the determination result in step S34 is positive, the process of step S35 is executed. On the other hand, if the determination result in step S34 is negative, the process of step S39 is executed. In this case, the player character does not take an action of taking a stance to throw a bullet.
[0299] In step S35, processor 81 decreases the number of bullets that the player character can throw by 1. Specifically, the bullet data stored in memory is updated to a value that is decreased by 1. Following step S35, the process of step S36 is executed.
[0300] In step S36, processor 81 determines whether the action instruction issued in step S32 is an instruction to cause the player character to perform a throwing action of throwing a bullet. If the determination result in step S36 is positive, the process proceeds to step S37. On the other hand, if the determination result in step S36 is negative, the process proceeds to step S38.
[0301] In step S37, processor 81 determines whether the player character is ready to throw a bullet. If the determination result in step S37 is positive, the process proceeds to step S38. On the other hand, if the determination result in step S37 is negative, the process proceeds to step S39. In this case, the player character will not perform the action of throwing a bullet.
[0302] In step S38, processor 81 causes the player character to begin an action in accordance with the action instruction made in step S32. After the player character begins the action in step S38, the player character is controlled to perform that action for a certain period of time by the processing of step S41, which will be described later. After step S38, processor 81 terminates the player character control processing shown in FIG.
[0303] In step S39, processor 81 determines, based on the operation data acquired in step S1, whether or not an operation input has been made to instruct the player character to move. The movement instruction is an instruction to cause the player character to move on the game field. If the determination result in step S39 is positive, the process proceeds to step S40. On the other hand, if the determination result in step S39 is negative, the process proceeds to step S41.
[0304] In step S40, processor 81 causes the player character to move on the field in accordance with the movement instruction given in step S39. After step S39, processor 81 ends the player character control process shown in FIG.
[0305] In step S41, processor 81 controls the player character to perform various actions, such as progress of the action started in step S38 and actions to be taken when no input is made by the player. Note that in one execution of step S41, processor 81 controls the player character to perform an action corresponding to one frame time. By repeatedly executing the processing of step S41 over multiple frames, the player character performs a series of actions in accordance with the above action instructions.
[0306] If the action to be performed by the player character has not been instructed by the player (for example, if the action started in step S38 has ended), in step S41 above, processor 81 may not cause the player character to perform an action, or may cause the player character to perform an action that makes the player character's behavior appear natural (for example, an action such as looking around or swaying its body). After step S41, processor 81 terminates the player character control process shown in FIG.
[0307] Returning to the explanation of Figure 40, in step S12 after the player character control processing of step S11, processor 81 executes event processing. The event processing is processing for carrying out an event that is carried out in response to deformation of a voxel object. Details of the event processing will be described below with reference to Figure 43.
[0308] Figure 43 is a sub-flowchart showing an example of the detailed flow of the event processing of step S12 shown in Figure 40. In the event processing, first, in step S51, processor 81 determines whether or not the player character is performing a sucking action. The determination result of step S51 is positive during the period from when control of the sucking action is started by the processing of step S38 above until the sucking action ends. If the determination result of step S51 is positive, the processing of step S52 is executed. On the other hand, if the determination result of step S51 is negative, the processing of step S57, which will be described later, is executed.
[0309] In step S52, processor 81 determines whether or not the density of voxels related to the terrain object has been updated by the suck-in action in the current frame. If the density is updated in the processing of step S23 above due to the suck-in action, the determination result of step S52 is positive. If the determination result of step S52 is positive, the processing of step S53 is executed. On the other hand, if the determination result of step S52 is negative, the processing of step S59, which will be described later, is executed.
[0310] In step S53, processor 81 counts the number of times the density of voxels has been updated due to the sucking action. Processor 81 stores data indicating the number of updates in memory, and in step S53, increments the value of the number of updates indicated by the data by 1. Following step S53, the process of step S54 is executed.
[0311] In step S54, processor 81 determines whether the number of updates counted in step S53 has reached a predetermined number. If the determination result in step S54 is positive, the process proceeds to step S55. On the other hand, if the determination result in step S54 is negative, the process proceeds to step S59, which will be described later.
[0312] In step S55, processor 81 increases the number of bullets that the player character can throw by one and determines the material of the increased bullets. The bullet material is determined based on the material of the voxels whose density has changed due to the sucking action, according to the method described above in [2-8-1. First Example (Example in which an event in which the number of bullets is increased and an event in which the player character throws a bullet occurs)]. Processor 81 updates the bullet data stored in memory to include data indicative of bullets of the material determined above. Following step S55, the process of step S56 is executed.
[0313] In step S56, processor 81 resets the counted number of updates. Specifically, the data indicating the number of updates stored in memory is updated to 0. After step S56, the process of step S59, which will be described later, is executed.
[0314] In this embodiment, while the player character is performing the sucking action, the series of processes from steps S51 to S56 are executed in the event processing for each frame. As a result, an event of adding a bullet is executed every time the number of updates reaches a predetermined number.
[0315] In step S57, processor 81 determines whether or not the sucking action by the player character has just ended. If the determination result in step S57 is positive, the process proceeds to step S58. On the other hand, if the determination result in step S57 is negative, the process proceeds to step S59, which will be described later.
[0316] In step S58, processor 81 resets the counted number of updates in the same manner as in step S55. After step S58, the process proceeds to step S59.
[0317] In step S59, processor 81 calculates the aforementioned cumulative decrease amount for the voxels of the terrain object. Note that the cumulative decrease amount calculated in step S62 is the decrease amount for the entire terrain object. The cumulative decrease amount is calculated according to the method described above in [2-8-2. Second Example (Example in which an event in which an item is placed in a terrain object is performed)]. For example, processor 81 can calculate the current cumulative decrease amount by adding the decrease amount resulting from the density update in step S23 in the current frame to the cumulative decrease amount up to that point, which is indicated by the total decrease amount data stored in memory. Processor 81 stores data indicating the calculated cumulative decrease amount in memory as new total decrease amount data. Following step S59, the process of step S60 is executed.
[0318] In step S60, processor 81 determines whether or not the cumulative reduction amount calculated in step S59 satisfies the condition for placing the item object. Specifically, processor 81 determines whether or not the cumulative reduction amount is equal to or greater than a predetermined threshold. If the determination result in step S60 is positive, the process of step S61 is executed. On the other hand, if the determination result in step S60 is negative, the process of step S63 is executed.
[0319] In step S61, processor 81 places an item object in the game space. Specifically, processor 81 determines the placement position of the item object based on the position where the terrain object has been transformed and / or the position of the player character, in accordance with the method described above in [2-8-2. Second Example (Example in which an event in which an item is placed in a terrain object occurs)]. Processor 81 stores object data related to the item object in memory so that the item object is placed at the determined placement position. Following step S61, the process of step S62 is executed.
[0320] In step S62, processor 81 resets the cumulative decrease amount calculated in step S59. Specifically, the data indicating the total decrease amount stored in memory is updated to indicate 0. After step S62, the process of step S63 is executed.
[0321] In step S63, processor 81 calculates the cumulative reduction amount for the voxels of the terrain object for each material group. The cumulative reduction amount for each material group is calculated according to the method described above in [2-8-3. Third Example (Example of an Event in Which an Item is Granted in a Game)]. For example, processor 81 can calculate the current cumulative reduction amount by adding the reduction amount for each group resulting from the density update in step S23 in the current frame to the cumulative reduction amount for each group up to that point, which is indicated by the group reduction amount data stored in memory. Processor 81 calculates the cumulative reduction amount for each material group and stores data indicating each calculated cumulative reduction amount in memory as new group reduction amount data. Following step S63, the process of step S64 is executed.
[0322] In step S64, processor 81 determines whether any of the cumulative reduction amounts of the materials for each group calculated in step S63 satisfies the condition for granting an item. Specifically, processor 81 determines whether any of the cumulative reduction amounts for each group is equal to or greater than a predetermined threshold. If the determination result in step S64 is positive, the process of step S65 is executed. On the other hand, if the determination result in step S64 is negative, processor 81 ends the event processing.
[0323] In step S65, processor 81 grants an item according to the condition determined to be satisfied in step S64. For example, data related to the player character stored in memory, including data related to the item possessed by the player character, is updated. After step S65, processor 81 ends the event processing.
[0324] Returning to the description of FIG. 40, in step S13 following the event processing of step S12, processor 81 controls the actions of each object other than the player character. For example, the action of an enemy character is controlled according to an algorithm defined in the game program. For example, a bullet object or a shrapnel object is controlled to move in the direction of a throwing action when released by the player character. Note that, in one processing of step S13, processor 81 controls each object so that, for an action performed over multiple frames (e.g., an action by an enemy character), the action progresses for one frame. By repeatedly executing the processing of step S13 over multiple frames, each object performs a series of actions related to movement and various actions. Furthermore, the position of the object is basically determined to be the position after moving at the speed calculated in step S2 above. However, if it is determined by the collision determination in step S10 that an object will come into contact with another object and the movement is obstructed by the contacting object, the position of the object is determined not to change. The object data stored in memory is updated to represent the object after control in step S13. After step S13, the process of step S14 is executed.
[0325] In step S14, processor 81 generates a game image. That is, processor 81 generates a game image by drawing each polygon of the display mesh of the voxel object and the polygons of each object other than the voxel object based on the virtual camera. Note that each polygon of the display mesh is drawn using drawing settings such as texture corresponding to the material set for the polygon, according to the method described above in [2-6-1. Determining the Material of the Display Mesh]. In addition, in this embodiment, when the player character is in a state where a throwing action is possible, processor 81 generates a game image so as to include the above-mentioned aiming image (see FIG. 28). The game image generated in step S14 is output to the display device and displayed once per frame. Following step S14, the process of step S15 is executed.
[0326] In step S15, processor 81 determines whether or not to end the game. For example, processor 81 determines to end the game when a predetermined operation input for ending the game is performed by the player. If the determination result in step S15 is negative, the processing of step S1 is executed again. Thereafter, the series of processing from steps S1 to S15 is repeatedly executed until it is determined in step S15 that the game is to end. On the other hand, if the determination result in step S15 is positive, processor 81 ends the game processing shown in FIG. 40.
[0327] [4. Effects and Modifications of the Present Embodiment] According to the above embodiment, when the voxel density is updated in response to the occurrence of a first event in the game, the game system 1 generates a second event based on the degree of change in the voxels. This allows game events to be generated in response to deformation of the display mesh of the voxel object, thereby improving the strategic and entertaining aspects of the game.
[0328] The above-mentioned "display mesh" may be a mesh used only for display, or may be a mesh used for purposes other than display. The above-mentioned "determination mesh" may be a mesh used only for collision determination, or may be a mesh used for purposes other than collision determination. In the above-mentioned embodiment, two types of meshes, a display mesh and a determination mesh, are used, but in other embodiments, a single type of mesh used for both display and collision determination may be generated.
[0329] Furthermore, according to the above embodiment, a voxel update range is continuously generated while the first event is occurring, and for a voxel corresponding to the update range, if either the density of the voxel or the density of the surrounding voxels is less than a reference value, the density is updated to decrease (see FIG. 32). This allows the mesh of a voxel object to be deformed using a novel method in which the surface of the voxel object is gradually removed.
[0330] In the above embodiment, the degree of change of a voxel is calculated for each material and for each material group, but materials having the same properties can be considered to be one type of material. In this case, the "degree of change for each material" can be said to include the degree of change for several materials belonging to one group.
[0331] In the above embodiment, when a process is executed using data (which means including a program) in an information processing device, part of the data required for the process may be transmitted from another information processing device different from the information processing device. In this case, the information processing device may execute the process using the data received from the other information processing device and the data stored in the information processing device itself.
[0332] In other embodiments, the information processing system may not have some of the configurations in the above embodiments, or may not execute some of the processes executed in the above embodiments. For example, to obtain some specific results in the above embodiments, the information processing system may have the configuration to obtain those results and execute the processes to obtain those results, but may not have other configurations or may not execute other processes. [Industrial Applicability]
[0333] The above-described embodiment can be used as, for example, a game program or a game system, for the purpose of generating game events in response to changes in voxel data. [Explanation of symbols]
[0334] 1. Game System 2 Main unit 81 processors 201 Player Character 271 Aiming Image 272,278,281 Terrain objects 276 Density Update Range 277 Material Update Range 282 Item Objects
Claims
1. On the computer, updating voxel data defined in a virtual space, the voxel data having at least a density set for each of a plurality of voxels indicating the degree to which the space defined by the voxel is virtually occupied by content, based on game processing; generating and updating a display mesh corresponding to the voxel data and drawn based on a virtual camera by determining vertex coordinates of the display mesh based at least on the density included in the voxel data; when a first event occurs based on the game processing, a first voxel update range is generated in a virtual space, and a first voxel update is performed to decrease or increase the density of each voxel in the voxel data that corresponds to the first voxel update range in the virtual space; updating a first parameter indicative of a degree of change to the voxel made by the first voxel update; A game program that generates a second event based on the first parameter in the game processing.
2. the first voxel update is an update that decreases the density, 2. The game program according to claim 1, wherein the first parameter is calculated based on a cumulative total of the density reduction amounts.
3. the first voxel update is an update that decreases the density, 2. The game program according to claim 1, wherein the first parameter is calculated based on a cumulative total of the reduction in the volume of a voxel, the reduction being based on the volume of the space in which the voxel is defined and the reduction in the density of the voxel.
4. The game program according to claim 1 , wherein the first parameter is calculated based on the number of times the first voxel update has been performed.
5. The voxel data further includes a material indicating a type of content for each of the plurality of voxels; The computer further comprises: determining a material for the display mesh based at least on the material included in the voxel data; drawing the virtual space including the display mesh based on the vertex coordinates of the display mesh and a texture corresponding to the material of the display mesh; The game program according to claim 1 , wherein the first parameter is calculated based on the degree of change for each material with respect to a voxel to which the material is set.
6. The computer further comprises: controlling a player character in the virtual space based on an operation input; causing the player character to perform a first action as the first event; increasing the number of times that the player character can perform a second action as the first parameter based on the increase in the degree of change; 5. The game program according to claim 1, wherein, when the number of times that the execution is possible remains, the second event is performed by causing the player character to perform the second action by consuming the number of times that the execution is possible.
7. The voxel data further includes a material indicating a type of content for each of the plurality of voxels; The computer further comprises: determining a material for the display mesh based at least on the material included in the voxel data; drawing the virtual space including the display mesh based on the vertex coordinates of the display mesh and a texture corresponding to the material of the display mesh; As the number of executable times increases, a material corresponding to the second action corresponding to the increased number of executable times is set based on the material of the voxel changed by the first voxel update; 7. The game program according to claim 6, wherein the second action is performed by the player character by releasing an object having a material set thereon corresponding to the second action.
8. the first voxel update is an update that decreases the density, The computer further comprises: Each time the number of times the first voxel update has been performed reaches a first number, Increasing the number of times the execution is possible, 8. The game program of claim 7, further comprising: determining the most reduced material based on the amount of reduction in the material and density of each voxel that has changed due to the first voxel update when the first number of times is reached, or a plurality of the first voxel updates until the first number of times is reached; and determining the most reduced material as the material corresponding to the second action.
9. 6. The game program according to claim 1, wherein the second event is an in-game event that occurs when a degree of change in a voxel indicated by the first parameter reaches a predetermined degree.
10. The computer, generating and updating vertices of the display mesh based on a method of setting vertices in a portion where a voxel having the density in a first range and a voxel having the density in a second range lower than the first range are adjacent to each other based on the voxel data; 10. The game program according to claim 9, wherein the second event involves placing an item object at a position in the virtual space where voxels having the density in the first range are defined.
11. The computer, 11. A game program according to claim 10, wherein an appearance determination is made as to whether or not to make the item object appear each time the degree of change in the voxel indicated by the first parameter increases by a predetermined degree, and if it is determined that the item object should appear, the item object is made to appear and placed.
12. The computer, 10. The game program according to claim 9, further comprising: providing an in-game item to the player when a degree of change in the voxel indicated by the first parameter reaches a predetermined degree.
13. updating voxel data defined in a virtual space, the voxel data having at least a density set for each of a plurality of voxels indicating the degree to which the space defined by the voxel is virtually occupied by content, based on game processing; generating and updating a display mesh corresponding to the voxel data and drawn based on a virtual camera by determining vertex coordinates of the display mesh based at least on the density included in the voxel data; Rendering the virtual space including the display mesh; when a first event occurs based on the game processing, generating a first voxel update range in a virtual space, and performing a first voxel update to decrease or increase the density of each voxel in the voxel data that corresponds to the first voxel update range in the virtual space; updating a first parameter indicative of a degree of change to the voxel made by the first voxel update; An information processing system that generates a second event based on the first parameter in the game processing.
14. the first voxel update is an update that decreases the density, The information processing system according to claim 13 , wherein the first parameter is calculated based on a cumulative total of the reduction amounts of the density.
15. the first voxel update is an update that decreases the density, The information processing system according to claim 13 , wherein the first parameter is calculated based on a cumulative total of reductions in the volume of a voxel, the reductions being based on the volume of a space in which the voxel is defined and the reductions in the density of the voxel.
16. The information processing system according to claim 13 , wherein the first parameter is calculated based on the number of times the first voxel update has been performed.
17. The voxel data further includes a material indicating a type of content for each of the plurality of voxels; The information processing system further comprises: determining a material for the display mesh based on at least the material included in the voxel data; drawing the virtual space including the display mesh based on the vertex coordinates of the display mesh and a texture corresponding to the material of the display mesh; The information processing system according to claim 13 , wherein the first parameter is calculated based on the degree of change for each material with respect to a voxel to which the material is set.
18. The information processing system further comprises: controlling a player character in the virtual space based on an operation input; causing the player character to perform a first action as the first event; increasing the number of times that the player character can perform a second action as the first parameter based on the increase in the degree of change; 17. The information processing system according to claim 13, wherein, when the number of times that the action can be performed is remaining, the second event is performed by causing the player character to perform the second action by consuming the number of times that the action can be performed.
19. The voxel data further includes a material indicating a type of content for each of the plurality of voxels; The information processing system further comprises: determining a material for the display mesh based on at least the material included in the voxel data; drawing the virtual space including the display mesh based on the vertex coordinates of the display mesh and a texture corresponding to the material of the display mesh; As the number of executable times increases, a material corresponding to the second action for the increased number of executable times is set based on the material of the voxel changed by the first voxel update; 19. The information processing system according to claim 18, wherein the second action is performed by the player character by releasing an object having a material set thereon corresponding to the second action.
20. the first voxel update is an update that decreases the density, The information processing system further comprises: Each time the number of times the first voxel update has been performed reaches a first number, Increasing the number of times the execution is possible, 20. The information processing system of claim 19, wherein the material that has been most reduced is determined based on the amount of reduction in the material and density of each voxel that has changed due to the first voxel update when the first number of times is reached, or due to multiple first voxel updates until the first number of times is reached, and the material that has been most reduced is determined as the material corresponding to the second action.
21. 18. The information processing system according to claim 13, wherein the second event is an in-game event that occurs when a degree of change in a voxel indicated by the first parameter reaches a predetermined degree.
22. generating and updating vertices of the display mesh based on a method of setting vertices in a portion where a voxel having the density in a first range is adjacent to a voxel having the density in a second range lower than the first range, based on the voxel data; 22. The information processing system according to claim 21, wherein the second event is to place an item object at a position in the virtual space where voxels having the density in the first range are defined.
23. 23. An information processing system as described in claim 22, wherein an appearance determination is made as to whether or not to make the item object appear each time the degree of change in the voxel indicated by the first parameter increases by a predetermined degree, and if it is determined that the item object should appear, the item object is made to appear and placed.
24. 22. The information processing system according to claim 21, wherein an in-game item is awarded to the player in response to a degree of change in the voxel indicated by the first parameter reaching a predetermined degree.
25. updating voxel data defined in a virtual space, the voxel data having at least a density set for each of a plurality of voxels indicating the degree to which the space defined by the voxel is virtually occupied by content, based on game processing; generating and updating a display mesh corresponding to the voxel data and drawn based on a virtual camera by determining vertex coordinates of the display mesh based at least on the density included in the voxel data; Rendering the virtual space including the display mesh; when a first event occurs based on the game processing, generating a first voxel update range in a virtual space, and performing a first voxel update to decrease or increase the density of each voxel in the voxel data that corresponds to the first voxel update range in the virtual space; updating a first parameter indicative of a degree of change to the voxel made by the first voxel update; An information processing device that generates a second event based on the first parameter in the game processing.
26. Information processing systems, updating voxel data defined in a virtual space, the voxel data having at least a density set for each of a plurality of voxels indicating the degree to which the space defined by the voxel is virtually occupied by content, based on game processing; generating and updating a display mesh corresponding to the voxel data and drawn based on a virtual camera by determining vertex coordinates of the display mesh based at least on the density included in the voxel data; rendering the virtual space including the display mesh; when a first event occurs based on the game processing, a first voxel update range is generated in a virtual space, and a first voxel update is performed to decrease or increase the density of each voxel in the voxel data that corresponds to the first voxel update range in the virtual space; updating a first parameter indicative of a degree of change to the voxel made by the first voxel update; In the game processing, a second event based on the first parameter is generated.
27. the first voxel update is an update that decreases the density, 27. A game processing method according to claim 26, wherein the first parameter is calculated based on a cumulative total of the reduction amounts of the density.
28. the first voxel update is an update that decreases the density, 27. A game processing method according to claim 26, wherein the first parameter is calculated based on a cumulative total of reductions in the volume of a voxel, the reductions being based on the volume of a space in which the voxel is defined and the reductions in the density of the voxel.
29. 27. The game processing method according to claim 26, wherein the first parameter is calculated based on the number of times the first voxel update has been performed.
30. The voxel data further includes a material indicating a type of content for each of the plurality of voxels; The information processing system further includes: determining a material for the display mesh based at least on the material included in the voxel data; drawing the virtual space including the display mesh based on the vertex coordinates of the display mesh and a texture corresponding to the material of the display mesh; 27. A game processing method according to claim 26, wherein the first parameter is calculated based on the degree of change for each material with respect to a voxel to which the material is set.
31. The information processing system further includes: controlling a player character in the virtual space based on an operation input; causing the player character to perform a first action as the first event; increasing the number of times that the player character can perform a second action as the first parameter based on the increase in the degree of change; 30. A game processing method according to claim 26, wherein, when the number of times that the action can be performed is remaining, the number of times that the action can be performed is consumed by the player character to perform the second action as the second event.
32. The voxel data further includes a material indicating a type of content for each of the plurality of voxels; The information processing system further includes: determining a material for the display mesh based at least on the material included in the voxel data; drawing the virtual space including the display mesh based on the vertex coordinates of the display mesh and a texture corresponding to the material of the display mesh; As the number of executable times increases, a material corresponding to the second action corresponding to the increased number of executable times is set based on the material of the voxel changed by the first voxel update; 32. The game processing method according to claim 31, wherein the player character is caused to perform, as the second action, an action of releasing an object to which a material corresponding to the second action is set.
33. the first voxel update is an update that decreases the density, The information processing system further includes: Each time the number of times the first voxel update has been performed reaches a first number, Increasing the number of times the execution is possible, 33. A game processing method according to claim 32, further comprising determining the most reduced material based on the amount of reduction in the material and density of each voxel that has changed in the first voxel update when the first number of times is reached or in multiple first voxel updates until the first number of times is reached, and determining the most reduced material as the material corresponding to the second action.
34. 31. A game processing method according to claim 26, wherein the second event is an in-game event that occurs in response to a degree of change in a voxel indicated by the first parameter reaching a predetermined degree.
35. The information processing system, generating and updating vertices of the display mesh based on a method of setting vertices in a portion where a voxel having the density in a first range and a voxel having the density in a second range lower than the first range are adjacent to each other based on the voxel data; 35. A game processing method according to claim 34, wherein the second event involves placing an item object at a position in the virtual space where voxels having the density in the first range are defined.
36. The information processing system, 36. A game processing method according to claim 35, wherein each time the degree of change in the voxel indicated by the first parameter increases by a predetermined degree, an appearance determination is made as to whether or not to make the item object appear, and if it is determined that the item object should appear, the item object is made to appear and placed.
37. The information processing system, 35. The game processing method according to claim 34, further comprising the step of providing an in-game item to the player in response to a degree of change in the voxel indicated by the first parameter reaching a predetermined degree.
Citation Information
Patent Citations
Program, recording medium, game character drawing method and game machine
JP2004062666A
Program and image generation system
JP2017099744A
Apparatus for editing three-dimensional shape data and program for editing three-dimensional shape data
JP2018197973A
Systems, methods, and devices for 3D voxel-based modeling
JP2018514885A
Data processing apparatus, data processing method, and program
JP2022171068A