Game program, information processing system, information processing device, and game processing method
The game program and method generate events based on voxel data updates and player interactions, improving gameplay by rewarding deformation and item placement, addressing the limitations of conventional voxel-based mesh generation.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- NINTENDO CO LTD
- Filing Date
- 2026-02-06
- Publication Date
- 2026-06-16
AI Technical Summary
Conventional methods only utilize voxel data for generating meshes, lacking the ability to generate game events based on changes in voxel data.
A game program and processing method that updates voxel data in a virtual space, generating and updating display meshes based on voxel density, and triggering events based on voxel updates, deformations, and material changes, including player interactions and item placement.
Enables the generation of game events responsive to voxel data changes, motivating players through deformation and item rewards, enhancing gameplay dynamics.
Smart Images

Figure 2026097822000001_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to a game program, an information processing system, an information processing apparatus, and a game processing method for generating an object in a virtual space using voxel data.
Background Art
[0002] Conventionally, generating a mesh of an object based on voxel data has been performed (for example, see Non-Patent Document 1).
Prior Art Documents
Non-Patent Documents
[0003]
Non-Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0004] Conventionally, voxel data has only been used for generating a mesh.
[0005] Therefore, an object of the present invention is to provide a game program, an information processing system, an information processing apparatus, and a game processing method capable of generating a game event according to a change in voxel data.
Means for Solving the Problems
[0006] In order to solve the above problems, the present invention employs the following configurations (1) to (12).
[0007] (1) One example of the present invention is a game program that causes a computer to perform the following processes. - A process to update voxel data defined in a virtual space, where each of multiple voxels has a density set to indicate the degree to which the space defined by that voxel is virtually occupied by its contents, based on game processing. - A process that generates and updates a display mesh, which is drawn based on a virtual camera and corresponds to voxel data, by determining the vertex coordinates of the display mesh based on the density contained in at least the voxel data. Based on game processing, when a first event occurs, a first voxel update range is generated in the virtual space, and a first voxel update is performed, which decreases or increases the density of each voxel in the voxel data that corresponds to the first voxel update range in the virtual space. • A process to update the first parameter, which indicates the degree of change to the voxel caused by the first voxel update. • In game processing, a process that generates a second event based on the first parameter.
[0008] According to the configuration described in (1) above, events can be generated in response to the deformation of voxel objects, and game processing can be executed according to the degree of deformation.
[0009] (2) In the configuration of (1) above, the first voxel update may be an update that reduces density. The first parameter may be calculated based on the cumulative amount of density reduction.
[0010] According to the configuration described in (2) above, it is possible to generate events in response to transformations that cause voxel objects to be deleted.
[0011] (3) In the configuration of (1) above, the first voxel update may be an update that reduces density. The first parameter may be calculated based on the cumulative decrease in the volume of the voxel, which is based on the volume of the space in which the voxel is defined and the decrease in the density of the voxel.
[0012] According to the configuration described in (3) above, an event can be generated in accordance with the decrease in the volume of the internal region of a voxel object in the virtual space.
[0013] (4) In the configuration described in (1) above, the first parameter may be calculated based on the number of times the first voxel update has been performed.
[0014] According to the configuration described in (4) above, an event can be generated depending on the number of times the voxel object has been deformed.
[0015] (5) In any of the configurations described in (1) through (4) above, the voxel data may further include a material that indicates the type of content for each of the multiple voxels. The game program may also cause the computer to perform the following processes: • A process to determine the material of the display mesh based on the material contained in at least the voxel data. - A process that renders a virtual space containing a display mesh based on the vertex coordinates of the display mesh and the texture corresponding to the material of the display mesh. • A process to calculate the first parameter for each material based on the degree of change in the voxels to which the material is set.
[0016] According to the configuration described in (5) above, events can be generated in response to changes in the material of each voxel object.
[0017] (6) In any of the configurations from (1) to (4) above, the game program may further cause the computer to execute the following processes. · A process of controlling a player character in a virtual space based on an operation input · As a first event, a process of causing the player character to perform a first action · A process of increasing the number of executable times of a second action of the player character as a first parameter based on an increase in degree · When there are remaining executable times, as a second event, a process of consuming the executable times and causing the player character to perform a second action
[0018] According to the configuration of (6) above, by increasing the number of executable times of the second action by the player character in response to the change of the voxel object, it is possible to give the player a motivation to deform the voxel object.
[0019] (7) In the configuration of (6) above, for each of the plurality of voxels in the voxel data, a material indicating the type of the content may be further set. The game program may further cause the computer to execute the following processes. · A process of determining the material of the display mesh based at least on the materials included in the voxel data · A process of rendering a virtual space including the display mesh based on the vertex coordinates of the display mesh and the texture corresponding to the material of the display mesh · A process of setting, as the number of executable times increases, the material corresponding to the second action corresponding to the increased number of executable times based on the material of the voxel changed by the first voxel update · As a second action, a process of causing the player character to perform an action of releasing an object for which the material corresponding to the second action is set
[0020] According to the configuration in (7) above, the material of the object relating to the second action can be a material based on the updated voxel material.
[0021] (8) In the configuration described in (7) above, the first voxel update may be an update that reduces density. The game program may also cause the computer to perform the following process each time the number of times the first voxel update has been performed reaches a first number. • Process to increase the number of executions The process involves determining the material that has decreased the most based on the decrease in material and density of each voxel that has changed as a result of the first voxel update when the first number of updates is reached, or through multiple first voxel updates up to the first number of updates, and then determining that the material that has decreased the most as the material corresponding to the second action.
[0022] According to the configuration in (8) above, the material of the object relating to the second action can be a material based on the material of voxels whose density has decreased when the number of times the second action can be performed is increased, or before the number of times it is increased.
[0023] (9) In any of the configurations described in (1) through (8) above, the second event may be an in-game event that occurs when the degree of change in the voxels indicated by the first parameter reaches a predetermined level.
[0024] According to the configuration described in (9) above, the player can be motivated to deform more voxel objects.
[0025] (10) In the configuration described in (9) above, the game program may cause the computer to perform the following processes. Based on voxel data, this process generates and updates vertices for a display mesh by setting vertices in areas where voxels with a density in a first range are adjacent to voxels with a density in a second range that is lower than the first range. • The second event is the process of placing an item object at a location in a virtual space where voxels with the density of the first range are defined.
[0026] According to the configuration described in (10) above, by placing item objects in response to changes in voxel objects, it is possible to motivate the player to deform the voxel objects.
[0027] (11) In the configuration described in (10) above, the game program may cause the computer to make a determination of whether or not to make an item object appear each time the degree of change of the voxel indicated by the first parameter increases by a predetermined amount, and if it is determined that the item object should appear, the program may make the item object appear and place it.
[0028] According to the configuration described in (11) above, item objects are placed periodically by continuously changing the voxels, thus providing the player with an incentive to continuously deform the voxel objects.
[0029] (12) In the configuration described in (9) above, the game program may cause the computer to grant in-game items to the player when the degree of change in the voxels indicated by the first parameter reaches a predetermined degree.
[0030] According to the configuration described in (12) above, by granting items in response to changes in voxel objects, it is possible to provide the player with an incentive to deform the voxel objects.
[0031] Another example of the present invention is an information processing device or information processing system that performs the processes described in (1) to (12) above. Another example of the present invention is a game processing method that causes an information processing system to perform the processes described 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, game events can be generated in response to changes in voxel data. [Brief explanation of the drawing]
[0033] [Figure 1] This diagram shows an example of the main unit with the left and right controllers attached. [Figure 2] This diagram shows an example of the left and right controllers being removed from the main unit. [Figure 3] A six-view drawing showing an example of the main unit. [Figure 4] A six-view drawing showing an example of a left controller. [Figure 5] A six-view drawing showing an example of a right controller. [Figure 6] Block diagram showing an example of the internal configuration of the main unit. [Figure 7] Block diagram showing an example of the internal configuration of the main unit, left controller, and right controller. [Figure 8] This diagram shows an example of a terrain object that is a voxel object. [Figure 9] Figure 8 shows an example of what the terrain object looks like before and after a portion of it is deleted. [Figure 10] Figure 8 shows an example of what the terrain object looks like before and after a portion of it 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 the update scope. [Figure 15] A diagram showing an example of how to set vertices. [Figure 16] A diagram illustrating an example of how to determine the material of a vertex. [Figure 17] A diagram showing an example of vertex simplification. [Figure 18] A diagram showing an example of material-related conditions. [Figure 19] This diagram shows an example of a mesh generated based on vertices. [Figure 20] This diagram shows an example where the quadrilaterals that make up the mesh are divided into two triangles. [Figure 21] This diagram shows an example of a method for determining the material of the polygons that make up the display mesh. [Figure 22] This diagram shows an example of a material applied to each vertex of two adjacent polygons. [Figure 23] This diagram shows an example of applying a texture to a polygon. [Figure 24] This diagram shows an example of a method for determining the material of the polygons that make up the mesh used for judgment. [Figure 25] This is an example of a game image showing a player character moving over terrain objects. [Figure 26] This diagram shows an example of a game image illustrating a player character pulling a fragment object from a terrain object. [Figure 27] This is an example of a game image showing how fragment objects are generated when a player character destroys terrain objects. [Figure 28] This diagram shows an example of a game image where the player character is capable of performing a throwing action. [Figure 29] Figure 28 shows an example of a game image after a terrain object has been altered due to contact with a fragment object. [Figure 30]This diagram shows an example of a game image in a state where the player character is capable of performing a sucking action, but before the sucking action is performed. [Figure 31] This diagram shows an example of a game image where the player character is performing a sucking action. [Figure 32] Figure 31 shows an example of how a terrain object deforms before and after a suction action. [Figure 33] This diagram illustrates an example of how a suck action can change the material of a portion of a voxel object. [Figure 34] This diagram illustrates two examples: one where fragments are generated within a voxel object, and another where a deletion process is performed to prevent the generation of fragments. [Figure 35] This diagram shows an example of a game image from the moment after a sucking action is performed but before a throwing action is performed. [Figure 36] A diagram illustrating an example of how to increase the number of bullets and determine the material of the bullets to be increased. [Figure 37] This diagram shows an example of how items are placed in response to the deformation of terrain objects. [Figure 38] This diagram shows an example of a result image illustrating the deformation of terrain objects. [Figure 39] This diagram shows an example of various types of data used in information processing within a game system. [Figure 40] A flowchart illustrating an example of the game processing flow executed by the game system. [Figure 41] Figure 40 shows a subflowchart illustrating an example of the detailed flow of the voxel update process in step S4. [Figure 42] Figure 40 shows a subflowchart illustrating an example of the detailed flow of the player character control process in step S11. [Figure 43] Figure 40 shows a subflowchart illustrating an example of the detailed flow of event processing in step S12. [Modes for carrying out the invention]
[0034] [1. Game System Configuration] The following describes a game system according to an example of this embodiment. An example of the game system 1 in this embodiment includes a main unit (information processing device; functioning as the game device main unit in this embodiment) 2, a left controller 3, and a right controller 4. The left controller 3 and the right controller 4 are 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. Alternatively, the game system 1 can be used with the main unit 2 and the left controller 3 and right controller 4 as separate components (see Figure 2). The hardware configuration of the game system 1 in this embodiment will be described below, followed by a description of the control of the game system 1 in this embodiment.
[0035] Figure 1 shows an example of the main unit 2 with the left controller 3 and right controller 4 attached. As shown in Figure 1, the left controller 3 and right controller 4 are attached to the main unit 2 and integrated together. The main unit 2 is a device that performs various processes (e.g., game processing) in the game system 1. The main unit 2 is equipped with a display 12. The left controller 3 and right controller 4 are devices equipped with operation parts for user input.
[0036] Figure 2 shows an example of the left controller 3 and right controller 4 being removed from the main unit 2. As shown in Figures 1 and 2, the left controller 3 and right controller 4 are detachable from the main unit 2. In the following, the left controller 3 and right controller 4 will be collectively referred to as "controllers".
[0037] Figure 3 is a six-view drawing showing an example of the main unit 2. As shown in Figure 3, the main unit 2 includes a roughly 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 roughly rectangular in shape.
[0038] The shape and size of the housing 11 are arbitrary. For example, the housing 11 may be portable. The main unit 2 alone, or the integrated unit in which the left controller 3 and right controller 4 are attached to the main unit 2, may be a portable device. The main unit 2 or the integrated unit may be a handheld device. The main unit 2 or the integrated unit may also be a portable device.
[0039] As shown in Figure 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] Furthermore, the main unit 2 is equipped with 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 capacitive touch panel). However, the touch panel 13 may be of any type, for example, a type that allows single-touch input (for example, a resistive touch panel).
[0041] The main unit 2 is equipped with a speaker (i.e., speaker 88 shown in Figure 6) inside the housing 11. As shown in Figure 3, speaker holes 11a and 11b are formed on the main surface of the housing 11. The sound output from speaker 88 is emitted from these speaker holes 11a and 11b, respectively.
[0042] Furthermore, the main unit 2 is equipped with a left terminal 17, which is a terminal for the main unit 2 to communicate with the left controller 3 via wired connection, and a right terminal 21, which is for the main unit 2 to communicate with the right controller 4 via wired connection.
[0043] As shown in Figure 3, the main unit 2 is equipped with a slot 23. The slot 23 is located 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. The predetermined type of storage medium is, for example, a storage medium (e.g., a dedicated memory card) specifically for the game system 1 and similar information processing devices. 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 is also equipped with a power button 28.
[0044] The main unit 2 is equipped with a lower terminal 27. The lower terminal 27 is a terminal for the main unit 2 to communicate with the cradle. In this embodiment, the lower terminal 27 is a USB connector (more specifically, a female connector). When the integrated device or the main unit 2 alone is placed on the cradle, the game system 1 can display the 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 integrated 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] Figure 4 is a six-view drawing showing an example of the left controller 3. As shown in Figure 4, the left controller 3 includes a housing 31. In this embodiment, the housing 31 has a vertically elongated shape, that is, it is long in the vertical direction (i.e., in the y-axis direction as shown in Figures 1 and 4). The left controller 3 can also be held in a vertically elongated orientation when detached from the main device 2. The housing 31 is shaped and sized to be held with one hand, especially the left hand, when held in a vertically elongated orientation. The left controller 3 can also be held in a horizontally elongated orientation. When the left controller 3 is held in a horizontally elongated orientation, it may be held with both hands.
[0046] The left controller 3 is equipped with an analog stick 32. As shown in Figure 4, the analog stick 32 is provided on the main surface of the housing 31. The analog stick 32 can be used as a directional input unit that can input direction. The user can input direction (and magnitude according to the angle of tilt) by tilting the analog stick 32. In addition, the left controller 3 may be equipped with a directional pad or a slide stick that allows slide input instead of the analog stick as the directional input unit. Furthermore, in this embodiment, input by pressing the analog stick 32 is also possible.
[0047] The left controller 3 is equipped with various operation buttons. The left controller 3 has four operation buttons 33-36 (specifically, a right direction button 33, a down direction button 34, an up direction button 35, and a left direction button 36) on the main surface of the housing 31. In addition, the left controller 3 is equipped with a record button 37 and a minus button 47. The left controller 3 has a first L button 38 and a ZL button 39 on the upper left side of the side of the housing 31. Furthermore, the left controller 3 has a second L button 43 and a second R button 44 on the side of the housing 31 that is attached when mounted to the main unit 2. These operation buttons are used to give instructions according to various programs (e.g., OS programs and application programs) executed on the main unit 2.
[0048] Furthermore, the left controller 3 is equipped with a terminal 42 for wired communication between the left controller 3 and the main unit 2.
[0049] Figure 5 is a six-view drawing showing an example of the right controller 4. As shown in Figure 5, the right controller 4 includes a housing 51. In this embodiment, the housing 51 has a vertically elongated shape, that is, a shape that is long in the vertical direction. When the right controller 4 is detached from the main unit 2, it can also be held in a vertically elongated orientation. The housing 51 is shaped and sized to be held with one hand, especially the right hand, when held in a vertically elongated orientation. The right controller 4 can also be held in a horizontally elongated orientation. When the right controller 4 is held in a horizontally elongated orientation, it may be held with both hands.
[0050] The right controller 4, like the left controller 3, 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. Alternatively, the right controller 4 may be equipped with a directional pad or a slide stick capable of slide input instead of the analog stick. The right controller 4, like the left controller 3, is equipped with four operation buttons 53-56 (specifically, A button 53, B button 54, X button 55, and Y button 56) on the main surface of the housing 51. Furthermore, the right controller 4 is 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. The right controller 4, like the left controller 3, is also equipped with a second L button 65 and a second R button 66.
[0051] Furthermore, the right controller 4 is equipped with a terminal 64 for wired communication between the right controller 4 and the main unit 2.
[0052] Figure 6 is a block diagram showing an example of the internal configuration of the main unit 2. In addition to the configuration shown in Figure 3, the main unit 2 includes the components 81-91, 97, and 98 shown in Figure 6. Some of these components 81-91, 97, and 98 may be mounted on an electronic circuit board as electronic components and housed within the housing 11.
[0053] The main unit 2 includes a processor 81. The processor 81 is an information processing unit that performs various information processing operations performed in the main unit 2, and may consist of, for example, only a CPU (Central Processing Unit), or it may consist of an SoC (System-on-a-chip) that includes multiple functions such as CPU function and GPU (Graphics Processing Unit) function. The processor 81 performs various information processing operations by executing information processing programs (for example, game programs) stored in a storage unit (specifically, an internal storage medium such as flash memory 84, or an external storage medium installed in slot 23).
[0054] The main unit 2 includes, as an example of an internal storage medium built into itself, a flash memory 84 and a DRAM (Dynamic Random Access Memory) 85. The flash memory 84 and DRAM 85 are connected to the processor 81. The flash memory 84 is a memory mainly used to store various types of data (which may be programs) stored in the main unit 2. The DRAM 85 is a memory used to temporarily store various types of data used in information processing.
[0055] The main unit 2 is equipped with 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 slot 23 and reads and writes data to a predetermined type of storage medium (for example, a dedicated memory card) installed in slot 23, according to instructions from the processor 81.
[0056] The processor 81 performs the above-mentioned information processing by appropriately reading and writing data to and from the flash memory 84 and DRAM 85, as well as to each of the above-mentioned storage media.
[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, wirelessly). In this embodiment, the network communication unit 82 communicates with external devices by connecting to a wireless LAN using a method compliant with the Wi-Fi® standard as a first communication mode. The network communication unit 82 also communicates wirelessly with other main unit 2 of the same type using a predetermined communication method (for example, communication using a proprietary protocol or infrared communication) as a second communication mode. The wireless communication using the second communication mode is possible with other main unit 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 communicating directly between multiple main unit 2.
[0058] The main unit 2 includes a controller communication unit 83. The controller communication unit 83 is connected to the processor 81. The controller communication unit 83 communicates wirelessly with the left controller 3 and / or the right controller 4. The communication method between the main unit 2 and the left controller 3 and the right controller 4 is arbitrary, but in this embodiment, the controller communication unit 83 communicates with the left controller 3 and with the right controller 4 in accordance with the Bluetooth® standard.
[0059] The processor 81 is connected to the left terminal 17, right terminal 21, and lower terminal 27 described above. When the processor 81 communicates with the left controller 3 via a wired connection, it 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 the processor 81 communicates with the right controller 4 via a wired connection, it 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 the processor 81 communicates with the cradle, it transmits data to the cradle via the lower terminal 27. Thus, in this embodiment, the main unit 2 can perform both wired and wireless communication with the left controller 3 and the right controller 4, respectively. Furthermore, when the left controller 3 and the right controller 4 are mounted on the main unit 2 as an integrated unit, or when the main unit 2 alone is mounted on 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. Furthermore, the main unit 2 can 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 respective sets of left controllers 3 and right controllers 4. For example, while the first user inputs to the main unit 2 using the first set of left controllers 3 and right controllers 4, the second user can input to the main unit 2 using the 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 images generated (for example, by performing the above information processing) and / or images acquired from an external source on the display 12.
[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 terminals 25, as well as to the processor 81. The codec circuit 87 is a circuit that controls the input and output of audio data to the speakers 88 and the audio input / output terminals 25.
[0063] The main unit 2 comprises 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 in the figures, the power control unit 97 is also connected to various parts of the main unit 2 (specifically, the parts that receive power from the battery 98, the left terminal 17, and the right terminal 21). Based on commands from the processor 81, the power control unit 97 controls the power supply from the battery 98 to the aforementioned parts.
[0064] The battery 98 is also connected to the lower terminal 27. When an external charging device (for example, a cradle) is connected to the lower terminal 27 and power is supplied to the main unit 2 via the lower terminal 27, the supplied power charges the battery 98.
[0065] Figure 7 is a block diagram showing an example of the internal configuration of the main unit 2, the left controller 3, and the right controller 4. Note that the details of the internal configuration of the main unit 2 are shown in Figure 6 and are therefore omitted in Figure 7.
[0066] The left controller 3 includes a communication control unit 101 that communicates with the main unit 2. As shown in Figure 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 by wired communication via the terminal 42 and by wireless communication without using the terminal 42. The communication control unit 101 controls the method of communication that the left controller 3 performs with 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 performs wireless communication with the main unit 2 (specifically, the controller communication unit 83). Wireless communication between the controller communication unit 83 and the communication control unit 101 is performed according to, for example, the Bluetooth® standard.
[0067] The left controller 3 also includes a memory 102, such as flash memory. The communication control unit 101 is composed of, for example, a microcontroller (also called a microprocessor) and performs various processes by executing firmware stored in the memory 102.
[0068] The left controller 3 is equipped with buttons 103 (specifically, buttons 33-39, 43, 44, and 47). The left controller 3 is also equipped with an analog stick (referred to as "stick" in Figure 7) 32. Each button 103 and the analog stick 32 repeatedly output information about the operations performed on them to the communication control unit 101 at appropriate intervals.
[0069] The communication control unit 101 acquires information about the input (specifically, information about the operation or detection results from the sensor) from each input unit (specifically, each button 103 and the analog stick 32). The communication control unit 101 transmits operation data, including the acquired information (or information that has been processed in a predetermined manner), to the main unit 2. The operation data is transmitted repeatedly at a rate of once at predetermined intervals. The interval at which information about the input is transmitted to the main unit 2 may or may not be the same for each input unit.
[0070] When the above operation data is transmitted 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 the analog stick 32 based on the operation data.
[0071] The left controller 3 includes a power supply unit 108. In this embodiment, the power supply unit 108 includes 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 Figure 7, the right controller 4 includes a communication control unit 111 that communicates with the main unit 2. The right controller 4 also includes a memory 112 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 the 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 by wired communication via the terminal 64 and by wireless communication without the terminal 64 (specifically, communication according to the Bluetooth® standard), and controls the method of communication that the right controller 4 performs with the main unit 2.
[0073] The right controller 4 is equipped with the same inputs as the left controller 3. Specifically, it is equipped with buttons 113 and an analog stick 52. These inputs have the same functions and operate in the same way as the inputs of the left controller 3.
[0074] The right controller 4 is equipped with a power supply unit 118. The power supply unit 118 has the same functions and operates in the same manner as the power supply unit 108 of the left controller 3.
[0075] [2. Overview of processing in the game system] Next, an overview of the processes performed in the game system 1 will be described with reference to Figures 8 to 29. In this embodiment, the game system 1 generates a game image in which terrain objects and characters (for example, player characters controlled by the player) are placed in a game space, which is a three-dimensional virtual space, and displays it on a display device. In this embodiment, the display device on which the game image is displayed may be the display 12 described above, or it may be a stationary monitor.
[0076] [2-1. Voxel] In this embodiment, the shape of some objects in the game space is defined by voxel data. Here, a voxel is a rectangular (more specifically, cubic) region arranged in a grid in the game space, and voxel data is data that indicates information about each voxel. Hereafter, objects whose shape is defined by voxel data will be called "voxel objects". 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] Figure 8 shows an example of a terrain object that is a voxel object. As shown in Figure 8, in this embodiment, terrain objects representing the ground and other terrain are defined by voxel data (i.e., they are voxel objects). Each cube shown in Figure 8 represents a terrain object. Note that in Figure 8, the edges of the terrain objects are shown with thick lines, but these thick lines are added for the purpose of making the drawing easier to read, and in reality, the edges of the terrain objects do not need to be displayed with thick lines.
[0078] The terrain object shown in Figure 8 was generated using a rule such as, "If the parameter included in the voxel data set for a voxel is greater than a predetermined value, a cube is placed at the voxel's location; if it is less than or equal to the predetermined value, nothing is placed at the voxel's location." The terrain object shown in Figure 8 is provided to illustrate the relationship between voxels and voxel objects in an easy-to-understand manner. In this embodiment, voxel objects are actually generated using rules (based on voxel data) that result in complex shapes, such as the terrain object shown in Figure 13, which will be described later. The rules for determining the shape of voxel objects based on voxel data are arbitrary. In other embodiments, the game system 1 may generate voxel objects as shown in Figure 8 or as shown in Figure 13 based on object data.
[0079] For voxel objects, the shape can be changed by modifying the voxel data of each voxel. Figures 9 and 10 show examples of what the terrain object shown in Figure 8 looks like before and after a portion of it is deleted. That is, when the shaded portion of the terrain object shown in Figure 9 is destroyed, the terrain object changes to the shape shown in Figure 10. At this time, the game system 1 can easily delete the terrain object by rewriting the voxel data of the shaded portion voxel to indicate that the terrain object does not exist. Furthermore, when adding a terrain object, the game system 1 can easily change the shape of the terrain object by modifying the voxel data of each voxel, just as when deleting a terrain object.
[0080] In this way, Game System 1 can freely change the shape of voxel objects by rewriting the voxel data. For example, if a terrain object is destroyed in a game for some reason (for example, when a player character hits the terrain object) and the shape of that terrain object changes as a result, 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 that represents the external shape of the terrain object (i.e., the mesh described later).
[0081] In this embodiment, voxels are defined throughout the entire game space (i.e., the voxel space in which voxels are defined corresponds to the entire game space). However, the voxel space does not need to be defined throughout the entire game space; it may be defined in a part of the game space. When the voxel space is defined in a part of the game space, the shape of the voxel object is defined by the voxel data relating to the voxels in that voxel space, and the position of the voxel object in the game space is defined by the position of that voxel space in the game space. Furthermore, the game space may have a main voxel space defined throughout the entire game space and a sub-voxel space defined in a part of the game space. In this case, the game system 1 stores voxel data for each voxel space.
[0082] Figure 11 shows an example of voxel data. For each voxel defined in the game space, the voxel data includes density data, a first material ID, a second material ID, material mixing ratio data, and state data. In this embodiment, this data is set for each individual voxel.
[0083] The density data indicates the density, which is an index used to define the shape of the voxel object based on the voxel in question (specifically, the shape defined by the mesh described later). As will be explained in detail later, the position and shape of the surface of the voxel object (i.e., the mesh described later) are determined based on the density described above.
[0084] In this embodiment, density can take the range of an integer value 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 higher density value for a voxel tends to result in a larger proportion of the volume occupied by the area within the voxel object within that voxel, and a lower density value tends to result in a smaller proportion. Thus, density is an indicator that affects the proportion of the volume occupied by the area within the voxel object within that voxel. Density can also be said to be an indicator that shows the degree to which the space of the voxel is virtually occupied by its contents (i.e., the virtual contents of the voxel object). For example, if the density is 0, the inside of the voxel is empty; if the density is 255, the entire inside of the voxel is the contents of the voxel object; and if the density is a value between 0 and 255, the contents of the voxel object can occupy the inside of the voxel in proportion to the value. Based on the above density, the shape of the mesh, i.e., the surface shape of the voxel object, can be determined. A mesh can be described as the surface of the portion of a voxel that contains content, or as the boundary between the portion of a voxel that contains content and the portion that does not. Furthermore, the volume occupied by a region within a voxel object generated based on the above density does not need to be exactly equal to the volume indicated by the density. For example, the volume of a voxel object generated using a method like that shown in Figure 8 may differ from that generated using a method like that shown in Figure 13, even if both methods are based on the same density.
[0085] In other embodiments, density may represent either a state where the entire region within the voxel is occupied by the volume of the region within the voxel object, or a state where the region within the voxel does not include the volume occupied by the region within the voxel object. For example, density data may only take the values of 0 or 1.
[0086] The first material ID and the second material ID are information indicating the material (in other words, substance) of the voxel. In this embodiment, a voxel may be assigned a material such as sand, rock, or soil. In the game system 1, multiple types of materials are available that can be assigned to a voxel (see the material data shown in Figure 12). In this embodiment, up to two materials from the multiple types of materials available can be assigned to a single voxel. The first material ID is an ID indicating the first material assigned to the voxel, and the second material ID is an ID indicating the second material assigned to the voxel. As will be described in detail later, the material of a voxel object (i.e., the material assigned to the polygon of a voxel object) is determined based on the material assigned 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 be a data structure that includes data that directly indicates the content of the material (i.e., information such as the name, properties, and rendering settings, which will be described later).
[0088] The material mixing ratio data is an example of data that shows the ratio of each material in a given voxel. In this embodiment, since up to two material IDs can be set for one voxel, the material mixing ratio data that shows the ratio of one of the materials, the material indicated by the first material ID and the material indicated by the second material ID, can also represent the ratio of the other material. In this embodiment, the material mixing ratio is a value between 0 and 1 that indicates the proportion of the second material to the whole consisting of the first and second materials. For example, if the material mixing ratio set for a voxel is 0.4, it means that in that voxel, the first material and the second material are composed in a ratio of 0.6:0.4. As will be described in detail later, the appearance and properties of a voxel object are determined based on the material. 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 that indicates the proportion of the first material. Also, the ratio of materials within a voxel may be represented by separate values that indicate the proportion of each material. In particular, in other embodiments where it is possible to set not just two types of materials but three or more, the ratio within the material voxels will be represented as multiple values that indicate the proportion of each material.
[0089] In this embodiment, it is not necessary for a voxel to have two types of materials assigned to it; it may have only one type of material assigned. For example, if a voxel has only one type of material assigned to it, the first material ID will indicate that material, and the material mixing ratio will be set to 0.
[0090] The status data indicates the state set for the voxel. The specific content and number of types of status data are arbitrary. In this embodiment, the status data includes data indicating the amount of damage set for the voxel. In other embodiments, the status data may include, for example, data indicating whether (and to what extent) the voxel is wet.
[0091] As described above, in this embodiment, the voxel data includes a material ID, so the game system 1 stores material data that defines the content of the material indicated by the material ID. Figure 12 is a diagram showing an example of material data. As shown in Figure 12, in the material data of this embodiment, each material is associated with a material ID, the name, properties, drawing settings, and internal material ID information set for that material.
[0092] The names included in the material data are the names assigned to the material in question (e.g., soil, sand, grass, etc.). As will be explained in more detail later, the material names of voxel objects may be displayed during gameplay (see Figure 28). To enable this display, the material data includes information about the material's name.
[0093] The properties included in material data are the properties set for that material. Material properties are the properties that the voxel object to which the material is applied possesses in the game. The specific content and number of types of material properties are arbitrary. For example, at least one of the following pieces of information may be set as material properties. Hardness • weight • Slippery • Damage settings when the player character makes contact ·temperature • Can other objects be attached to a voxel object? • The amount of health restored to the player character when the player character destroys or acquires a voxel object. • The amount of in-game currency a player character acquires when they destroy or acquire a voxel object. In other embodiments, information different from that described above may be set as information indicating the properties of the material.
[0094] In this embodiment, the material data includes an ID indicating the properties of the material as information that identifies those properties (see Figure 12). Although not shown, the game system 1 stores property information for each available property, where the content of that property (for example, the weight and slipperiness values mentioned above) is associated with the property ID. By referring to the above property information, the game system 1 can identify the specific content of the properties set for the material.
[0095] The rendering settings included in the material data are information indicating rendering-related settings, such as the texture used to render the voxel object to which the material is set. In this embodiment, the material data includes the ID of the texture used to render the voxel object to which the material is set as rendering setting information (see Figure 12). Although not shown, the game system 1 stores texture information for each prepared texture, associating the texture ID with the texture indicated by that texture ID. By referring to the above texture information, the game system 1 can identify the specific content of the texture set for the material. In other embodiments, in addition to texture information, arbitrary information related to shading settings may be set as rendering setting information. For example, reflectivity and information related to normals may be set.
[0096] As shown in Figure 12, in the material data of this embodiment, an internal material ID is associated with a material ID. The internal material ID indicates the material of the inner part of an object (hereinafter referred to as the "internal material") when the material ID associated with it indicates the material of the outer part of an object. For example, the material ID representing the bark of a tree may be associated with the material ID representing the inside of the tree as the internal material ID. Also, for example, the material ID representing a grassy ground may be associated with the material ID representing the soil inside when the grass on the ground surface is removed as the internal material ID. In this embodiment, internal materials are set in advance for each type of material. However, depending on the type of material, there may be cases where an internal material is not set, that is, an internal material ID is not associated with a material ID. As will be described in detail later, the internal material is used as the modified material when a material modification process is performed on a voxel to which the material to which the internal material is associated is set (see [2-8-1. Example of an event where the number of bullets is increased and an event where the player character throws bullets] described later).
[0097] In this embodiment, the same value as the ID set as the internal material ID is set as the material ID in the material data. For example, in the example shown in Figure 12, the ID of the soil material (001 in Figure 12), which is the internal material ID associated with the ID of the grass material (003 in Figure 12), is also set as the material ID. Therefore, by referring to the material data, it is possible to identify the name, properties, and rendering settings information associated with the internal material ID. The material data may be any data structure that can identify the information corresponding to the internal material ID. The material data may be a data structure in which the name, properties, and rendering settings information are indirectly associated with the internal material ID as described above, or it may be a data structure in which this information is directly associated with the internal material ID.
[0098] Furthermore, the material data may include other data besides the data shown in Figure 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 the footsteps that are output when the player character walks on the voxel object based on the voxel.
[0099] The material data may be in any format that can identify the properties and / or rendering settings of the material. For example, in other embodiments, the material data may have a data structure that directly indicates the properties and / or rendering settings of the material, instead of a data structure that includes a material ID and a texture ID.
[0100] [2-2. Updating Voxel Data] During gameplay, voxel objects are deformed when the aforementioned voxel data is updated. In this embodiment, when a game event that updates a 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. An update event may be, for example, a character appearing in the game performing an action that deforms a voxel object (for example, a player character punching a voxel object), or an event that deforms a voxel object may occur (for example, an object thrown by a character making contact with a voxel object, or a bomb exploding).
[0101] Figure 13 shows an example of the game space when an update event occurs. The situation shown in Figure 13 is when a player character 201 performs a punch action on a terrain object 202, which is a voxel object. As will be explained in detail later, in the example shown in Figure 13, the voxel data is updated so that the terrain object 202 around the location where the player character 201's punch action hits is erased. This represents the destruction of the terrain object 202 by the player character 201's punch action.
[0102] In this embodiment, when an update event occurs, the game system 1 sets an update range (update range 203 in the example shown in Figure 13) in the game space for updating the voxel object. The position, shape, and size of the update range are arbitrary. The position of the update range may be determined, for example, based on the position where the object related to the update event that occurred (e.g., the player character that made the punch) and the voxel object came into contact. In the example shown in Figure 13, the position of the update range 203 may be determined based on the position where the punch by the player character 201 hit. For example, the center position of the update range 203 may be the position where it hit, or a predetermined distance forward from the position where it hit. The shape and size of the update range may be predetermined to be a shape corresponding to the type of update event. For example, when an update event occurs due to a punch by 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 Figure 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 occurred (e.g., the strength of the punch or the size of the explosion).
[0103] Game system 1 changes the density of voxels corresponding to the set update range. 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 the density change, the mesh of the voxel object is changed by the process described later, thereby changing the shape of the voxel object (visual shape and shape used for contact detection). In other embodiments, in addition to changing the density of voxels included in the update range, game system 1 may also change the material of the voxel (i.e., the first material, the second material, and the material mixing ratio) or change the state of the voxel.
[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 that indicates the update range set in the game space and makes the above determination based on the value of the SDF. The SDF represents the distance from a defined shape to any given position with a sign. Figure 14 shows an example of an update range. In the example shown in Figure 14, a spherical update range is set in the game space. For example, in the example shown in Figure 14, the SDF is set such that for positions inside the shape represented by the SDF in the game space, the SDF value is negative, and for positions outside the shape represented by the SDF, the SDF value is positive. In this example, it is possible to determine whether or not a voxel is included in the update range based on whether the SDF value is positive or negative. Furthermore, by using the signed distance value, it is possible to perform not only simple inside / outside determination but also processing such as correction and interpolation.
[0105] The above example describes a change applied to a voxel object where the voxel object within the update range is deformed to appear as if it were deleted. However, the changes that can be applied to a voxel object using the update range are not limited to this. For example, a change may be applied to a voxel object where 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 Figure 29 below). Alternatively, a change may be applied to a voxel object where only the material of the voxels within the update range changes, without changing the voxel density. Furthermore, a combination of changes to voxel density and material may be applied.
[0106] [2-3. Calculation of Vertices] When the voxel density is updated as described above, the game system 1 sets vertices based on the updated voxel data. These vertices are those that can become the vertices of the mesh of the voxel object. As will be described in detail later, in this embodiment, the above vertices are simplified, and the simplified vertices become the vertices of the mesh of the voxel object.
[0107] Figure 15 shows an example of how vertices are set. In Figures 15 to 24 described below, voxels, vertices, meshes, etc. are represented in 2D for the purpose of making the diagrams easier to see and the explanations easier to understand. However, in reality, vertices and meshes are set in 3D space based on voxels in 3D space. In this embodiment, the game system 1 uses a method to set vertices at coordinates based on the positions and densities of multiple surrounding voxels in areas where voxels with a set density indicating existence (i.e., a density greater than or equal to the reference value described later) and voxels with a set density indicating non-existence (i.e., a density less than the reference value described later) are adjacent. The details of this method will be 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 being completely in the air, and a voxel with a density of 255 represents being completely filled. Densities between 0 and 255 are treated interpolatively and used to determine vertices. In this embodiment, voxels with a density greater than or equal to a reference value are virtually treated as being inside the object, and voxels with a density less than the reference value are virtually treated as being outside the object. Alternatively, voxels with a density greater than or equal to a reference value are virtually treated as existing voxels, and voxels with a density less than the reference value are virtually treated as non-existent voxels. It is not necessary to define only voxels with a density of 0 as being outside the object (i.e., the reference value = 1); the reference value can be, for example, 128. In the example shown in Figure 15, the density of voxel 211 and the other outer voxels is set to 0, the density of voxel 212 is set to 100 (below the reference value), and the densities of voxels 213 and 214 are set to 150 and 210 (above the reference value). In this embodiment, the game system 1 generates vertices between voxels with a density above the reference value and voxels with a density below the reference value. Specifically, for each region spanning eight adjacent voxels (four in the diagram) (the region enclosed by dotted lines in the diagram), a decision is made as to whether or not to generate a vertex. In other words, vertices are generated in regions that span both voxels with a density above the reference value and voxels with a density below the reference value. The coordinates of the vertices are determined by comparing the densities of adjacent voxels along the XYZ axes and interpolating based on the density difference. Furthermore, by setting normal information that defines the position and orientation of the straight line connecting the vertices, the coordinates of the vertices can be calculated based on the normal information. Furthermore, normal information may be stored in advance for at least some of the voxels, or if it is not stored, the normal information may be calculated based on the density of adjacent voxels. In Figure 15, since the density of voxel 212 is below the standard value, voxel 212 is treated as outside the object when determining the presence or absence of a vertex, but the density value of voxel 212 itself is used in calculating the coordinates of the generated vertices.If the baseline value is set lower than the density of voxel 212, the result will be an increase in the number of vertices on the upper right and upper left sides of voxel 212 in Figure 15.
[0109] By setting vertices as described above, when generating a mesh connecting each set vertex (or each vertex after the simplification process described later has been applied to each set vertex), it is possible to generate a shape with a volume that reflects the density of each voxel to some extent. However, depending on the relationship with adjacent voxels, it is possible that voxels with a density of 0 may include some areas within the object, or voxels with a density of 255 may include some areas outside the object. Also, in this embodiment, voxels below a certain threshold are treated as being outside the object, so the volume is smaller because there are fewer vertices compared to when they are treated as being inside the object. Thus, it is not necessary to calculate the polygon mesh so that the volume strictly corresponds to the density value.
[0110] [2-4. Determining the material of the vertices] Game system 1 determines the material for each vertex set as described above. The material of a vertex is determined based on the material of the voxels surrounding that vertex. The voxels surrounding a vertex are, for example, the voxels used to determine whether or not to generate that vertex (i.e., voxels that overlap with the "region spanning voxels" described above). In other embodiments, the voxels used to determine the material of a vertex and the voxels used to determine whether or not to generate a vertex do not need to be the same and may be different.
[0111] Figure 16 shows an example of a method for determining the material of a vertex. In the example shown in Figure 16, vertex 219 is set with respect to four voxels 215-218, and these four voxels 215-218 are the "voxels surrounding the vertex" mentioned above. In actual 3D space, the number of voxels surrounding a vertex is eight. Also, in the example shown in Figure 16, voxel 215 is set to have a density of 255, a first material of "sand", and a material mixing ratio of 0 (i.e., first material:second material = 1:0, or the second material does not need to be set). Voxel 216 is set to have a density of 0 (the first and second materials do not need to 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 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 "soil", the second material is "grass", and the material mixing ratio is 0.4 (i.e., first material:second material = 0.6:0.4). The coordinates indicating the position of vertex 219 are set to (X,Y)=(0.8,0.6). The coordinate system for these coordinates is one in which the left-right direction in Figure 16 is the X-coordinate and the up-down direction is the Y-coordinate, with the center position of voxel 217, the bottom left of the center positions of voxels 215-218 (positions of the white circles shown in Figure 13), being (0,0).
[0112] When determining the material of a vertex, the game system 1 calculates an evaluation value for each material in the surrounding voxels based on the density of that material and a weight value based on the distance from the voxel to the vertex. First, the weight value is calculated for each voxel, and is calculated so that it becomes larger the closer the distance from the center position of the voxel to the vertex. 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 given voxel is calculated according to the following equation (1). (Weight value) = |(1-x1)-x2|·|(1-y1)-y2|…(1) In the example shown in Figure 16, the weight values for each voxel 215 to 218 calculated according to equation (1) above 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] Furthermore, game system 1 calculates the material density for each voxel. Here, material density is the value obtained by multiplying the density of the voxel by the proportion of the material set for that voxel that is occupied by that material. In this embodiment, the voxel density is the value normalized from the above values of 0 to 255 to a value of 0 to 1. In the example shown in Figure 16, for voxel 215, the only material set is sand, so the proportion of sand material is 1, and the density of that voxel is 1, so the density of sand material is 1. For voxel 216, the density is 0 and no material is set, so the material density is not calculated. Alternatively, if any material is set, the density of that material is 0. For voxel 217, the set ratios of sand material and grass material are 0.7 and 0.3, respectively, and the density of the voxel is 204 / 255=0.8. Therefore, 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 set ratios of soil material and grass material are 0.6 and 0.4, respectively, and the density of the voxel is 153 / 255=0.6. Therefore, the density of the soil material is 0.6·0.6=0.36, and the density of the soil material is 0.4·0.6=0.24.
[0114] The game system 1 then calculates the above evaluation value for each material based on the weight value and the density of the material. In this embodiment, the evaluation value of a material is the sum of the density of the material calculated for each voxel, weighted according to the weight value for each voxel, for all surrounding voxels. In the example shown in Figure 16, the evaluation value of the sand material is 1·0.12+0.56·0.08=0.1648, since 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. Similarly, the evaluation value of the grass material is 0.24·0.08+0.24·0.32=0.096, since 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 is calculated as follows: for 218 voxels, the material density is 0.36 and the weight value is 0.32, so 0.36 * 0.32 = 0.1152.
[0115] Game System 1 determines the vertex material based on the evaluation value of each material. Specifically, a predetermined number of materials are selected as vertex materials in order from those with the highest evaluation values. In this embodiment, the two materials with the highest evaluation values are selected as vertex materials. In the example shown in Figure 16, the evaluation values of the sand, grass, and soil materials are 0.1648, 0.096, and 0.1152, respectively, so the vertex materials are determined to be the sand material and the soil material. Game System 1 also calculates the ratio of the two selected 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 mixing ratio described above. In the example shown in Figure 16, for example, if the first material is soil and the second material is sand, the second material ratio is shown 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 indicating the proportion of the first material. Alternatively, separate values 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 on the vertex, and the ratio of the materials. However, the method for managing the materials set on the vertices is arbitrary. In other embodiments, the vertex data may be 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 contained in the voxel data of the surrounding voxels, based on the voxel data. Then, based on the priority parameter, it selects up to a predetermined number (in this case, 2) of the highest priority material IDs and determines them as the material IDs for the vertex. Note that the specific parameters used as priority parameters are not limited to the evaluation value described above. For example, in other embodiments, an evaluation value calculated using the density of the material may be used as the priority parameter instead of using the weight value described above.
[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 priority of the material set on the denser voxels is increased (i.e., the evaluation value of the material increases, making it more likely to be selected). This allows the material of a vertex to be determined in accordance with the density set on the voxels.
[0119] Furthermore, in this embodiment, the 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 in question, so that the priority of the material set on the voxel closest to the vertex is increased. This makes it possible to determine the material of a vertex by reflecting the distance between the voxel and the vertex.
[0120] Furthermore, in this embodiment, the evaluation value, which is an example of a priority parameter, can be said to be calculated based on the material mixing ratio of multiple voxels surrounding the vertex, so that materials with a higher material mixing ratio have a higher priority. According to this, when multiple materials are set for a single voxel, the material of the vertex can be determined by reflecting the ratio of each material.
[0121] [2-5. Simplification of Vertices] In this embodiment, the game system 1 simplifies each vertex calculated as described above. Specifically, the game system 1 reduces the number of vertices by replacing some of the vertices calculated as described above with a single vertex. As will be described in detail later, the coordinates (i.e., position) and material of the replaced vertices are set based on the multiple vertices before replacement. This simplification reduces the number of vertices and polygons that make up the mesh of the voxel object, thereby reducing the amount of memory used for processing and reducing the processing load.
[0122] In this embodiment, the game system 1 simplifies by representing each vertex using SVO (Sparse Voxel Octree). Figure 17 shows an example of vertex simplification. In Figure 17, one square shown by a solid line in Figure 17(a) represents one vertex partitioned region. Here, a vertex partitioned region is a square region with the center position of the voxel as its vertex (in actual 3D space, a vertex partitioned region is a cube or cuboid), and is the region with the dotted lines as its edges in Figures 15 and 16 described above. Also, in Figure 17, a vertex partitioned region with the letter "v" inside indicates a vertex partitioned region where a vertex is set.
[0123] In this embodiment, the game system 1 determines whether simplification is possible for vertices within a predetermined number of adjacent vertex division regions (four in Figure 17, eight in actual 3D space). If it is determined that simplification is possible, simplification is performed for the vertices within that predetermined number of vertex division regions.
[0124] Figure 17(a) shows the state before simplification. In the example shown in Figure 17, it is assumed that the vertex division regions within the area enclosed 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 regions determined to be simplifiable are replaced with a single vertex (see Figure 17(b)). As a result, the vertices in the predetermined number of vertex division regions 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 Figure 17 illustrates and explains up to the second stage. Figure 17(b) shows the state after the first stage of simplification, and Figure 17(c) shows the state after the second stage of simplification. In the second stage of simplification, it is determined whether or not simplification is possible for the vertices that were created by the first stage of simplification. In the example shown in Figure 17, it is determined that simplification is possible for the vertex division region enclosed by the dotted line in Figure 17(b), and as a result, the vertices in that vertex division region are simplified, resulting in the state shown in Figure 17(c). Note that the criteria for determining whether or not simplification is possible in the first stage and the criteria for determining whether or not simplification is possible in the second stage 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 above determination are a condition relating to the shape of the voxel object and a condition relating to the material. In this embodiment, if both the condition relating to the shape of the voxel object and the condition relating to the material are satisfied, it is determined that simplification is possible, and if at least one of the conditions relating to the shape of the voxel object and the condition relating to the material is not satisfied, it is determined that simplification is not possible.
[0127] The shape-related condition is, 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 or not the shape of each vertex changes significantly before and after simplification can be determined by calculating an index that shows the error between the mesh before simplification and the mesh after simplification, and determining whether or not this index is below a predetermined tolerance value. Also, for example, if the shape of each vertex before simplification is hollow, but the shape of each vertex after simplification is not hollow (i.e., the information that it is hollow is lost due to simplification), the shape-related condition is determined not to be met. Whether or not the above case occurs can be determined, for example, based on the density of each voxel corresponding to the vertex division region to be judged. Also, for example, if the shape of each vertex before simplification is a shape that can only be represented by two or more vertices and cannot be represented by one vertex, the shape-related condition is determined not to be met. The same conditions as in conventional methods using SVO may be used for the shape-related conditions of the voxel object.
[0128] Furthermore, as a condition regarding materials, in this embodiment, the condition used is the number of material types set for each vertex within the predetermined number of vertex division areas that are subject to simplification. Figure 18 is a diagram showing an example of a material condition. Figure 18(a) shows the case where the materials of vertices 221 to 224 are (grass), (grass), (grass and soil), and (grass and soil), respectively, and Figure 18(b) shows the case where the materials of vertices 221 to 224 are (grass and sand), (grass), (grass and soil), and (grass and soil), respectively. In this embodiment, the material condition is that the total number of material types set for each of the above vertices subject to simplification is less than or equal to a predetermined number. For example, the material condition is that it is less than or equal to 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 Figure 18(a), the total number of material types set for each of the vertices 221 to 224 subject to simplification is 2 types, grass and soil, so the material condition is satisfied. In this case, provided that the above-mentioned conditions regarding the shape of the object are met, each vertex 221-224 is determined to be simplifiable. On the other hand, in the case of Figure 18(b), the total number of material types that can be set for each vertex 221-224 that are subject to simplification is three types: grass, soil, and sand, so the material conditions are not met. In this case, regardless of whether the above-mentioned conditions regarding the shape of the object are met or not, each vertex 221-224 is determined to be non-simplifiable.
[0129] In addition, in Game System 1, even if materials are strictly classified as different types, multiple types of materials may be provided that have the same set properties but different appearances. Some of these multiple types of materials may be treated as the same type when determining the conditions related to materials. For example, regarding soil materials, there may be multiple types of soil materials that have the same properties but similar appearances (e.g., texture color and pattern). In such cases, Game System 1 may treat these multiple types of soil materials as the same type when determining the conditions related to materials.
[0130] In this embodiment, similar to voxels, up to two types of materials can be set for vertices. However, in this embodiment, if the total number of material types set for each vertex subject to simplification is three or more, simplification will not be performed. That is, if the total number of material types exceeds the number of materials that can be set for a single vertex, simplification will not be performed. Therefore, even if the number of vertices is reduced through simplification, the material information set for the vertices will not be lost due to the simplification, and the material information can be maintained.
[0131] In this embodiment, the material of the simplified vertex is determined based on the material of each vertex before simplification. Specifically, the game system 1 sets one or two types of materials set for the vertex before simplification as the first material and second material of the simplified vertex. This allows the material information to be maintained. The ratio of the simplified materials is determined based on the ratio of the materials of each vertex before simplification. In this embodiment, the ratio of the simplified materials is calculated in the same way as the method for calculating the ratio of each vertex's material using the evaluation value described above. That is, the game system 1 calculates a weight value based on the distance between the simplified vertex and the vertex before simplification, and calculates an evaluation value for each material based on this weight value and the density of the material at the vertex before simplification (the evaluation value of the material described in [2-4. Determination of Vertex Materials] above can be used as the density of the material here). Then, the ratio of the materials 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 each vertex that has been simplified as described above. Figure 19 shows an example of a mesh generated based on each vertex. The squares shown in Figure 19 represent the vertex division regions described above, or vertex division regions that have been combined into one through simplification. As shown in Figure 19, the game system 1 generates a mesh in which the vertex division regions are polygons whose sides are straight lines connecting adjacent vertices. Each polygon that makes up the mesh is either a triangle or a quadrilateral.
[0133] In this embodiment, the game system 1 generates two types of meshes: a display mesh and a collision detection mesh. The display mesh is used for displaying voxel objects. The collision detection mesh is used for collision detection of voxel objects. As will be described in detail later, by using the above two types of meshes, the game system 1 can process using meshes suitable for displaying voxel objects and collision detection, respectively.
[0134] In this embodiment, the game system 1 generates the display mesh and the judgment mesh based on the SVO data described above (i.e., based on each simplified vertex). This allows for improved processing efficiency by sharing the vertex data used to generate the two types of meshes. In other embodiments, the game system 1 may not need to simplify the vertices and may generate the display mesh and / or judgment mesh based on the unsimplified vertices.
[0135] In this embodiment, the game system 1 generates a judgment mesh with a simpler shape than the display mesh. Specifically, the game system 1 ensures that the number of vertices in the judgment mesh is less than the number of vertices in the display mesh. In this embodiment, the SVO data is data that holds the data of the vertices before simplification and the data of the simplified vertices in an octree structure, but also includes data used to determine whether simplification is possible or not. This data includes, for example, data of vertices calculated as candidates for the simplified vertices (referred to as provisional vertices), and the above-mentioned index data that indicates the error between the vertices before simplification and the provisional vertices. For example, the game system 1 may use vertices from the provisional vertices whose index is less than or equal to a predetermined threshold (this threshold shall be greater than the above-mentioned tolerance value) for generating the judgment mesh. This makes it possible to reduce the number of vertices in the judgment mesh to less than the number of vertices in the display mesh. By reducing the number of vertices in the judgment mesh to less than the number of vertices in the display mesh, the processing load due to collision detection can be reduced. Furthermore, since the number of vertices in the display mesh is not excessively reduced, the appearance of voxel objects can be represented in detail.
[0136] In other embodiments, the display mesh and the judgment mesh may be generated based on the same data or on different data. Furthermore, the display mesh and the judgment mesh may have the same shape (however, even in this case, the materials set for them may be different). Also, the number of vertices in the judgment mesh may be the same as the number of vertices in the display mesh, or it may be greater than the number of vertices in the display mesh.
[0137] [2-6-1. Determining the material for the display mesh] Next, an example of a method for determining the material and appearance of the display mesh will be described. In this embodiment, the game system 1 determines a material for each polygon that makes up the display mesh. As will be described in detail later, in this embodiment, the polygons corresponding to the above 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, for each polygon that makes up the mesh, the number of materials set for one polygon is ultimately two or less. In other embodiments, three or more types of materials may be set. For example, in embodiments where there are three or more types of materials for voxels and three or more types of materials for vertices, the same number of materials may be set for each polygon.
[0138] In this embodiment, quadrilaterals may be formed as polygons constituting the display mesh (see Figure 19). When determining the material of the display mesh, the game system 1 first divides the quadrilateral constituting the display mesh into two triangles under certain conditions. The process of dividing a quadrilateral into two triangles will be described below with reference to Figure 20.
[0139] Figure 20 shows an example of a quadrilateral that makes up a mesh being divided into two triangles. Figure 20(a) shows the quadrilateral before division, which is formed by vertices 231-234, which are part of the mesh vertices, and Figure 20(b) shows the two triangles obtained by dividing the quadrilateral. In the example shown in Figure 20, the materials set for vertices 231-234 are grass, soil, sand and grass, and grass, respectively.
[0140] In this embodiment, the game system 1 determines whether the division condition is met if the total number of material types set for each vertex of the quadrilateral is three or more. In this embodiment, the division condition is that by dividing the quadrilateral into two triangles, the total number of material types set for each vertex of the triangles can be reduced to two or less. If the division condition is met, the game system 1 divides the quadrilateral into two triangles, where the total number of material types set for each vertex is two or less. In the example shown in Figure 20, the materials set for each vertex 231-234 forming the quadrilateral are grass, soil, and sand. Furthermore, if the quadrilateral 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 for each vertex of the former triangle will be sand and grass, and the materials set for each vertex of the latter triangle will also be grass and soil (see Figure 20(b)). Therefore, since the division condition is met for the above quadrilateral, game system 1 divides the quadrilateral into two triangles.
[0141] Since there are two ways to divide a quadrilateral into two triangles, Game System 1 performs the above division using the method that satisfies the division condition if the division condition is satisfied for any triangle divided using at least one of the two methods. On the other hand, if the division condition is not satisfied for any triangle divided using either of the two methods, the division is performed using either method.
[0142] By performing the division as described above, game system 1 can generate two triangles, each with two or fewer materials assigned to each vertex, while minimizing the loss of information from the three or more materials assigned to each vertex of the quadrilateral. Here, as described above, each polygon constituting the mesh is rendered using up to two textures. Therefore, by performing the division described above, game system 1 can render polygons using two textures while minimizing the loss of information from the materials assigned to each vertex.
[0143] In this embodiment, the game system 1 sets polygons corresponding to the polygons after the above division has been performed. That is, the vertices of the polygons after the above division have been performed become the vertices of the polygons of the display mesh.
[0144] In this embodiment, the game system 1 determines the material of each polygon constituting the display mesh by selecting two materials if there are a total of three or more materials that can be set for each vertex of a single polygon. Figure 21 is a diagram showing an example of a method for determining the material of polygons constituting the display mesh. In the example shown in Figure 21, for vertex 241 of the triangular polygon constituting the display mesh, the first material is set to "grass", the second material to "soil", and the material ratio of the first material to the second material is set to 0.8:0.2. For vertex 242 of the same polygon, the first material is set to "grass", the second material 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 same polygon, the first material is set to "sand", the second material to "soil", and the material ratio of the first material to the second material is set to 0.7:0.3.
[0145] If there are three or more different materials assigned to each vertex of a polygon, Game System 1 calculates a judgment value for each material. The judgment value is calculated as the sum of the ratios of each vertex to which that material is assigned. Then, Game System 1 selects the two materials with the largest judgment values as the materials for that polygon. In the example shown in Figure 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 soil material is 0.2 + 0.3 = 0.5. Therefore, the materials selected for the polygon shown in Figure 21 are the grass and sand materials (see Figure 21(a)).
[0146] The specific method for selecting the material of the polygons in the display mesh is arbitrary. In other embodiments, the material of the polygons in the display mesh may be selected by any method based on the information set at the vertices of the polygons. For example, the material of a polygon in the display mesh may be selected by identifying the material with the largest ratio at each vertex, and then selecting the material with the largest number of identified materials for each vertex as the material of that polygon.
[0147] In this embodiment, the material of the selected polygon is indicated by the material set on each vertex of the polygon. That is, when a polygon material is selected, the game system 1 changes the material set on each vertex of the polygon (i.e., the material ID included in the vertex data) to the selected material. In the example shown in Figure 21, vertices 241 and 243 are set to grass and soil and sand and soil materials, respectively, before the polygon material is selected (see Figure 21(a)). When the grass and sand material is selected as the polygon material as described above, the materials set on each vertex 241 and 243 are changed to grass and sand (see Figure 21(b)). Note that for vertex 242, the material set 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 of the third and subsequent types of materials set on each vertex of the polygon is deleted.
[0148] Furthermore, Game System 1 changes the ratio of materials set on a vertex in response to changes in the materials set on that vertex. For example, for vertex 241, the content changes from having a first material of grass and a second material of soil to having a first material of grass and a second material of sand. Here, since the proportion of sand material is 0, the material ratio of first material:second material = 1:0. In this way, the above changes formally modify the material of each vertex in order to represent the material of the polygon by the material of each vertex of that polygon.
[0149] As described above, the only material assigned to each vertex of a single polygon will be the material corresponding to the texture used for rendering, as described later. This makes it easier to perform rendering processes using textures.
[0150] It should be noted that the above changes may result in all materials being changed for a given vertex (i.e., no materials before and after the change match). For example, this might occur if the material set for a vertex before the change was soil, and the materials selected for the polygon are grass and sand. In such cases, the material ratio for that vertex may be set based on the material ratios 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 triangle polygon is grass with a material ratio of grass:sand = 1:0, and the material set for the other vertex is sand with a material ratio of sand:grass = 1:0, then the material ratio for that vertex may be set to grass:sand = 0.5:0.5. Game system 1 may also determine the material ratio for that vertex by considering the distance between that vertex and the other vertices (for example, based on a weight value that increases as the distance decreases).
[0151] As described above, in this embodiment, the game system 1 selects up to a predetermined number (in this case, 2) of material IDs set on the vertices included in each polygon (i.e., material IDs set on the vertices of the polygon corresponding to the polygon) and determines them as the material IDs for that polygon. This allows the game system 1 to reflect the materials set on the vertices in the appearance of the polygon while reducing the number of textures used during rendering.
[0152] In this embodiment, the game system 1 determines the polygon's material if the number of materials for all vertices constituting the polygon is less than or equal to the predetermined number, and if the number of materials exceeds the predetermined number, it selects a predetermined number of materials with high priority based on the priority parameter of each vertex (specifically, based on the determination value calculated based on the evaluation value described above) and determines them to be the polygon's material. This ensures that even if the total number of materials set for each vertex exceeds the predetermined number, the polygon's material can be set to a predetermined number or less, taking priority into consideration.
[0153] As described above, in this embodiment, the first and second materials set for each vertex of a polygon are changed so that there are two types of materials set for that polygon. However, when such a change is made, there is a possibility that inconsistencies may occur in the first and second materials set for vertices shared by two adjacent polygons.
[0154] Figure 22 shows an example of the materials that can be set for each vertex of two adjacent polygons. Figure 22 shows the state in Figure 20(b) where two polygons are formed by the vertices 231-234 shown in Figure 20. In the example shown in Figure 22, the material of the first polygon formed by vertices 231, 233, and 234 is determined to be grass and sand, so the first and second materials of these vertices should be set to grass and sand, respectively. On the other hand, the material of the second polygon formed by vertices 231, 232, and 234 is determined to be grass and soil, so the first and second materials of these vertices should be set to grass and soil, respectively. Therefore, in the example shown in Figure 22, there is a discrepancy in the materials that should be set for vertices 231 and 234, which are shared by the two polygons.
[0155] Therefore, in this embodiment, if there is a discrepancy in the materials to be set for vertices shared by two polygons, the game system 1 adds another vertex at the same position with respect to that vertex. Figure 22(b) shows an example where vertex 231' is added for vertex 231 and vertex 234' is added for vertex 234. In the example in Figure 22, the game system 1 sets the first and second materials for vertices 231 and 234 as grass and sand, respectively, according to the material of the first polygon. Also, for vertices 231' and 234', the first and second materials are set as grass and soil, respectively, according to 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 with the same position but different materials), it is possible to suppress discrepancies in the materials set for vertices.
[0156] Game System 1 generates a display mesh consisting of polygons whose vertices and materials have been determined as described above. Game System 1 also renders voxel objects by drawing polygons based on the material information set for each vertex (i.e., the first material and the second material).
[0157] Figure 23 shows an example of applying a texture to a polygon. Figure 23 shows a triangular polygon formed by vertices 241-243, as shown in Figure 21. The material applied to vertices 241-243 is as shown in Figure 21(b).
[0158] The positions of polygon vertices are rendered by mapping, which blends the textures of the first and second materials set for each vertex using the ratio of the materials set for that vertex (i.e., this ratio as the blending ratio). The textures of the first and second materials used for rendering are the textures indicated by the rendering settings information associated with each material ID associated with the data of the vertex in the material data described above (see Figure 12). In the example shown in Figure 23, the position of vertex 241 has a material ratio of grass:sand = 1:0, so rendering is performed using only the grass texture. Similarly, the position of vertex 243 has a material ratio of sand:grass = 1:0 for the first material, so rendering is performed using only the sand texture. Furthermore, the position of vertex 242 has a material ratio of grass:sand = 0.5:0.5 for the first material and sand for the second material, so rendering is performed by blending the grass texture and the sand texture with a blending ratio of 0.5:0.5.
[0159] Furthermore, for positions other than polygon vertices, Game System 1 determines the blend ratio by interpolating the blend ratio at each vertex. Then, rendering is performed by mapping, which blends the textures of the two materials set for each vertex based on the interpolated blend ratio. Note that the specific interpolation method is arbitrary. As an example, the blend ratio between vertices is linearly interpolated. In Figure 23, positions where the grass material texture is applied at a high ratio are shown in white, and positions where the sand material texture is applied at a high ratio are shown in black. In the example shown in Figure 23, the grass texture is applied at vertex 241, the blend ratio of the sand texture increases as you move towards vertex 243, the blend ratio of grass and sand becomes 1:1 at vertex 242, and only the sand texture is applied at vertex 243. In this way, by blending the two textures set for a polygon (i.e., set for each vertex of the polygon) at a blend ratio corresponding to the ratio of materials and rendering them, the appearance at the boundary between different materials in the display mesh can be made natural. This makes the appearance of a display mesh with multiple types of materials set to it look natural.
[0160] [2-6-2. Determining the material of the mesh used for judgment] Next, an example of a method for determining the material of the detection mesh will be described. As will be explained in detail later, in this embodiment, collision detection of voxel objects is performed using the detection mesh, and processing may be performed according to the material of the voxel object that has been detected as having a collision. Therefore, in this embodiment, the material of the detection mesh is also determined.
[0161] In this embodiment, the game system 1 ensures that for each polygon constituting the judgment mesh, only one type of material is assigned to each polygon. Specifically, the game system 1 determines the material assigned to a polygon of the judgment mesh based on the material information assigned to the vertices of that polygon (i.e., the first and second materials and the material ratio information).
[0162] Figure 24 shows an example of a method for determining the material of the polygons that make up the judgment mesh. Figure 24 shows an example of determining the material for the triangular polygon formed by each vertex 241-243 shown in Figure 21. The material set for each vertex 241-243 is as shown in Figure 21(a).
[0163] When determining the material of a polygon, the game system 1 calculates a determination value for each material set for each vertex of the polygon. In this embodiment, the method for calculating the determination value is the same as the method for calculating the determination value used to select the material set for the polygons of the display mesh. The specific method for calculating the determination value is arbitrary. In other embodiments, the determination value may be calculated by any method based on the information set for the vertices of the polygons of the determination mesh.
[0164] In the example shown in Figure 24, the judgment values for each material are the same as in Figure 21 above: the judgment value for grass material is 1.3, the judgment value for sand material is 1.2, and the judgment value for soil material is 0.5. Therefore, the grass material is selected as the material for the polygon shown in Figure 24.
[0165] As described above, in this embodiment, the game system 1, for each polygon, selects up to a predetermined number (here, 1) of material IDs from the material IDs set at the vertices included in the polygon (i.e., material IDs set at the vertices of the polygon corresponding to the polygon) and determines them as the material IDs for that polygon. This allows the game system 1 to keep the number of materials set on the judgment mesh below a predetermined number. This makes it possible to suppress the complexity of processing according to the type of material, which is performed according to the result of collision judgment using the judgment mesh. Note that the method for determining the material of the polygons of the judgment mesh is arbitrary and is not limited to the above. In other embodiments, the material of the polygons of the judgment 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 materials can be set for the polygons of the display mesh, while only one type of material can be set for the polygons of the detection mesh. This allows for a natural appearance using two types of textures for the polygons of the display mesh, and reduces the complexity of the processing performed on the detection mesh in response to the collision detection results. In other embodiments, the types of materials that can be set for the polygons of the display mesh and the detection mesh are arbitrary. The number of materials that can be set for the polygons of the display mesh and the number of materials that can be set for the polygons of the detection mesh may both be multiple, the same, or different.
[0167] In this embodiment, the number of material types set for a single voxel is limited to two, and the number of material types set for a single polygon in the display mesh is also limited to two. This allows the material information set in the voxel data to be reflected in the material of the display mesh while keeping the amount of data in the voxel data down. Furthermore, in this embodiment, the number of material types set for vertices that are set based on the voxel data is also limited to two (see Figure 16). This allows two types of materials to be set for vertices generated during the process of obtaining the display mesh from the voxel data, so that the material information set in the voxel data is reflected in the display mesh without any loss of material information during the process.
[0168] In other embodiments, the game system 1 may set different materials for vertices used to generate the display mesh and vertices used to generate the judgment mesh, with respect to the vertices set based on the voxel data. For example, the game system 1 may set up to two types of materials for vertices used to generate the display mesh, as described above, and set one type of material for vertices used to generate the judgment mesh. Then, for the polygons of the display mesh, two types of materials may be set in the same way as described above, and for the polygons of the judgment mesh, one type of material may be set 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 the judgment mesh, the material with the largest judgment value calculated for each material may be set as the material for that vertex. In the above, as in this embodiment, the number of types of materials set for one polygon in the display mesh can be limited to two, and the number of types of materials set for one polygon in the judgment mesh can be limited to one. Therefore, the material information set in the voxel data can be reflected in the display mesh, and the complexity of the processing performed according to the result of collision judgment using the judgment mesh can be suppressed.
[0169] As described above, in this embodiment, a display mesh and a detection mesh may be set for a single voxel object. However, depending on the game situation, it is not necessary for both a display mesh and a detection mesh to be set for a single voxel object simultaneously (for example, it is not necessary for both to be set in the processing of one frame). For example, the detection mesh may be generated in the range where collision detection is performed within the game space, and not generated in the range where collision detection is not performed. As an example, the game system 1 may generate a detection mesh for voxel objects within a predetermined range centered on the player character, and not generate a detection mesh for voxel objects outside that predetermined range, but only generate a display mesh.
[0170] Furthermore, the game system 1 may store data related to the generated mesh in memory for display meshes, and in frames after the mesh has been generated, use this data without re-executing the mesh generation process, except for the updated range. This reduces the processing load required to generate display meshes. Also, for collision detection meshes, the data related to the generated mesh may not be stored in memory, and meshes may be generated sequentially as needed (for example, whenever collision detection is required). This saves memory space used for mesh generation.
[0171] The above describes a method for generating each mesh (i.e., the display mesh and the judgment mesh) based on the modified voxel data when the voxel data is changed from its initial state. This method can also be used, for example, at the start of a game when generating each mesh based on the initial voxel data. However, the meshes based on the initial voxel data do not necessarily need to be generated based on the initial voxel data at the start of the game; they may be prepared in advance before the game starts.
[0172] [2-7. Processing using meshes] Next, we will explain an example of processing using a mesh generated as described above for voxel objects. In the following, we will assume that terrain objects such as the ground and walls are voxel objects, and we will explain an example where an action occurs in the game as a result of collision detection when the player character performs an action.
[0173] Figure 25 shows an example of a game image representing a player character moving over a terrain object. In the example shown in Figure 25, the material of polygons in a certain area 251 of the terrain object's detection mesh is set to "lava". The material of polygons in the terrain object's detection mesh other than area 251 is set to "rock". In the example shown in Figure 25, the game system 1 performs collision detection between the terrain object and the player character 201 using the detection mesh. That is, it performs collision detection to determine whether the terrain object's detection mesh and the detection area set for the player character (for example, an area of a predetermined shape set based on the player character's position) come into contact. If a collision is detected between a polygon with the material "lava" and the player character 201, the system performs a process to reduce the player character 201's health as a game action. In the above case, the system also performs a process to make the player character 201 perform a predetermined reaction.
[0174] In this embodiment, the lava material is assumed to have a property that reduces the health of the player character it comes into contact with (for example, a property that its temperature is above a predetermined value) as part of the property information included in the material data described above. The game system 1 generates an in-game action (in the above example, a reduction in the player character's health) based on the property information corresponding to the material set on the polygon in the collision mesh where collision has been detected by collision detection.
[0175] Furthermore, if a collision is detected between a polygon whose material is rock and the player character 201, the process of reducing the player character's health will not be executed. Also, based on the collision, the player character 201 is controlled so that it cannot enter the inside of the polygon. Therefore, the player character can stand on or walk on the polygon. 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 other objects come into contact with. Furthermore, the content of the executed process can be made according to the type of material. In addition, in this embodiment, the player character can change the terrain object (for example, by deforming it or changing its material), so for example, the player can erase the lava part of the terrain object or change the lava to another material. Therefore, by changing the terrain object, the player can avoid the reduction of the player character's health due to contact with lava.
[0176] The content of the processing performed when a collision between a voxel object and another object is detected is arbitrary. For example, if the other object is a moving object such as a player character or an enemy character, the processing may include outputting the sound of the object's footsteps or displaying an effect (for example, an effect representing dust or splashes of water) at the point of contact. In this case, the game system 1 can make the footsteps sound different or the effects different depending on the type of material set on the polygon of the part of the voxel object that made contact.
[0177] Figure 26 is an example of a game image showing a player character pulling a fragment object from a terrain object. As shown in Figure 26, in this embodiment, the player can have the player character 201 perform an action (referred to as a "pulling action") in which the player grasps the terrain object 202 and pulls out a part of it as a fragment object 252 by a predetermined input. The game system 1 erases a part of the terrain object 202 and generates a fragment object 252 as an in-game effect resulting from the pulling action.
[0178] When a pull-out action is performed, the game system 1 specifically executes the following processes. That is, when the player inputs an operation to have the player character perform a pull-out action, the game system 1 has the player character perform an action such as digging forward and grabbing, and performs a collision check. If a collision is detected between the player character performing the pull-out action and the terrain object, 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 (e.g., forward) relative to the player character. The shape and size of the update range may be predetermined according to the type of action performed by the player character. The game system 1 also 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 Figure 26(b)). In this embodiment, the density is reduced for each voxel corresponding to the update range 253, but the voxels whose density is reduced may be at least a portion of the voxels corresponding to the update range 253.
[0179] Furthermore, while the above assumes that the voxel object corresponding to the update range 253 is unconditionally deformed by the pull action, in other embodiments, the deformation of the voxel object corresponding to the update range 253 may be conditional on the amount of damage set on the voxel. 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 on 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] Furthermore, the game system 1 generates a fragment object 252 representing the erased portion of the terrain object 202. That is, based on the above-mentioned pull-out action, the game system 1 generates the fragment object 252 in a state where it is held by the player character. The fragment object 252 may be generated to have a shape corresponding to the erased portion of the terrain object 202, or it may have a predetermined shape. The fragment object 252 may or may not be a voxel object. If the fragment object is a voxel object, a voxel space different from the voxel space of the voxel corresponding to the terrain object 202, etc., is defined for the fragment object 252.
[0181] 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 the polygons in the detection 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 one of the materials set for the polygons in the detection 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 part of the terrain object. As is clear from the above explanation, the fragment object 252 is not actually part of the terrain object. However, because it is generated along with the erasure of a part of the terrain object, and the material of the erased part of the terrain object is inherited by the fragment object 252, it is possible to give the player the impression that the player character 201 has extracted a part of the terrain object 202 through a pull action.
[0182] In this embodiment, each type of material provided is assigned a priority, and the game system 1 determines that the material with the highest priority among the materials assigned to each polygon of the judgment mesh within the update range 253 will be the material for the fragment object 252. Here, for example, consider the case where the judgment mesh within the update range 253 includes polygons with the material rock and polygons with the material lava. In such a case, if the material of the fragment object 252 is set to lava, the player character's health may decrease when the player character grasps the fragment object 252 through a pull-out action (as explained in Figure 25, the lava material is assumed to have the property of reducing the player character's health upon contact). Furthermore, as described above, if the judgment mesh within the update range 253 includes polygons with different types of materials, it may be difficult for the player to predict what the material of the fragment object 252 will be, and the above-mentioned inconvenience may occur against the player's will. In contrast, in this embodiment, the possibility of the above-mentioned inconvenience occurring can be reduced by setting a priority for the material that is set as the material for the fragment object.
[0183] Figure 27 is an example of a game image showing how fragment objects are generated when a player character destroys a terrain object. As shown in Figure 27, in this embodiment, the player can cause the player character 201 to perform a punch action by inputting a predetermined command. The game system 1, as an in-game effect resulting from the punch action, erases a portion of the terrain object 202 and generates fragment objects 255, similar to the punch action described above. Specifically, it deforms the terrain object 202 so that a portion of it is erased. In the case of a punch action, unlike the pull-out action described above, after the punch action, the fragment objects 255 are not grasped by the player character 201 but are placed around the location where the punch action was performed (see Figure 27(b)). It should be noted that fragments corresponding to the destruction of the terrain object 202 may not be generated.
[0184] When a punch action is performed, the game system 1 specifically executes the following processes. That is, when the player inputs an operation to make the player character perform a punch action, the game system 1 makes the player character perform a punching action toward the front and performs a collision check. If a collision is detected between the player character performing the punch action and the terrain object, 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 (for example, forward) relative to the player character. 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. The game system 1 then reduces the density of voxels corresponding to the update range 254. As a result, similar to the pull-out action, the terrain object 202 is deformed by the punch action so that the portion within the update range 254 is erased (see Figure 27(b)). Furthermore, similar to the pull-out action, the game system 1 may, instead of unconditionally deforming the voxel objects corresponding to the update range 254, increase the amount of damage set for voxels within the update range 254 in accordance with the punch action, and decrease the density of the voxel in question when the amount of damage exceeds a predetermined value. In addition, the voxels whose density is reduced by the punch action may be at least a portion of the voxels corresponding to the update range 254.
[0185] Furthermore, game system 1 generates fragment objects 255 corresponding to the erased portion of terrain object 202. That is, based on the punch action, game system 1 generates the fragment objects 255 without the player character holding them (for example, by placing them around the location where the punch action occurred). The fragment objects 255 may be generated to have a shape corresponding to the erased portion of terrain object 202, or they may have a predetermined shape. The fragment objects 255 may or may not be voxel objects.
[0186] 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 the polygons in the detection mesh of the terrain object 202 that come into contact with the update range 254. The material of the fragment object 255 is determined to be the same as one of the materials set for the polygons in the detection mesh that come 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 part of the terrain object. Furthermore, by generating the fragment object 255 along with the erasure of a part of the terrain object, and inheriting the material of the erased part of the terrain object to the fragment object 255, it is possible to give the player the impression that a part of the terrain object destroyed by the player character's punch action was generated as a fragment object.
[0187] In this embodiment, the material of the fragment object 255 is determined to be the material that has the greatest decrease in voxel density among the materials set for polygons in the determination mesh that come into contact with the update range 254. This makes it possible to generate fragment objects that more accurately reflect the material configuration of the parts of the terrain object that have been erased by the punch action.
[0188] The method for determining the material of the fragment object generated by the above-described pull-out or punch action is arbitrary. For example, the method for determining the material of the fragment object may be the same for both the pull-out and punch actions. Alternatively, for example, the material set on the most polygons among the materials set on each polygon of the judgment mesh within the update range may be determined as the material of the fragment object. Alternatively, for example, the material set on polygons that satisfy a predetermined condition (for example, polygons at the position that come into contact with the hand of the player character performing the pull-out or punch action) among the polygons of the judgment mesh within the update range may be determined as the material of the fragment object. Furthermore, in other embodiments, multiple types of materials may be set on the fragment object.
[0189] In this embodiment, the player can have the player character perform an action to throw the fragment object 252 or 255 generated as described above (hereinafter referred to as the "throwing action"). The player can also have the player character perform an action to hold the fragment object that is generated in response to the punching action and placed on the ground, by a predetermined input. As a result of the above-mentioned pull-out action, or as a result of the action to hold the fragment object after the punching action, the player character will be in a state of holding the fragment object. In this state, the game system 1 will have the player character perform an action to release the fragment object in a predetermined direction as a throwing action in response to the player's input.
[0190] Figure 28 shows an example of a game image in a state where the player character is capable of performing a throwing action and is in a throwing stance, and is deciding on the throwing direction. As shown in Figure 28, when the player character 201 is holding the fragment object 261, the player character 201 can perform a throwing action. In this state, as shown in Figure 28, the game system 1 displays a targeting image 262 and an object information image 263 superimposed on an image representing the game space as a process to generate an action within the game.
[0191] The aiming image 262 indicates the direction in which the fragment object is released by the throwing action (also called the aiming direction). That is, in response to the player's input for performing the throwing action, the game system 1 moves the fragment object 261 from the player character 201's position toward the position in the virtual space indicated by the aiming image 262. The aiming direction is controlled based on the player's input. For example, the game system 1 may change the aiming direction in response to an input that changes the orientation of the virtual camera. Specifically, the game system 1 may control the virtual camera in response to the input so that it rotates around the player character while maintaining the player character within its field of view, and control the aiming direction so that it corresponds to the direction of the virtual camera's line of sight. At this time, the aiming image 262 is displayed, indicating the position where a straight line extending from the player character's position in the aiming direction intersects with the terrain object 253. Specifically, the game system 1 performs collision detection between the aiming direction (i.e., the straight line extending in the aiming direction) and the detection mesh of the terrain object 253. If a collision is detected, the aiming image 262 is displayed. The aiming image 262 is positioned to indicate the location of the polygon in the detection mesh that intersects the straight line extending in the aiming direction.
[0192] The aiming image 262 described above allows the player to see the position where the fragment object will contact the voxel object when the player character performs a throwing action. This makes it easier for the player to perform the throwing action. The specific control method for the aiming direction and the aiming image 262 is arbitrary, and conventional methods may be used. For example, in another embodiment, the aiming image 262 may be displayed in a first-person view game image where the player character is not displayed.
[0193] When the player character is in a position to throw a shard object, a throwing action is performed in the direction of the aim, in response to a predetermined input from the player.
[0194] Object information image 263 shows information about the terrain object 253 at the position indicated by the aiming image 262. In this embodiment, object information image 263 shows the name of the material set on the polygon of the judgment mesh at the position indicated by the aiming image 262 (in the example shown in Figure 28, it is "rock"). This allows the player to see the material of the voxel object that the fragment object thrown by the throwing action comes into contact with. Object information image 263 also shows information about the properties of the material (in this case, hardness). This allows the player to see the properties of the voxel object that the fragment object thrown by the throwing action comes into contact with. The content shown in object information image 263 is arbitrary. For example, in other embodiments, object information image 263 may show any property of the material set on the polygon at the position indicated by the aiming image 262, or it may show the state of the polygon (for example, the amount of damage as described above). In this embodiment, since the polygon material of the judgment mesh is of only one type, the material corresponding to the aiming position is uniquely identified. Therefore, it is suitable for displaying information related to the material.
[0195] In this embodiment, when a fragment object released by a throwing action is determined to have come into contact with a voxel object as a result of collision detection, the game system 1 modifies the voxel object as an action within the game. Figure 29 shows an example of a game image after the terrain object 253 shown in Figure 28 has been modified due to contact between the fragment object 261 and the terrain object 253. In the example shown in Figure 29, the terrain object 253 is deformed so that it appears as if the fragment object is attached to the contact point between the fragment object and the terrain object 253. Specifically, the game system 1 generates an update range that includes the contact point and deforms the terrain object 253 to achieve the above shape by increasing the density of voxels in the update range. 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 Figure 29, the terrain object has an added portion 265 added to it. In the example shown in Figure 29, the fragment object is removed when it comes into contact with the terrain object 253.
[0196] Furthermore, the polygon material in the added portion 265 is determined based on the material of the fragment object that came into contact with the terrain object 253. Specifically, the game system 1 sets the material of each voxel within the update range to be the same as the material of the fragment object. Then, the materials of the display mesh and the detection 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 the appearance of the fragment object (although in reality, the terrain object 253 has been deformed as described above), making it easier to give the player the impression that the fragment object is attached to the terrain object 253.
[0197] In the example shown in Figure 29, the change made to the voxel object in response to the fragment object coming into contact with it was a deformation that added an additional part to the voxel object, but the changes made to the voxel object are not limited to this. The above changes may change the density of the voxels or change the material. For example, if the fragment object has explosive properties, the fragment object may explode in response to contact with the voxel object, and in this case, the voxel object may be deformed so that a part of the voxel object is erased. Specifically, game system 1 sets an update range that includes the contact location and reduces the density of voxels within the update range. Also, 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 the contact of the fragment object. Specifically, game system 1 sets an update range that includes the contact location and may change the material of the voxels within the update range that is lava to obsidian or rock. According to this, it is possible to represent 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 object, or based on a combination of the materials of the voxel object and the fragment object. This allows for various changes to be made to the voxel object.
[0199] Furthermore, game system 1 may decide whether or not to make the above changes based on the material of the voxel object, based on the material of the fragment object, or based on a combination of the materials of the voxel object and the fragment object. For example, if a fragment object whose material is rock comes into contact with a voxel object whose material is rock, game system 1 may make the changes shown in Figure 29, but may not make the changes shown in Figure 29 if a fragment object whose material is rock comes into contact with a voxel object whose material is iron.
[0200] In this embodiment, as described above, one type of material is set for the polygons of the detection mesh and the fragment objects. If multiple types of materials were set for at least one of the polygons of the detection mesh and the fragment objects, it would become difficult to determine the changes applied to the voxel object according to the types of materials used when the detection mesh and the fragment objects come into contact. In contrast, in this embodiment, since the detection mesh and the fragment objects that are determined to be in contact by collision detection each have only one type of material, it becomes easy to determine the changes applied to the voxel object.
[0201] [2-8. Event handling in response to deformation of voxel objects] In this embodiment, the game system 1 generates game events in response to the deformation of voxel objects. The content of the events is arbitrary. Below, examples of events in response to the deformation of voxel objects will be described, including an event in which the number of bullets thrown by the player character increases, an event in which the player character throws bullets, an event in which an item is placed in a terrain object, and an event in which an item is granted in the game.
[0202] [2-8-1. Example 1 (An example in which an event occurs in which the number of bullets is increased, and an event occurs in which the player character throws bullets)] As a first example, referring to Figures 30 to 36, we will describe an example in which an event occurs in which the number of bullets thrown by the player character increases in accordance with the deformation of a voxel object, and an event occurs in which the player character throws the bullets. In this embodiment, the player character can perform an action to suck up voxel objects (more precisely, an action that appears to suck up voxel objects) in response to a predetermined operation input by the player. This action deforms voxel objects such as terrain objects so that part or all of them are erased, and the number of bullets that the player character can throw increases under certain conditions. In this way, by enabling the player character to perform other actions through an action to deform voxel objects, the player can be motivated to deform voxel objects. In this embodiment, the above action can give the player the impression that the player character is sucking up voxel objects to create bullets. Therefore, in the following, the above action will be referred to as the suck-up action. Below, we will describe an example in which, after the suck-up action, the player character throws the bullets obtained by the suck-up action.
[0203] Figure 30 shows an example of a game image in a state where the player character is capable of performing a sucking action, but before the sucking action is performed. In this embodiment, the player character 201 can be in a state where it can perform a sucking action under certain conditions. A state where it can perform a sucking action means a state in which the player character can perform a sucking action in response to a predetermined operation input from the player. For example, the player character 201 may be able to transform, and may be able to perform a sucking action in a state where it has transformed into a predetermined form. In other embodiments, the player character 201 may always be in a state where it can perform a sucking action.
[0204] When the player character 201 is in a state where it can perform a suck-up action, the game system 1 displays a targeting image 271 along with an image of the game space (see Figure 30). The targeting image 271 indicates the direction in which the player character 201 will perform the suck-up action. The direction of the suck-up action indicated by the targeting image 271 is controlled based on the player's input, similar to the aiming direction indicated by the targeting image 262 described above. The specific method for controlling the direction of the suck-up action is arbitrary and may, for example, be controlled in the same way as the aiming direction described above. As will be described in detail later, when the player character 201 performs a suck-up action, the voxel objects in the range including the position indicated by the targeting image 271 are deformed so as to be erased. The position indicated by the targeting image 271 is the position of the intersection of a straight line extending from the player character 201's position in the direction of the suck-up action and the object. Note that the targeting image 271 may be the same as the targeting image 262 shown in Figure 28, and the object information image 263 may be displayed together with the targeting image 271.
[0205] Figure 31 shows an example of a game image in which the player character 201 is performing a sucking action. The situation shown in Figure 31 is after the player character 201 has started a sucking action in response to a predetermined input from the player, with the targeting image 271 pointing to a terrain object 272 that is formed like a rock wall. At this time, the game system 1 deforms the terrain object 272 by updating the voxel density within the range including the position pointed to by the targeting image 271 so that a part of the terrain object 272 within that range is erased. In this embodiment, the player character 201 continues the sucking action in response to the player's input. For example, the player character 201 continues the sucking action as long as the input to a predetermined button on the controller is continued. In this embodiment, the game system 1 causes the player character 201 to perform the sucking action as long as the input to a predetermined button on the controller is continued. Therefore, the player can change the length of the sucking action by changing the length of the period during which the input is performed, and consequently, they can change the degree to which the terrain object 272 is deformed. In this embodiment, an upper limit is set on the time during which the player character 201 can continue the sucking action. However, in other embodiments, no upper limit may be set.
[0206] Although not shown in the diagram, game system 1 may also display a gauge image along with the aiming image 271 that shows the remaining time the player character 201 can continue the sucking action. Additionally, game system 1 may also display an image along with the aforementioned aiming image 271 that shows the number of times the throwing action (in other words, the number of bullets) that can be performed, as described later.
[0207] In this embodiment, while the suction action continues, the game system 1 continuously performs a process to erase a portion of the terrain object 272 at the position indicated by the aiming image 271. For example, while the suction action is pending, the process of erasing a portion of the terrain object 272 is repeatedly performed every frame. Therefore, the voxel object is deformed so that an amount corresponding to the duration for which the predetermined operation input described above is continuously performed is erased. As will be described in detail later, in this embodiment, with one deformation process, the voxel object is deformed so that the portion near the surface of the voxel object within a predetermined range including the position indicated by the aiming image 271 is scraped away. As the deformation process is repeatedly performed, the voxel object is gradually deformed so that the portion near the surface is gradually scraped away from the inner portion. In this embodiment, during the suction action, the direction of the suction action may be changed according to the operation input by the player.
[0208] In this embodiment, while the sucking action continues, the game system 1 displays an effect image that shows wind and fragments blowing from the deformed voxel object toward the player character 201. This makes it possible to create the effect that the player character 201 is sucking in the voxel object through the sucking action.
[0209] Next, we will explain a specific example of the process of deforming a voxel object in response to a suction action. Figure 32 is a diagram showing an example of how the terrain object shown in Figure 31 looks before and after being deformed in response to a suction action. Note that Figure 32 is a cross-sectional view of the wall-shaped terrain object 272 as seen from an orientation along the wall surface, and the inner region of the terrain object 272 is indicated by diagonal lines.
[0210] When the player character 201 performs a suck-up action, the game system 1 performs a collision detection between a straight line 274 extending from the position of the player character 201 in the direction indicated by the targeting image 271 (i.e., the direction of the suck-up action) and the voxel object. If the straight line 274 and the voxel object come into contact, the game system 1 identifies the intersection point of the two. In the example shown in Figure 32, the intersection point 275 between the straight line 274 and the terrain object 272 is identified. In this case, the game system 1 sets a density update range 276 for updating the density of the terrain object 272. In this embodiment, the density update range is represented 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 due to the suck-up action is a spherical range centered on the intersection point 275 (see Figure 32). In other embodiments, the position of the density update range based on the position of the intersection point 275 is arbitrary, and the shape of the density update range due to the suck-up action is also arbitrary.
[0211] In this embodiment, the game system 1 executes a process to set the density update range every frame during the period in which the sucking action is being performed. That is, if the sucking action is performed over multiple frames, multiple lines are set consecutively at positions based on the sucking action, and when the two lines come into contact, the density update range is set at the contact position. If the direction in which the player character 201 performs the sucking action changes during the above period, the position and direction of the lines are changed according to that direction, and the density update range is set at a different position 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 corresponding 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 calculates the density update for voxels within the density update range that satisfy the conditions, and as a result of the calculation, the density is reduced. As will be described in detail later, in this embodiment, there are voxels whose density is not reduced in effect because the density reduction amount is calculated to be 0 in the density update calculation.
[0213] In this embodiment, hardness and damage information are set for each voxel. The game system 1 calculates the density update for voxels within the density update range that satisfy the conditions for 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. Hardness information is, for example, information indicating a hardness level, which is a numerical value indicating that the higher the value, the harder it is. Damage information is one of the pieces of information indicated by the state data set for the voxel, and indicates the damage inflicted by actions by the player character 201, etc. Damage information is, for example, numerical information indicating the cumulative value of the amount of damage inflicted. Alternatively, the game system 1 may set information indicating the durability value that is reduced by actions by the player character 201, etc., for each voxel instead of damage information.
[0214] In this embodiment, the game system 1 determines which voxels within the density update range will be used to calculate the density update, as follows:
[0215] Among the voxels within the density update range, those whose hardness is below the first threshold are determined to satisfy the conditions for calculating density updates.
[0216] Furthermore, for voxels within the density update range whose set hardness is greater than or equal to the first threshold but less than the second threshold, a predetermined amount of damage is added, and the above condition is met when the cumulative value of the added damage is greater than or equal to the predetermined threshold. If durability information is set for a voxel instead of damage information, for voxels whose set hardness is greater than or equal to the first threshold but less than the second threshold, a predetermined amount of durability is subtracted, and the above condition is met when the durability after the subtraction is less than or equal to the predetermined threshold. Note that the addition of damage or subtraction of durability 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 within the density update range for multiple frames, the above condition will be met when the addition of damage or subtraction of durability is performed multiple times. Game System 1 may determine that the above conditions are met in the frame at which the cumulative damage value exceeds a predetermined threshold or the durability value falls below a predetermined threshold, and then perform the density update calculation. Alternatively, it may determine that the above conditions are met in a later frame (for example, the next frame) and then perform the density update calculation.
[0217] Furthermore, among the voxels within the density update range, voxels whose set hardness is equal to or greater than the second threshold are determined not to meet the conditions for calculating density updates. In other words, for voxels whose set hardness is equal to or greater than the second threshold, regardless of damage information, the density update calculation corresponding to the suction action is not performed, and the density is not updated.
[0218] As described above, by considering the hardness set for each voxel and deciding whether or not to update the density, it is possible to define parts of the terrain object that do not deform and parts that are difficult to deform. Additionally, by considering the damage or durability value set for each voxel and deciding whether or not to update the density, it is possible to set the terrain object to deform through multiple suction actions. Furthermore, by setting different thresholds for damage and durability for each voxel, it is possible to define parts of the terrain object that are easily deformed and parts 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 calculations to reduce their density. The specific calculation method for reducing density is arbitrary. In this embodiment, if there are voxels within a predetermined range based on the voxel in question whose density is less than the above-mentioned reference value, the game system 1 reduces the density of the reference voxel by a predetermined value. On the other hand, if there are no voxels within the predetermined range whose density is less than the above-mentioned reference value, the amount of density reduction for the reference voxel in question is set to 0, that is, the density of the voxel in question is not updated. The above-mentioned predetermined range is, for example, a range of 27 voxels in a 3x3x3 grid centered on the voxel in question. According to the above calculation method, among the voxels within the density update range, the density is reduced for voxels near the position where the mesh of the voxel object is set. Therefore, in the example shown in Figure 32, the terrain object 272 is deformed so that the internal region of the terrain object 272 shrinks in the portion within the density update range 276. As described above, the terrain object 272 is deformed in a way that makes it appear as if the surface within the density update range 276 has been scraped away by the deformation process for one frame. As the deformation process is executed multiple times in succession, the terrain object 272 is gradually deformed in such a way that the interior is also scraped away.
[0220] In this embodiment, when a voxel object is deformed by a suction action, the material of a portion of the voxel object is changed to the inner material described above. Figure 33 shows an example of how to change the material of a portion of a voxel object by a suction action.
[0221] In this embodiment, when the density update range 276 described above is set in response to a sucking action, the game system 1 sets a material update range 277, which is the range in which the voxel material is updated. In this embodiment, the material update range 277 is also represented by an SDF, similar to the density update range 276. In this embodiment, the material update range 277 is set to encompass the density update range 276 (see Figure 33). As a result, the terrain object 272 after the modification process has its material changed to the internal material for the part that has been deformed to appear as if it had been erased and the surrounding part. As will be described in detail later, this makes the terrain object 272 look more natural for the part that has been deformed to appear as if it had been erased and the surrounding part.
[0222] In this embodiment, the game system 1 generates the material update range 277 by expanding the density update range 276. In the example shown in Figure 33, the material update range 277 is a sphere with a larger radius than the density update range 276. By expanding the density update range 276 as described above, the material update range 277 that encompasses the density update range 276 can be easily generated. 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 beforehand, similar to the density update range. 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 also arbitrary. In other embodiments, the material update range 277 and the density update range 276 do not need to be similar in shape.
[0223] Game system 1 changes the material of voxels within the material update range 277 of the terrain object 272. In this embodiment, the material of voxels within the material update range 277 is changed to the material indicated by the internal material ID that corresponds to the ID of the material before the change in the material data (see Figure 12) described above. For example, the material ID representing the surface of a rock is associated with the material ID representing the inside of the rock as the internal material ID. Therefore, in the example shown in Figure 33, the material of voxels within the material update range 277 is changed from the material of the rock surface to the material of the inside of the rock through the change process. Specifically, for voxels within the material update range 277, game system 1 changes the material set for the voxel to the internal material by updating the material ID indicated by the voxel data to indicate the internal material ID.
[0224] As described above, in this embodiment, voxel data holds up to two (specifically, multiple) material IDs per voxel. When multiple types of materials are set for a voxel, during the material change process, each material ID set for each voxel within the material update range is changed to its corresponding internal material ID. For example, if a voxel within the material update range is set with both rock and soil materials, the changed material for that voxel will be the internal material associated with the rock material and the internal material associated with the soil material. This reduces the possibility of problems occurring, such as the appearance of the voxel object becoming unnatural when only one type of material is changed, when multiple types of materials are set for a voxel.
[0225] When the voxel density and material of the terrain object 272 are updated as described above, the game system 1 generates a mesh for the terrain object 272 (specifically, a display mesh and a judgment mesh) based on the updated voxel density and material, following the methods described in [2-4. Determining Vertex Materials] to [2-6. Generating Meshes]. As a result, the terrain object 272 is deformed so that part of it appears to be erased, and the material of the polygons in the deformed part and its surrounding parts is set as the internal material. When the terrain object 272 is rendered, the polygons are rendered using, for example, a texture that represents the inside of a rock. As a result, the updated terrain object 272 appears to have the deformed part and its surrounding parts representing the inside of a rock, and as a whole, it can be made to look as if part of it has been destroyed and the inside has been exposed.
[0226] As described above, in this embodiment, when a voxel object deforms as if it were destroyed, the material of the mesh in the deformed part is changed to a material representing the interior, thereby creating the appearance that a part of the voxel object has been destroyed and its interior is exposed. Alternatively, as a method for creating the appearance that a part of a voxel object has been destroyed and its interior is exposed, one could set a material representing the outer shell of an object for voxels located on the surface of the mesh of a voxel object representing an object, and set a material representing the interior of an object for voxels located in the inner region of the mesh of the voxel object. In this method, when a voxel that was located in the inner region of the mesh of the voxel object is deformed to be located on the surface of the deformed mesh, the voxel object will appear to have its interior exposed. However, in the above method, the part of the voxel object's mesh that looks like the outer shell becomes thicker, making it difficult to represent the outer shell part as thin.
[0227] In contrast, this embodiment employs a method of changing the material for voxels within the material update range that encompasses the density update range. This results in the appearance of not only the deformed part of the voxel object but also the surrounding part being changed to represent the interior of the tree. The surrounding part is the part where the mesh is not deformed, but its appearance is changed to represent the interior. By creating such a part, the voxel object after the update process appears as if a thin outer shell has been peeled off. Thus, this embodiment makes it possible to represent the thin outer shell that is created when an object is destroyed.
[0228] Furthermore, when a voxel object is deformed by a suck-up action, it is possible that fragments may be created in the voxel object. Figure 34 shows an example of when fragments are created in a voxel object and when an erasure process is performed to prevent fragments from being created. In Figure 34, (a) shows the situation when the player character 201 is performing a suck-up action on the terrain object 278, and (b) shows the situation when the terrain object 272 is deformed by the suck-up action when no erasure process is performed. Here, as shown in the example in Figure 34, as a result of the deformation of the terrain object 278, a part of the terrain object 278 may be created as a fragment 278a. This fragment 278a is positioned as if floating in the air, and when such a fragment 278a is created, the player may feel that it is unnatural. 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, it is possible that the player may not notice the small fragment portion 278a and bring the player character 201 into contact with it, resulting in the player character 201 being adversely affected. Therefore, in this embodiment, the game system 1 performs an erasure process that changes the density of voxels corresponding to the fragment portion so that such fragment portions do not occur due to the deformation of the voxel object by the suck-in action.
[0229] In the erasure process, first, the game system 1 identifies a sub-region corresponding to the fragment to be erased from within a predetermined judgment range. A sub-region is a region where voxels with a density equal to or greater than the above-mentioned standard value are adjacent and continuous, and the size of the region is smaller than the predetermined standard. Note that a region of a single voxel whose density is equal to or greater than the above-mentioned standard value, and where the density of all adjacent voxels is less than the standard value, may also be considered a sub-region. Furthermore, the above judgment range may be set in any way, for example, it may be the entire range of the voxel space, or it may be a range based on the above-mentioned density update range, which is the range in which the deformation of the voxel object is performed. A range based on the density update range is, for example, a range that encompasses the density update range. More specifically, a range based on the density update range may be set as a shape that is an enlarged shape of the density update range, with the center position being the same as the density update range. Furthermore, the game system 1 may rewrite the voxel data for each predetermined unit region (for example, a region consisting of a group of voxels composed of a predetermined number of voxels). In this case, the range consisting of one or more unit regions containing the voxels whose density has been updated may be defined as the judgment range. Furthermore, the game system 1 may identify as a subregion any region that satisfies the above subregion conditions and whose entirety is included within the judgment range, or it may identify as a subregion any region that satisfies the above subregion conditions and whose at least a part is included within the judgment range.
[0230] Game system 1 updates the density of voxels corresponding to a specified sub-region to a value below a baseline (e.g., 0). This prevents the generation of meshes for voxel objects that would form fragments corresponding to that sub-region (see Figure 34(c)). The predetermined baseline for the size of the sub-region is set to, for example, a size smaller than the player character 201. In this case, voxel objects that would form fragments smaller than the player character 201 and appear to be floating in the air will no longer be generated by the deletion process.
[0231] In the above, game system 1 may specify the size of the sub-region for each material or for each group of materials. A group of materials is, for example, a group to which multiple types of materials having the same properties belong. According to this, if a voxel object that is a predetermined material (or a material of a predetermined group) remains as a small fragment due to the suck-up action, the fragment portion will not be generated by the erase process. If the size of the sub-region is not specified for each material or for each group of materials, for example, if a suck-up action is performed on a terrain object that contains rock material and lava material, a small portion of lava material may remain in contact with the terrain object that is made of rock material. In such a case, it is conceivable that the player may not notice the portion and cause the player character 201 to come into contact with that portion, which would be an inconvenience. In contrast, by specifying the size of the sub-region for each material or for each group of materials, the above portion will not be generated, thus reducing the possibility of the above inconvenience occurring.
[0232] In this embodiment, the player character 201 can perform a throwing action to throw a projectile obtained under certain conditions through a suction action. Figure 35 is a diagram showing an example of a game image in the scene after a suction action has been performed but before a throwing action is performed. In Figure 35, as a result of the continuous suction action, the terrain object 272, which is formed like a rock wall, is deformed so that a hole appears in a part of it. Also, in the situation shown in Figure 35, the player character 201 has performed an action to assume a throwing stance for the projectile object 273 after the suction action (hereinafter referred to as the "stance state"). For example, when the number of projectiles that the player character 201 can throw is 1 or more, and the player inputs an operation to instruct the player to assume a stance, the player character 201 performs an action to assume a stance and enters the stance state described above. Furthermore, in the stance state, when the player inputs an operation to instruct the player to throw, the player character 201 performs a throwing action to throw the projectile object 273 in the direction indicated by the aiming image 271.
[0233] When the player character assumes the above stance, 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 number of bullets is increased. In this embodiment, the bullet object 273 is a voxel object based on voxels in a sub-voxel space 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 the conditions related to the deformation of the voxel object are met during the above-described suction action, the number of projectiles is increased. The number of projectiles can also be said to be the number of times the throwing action, in which projectiles are thrown, can be performed. As will be described in detail later, player character 201 can increase the number of projectiles by deforming the voxel object more significantly through the suction action.
[0235] Next, we will explain the process of increasing the number of bullets in response to the deformation of the voxel object. Figure 36 is a diagram showing an example of how to determine the increase in bullets and the material of the increased bullets. The example shown in Figure 36 shows the material of the erased portion during the period from when the suck-up action starts until the 6th frame, and the timing of bullet additions during that period and the material of those bullets. The material of the erased portion refers to the material set on the voxels whose density is reduced when the terrain object 272 is deformed by the suck-up action. If there are multiple types of materials set on one or more voxels whose density is reduced, the material of the erased portion is the material that has decreased the most among those multiple types of materials. Game system 1 calculates a value for each voxel by multiplying the amount of density reduction for each voxel by the proportion of the material in that voxel (this proportion is obtained from the material mixing ratio), and the material with the largest total value of these values for each voxel is designated as the "material that has decreased the most".
[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 suction action. The degree of change can also be said to be the degree of change of the voxel object. In the first example, the game system 1 calculates the number of times the voxel density has been updated by the suction 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 Figure 36, the process of increasing the number of bullets by 1 is performed each time the above count reaches a predetermined number (here, 5 times). In other words, if the deformation of the terrain object by the suction action is performed over 5 frames, the number of times the throwing action that throws bullets can be performed is increased by 1. Note that the specific method of increasing bullets based on the number of times the voxel density has been updated by the suction action is not limited to the above. For example, in other embodiments, the above count may be the number of bullets, or the condition for increasing bullets may be that the density update is performed consecutively for a predetermined number of times. Also, for example, in other embodiments, the above count may be counted for each material. In this case, if the number counted for a certain material reaches a predetermined number, bullets for that material may be added.
[0237] As described above, in this embodiment, an event is triggered that increases the number of times the throwing action (throwing a bullet) can be performed, and an event is triggered in which the player character 201 throws a bullet, depending on the deformation of the voxel object. As a result, the deformation of the voxel object becomes a condition for triggering events in the game, which provides the player with an incentive to deform the voxel object and improves the strategic and engaging aspects of the game.
[0238] In the first example, the number of times the voxel density was updated was used as an indicator of the degree of change, but any specific indicator of the degree of change is arbitrary. For example, in other embodiments, the indicator used in the first example may be the "amount of decrease in voxel volume" or the "current volume of voxel" used in the second and third examples described later. 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 increased bullets is determined based on the material of the voxels whose density has changed due to the suck-in action. In this embodiment, the material of the increased bullets is determined based on the material of the erased portion in the frame in which the increase in bullets is determined. For example, in the example in Figure 36, the "soil" material, which is the material of the erased portion in the 5th frame in which the increase in bullets is determined, is determined to be the material of the bullets. According to this, the material of the portion of the terrain object 272 that is deformed by the suck-in action that appears to have been erased at the time the bullets are added becomes the material of the added bullets. Therefore, the material of the added bullets can be easily understood by the player. In addition, the player can consider what the material of the increased bullets will be and think about which part of the terrain object to perform the suck-in action on, thus improving the strategic aspect of the game.
[0240] In other embodiments, the game system 1 may determine the material of the increased bullets not only based on the voxel update when the increase in bullets is decided, but also based on the material that has decreased during voxel updates up to the point where the increase in bullets is decided. For example, in the example in Figure 36, the material of the increased bullets may be determined as the material that has been the "erased portion material" the most times in the first to fifth frames up to the point where the increase in bullets is decided (in the example in Figure 36, the "grass" material). Alternatively, the game system 1 may determine the erased portion material for the first to fifth frames up to the point where the increase in bullets is decided. Specifically, the game system 1 may calculate a value for each voxel by multiplying the total decrease in density per voxel in the first to fifth frames (total for the first to fifth frames) by the proportion of the material in that voxel, and then determine the material with the largest total value obtained by summing these values for each voxel as the "erased portion material for the first to fifth frames". The material determined in this way may be the material of the increased bullets.
[0241] In this embodiment, as an example of an action whose number of executions increases under certain conditions in response to a suction action, the player character performs an action of throwing a projectile. In other embodiments, however, the action whose number of executions increases under certain conditions in response to a suction action may be any action. For example, the above 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 way as the material of the projectile is determined, and the properties of the material may be assigned to the beam, punch, or kick action.
[0242] [2-8-2. Second Example (An example where an event occurs in which an item is placed within a terrain object)] As a second example, we will describe an example in which an event occurs in which an item is placed within a terrain object in response to a deformation that causes a portion of the terrain object to be erased. Figure 37 shows an example of how an item is placed in response to a deformation of a terrain object. As shown in Figure 37, in this embodiment, the player character 201 can deform the terrain object 281 so that it is erased by the punch action, suck action, etc., described above. In this embodiment, when a deformation occurs that causes a portion of the terrain object 281 to be erased, an event is executed under certain conditions in which an item object 282 is placed (see Figure 37(b)). As will be described in detail later, in this embodiment, the item object 282 is placed in response to a decrease in the volume of voxels related to the terrain object 281 by a predetermined amount. This provides the player with an incentive to deform the terrain object. The details of the above event will be described below.
[0243] In the second example, when the terrain object is deformed by the player character 201, the game system 1 calculates the amount of decrease in the volume of the voxels related to the terrain object as an index indicating the degree of change in the voxels. Here, the deformation of the terrain object by the player character 201 refers to the deformation of the terrain object caused by the actions of the player character 201. For example, the deformation of the terrain object due to the actions of the player character 201 such as the above-mentioned punch action or suction action is an example of the deformation of the terrain object by the player character 201. Also, for example, the deformation of the terrain object caused by the player character 201 using an item (for example, by detonating a bomb) may also be an example of the deformation of the terrain object by the player character 201. Also, for example, as a result of the player character 201 blowing away an enemy character by a punch action or the like and the enemy character hitting the terrain object and the terrain object being deformed, this may also be an example of the deformation of the terrain object by the player character 201. Note that in other embodiments, not limited to the deformation of the terrain object caused by the actions of the player character 201, the amount of decrease in the volume of the voxels may also be calculated based on the deformation of the 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 the reduction for each voxel by multiplying the volume of that single voxel in the game space by the reduction in density for one or more voxels whose density has been reduced, and then calculates the total reduction by summing the reductions for each voxel for one or more voxels as the reduction in the volume of the voxel. According to the above, the reduction can be calculated with more detailed accuracy 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 is arbitrary. 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 summing the reductions in density for one or more voxels whose density has been reduced, without considering the size of the voxel.
[0245] In this embodiment, the game system 1 calculates the decrease in the volume of the voxels each time the terrain object is deformed, and calculates the cumulative decrease. Furthermore, each time the cumulative decrease is updated, the game system 1 determines whether or not to place an item object based on the updated cumulative decrease. In this embodiment, it is determined to place an item object when the cumulative decrease reaches a predetermined threshold. In this embodiment, the game system 1 resets the cumulative decrease when an item object is placed, and then recalculates the cumulative decrease. As a result, an item object is placed each time the cumulative decrease reaches a predetermined threshold during the game. The player can periodically obtain item objects by having the player character perform actions that deform the terrain object so that it is erased.
[0246] In the second example, the "decrease in the volume of voxels" was used as an index indicating the degree of change. However, the specific index indicating the degree of change is arbitrary. For example, in other embodiments, as the index in the second example, the "number of times the density of voxels was updated" used in the first example may be adopted. At this time, the game system 1 may place an item object when the above number reaches a predetermined threshold. Also, for example, in other embodiments, instead of the above "cumulative decrease in the volume of voxels", the volume of voxels at the current time may be used as an index indicating the degree of change. The volume of voxels at the current time can be obtained by subtracting the cumulative decrease amount from the volume of voxels at the start of the game. At this time, the game system 1 may place an item object when the volume of voxels at the current time becomes less than or equal to a predetermined threshold.
[0247] Also, the method of determining the placement of item objects based on the cumulative decrease amount is arbitrary. For example, in other embodiments, each time the cumulative decrease amount is reset, the value of the threshold may be changed, or it may be changed so that the value of the threshold increases (or decreases) each time it is reset. Also, for example, the game system 1 may set a plurality of thresholds, not reset the cumulative decrease amount, and place an item object each time the cumulative decrease amount reaches a threshold. Also, for 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] Also, in other embodiments, the game system 1 may calculate the decrease in the volume of voxels for each material or for each group of materials. At this time, it may be determined whether to place an item object depending on whether the cumulative decrease amount for each material or group has reached a threshold. The threshold at this time may be set to the size for each material or group. Also, the game system 1 may place an item object of a type corresponding to the material or group for which the cumulative decrease amount has reached the threshold.
[0249] In other embodiments, the game system 1 may place item objects based on the increase in the volume of voxels. For example, as shown in Figure 29, the player character 201 can deform a terrain object to increase the volume of its internal region. The game system 1 may calculate a cumulative increase in the volume of voxels and determine whether or not to place an item object based on this cumulative increase. In this case, the game system 1 may not subtract the cumulative increase even if the density of voxels in the terrain object decreases. In other embodiments, the game system 1 may calculate a change, which is the sum of the decrease and increase in the volume of voxels, and place item objects based on this change.
[0250] In this embodiment, item objects are placed in a position where they are hidden by terrain objects. For example, in the example shown in Figure 37, item object 282 is placed in the internal region of terrain object 281. In other words, item objects are placed in a position in the game space where voxels with a density equal to or greater than the above-mentioned baseline value are defined. The player character 201 can free the item object from being buried in the terrain object by deforming the terrain object with punch actions, suck-in actions, etc., so that the terrain object is further erased. According to the above, item objects can be placed naturally without giving the player the impression that the item object suddenly appeared. In other embodiments, the placement position of the item object is arbitrary and may be placed outside the terrain object or partially buried in the terrain object. In other embodiments, the game system 1 may deform the terrain object so that a cavity is formed in the internal region of the terrain object, including the area where the item object is placed, and place the item object in the formed cavity.
[0251] Game system 1 may determine the placement location of an item object based on the location where the deformation of the terrain object that caused the item object to be placed occurred. For example, an item object may be placed in an area within a predetermined distance from the location or range where the deformation of the terrain object occurred. This allows the item object to be placed in an easily discoverable location. Alternatively, as shown in Figure 37, for example, an item object may be placed in an area that is behind the location or range where the deformation of the terrain object occurred, as seen from the perspective of the player character. This allows the item object to be discovered by further deforming the deformed part of the terrain object, thus allowing the item object to be placed in an even more easily discoverable location. Game system 1 may determine the placement location of an item object in any way within the above-mentioned area. For example, a predetermined location within the area (e.g., the center of the area) may be the placement location of the item object, or the placement location may be determined randomly within the area.
[0252] Furthermore, depending on the direction in which the player character performs an action to deform a terrain object, the game system 1 may choose not to place an item object even if the cumulative decrease reaches a predetermined threshold. For example, if the player character performs an action upwards, and as a result the part of the terrain object above the player character is deformed, the item object will be placed further above that part. In this case, if the player character further deforms the terrain object in an attempt to acquire the item object, the item object may fall as soon as it is released from its embedded state in the terrain object. Therefore, for example, if the player character performs an action to deform a terrain object in the vertical direction in the game space, the game system 1 may choose not to place an item object even if the cumulative decrease reaches a predetermined threshold. However, in this case, the game system 1 may choose to place an item object if the player character subsequently performs the above action in a direction other than vertical.
[0253] The item object to be placed may be any type of item in the game. In this embodiment, the item object to be placed is a treasure chest object. The player character 201 can obtain a predetermined reward item by, for example, performing an action to open the treasure chest object or by touching the treasure chest object. Note that the treasure chest object is embedded in the terrain object when it is placed, and may become unembedded when the terrain object surrounding the treasure chest object is transformed in such a way that it is removed. In this case, the player character 201 cannot perform the action to open the treasure chest object when it is embedded in the terrain object, but can perform the action when the treasure chest object is unembedded in the terrain object. The reward item may be any type of item, for example, an item such as coins that are a collection goal in the game, or an item that gives an advantage in the game, such as a weapon or a healing item. In another embodiment, instead of placing a treasure chest object in the terrain object, the reward item itself may be placed. Furthermore, in the above, there may be multiple types of reward items that can be obtained from treasure chest objects or placed on terrain objects, and one of these multiple types of items may be selected in any way.
[0254] [2-8-3. Third Example (An example of an event in which an item is awarded in a game)] As a third example, we will describe an example in which an event is executed in which an item is awarded in the game in response to a deformation in which a part of a terrain object is erased. In this embodiment, each time a terrain object is deformed by the player character during the game, the game system 1 calculates an index indicating the degree of change in the voxels, and when the index reaches a predetermined threshold, it executes an event to award an item. This provides the player with an incentive to deform terrain objects.
[0255] In this embodiment, as described in the second example above, when the 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. At this time, the game system 1 calculates the amount of decrease for each group of materials. Note that the groups of materials may be set in any way. For example, in this embodiment, the groups are set so that materials with the same properties belong to the same group. When calculating the amount of decrease for each group of materials, the game system 1 calculates the amount of decrease for each voxel for each material by multiplying the volume of that voxel in the game space by the amount of density decrease and the ratio of the material. Furthermore, the calculated amount of decrease for each voxel is totaled for each material for the one or more voxels, and this total decrease is calculated as the "amount of decrease in voxel volume" for each material. By totaling the calculated "amount of decrease in voxel volume" for each material for each group of materials, the amount of decrease for each group of materials can be obtained.
[0256] In this embodiment, the game system 1 calculates the decrease in the volume of the voxels for each group of materials whenever the terrain object is deformed, and calculates the cumulative decrease for each group of materials. Furthermore, each time the cumulative decrease for each group of materials is updated, the game system 1 determines whether or not to grant an item based on the updated cumulative decrease. For example, if the cumulative decrease reaches a predetermined threshold, it is determined that an item should be granted. At this time, multiple types of thresholds may be set for each group of materials, and an item corresponding to the threshold may be granted when the cumulative decrease for that group reaches that threshold. The method for determining which item to grant is arbitrary. For example, an item may be set for each group of materials, or an item may be set for each threshold.
[0257] In the third example, the "decrease in voxel volume" was used as an indicator of the degree of change, but any specific indicator of the degree of change is arbitrary. For example, in other embodiments, the "number of times the 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 updates for each group of materials and grant an item when the number of updates reaches a predetermined threshold. Also, in other embodiments, the "current volume of the voxel" may be used as an indicator of the degree of change. In this case, the game system 1 may grant an item when the current volume of the voxel falls below a predetermined threshold.
[0258] Figure 38 shows an example of an achievement image that demonstrates the deformation of terrain objects. In this embodiment, the game system 1 displays an achievement image like the one shown in Figure 38 in response to a predetermined instruction from the user during gameplay. The achievement image shows the cumulative decrease amount at the current time for each group of materials. In the example shown in Figure 38, the achievement image includes an item indicating the group of materials (e.g., item 291) and a bar graph showing the cumulative decrease amount (e.g., bar graph 292) for each group of materials. In the example shown in Figure 38, the items such as "tree" and "grass" do not represent the names of materials, but rather indicate the properties of the materials and represent groups of materials that have the same properties. For example, "tree" indicates a group of materials that have the properties of trees.
[0259] In other embodiments, the game system 1 may calculate the cumulative decrease amount for each material and determine whether or not to grant an item based on that decrease amount. In this case, the achievement image may show the cumulative decrease amount for each material. Alternatively, for example, the game system 1 may calculate the cumulative decrease amount for all terrain objects, without distinguishing between materials and groups of materials, and determine whether or not to grant an item based on that decrease amount. In other embodiments, items may be set to be granted according to the cumulative decrease amount for each material, items may be granted according to the cumulative decrease amount for each group of materials, and items may be granted according to the total cumulative decrease amount.
[0260] The specific contents of the items granted to players are arbitrary. For example, the items may be currency or points usable in the game, or items used by the player character in the game, such as weapons or tools. The manner in which items are granted to a player character is just one example of how items may be granted to a player. Furthermore, the timing at which the player receives the items in an event where items are granted is arbitrary. For example, game system 1 decides to grant an item when the cumulative decrease reaches a threshold, but the timing at which the player or player character receives the item may be different from the timing at which the item is granted. For example, the achievement image above may include an image showing the granted item, and the player may receive the item by specifying that image.
[0261] In the second and third examples described above, the game system 1 executed events according to the degree of voxel change related to the terrain object. In other embodiments, the game system 1 may also execute events considering the degree of voxel change related to other voxel objects besides the terrain object.
[0262] As described above, in the first to third examples, each event occurs when the degree of change in the voxel reaches a predetermined level. This means that more events can be triggered by deforming more voxel objects, thus providing the player with an incentive to deform more voxel objects.
[0263] [3. Specific examples of processing in game systems] Next, with reference to Figures 39 to 43, a specific example of information processing in game system 1 will be explained.
[0264] Figure 39 shows an example of various data used for information processing in the game system 1. Each piece of data shown in Figure 39 is stored in a memory accessible by the main unit 2 (for example, flash memory 84, DRAM 85, and / or a memory card installed in slot 23). As shown in Figure 39, the game system 1 stores the game program. The game program is for executing the game processing in this embodiment (specifically, the game processing shown in Figure 40). The game program includes the material data mentioned above (see Figure 12). The memory also stores the voxel data mentioned above (see Figure 11), update range data, mesh data, update count data, bullet data, total reduction amount data, group reduction amount data, and object data (see Figure 39).
[0265] The update range data is data indicating 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 the present embodiment, the mesh data includes SVO data, display mesh data, and determination mesh data. The SVO data is data that holds each vertex calculated from the voxel data in the above-described SVO structure. In the present embodiment, the SVO data includes, in addition to the data indicating the position of each vertex, data indicating the material set for each vertex (for example, data indicating the ID of the material). 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 ID of the material). The determination mesh data includes various data related to the determination mesh. Specifically, the determination mesh data includes data indicating each vertex of the determination mesh and data indicating the material set for each vertex (for example, data indicating the ID of the material).
[0267] The update count data indicates the number of times the density of the voxels has been updated by the above-described suction action. At the start of the game, the above number is set to 0. Also, the bullet data indicates the number of bullets that the player character throws and the material for each bullet. At the start of the game, the number of bullets is set to a predetermined number.
[0268] The total reduction amount data indicates the above-described cumulative reduction amount related to the voxels of the terrain object. Also, the group reduction amount data indicates the cumulative reduction amount for each material group related to the voxels of the terrain object. At the start of the game, these cumulative reduction amounts are set to 0.
[0269] Object data includes various data about objects other than voxel objects (for example, player characters, fragment objects, etc.). Object data is stored for each object that appears in the game space. Object data includes, for example, data indicating the object's position, velocity, and state.
[0270] Figure 40 is a flowchart showing an example of the game processing flow executed by game system 1. The execution of game processing begins, for example, when the game is started in response to a player's instruction while the game program is running. The processing loop consisting of the series of processes from steps S1 to S15 is executed in a cycle of once per frame.
[0271] In this embodiment, the processor 81 of the main unit 2 executes the game program stored in the game system 1, thereby executing the processing of each step shown in Figure 40. However, in other embodiments, some of the processing of each step may be executed by a processor other than the processor 81 (for example, a dedicated circuit). Also, if the game system 1 can communicate with other information processing devices (for example, a server), some of the processing of each step shown in Figure 40 may be executed by the other information processing device. Furthermore, the processing of each step shown in Figure 40 is merely an example, and the processing order of each step may be changed, or other processing may be performed in addition to (or instead of) the processing of each step, as long as similar results can be obtained.
[0272] Furthermore, the processor 81 executes the processing of each step shown in Figure 40 using memory (for example, DRAM 85). That is, the processor 81 stores the information (in other words, data) obtained by each processing step in memory, and when it is necessary to use that information in subsequent processing steps, it reads the information from memory and uses it.
[0273] In step S1 shown in Figure 40, the processor 81 acquires the operation data indicating the operation input from the player. That is, the processor 81 acquires the operation data received from each controller via the controller communication unit 83 and / or terminals 17 and 21. The processing in step S2 is executed after step S1.
[0274] In step S2, the processor 81 designates one of the game space objects that needs processing but has not yet been processed as the target for processing, and performs a process to calculate the velocity of the designated object and a process to reflect the results of contact between objects in the previous frame. The velocity of the object is used in the process of step S13, described later, to calculate the position of the object in the current frame. For example, if the designated object is a player character, the velocity of the player character is calculated based on the operation data obtained in step S1. If the designated object is an object that is not operated by the player (for example, 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 it is placed on a terrain object and not moving, set to the same velocity as the player character if it is being held by a player character, and set to a velocity that moves in the aiming direction with a size determined by the above rules if it is released by a throwing action by a player character. Specifically, the velocity of an object is calculated based on a virtual physics calculation that includes interactions between objects. For example, interactions such as repulsion from collisions between objects, friction from contact, falling due to virtual gravity, and deceleration due to virtual air resistance are all reflected in the determination of velocity.
[0275] Furthermore, the process that reflects the results of object contact in the previous frame includes processing that affects the objects if it is determined in the collision detection (step S10) of the previous frame that objects have come into contact with each other. The above processing is, for example, as follows: - If it is determined that the player character came into contact with a lava terrain object in the previous frame, the player character's health will be reduced. - If it is determined that the player character made contact with a terrain object in the previous frame due to a pull-out or punch action, the process of generating a fragment object is performed. • If it was determined that the fragment object had come into contact with a rock terrain object in the previous frame, the process of destroying the fragment object is executed. If the state of an object is changed during the processing of step S2, the processor 81 updates the object data stored in memory for that object to reflect the changed state. The processing of step S3 is executed after step S2.
[0276] In step S3, the processor 81 determines whether an update event has occurred that updates the voxel object due to the object specified in step S2. For example, the determination in step S3 is based on the result of the collision determination (step S10) in the previous frame. For example, if it is determined that the player character made contact with the terrain object by a pull-out or punch action in the previous frame, it is determined that an update event has occurred that deforms the terrain object so that part of it appears to have been erased (see Figures 26 and 27). Such update events include events in which the player character's punch or suck-in action deforms the terrain object so that part of it appears to have been erased, and under certain conditions, the material of the deformed part and the surrounding area is changed (see Figures 30 and 33). Also, for example, if it is determined that a fragment object made 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 it appears as if the fragment object has attached to it (see Figure 29). If the determination result in step S3 is positive, the processing in step S4 is executed. On the other hand, if the result of the judgment in step S3 is negative, the process in step S5 is executed.
[0277] In step S4, the processor 81 executes a voxel update process to update the voxel data for the voxel object for which an update event was determined to have occurred in step S3. The details of the voxel update process in step S4 will be described below with reference to Figure 41.
[0278] Figure 41 is a subflowchart showing an example of a detailed flow of the voxel update process in step S4 shown in Figure 40. In the voxel update process, in step S21, the processor 81 first determines whether the update event determined to have occurred in step S3 is an event that deforms the voxel object. The determination in step S21 is made based on the type of update event. For example, the update events shown in Figures 26, 27, 29, 31, and 37 are determined to be events that deform the voxel object. In this embodiment, an event that changes only the material without changing the density of the voxels may occur, and such an event is determined not to be an event that deforms the voxel object. If the determination result in step S21 is affirmative, the process in step S22 is executed. On the other hand, if the determination result in step S21 is negative, the process in step S24 is executed.
[0279] In step S22, the processor 81 sets a density update range in the game space for updating the voxel density of the voxel object. For example, the specific details of the density update range (i.e., position, shape, and size) are associated with each type of update event in the game program. The density update range set in step S22 is set to be associated with the type of update event that is determined to occur in step S3. The processor 81 stores data indicating the set density update range in memory as update range data. The processing in step S23 is executed after step S22.
[0280] In step S23, the processor 81 updates the density of voxels corresponding to the density update range set in step S22 according to the update event. For example, if a voxel object is deformed so that it is erased (also called destroyed), an update is performed to decrease the density of voxels corresponding to the density update range. Alternatively, if the voxel object is deformed so that the volume of the inner region increases, an update is performed to increase the density of voxels corresponding to the density update range. Specifically, the processor 81 updates the voxel data stored in memory to change the density of voxels corresponding to the density update range. The 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 that deforms a terrain object in response to a suck-in action, the density is updated in a way that deforms the terrain object 272 so that its inner region contracts (see Figure 32). The processing in step S24 is executed after step S23.
[0281] In step S24, the processor 81 determines whether the update event determined to have occurred in step S3 is an event that changes the material of a voxel object. The determination in step S24 is made based on the type of update event. For example, an event that deforms a terrain object in response to a suck-in action (see Figure 31) is determined to be an event that changes the material of a voxel object. On the other hand, the examples of update events shown in Figures 26, 27, 29, and 37 are determined not to be events that change the material of a voxel object. If the determination result in step S24 is positive, the processing in step S25 is executed. On the other hand, if the determination result in step S24 is negative, the processing in step S27 is executed.
[0282] In step S25, the processor 81 sets a material update range in the game space for modifying the material of the voxel object. For example, if a density update range is set by the process in step S22, the material update range is generated based on that density update range (see Figure 33). For material update ranges for which no corresponding density update range is set, the specific details of the material update range (i.e., position, shape, and size) are associated with each type of update event in the game program, for example. If the process in step S22 is not executed, the material update range is set to be associated with the type of update event determined to occur in step S3. The processor 81 stores the data indicating the set material update range in memory as update range data. The process in step S26 is executed after step S25.
[0283] In step S26, the processor 81 modifies the material of the voxels corresponding to the material update range set in step S25 in accordance with the update event. For example, the processor 81 changes the material of the voxels corresponding to the material update range to the internal material associated with the material before the change, or to a predetermined material. The processor 81 updates the voxel data stored in memory to change the material of the voxels corresponding to the material update range. After step S26, the process in step S27 is executed.
[0284] In step S27, the processor 81 determines whether or not fragments of the voxel object are generated in the voxel data after processing in step S23. Specifically, the processor 81 determines whether or not a small region corresponding to the fragment to be deleted can be identified from the region within the determination range described above. If the determination result in step S27 is affirmative, the processing in step S28 is executed. On the other hand, if the determination result in step S27 is negative, the processor 81 terminates the voxel update process.
[0285] In step S28, the processor 81 updates the density of voxels corresponding to the small region identified in step S27. Specifically, the processor 81 updates the voxel data stored in memory so that the density of the voxels becomes less than a reference value. After step S28, the processor 81 terminates the voxel update process.
[0286] Returning to the explanation of Figure 40, in the next step S5 following the voxel update process in step S4, the processor 81 determines whether the processes in steps S2 to S4 have been completed for all objects that require processing. If the result of the determination in step S5 is positive, the process in step S6 is executed. On the other hand, if the result of the determination in step S5 is negative, the process in step S2 is executed again.
[0287] In step S6, the processor 81 updates the vertices of the voxel object in the game space. That is, if the voxel data was updated in the process of step S5, new vertices are calculated based on the updated voxel data. The positions of the new vertices are calculated according to the method described in [2-3. Vertex Calculation] above. The material of the new vertices is calculated according to the method described in [2-4. Vertex Material Determination] above. The process of step S7 is executed after step S6.
[0288] In step S7, the processor 81 simplifies the vertices. That is, for each vertex updated by the processing in step S6, the processor 81 simplifies it according to the method described in [2-5. Simplification of Vertices] above. The SVO data stored in memory is updated to show each vertex obtained by the processing in steps S6 and S7. Therefore, the SVO data is updated by the processing in steps S6 and S7. Note that the processing in steps S6 and S7 does not require recalculating the vertices for the entire voxel data, and may be performed only on the parts of the voxel whose contents were changed in the processing in step S5. The processing in step S8 is performed after step S7.
[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 in [2-6. Mesh Generation] and [2-6-1. Determination of Display Mesh Material] above. The processor 81 updates the display mesh data stored in memory to show the updated position and material of each vertex of the display mesh. The processing in step S9 is executed after step S8. The processor 81 may start the processing from step S9 onwards without waiting for the completion of step S8 and execute them in parallel. In that case, step S8 must be completed before the start of step S14.
[0290] In step S9, the processor 81 updates the determination mesh of the voxel object based on the SVO data stored in memory. The position 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 in [2-6. Mesh Generation] and [2-6-2. Determination of the Determination Mesh Material] above. The processor 81 updates the determination mesh data stored in memory to show the updated position and material of each vertex of the determination mesh. The processing in step S10 is executed after step S9.
[0291] In the example shown in Figure 36, the process of generating the collision mesh (step S9) is performed every frame, but the process of generating the collision mesh does not have to be performed every frame. For example, if the collision detection process in step S10 is performed only on frames where predetermined conditions are met, the processor 81 may perform the process of generating the collision mesh on the frame in which the collision detection in step S10 is performed. The processor 81 may also perform the process of generating the collision mesh for voxels within the area in the game space where the collision detection in step S10 is performed. For example, in a situation where there are no objects other than voxel objects that are subject to collision detection around the player character in the game space (i.e., a situation where only collision detection between the player character and the surrounding voxel objects needs to be performed), the processor 81 may perform the process of generating the collision mesh for voxels within a predetermined range relative to the player character.
[0292] In step S10, the processor 81 performs collision detection for each object in the game space based on the detection mesh data and object data stored in memory. Specifically, the processor 81 uses the detection mesh for voxel objects and a predetermined shape of detection area set for non-voxel objects to perform collision detection. In this embodiment, the collision detection in step S10 is performed taking into account the speed calculated in step S2. In other words, the processor 81 performs collision detection 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 the following contact occurs. • Contact between the player character performing movement, punching, or pulling actions and terrain objects. • Contact between the character performing the action of picking up (the fragment object) and the fragment object. • Contact between a straight line extending from the player character's position in the aiming direction and a terrain object. • Contact between fragment objects thrown by the player character's throwing action and terrain objects. - A straight line extending from the position of the player character performing the sucking action in the direction indicated by the aiming image (see Figure 33), and contact with terrain objects. If the collision detection in step S10 determines that objects have come into contact with each other, then in the next frame, step S2 will execute a process that reflects the result of the object contact, or in the next frame, step S3 will determine that an update event has occurred. Step S11 is executed after step S10.
[0294] In step S11, the processor 81 executes player character control processing. In player character control processing, control processing related to the player character is executed based on the player's input. The details of the player character control processing will be described below with reference to Figure 42.
[0295] Figure 42 is a subflowchart showing an example of a detailed flow of the player character control process in step S11 shown in Figure 40. In the player character control process, first in step S31, the processor 81 determines whether or not it is an operation acceptance period in which operation input to the player character can be accepted. In this embodiment, the period in which the player character performs a predetermined action (for example, an action started in step S36 described later) in response to operation input from the player is excluded from the operation acceptance period. If the determination result in step S31 is affirmative, the process in step S32 is executed. On the other hand, if the determination result in step S31 is negative, the process in step S41 described later is executed.
[0296] In step S32, the processor 81 determines, based on the operation data acquired in step S1, whether or not an operation input for an action instruction has been made for the player character. An action instruction is, for example, an instruction to make the player character perform a punch action, a pull-out action, a suck-up action, an action to assume a throwing stance, or an action to throw a bullet. If the result of the determination in step S32 is affirmative, the processing in step S33 is executed. On the other hand, if the result of the determination in step S32 is negative, the processing in step S39 is executed.
[0297] In step S33, the processor 81 determines whether the action instruction given in step S32 is an instruction to have the player character assume a throwing stance. If the result of the determination in step S33 is affirmative, the process in step S34 is executed. On the other hand, if the result of the determination in step S33 is negative, the process in step S36 is executed.
[0298] In step S34, the processor 81 determines whether the number of bullets the player character can throw is 1 or more. Specifically, the processor 81 determines whether the number indicated by the bullet data stored in memory is 1 or more. If the result of the determination in step S34 is affirmative, the process in step S35 is executed. On the other hand, if the result of the determination in step S34 is negative, the process in step S39 is executed. In this case, the player character will not take the action of preparing to throw a bullet.
[0299] In step S35, the processor 81 reduces the number of bullets that the player character can throw by 1. Specifically, the bullet data stored in memory is updated to the value with 1 subtracted. The processing in step S36 is executed after step S35.
[0300] In step S36, the processor 81 determines whether the action instruction given in step S32 is an instruction to have the player character perform a throwing action, namely throwing a bullet. If the result of the determination in step S36 is affirmative, the process in step S37 is executed. On the other hand, if the result of the determination in step S36 is negative, the process in step S38 is executed.
[0301] In step S37, the processor 81 determines whether the player character is in a position to throw a bullet. If the result of the determination in step S37 is positive, the process in step S38 is executed. On the other hand, if the result of the determination in step S37 is negative, the process in step S39 is executed. In this case, the player character will not perform the action of throwing a bullet.
[0302] In step S38, the processor 81 instructs the player character to begin an action corresponding to the action instruction given in step S32. After the player character begins the action in step S38, the player character is controlled to continue the action for a certain period of time by the process in step S41, which will be described later. After step S38, the processor 81 terminates the player character control process shown in Figure 42.
[0303] In step S39, the processor 81 determines, based on the operation data acquired in step S1, whether or not an operation input for a movement instruction for the player character has been made. A movement instruction is an instruction to cause the player character to move on the game field. If the result of the determination in step S39 is affirmative, the process of step S40 is executed. On the other hand, if the result of the determination in step S39 is negative, the process of step S41 is executed.
[0304] In step S40, the processor 81 causes the player character to move on the field in response to the movement instruction given in step S39. After step S39, the processor 81 terminates the player character control process shown in Figure 42.
[0305] In step S41, the processor 81 controls the player character to perform various actions, such as advancing the action started in step S38 or performing actions when no input is received from the player. In a single step S41, the processor 81 controls the player character to advance actions for one frame's worth of time. As the processing of step S41 is repeatedly executed over multiple frames, the player character will perform a series of actions in response to the action instructions mentioned above.
[0306] Furthermore, if the player has not instructed the player character to perform any action (for example, if the action started in step S38 has finished), in step S41, the processor 81 does not have to make the player character perform any action, or it may have the player character perform an action to make its behavior appear more natural (for example, looking around or swaying its body). After step S41, the processor 81 terminates the player character control process shown in Figure 42.
[0307] Returning to the explanation of Figure 40, in the next step S12 following the player character control process in step S11, the processor 81 executes event processing. Event processing is the process for performing events that occur in response to the deformation of the voxel object. The details of event processing will be explained below with reference to Figure 43.
[0308] Figure 43 is a subflowchart showing an example of a detailed flow of event processing in step S12 shown in Figure 40. In event processing, first in step S51, the processor 81 determines whether or not the player character is performing a sucking action. During the period from when the control of the sucking action is started by the process in step S38 until the sucking action is completed, the result of the determination in step S51 is affirmative. If the result of the determination in step S51 is affirmative, the process in step S52 is executed. On the other hand, if the result of the determination in step S51 is negative, the process in step S57, which will be described later, is executed.
[0309] In step S52, the processor 81 determines whether the density of voxels related to the terrain object has been updated in the current frame due to the suction action. If the density update in step S23 occurs as a result of the suction action, the result of the determination in step S52 is affirmative. If the result of the determination in step S52 is affirmative, the process in step S53 is executed. On the other hand, if the result of the determination in step S52 is negative, the process in step S59, which will be described later, is executed.
[0310] In step S53, the processor 81 counts the number of times the voxel density has been updated due to the suction action. The processor 81 stores data indicating the number of updates in memory, and in step S53, it increments the value of the number of updates indicated by this data by 1. The process in step S54 is executed after step S53.
[0311] In step S54, the processor 81 determines whether the number of updates counted in step S53 has reached a predetermined number. If the result of the determination in step S54 is affirmative, the process in step S55 is executed. On the other hand, if the result of the determination in step S54 is negative, the process in step S59, which will be described later, is executed.
[0312] In step S55, the processor 81 increases the number of bullets that the player character can throw by 1 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 suck-in action, according to the method described in [2-8-1. First Example (Example where the event of increasing the number of bullets and the event of the player character throwing a bullet occur)] above. The processor 81 updates the bullet data stored in memory to include data indicating the bullet with the material determined above. The processing in step S56 is performed after step S55.
[0313] In step S56, the processor 81 resets the update count. Specifically, the data indicating the update count stored in memory is updated to show 0. Following step S56, the process of step S59, which will be described later, is executed.
[0314] In this embodiment, during the period when the player character performs a sucking action, the series of processes described in steps S51 to S56 above are executed in the event processing of each frame. As a result, an event to add bullets is executed each time the number of updates reaches a predetermined number.
[0315] In step S57, the processor 81 determines whether or not the sucking action by the player character has just finished. If the result of the determination in step S57 is affirmative, the processing in step S58 is executed. On the other hand, if the result of the determination in step S57 is negative, the processing in step S59, which will be described later, is executed.
[0316] In step S58, the processor 81 resets the count of updates in the same manner as in step S55. The process in step S59 is executed after step S58.
[0317] In step S59, the processor 81 calculates the cumulative decrease amount for the voxels of the terrain object. The cumulative decrease amount calculated in step S62 is the decrease amount for the terrain object as a whole. The cumulative decrease amount is calculated according to the method described in [2-8-2. Second Example (Example where an event occurs in which an item is placed in a terrain object)] above. For example, the 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 shown in the total decrease amount data stored in memory. The processor 81 stores the calculated data showing the cumulative decrease amount in memory as new total decrease amount data. The processing in step S60 is executed after step S59.
[0318] In step S60, the processor 81 determines whether the cumulative decrease calculated in step S59 satisfies the conditions for placing an item object. Specifically, the processor 81 determines whether the cumulative decrease has exceeded a predetermined threshold. If the result of the determination in step S60 is positive, the process in step S61 is executed. On the other hand, if the result of the determination in step S60 is negative, the process in step S63 is executed.
[0319] In step S61, the processor 81 places an item object in the game space. Specifically, the processor 81 determines the placement position of the item object based on the position where the terrain object was deformed and / or the position of the player character, in accordance with the method described in [2-8-2. Second Example (Example where an event occurs in which an item is placed in a terrain object)] above. The processor 81 stores object data related to the item object in memory so that the item object will be placed in the determined placement position. The processing in step S62 is executed after step S61.
[0320] In step S62, the 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 show 0. After step S62, the process in step S63 is executed.
[0321] In step S63, the processor 81 calculates the cumulative decrease in the voxels of the terrain object for each group of materials. The cumulative decrease for each group of materials is calculated according to the method described in [2-8-3. Third Example (Example where an event occurs in a game where an item is granted)] above. For example, the processor 81 can calculate the current cumulative decrease by adding the decrease for each group resulting from the density update in step S23 in the current frame to the cumulative decrease for each group shown in the group decrease data stored in memory. The processor 81 calculates the cumulative decrease for each group of materials and stores the data showing each calculated cumulative decrease in memory as new group decrease data. The processing in step S64 is executed after step S63.
[0322] In step S64, the processor 81 determines whether any of the cumulative decrease amounts for each group of materials calculated in step S63 meet the conditions for granting an item. Specifically, the processor 81 determines whether any of the cumulative decrease amounts for each group has exceeded a predetermined threshold. If the result of the determination in step S64 is positive, the processing in step S65 is executed. On the other hand, if the result of the determination in step S64 is negative, the processor 81 terminates event processing.
[0323] In step S65, the processor 81 assigns an item according to the conditions determined to be met in step S64. For example, the data about the player character stored in memory, specifically the data about the items the player character possesses, is updated. After step S65, the processor 81 terminates event processing.
[0324] Returning to the explanation of Figure 40, in the next step S13 following the event processing in step S12, the processor 81 controls the movement of each object other than the player character. For example, the enemy character's movement is controlled according to an algorithm defined in the game program. Also, for example, bullet objects and fragment objects are controlled to move in the direction of the throwing action when they are released by the player character's throwing action. In one step S13 operation, the processor 81 controls each object to perform one frame's worth of movement for actions that take place over multiple frames (for example, actions by enemy characters). As the process of step S13 is repeatedly executed over multiple frames, each object performs a series of actions related to movement and various actions. The position of an object is basically determined to be the position after moving at the speed calculated in step S2. However, if the collision detection in step S10 determines that an object is in contact with another object and its movement is hindered by the other object it is in contact with, the position of that object is determined not to change. The object data stored in memory is updated to reflect the object after the control in step S13. The process in step S14 is executed after step S13.
[0325] In step S14, the processor 81 generates a game image. Specifically, the processor 81 generates a game image by drawing each polygon of the display mesh for the voxel object, and the polygons of each object other than the voxel object, based on a virtual camera. Each polygon of the display mesh is drawn using drawing settings such as textures corresponding to the material set for the polygon, according to the method described in [2-6-1. Determination of the material of the display mesh] above. In this embodiment, if the player character is in a state where a throwing action is possible, the processor 81 generates a game image that includes the aforementioned aiming image (see Figure 28). The game image generated in step S14 is output to the display device and displayed in a cycle of once per frame. The processing in step S15 is executed after step S14.
[0326] In step S15, the processor 81 determines whether or not to terminate the game. For example, if the player performs a predetermined input to terminate the game, the processor 81 determines to terminate the game. If the result of the determination in step S15 is negative, the process in step S1 is executed again. Thereafter, the series of processes from steps S1 to S15 are repeatedly executed until it is determined in step S15 that the game should be terminated. On the other hand, if the result of the determination in step S15 is positive, the processor 81 terminates the game process shown in Figure 40.
[0327] [4. Effects and Modifications of This Embodiment] According to the above embodiment, when the density of voxels 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 makes it possible to generate game events in response to the deformation of the display mesh of the voxel object, thereby improving the strategic and engaging aspects of the game.
[0328] The term "display mesh" above means that the mesh may be used solely for display, or it may be used for purposes other than display. Similarly, the term "determination mesh" above means that the mesh may be used solely for collision detection, or it may be used for purposes other than collision detection. In the above embodiment, two types of meshes, a display mesh and a determination mesh, were used, but in other embodiments, a single type of mesh used for both display and collision detection may be generated.
[0329] Furthermore, according to the above embodiment, the voxel update range is continuously generated during the occurrence of the first event, and for voxels corresponding to the update range, the density is updated to decrease if either the density of that voxel or the density of surrounding voxels falls below a reference value (see Figure 32). This makes it possible to deform the mesh of a voxel object in a novel way in which the surface of the voxel object is gradually deleted.
[0330] In the above embodiment, the methods for calculating the degree of voxel change for each material and the methods for calculating it for each group of materials were described separately. However, materials having the same properties can also be considered as one type of material. In this case, "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 processing is performed using data (meaning including programs) in a certain information processing device, some of the data necessary for the processing may be transmitted from another information processing device different from the said information processing device. In this case, the said information processing device may perform the processing using the data received from the other information processing device and the data stored in itself.
[0332] In other embodiments, the information processing system may not have to include some of the configurations in the above embodiments, nor may it perform some of the processes executed in the above embodiments. For example, in order to obtain some specific results in the above embodiments, the information processing system may have to include the configurations for obtaining those results and perform the processes for obtaining those results, but it may not have to include other configurations or perform other processes. [Industrial applicability]
[0333] The above embodiment can be used, for example, as a game program or game system, for purposes such as generating game events in response to changes in voxel data. [Explanation of Symbols]
[0334] 1. Game System 2. Main unit 81 processors 201 Player Characters 271 Targeting Image 272,278,281 Terrain objects 276 Density update range 277 Material Update Range 282 Item Objects
Claims
1. On the computer, Voxel data defined within a virtual space, wherein for each of multiple voxels, a density is set to indicate the degree to which the space defined by that voxel is virtually occupied by its contents, and this voxel data is updated based on game processing. A display mesh corresponding to the voxel data and drawn based on a virtual camera is generated and updated by determining the vertex coordinates of the display mesh based on the density included in at least the voxel data. When a first event occurs based on the game processing, a first voxel update range is generated in the 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. The first parameter, which indicates the degree of change to the voxel caused by the first voxel update, is updated. A game program that generates a second event based on the first parameter during the game processing.
2. The first voxel renewal is a renewal that reduces the density, The game program according to claim 1, wherein the first parameter is calculated based on the cumulative amount of the decrease in density.
3. The first voxel renewal is a renewal that reduces the density, The game program according to claim 1, wherein the first parameter is calculated based on the cumulative decrease in the volume of a voxel, which is determined by the volume of the space in which the voxel is defined and the decrease 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 that indicates the type of content for each of the multiple voxels, The aforementioned computer further: The material of the display mesh is determined based on the material included in the voxel data, Based on the vertex coordinates of the display mesh and the texture corresponding to the material of the display mesh, the virtual space including the display mesh is rendered. The game program according to claim 1, which calculates the first parameter for each material based on the degree of change of the voxel to which the material is set.
6. The aforementioned computer further: Based on the input, the player character is controlled within the virtual space. As the first event, the player character is made to perform a first action, Based on the increase in the aforementioned degree, the number of times the player character can perform the second action is increased as the first parameter. The game program according to any one of claims 1 to 4, wherein, if there are remaining execution counts, the second event involves consuming the execution counts to cause the player character to perform the second action.
7. The voxel data further includes a material that indicates the type of content for each of the multiple voxels, The aforementioned computer further: The material of the display mesh is determined based on the material included in the voxel data, Based on the vertex coordinates of the display mesh and the texture corresponding to the material of the display mesh, the virtual space including the display mesh is rendered. As the number of available executions increases, the material corresponding to the second action for the increased number of available executions is set based on the material of the voxel that has changed due to the first voxel update. The game program according to claim 6, wherein the player character is instructed to perform an action of releasing an object to which a material corresponding to the second action has been set.
8. The first voxel renewal is a renewal that reduces the density, The aforementioned computer further: Each time the number of times the first voxel update has been performed reaches a first number, Increase the number of times the above can be executed, The game program according to claim 7, wherein, based on the amount of decrease in the material and density of each voxel that has changed by the first voxel update when the first number of times is reached, or by a plurality of first voxel updates up to the first number of times, the program determines the material that has decreased the most, and determines the material that has decreased the most as the material corresponding to the second action.
9. The game program according to any one of claims 1 to 5, wherein the second event is an in-game event that occurs when the degree of change of the voxel indicated by the first parameter reaches a predetermined degree.
10. To the aforementioned computer, Based on the voxel data, the vertices of the display mesh are generated and updated based on a method that sets vertices for adjacent portions of voxels having a density in a first range and voxels having a density in a second range lower than the first range. The game program according to claim 9, wherein, as a second event, an item object is placed at a position in the virtual space where voxels having the density of the first range are defined.
11. To the aforementioned computer, The game program according to claim 10, wherein each time the degree of change of the voxel indicated by the first parameter increases by a predetermined degree, a 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.
12. To the aforementioned computer, The game program according to claim 9, which causes the program 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.
13. Voxel data defined within a virtual space, wherein for each of multiple voxels, a density is set to indicate the degree to which the space defined by that voxel is virtually occupied by its contents, and this voxel data is updated based on game processing. A display mesh corresponding to the voxel data and drawn based on a virtual camera is generated and updated by determining the vertex coordinates of the display mesh based on the density included in at least the voxel data. The virtual space including the display mesh is rendered, When a first event occurs based on the game processing, a first voxel update range is generated in the 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. The first parameter, which indicates the degree of change to the voxel brought about by the first voxel update, is updated. An information processing system that generates a second event based on the first parameter in the game processing described above.
14. The first voxel renewal is a renewal that reduces the density, The information processing system according to claim 13, wherein the first parameter is calculated based on the cumulative amount of the decrease in density.
15. The first voxel renewal is a renewal that reduces the density, The information processing system according to claim 13, wherein the first parameter is calculated based on the cumulative decrease in the volume of a voxel, which is determined by the volume of the space in which the voxel is defined and the decrease 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 voxel update has been performed.
17. The voxel data further includes a material that indicates the type of content for each of the multiple voxels, The aforementioned information processing system further, The material of the display mesh is determined based on the material included in the voxel data, Based on the vertex coordinates of the display mesh and the texture corresponding to the material of the display mesh, the virtual space including the display mesh is rendered. The information processing system according to claim 13, which calculates the first parameter for each material based on the degree of change of the voxel to which the material is set.
18. The aforementioned information processing system further, Based on the input, the player character is controlled within the virtual space. As the first event, the player character is made to perform a first action, Based on the increase in the aforementioned degree, the number of times the player character can perform the second action is increased as the first parameter. The information processing system according to any one of claims 13 to 16, wherein, if the number of available executions remains, the second event involves consuming the number of available executions to cause the player character to perform the second action.
19. The voxel data further includes a material that indicates the type of content for each of the multiple voxels, The aforementioned information processing system further, The material of the display mesh is determined based on the material included in the voxel data, Based on the vertex coordinates of the display mesh and the texture corresponding to the material of the display mesh, the virtual space including the display mesh is rendered. As the number of available executions increases, the material corresponding to the second action for the increased number of available executions is set based on the material of the voxel that has changed due to the first voxel update. The information processing system according to claim 18, wherein the player character is instructed to perform an action of releasing an object to which a material corresponding to the second action has been set.
20. The first voxel renewal is a renewal that reduces the density, The aforementioned information processing system further, Each time the number of times the first voxel update has been performed reaches a first number, Increase the number of times the above can be executed, The information processing system according to claim 19, wherein, based on the amount of decrease in the material and density of each voxel that has changed by the voxel update when the first number of times is reached, or by a plurality of first voxel updates up to the first number of times, the most decreased material is determined, and the most decreased material is determined to be the material corresponding to the second action.
21. The information processing system according to any one of claims 13 to 17, wherein the second event is an in-game event that occurs when the degree of change of the voxel indicated by the first parameter reaches a predetermined degree.
22. Based on the voxel data, the vertices of the display mesh are generated and updated based on a method that sets vertices for adjacent portions of voxels having the density in a first range and voxels having the density in a second range lower than the first range. The information processing system according to claim 21, wherein, as a second event, an item object is placed at a location in the virtual space where voxels having the density of the first range are defined.
23. The information processing system according to claim 22, wherein each time the degree of change of 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.
24. The information processing system according to claim 21, which grants an in-game item to a player when the degree of change in the voxel indicated by the parameter reaches a predetermined degree.
25. Voxel data defined within a virtual space, wherein for each of multiple voxels, a density is set to indicate the degree to which the space defined by that voxel is virtually occupied by its contents, and this voxel data is updated based on game processing. A display mesh corresponding to the voxel data and drawn based on a virtual camera is generated and updated by determining the vertex coordinates of the display mesh based on the density included in at least the voxel data. The virtual space including the display mesh is rendered, When a first event occurs based on the game processing, a first voxel update range is generated in the 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. The first parameter, which indicates the degree of change to the voxel brought about by the first voxel update, is updated. An information processing device that generates a second event based on the first parameter in the game processing described above.
26. In the information processing system, Voxel data defined within a virtual space, wherein for each of multiple voxels, a density is set to indicate the degree to which the space defined by that voxel is virtually occupied by its contents, and this voxel data is updated based on game processing. A display mesh corresponding to the voxel data and drawn based on a virtual camera is generated and updated by determining the vertex coordinates of the display mesh based on the density included in at least the voxel data. The virtual space including the display mesh is rendered, When a first event occurs based on the game processing, a first voxel update range is generated in the 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. The first parameter, which indicates the degree of change to the voxel caused by the first voxel update, is updated. A game processing method that generates a second event based on the first parameter in the game processing described above.
27. The first voxel renewal is a renewal that reduces the density, The game processing method according to claim 26, wherein the first parameter is calculated based on the cumulative amount of the decrease in density.
28. The first voxel renewal is a renewal that reduces the density, The game processing method according to claim 26, wherein the first parameter is calculated based on the cumulative decrease in the volume of a voxel, which is based on the volume of the space in which the voxel is defined and the decrease in the density of the voxel.
29. The game processing method according to claim 26, wherein the first parameter is calculated based on the number of times the voxel update has been performed.
30. The voxel data further includes a material that indicates the type of content for each of the multiple voxels, The aforementioned information processing system further includes: The material of the display mesh is determined based on the material included in the voxel data, Based on the vertex coordinates of the display mesh and the texture corresponding to the material of the display mesh, the virtual space including the display mesh is rendered. The game processing method according to claim 26, wherein the first parameter is calculated for each material based on the degree of change of the voxel to which the material is set.
31. The aforementioned information processing system further includes: Based on the input, the player character is controlled within the virtual space. As the first event, the player character is made to perform a first action, Based on the increase in the aforementioned degree, the number of times the player character can perform the second action is increased as the first parameter. The game processing method according to any one of claims 26 to 29, wherein, if there are remaining execution counts, the second event involves consuming the execution counts to cause the player character to perform the second action.
32. The voxel data further includes a material that indicates the type of content for each of the multiple voxels, The aforementioned information processing system further includes: The material of the display mesh is determined based on the material included in the voxel data, Based on the vertex coordinates of the display mesh and the texture corresponding to the material of the display mesh, the virtual space including the display mesh is rendered. As the number of available executions increases, the material corresponding to the second action for the increased number of available executions is set based on the material of the voxel that has changed due to the first voxel update. The game processing method according to claim 31, wherein the player character is instructed to perform an action of releasing an object to which a material corresponding to the second action has been set.
33. The first voxel renewal is a renewal that reduces the density, The aforementioned information processing system further includes: Each time the number of times the first voxel update has been performed reaches a first number, Increase the number of times the above can be executed, The game processing method according to claim 32, wherein, based on the amount of decrease in the material and density of each voxel that has changed by the first voxel update when the first number of times is reached, or by a plurality of first voxel updates until the first number of times is reached, the most decreased material is determined, and the most decreased material is determined to be the material corresponding to the second action.
34. The game processing method according to any one of claims 26 to 30, wherein the second event is an in-game event that occurs when the degree of change of the voxel indicated by the first parameter reaches a predetermined degree.
35. In the aforementioned information processing system, Based on the voxel data, the vertices of the display mesh are generated and updated based on a method that sets vertices for adjacent portions of voxels having a density in a first range and voxels having a density in a second range lower than the first range. The game processing method according to claim 34, wherein, as the second event, an item object is placed at a position in the virtual space where voxels having the density of the first range are defined.
36. In the aforementioned information processing system, The game processing method according to claim 35, wherein each time the degree of change of the voxel indicated by the first parameter increases by a predetermined degree, a 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. In the aforementioned information processing system, The game processing method according to claim 34, wherein the amount of change in the voxels indicated by the first parameter reaches a predetermined level, and in that case, an in-game item is awarded to the player.