Game program, information processing system, information processing device, and information processing method
The game program dynamically updates voxel data based on player interactions, enabling natural and detailed object deformation and destruction by modifying voxel data and recalculating polygon meshes, addressing inefficiencies in existing games.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- NINTENDO CO LTD
- Filing Date
- 2026-01-23
- Publication Date
- 2026-05-01
AI Technical Summary
Existing games struggle to dynamically update voxel data based on player interactions, leading to inefficient object deformation and destruction processes.
A game program that updates voxel data for different ranges based on player input, allowing for dynamic object deformation and destruction by modifying voxel data to indicate object existence, material, and damage, and recalculating polygon meshes accordingly.
Enables natural and detailed object shape changes and destruction, supporting larger-scale and more precise object destruction processes.
Smart Images

Figure 2026074016000001_ABST
Abstract
Description
Technical Field
[0007] ,
[0001] The present invention relates to a game program, an information processing system, an information processing apparatus, and an information processing method capable of generating an image using voxels.
Background Art
[0002] Conventionally, there is a game that creates character voxels based on imaging information and generates polygon mesh information (see, for example, Patent Document 1).
Prior Art Documents
Patent Documents
[0003] [[ID=The game program of the present invention is a game program executed in the processor of an information processing device, wherein the processor is instructed to store in a storage medium the following: first volume data for representing a first object in a virtual space, which holds voxel data indicating the existence of an object for each voxel contained in a first voxel space arranged in the virtual space; and second volume data for representing a second object in the virtual space, which holds the voxel data for each voxel contained in a second voxel space arranged in the virtual space. The game program also instructs the processor to update the voxel data of the voxels contained in the first volume data for a voxel included in a first range set based on the location where the first event occurred, when a first event occurs for the first object based on the player's input. The game program also instructs the processor to update the voxel data of the voxels contained in the second volume data for a voxel included in a second range set based on the location where the second event occurred, when a second event occurs for the second object based on the player's input. The game program also causes the processor to generate an image of the virtual space by drawing at least polygon meshes representing the surfaces of the first and second objects based on the first and second volume data.
[0008] According to the above, if the first event occurs for the first object, the voxel data of the voxels included in the first range can be updated, and if the second event occurs for the second object, the voxel data of the voxels included in the second range can be updated. This allows the voxel data of voxels in different ranges to be updated depending on the object where the event occurred.
[0009] Furthermore, the voxel data may include a value indicating the degree to which an object occupies the space defined by the voxel. The game program may instruct the processor to update the voxel data so that the degree of the voxels included in the first range within the first volume data decreases when the first event occurs. The game program may also instruct the processor to update the voxel data so that the degree of the voxels included in the second range within the second volume data decreases when the second event occurs.
[0010] According to the above, when a first event occurs, the degree of the voxels included in the first range is reduced, and when a second event occurs, the degree of the voxels included in the second range is reduced. This makes it possible to reduce the degree of voxels in different ranges depending on the object in which the event occurred, thereby changing the shape of the object.
[0011] Furthermore, the game program may cause the processor to update the voxel data to a value indicating that the first object does not exist for at least some of the voxels included in the first range within the first volume data when the first event occurs, and to update the voxel data to a value indicating that the second object does not exist for at least some of the voxels included in the second range within the second volume data when the second event occurs.
[0012] According to the above, if a first event occurs for the first object, the first object can be removed from the first range, and if a second event occurs for the second object, the second object can be removed from the second range. This allows the range corresponding to an object to be cleared when an event occurs for that object.
[0013] Furthermore, the game program may instruct the processor to update the voxel data such that, when the first event occurs, the first object does not exist for voxels that are completely contained within the first range in the first volume data, and the degree decreases for voxels that are partially contained within the first range. Furthermore, the game program may instruct the processor to update the voxel data such that, when the second event occurs, the second object does not exist for voxels that are completely contained within the second range in the second volume data, and the degree decreases for voxels that are partially contained within the second range.
[0014] According to the above, for voxels that are completely contained within the above range, no object will exist, and for voxels that are partially contained within the above range, a different value can be set for the degree to which they are contained. This allows, for example, when generating a mesh that shows the shape of an object using voxels, the shape of the object after the voxel data has been updated to be a natural shape.
[0015] Furthermore, the voxel data may further include material data indicating the material of an object and damage amount indicating the amount of damage inflicted. The game program may instruct the processor to update the damage amount for voxels included in the first range within the first volume data when the first event occurs, and further update the value indicating the degree for voxels whose damage amount exceeds the upper limit set for the material. The game program may also instruct the processor to update the damage amount for voxels included in the second range within the second volume data when the second event occurs, and further update the value indicating the degree for voxels whose damage amount exceeds the upper limit set for the material.
[0016] According to the above, the degree of a voxel can be updated when the amount of damage a voxel sustains exceeds the upper limit corresponding to the material set for the voxel. This allows the degree of a voxel to be updated when multiple events occur to an object, for example, by destroying an object through multiple destruction actions.
[0017] Furthermore, the size of a single voxel included in the first volume data and the size of a single voxel included in the second volume data may be different within the virtual space.
[0018] According to the above, the voxel sizes of the first object and the second object can be made different, and the resolution can be made different for each object.
[0019] Furthermore, the first object is the terrain within the virtual space, and the first range may be larger than the second range.
[0020] According to the above, the voxel size of the terrain in the virtual space can be made larger than the voxel size of other objects in the virtual space. This allows for larger-scale destruction, for example, when destroying terrain.
[0021] Furthermore, the second object may be an object that can move within the virtual space by changing its position and / or orientation within the second voxel space. The second range may be smaller than the first range.
[0022] According to the above, the voxel size of a second object that can move within the virtual space can be made smaller than the voxel size of the first object. This allows the second object that can move within the virtual space to be destroyed in more detail, for example, when it is destroyed.
[0023] The game program causes the processor to generate the polygon mesh by determining the vertex positions of the polygon based on the voxel data between voxels where the first object or the second object does not exist and voxels where the object exists, and may cause the processor to recalculate the vertices of the polygon mesh in a range including at least the voxels whose voxel data has been updated based on the occurrence of the first event or the second event.
[0024] According to the above, the vertices of the mesh can be recalculated by updating the voxel data, and the object can be dynamically deformed.
[0025] The game program may further cause the processor to perform a destruction action on the player character to destroy the first object and the second object based on the operation input of the player. The first event may be that the destruction action hits the first object, and the second event may be that the destruction action hits the second object.
[0026] According to the above, the player character can be made to perform a destruction action on the first object or the second object, and when the destruction action hits the object, a range corresponding to the object can be destroyed.
[0027] Another invention may be an information processing system that executes the above game program, or an information processing device, or an information processing method.
Effect of the Invention
[0028] According to the present invention, the voxel data of voxels in different ranges can be updated according to the object in which the event has occurred.
Brief Description of the Drawings
[0029] [Figure 1]This diagram shows an example of the main unit 2 with the left controller 3 and right controller 4 attached. [Figure 2] This diagram shows an example of the state in which the left controller 3 and right controller 4 have been removed from the main unit 2. [Figure 3] A six-view drawing showing an example of the main unit 2. [Figure 4] A six-view drawing showing an example of the left controller 3. [Figure 5] A six-view drawing showing an example of the right controller 4. [Figure 6] Block diagram showing an example of the internal configuration of the main unit 2. [Figure 7] Block diagram showing an example of the internal configuration of the main unit 2, left controller 3, and right controller 4. [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 the contents of voxel data. [Figure 12] A diagram showing an example of property information that indicates the properties of a material. [Figure 13] A diagram showing an example of texture information that indicates the texture of a material. [Figure 14] A diagram showing an example of a mesh generation method. [Figure 15] A diagram showing an example of a game image that includes terrain objects. [Figure 16] This figure shows a schematic diagram of the game space in the game of this embodiment. [Figure 17] This is an image of the game space as seen from a virtual camera, illustrating an example of a game image displayed on a display device. [Figure 18] This figure shows an example of a voxel space VLa arranged in a field voxel space. [Figure 19] This figure shows an example of a voxel space VLb arranged in a field voxel space. [Figure 20] A diagram showing an example of the destructible range of rock object A as a terrain object. [Figure 21] A diagram showing an example of the destruction range of enemy object B. [Figure 22] A diagram illustrating an example of a destruction treatment for voxels included in the first destruction range. [Figure 23] A diagram showing an example of the shape of rock object A after it has been destroyed by a destructive process. [Figure 24] A diagram showing an example of the shape of enemy object B after it has been destroyed by the destruction process. [Figure 25] This diagram shows an example of various types of data used in information processing in Game System 1. [Figure 26] A flowchart illustrating an example of the game processing flow executed by Game System 1. [Figure 27] A flowchart showing an example of the voxel data update process in step S7. [Modes for carrying out the invention]
[0030] [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.
[0031] 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.
[0032] 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".
[0033] 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.
[0034] 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.
[0035] 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.
[0036] 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).
[0037] 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.
[0038] 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.
[0039] 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.
[0040] 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).
[0041] 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.
[0042] 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.
[0043] 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.
[0044] Furthermore, the left controller 3 is equipped with a terminal 42 for wired communication between the left controller 3 and the main unit 2.
[0045] 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.
[0046] 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.
[0047] Furthermore, the right controller 4 is equipped with a terminal 64 for wired communication between the right controller 4 and the main unit 2.
[0048] 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.
[0049] 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).
[0050] 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.
[0051] 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.
[0052] 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.
[0053] 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 performs wireless communication 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 sent and received by communicating directly between multiple main unit 2.
[0054] 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.
[0055] 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.
[0056] 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.
[0057] 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.
[0058] 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.
[0059] 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.
[0060] 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.
[0061] 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.
[0062] 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.
[0063] 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.
[0064] 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.
[0065] 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.
[0066] 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.
[0067] 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).
[0068] 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.
[0069] 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.
[0070] 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.
[0071] [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 15. 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.
[0072] [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 the data set for 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 each of the multiple voxels set in the game space as data for generating voxel objects in the game space.
[0073] 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.
[0074] Furthermore, the terrain object shown in Figure 8 is 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 position; if it is less than or equal to the predetermined value, nothing is placed at the voxel's position." 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, in practice, voxel objects are generated (based on voxel data) using a rule that results in a shape more complex than the length of one side of a voxel, such as the terrain object shown in Figure 14, which will be described later. The rule for determining the shape of a voxel object based on voxel data is arbitrary. In other embodiments, the game system 1 may generate voxel objects as shown in Figure 8 or as shown in Figure 15 based on object data.
[0075] 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.
[0076] 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).
[0077] Figure 11 shows an example of the contents of voxel data. In this embodiment, the game space can be divided into a plurality of voxels arranged in a grid. The game system 1 stores voxel data associated with each voxel in the game space. The voxel data indicates the presence or absence of a voxel object in the voxel corresponding to the voxel data.
[0078] As shown in Figure 11, the voxel data includes density data. The density data indicates the degree to which an object is contained within the region in which each voxel is defined. 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 above density. In other words, in this embodiment, the above density is also the data used to create the mesh that defines the surface of the voxel object.
[0079] In this embodiment, the density can take an integer value within the range from a lower limit (e.g., 0) to an upper limit (e.g., 255). In this embodiment, the game system 1 assumes that if the density value set for a voxel is high, the above proportion within that voxel is large, and if the density value is low, the proportion of the volume occupied by voxel objects within that voxel is small. For example, if the density is 0, there are no objects in that voxel; if the density is 255, the entire voxel is occupied by objects; and if the density is a value in between, objects occupy the voxel in a proportion corresponding to the value. The shape of the voxel mesh, i.e., the shape of the voxel object, is then determined based on the density. However, the shape of the voxel object generated based on the above density does not need to have a volume that exactly matches the proportion indicated by the density. For example, the volume may differ between a method for generating a voxel object like the one in Figure 8 and a method for generating a voxel object like the one in Figure 15, even if they are based on the same density.
[0080] In other embodiments, density may indicate either a state where the entire region within the voxel is occupied by voxel objects, or a state where the region within the voxel is not contained by voxel objects. For example, density data may only take the form of either 0 or 1.
[0081] As shown in Figure 11, the voxel data includes material data. The material data indicates the material (in other words, substance) of the voxel object generated by the voxel data. In this embodiment, the voxel object is assigned materials such as sand, rock, and soil. That is, in this embodiment, multiple types of materials are provided as materials that can be assigned to the voxel object, and the voxel object is assigned one of these multiple types of materials.
[0082] As shown in Figure 11, in this embodiment, the material data indicates the material identification information (referred to as the "material ID"). In this embodiment, the game system 1 stores material information indicating the properties and texture of each material provided in the game. In this embodiment, the material information associates the material ID with the properties of the material and the appearance of the material (specifically, the texture). Specifically, the material information is information that associates the material ID with the identification information of the properties of the material (referred to as the "property ID") and the identification information of the texture of the material (referred to as the "texture ID") (see Figure 11).
[0083] Figure 12 shows an example of property information indicating the properties of a material. As shown in Figure 12, the game system 1 stores property information that associates the above property ID with information indicating the content of the property indicated by the property ID. The properties of a material are the properties that the voxel object to which the material is set has in the game, such as weight and slipperiness as shown in Figure 12. The specific content of the properties is arbitrary, and for example, the following information may be set as the properties of the material. ·temperature • Fragility (for example, the number of times a voxel object will break when subjected to an impact) • Whether or not other objects can be attached to a voxel object. • The amount of health the player character recovers when the player character destroys a voxel object. • The amount of in-game currency a player character acquires when they destroy a voxel object. The specific properties set for the material are arbitrary. In other embodiments, different information may be set as information indicating the properties of the material.
[0084] Figure 13 shows an example of texture information indicating the texture of a material. As shown in Figure 13, the game system 1 stores texture information that associates the above-mentioned texture ID with the texture indicated by that texture ID.
[0085] In addition to texture information, optional information regarding color and / or pattern may be set as data that defines the appearance of a voxel object. For example, a crack pattern may be set as information regarding the appearance of a voxel object. By using such a pattern, game system 1 can generate an image of a voxel object that represents a cracked appearance.
[0086] As described above, in this embodiment, the material data defines the properties of the voxel object and the texture used for the voxel object by the material ID. For example, if the material ID indicated by the material data included in the voxel data is "002", the properties indicated by the property ID "001" associated with that material ID in the material information are set as the properties of the voxel object corresponding to that voxel data (see the arrow shown in Figure 11). In the above case, the texture indicated by the texture ID "002" associated with that material ID in the material information is applied to the voxel object corresponding to that voxel data (see the arrow shown in Figure 11).
[0087] As described above, in this embodiment, the game system 1 manages the properties and textures of materials separately. Therefore, in this embodiment, it is possible to easily set up multiple types of materials that have the same properties but different appearances (i.e., textures), or multiple types of materials that have different properties but the same appearance.
[0088] The material data may be any data that can identify the properties and / or texture of the material. For example, in other embodiments, the material data may indicate the property ID and texture ID, or it may have a data structure that actually contains data indicating the properties and texture of the material.
[0089] Furthermore, material data may also include information about the material, which may contain other information different from the properties and textures described above. For example, material data may include effect data that indicates an effect that occurs when the effect conditions set for a voxel object (for example, when a part of the voxel object is destroyed, or when a character steps on the voxel object) are met. Note that effect data may be data that indicates an effect image (for example, an effect image that represents the destruction of the voxel object) or data that indicates an effect sound (the sound of a character walking on the voxel object).
[0090] As shown in Figure 11, voxel data includes state data that indicates the state of the voxel object. The specific content of the state data is arbitrary. For example, the state data may indicate whether the voxel object is wet or not, or it may indicate the amount of damage inflicted on the voxel object. The content of the state data may be updated during gameplay.
[0091] [2-2. Mesh] In this embodiment, the surface of a voxel object is represented by a mesh. A mesh is a collection of multiple faces (specifically, polygons) placed in the game space. In this embodiment, the game system 1 generates a mesh for a voxel object based on the voxel data of each voxel set in the game space. An example of generating a mesh based on voxel data is described below.
[0092] Figure 14 shows an example of a mesh generation method. Note that in Figure 14, voxels and meshes are represented in two dimensions for clarity and ease of explanation; however, in reality, a three-dimensional mesh is generated based on voxels in three-dimensional space.
[0093] As described above, in this embodiment, the density set for a voxel is set within the range of 0 to 255. In this embodiment, voxels with a density equal to or greater than the reference value are considered to be inside the object, and voxels with a density less than the reference value are considered to be outside the object. It is not necessary to define only voxels with a density of 0 as being outside the object (i.e., reference value = 1), and the reference value can be, for example, 128. In the example shown in Figure 14, the density of voxel 201 and the other outer voxels is set to 0, the density of voxel 202 is set to 100 (less than the reference value), and the densities of voxels 203 and 204 are set to 150 and 200 (greater than or equal to the reference value). In this embodiment, the game system 1 generates vertices between voxels with a density equal to or greater than the reference value and voxels with a density less than the reference value. Specifically, for each region spanning eight adjacent voxels (four in the diagram) (the region enclosed by the dotted line in the diagram), a determination 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 a certain threshold and voxels with a density below that threshold. Furthermore, if the boundary between adjacent vertices (the boundary of the region containing each vertex) passes through a range of voxels with a density above a certain threshold and voxels with a density below that threshold, a polygon mesh is generated by connecting those vertices. The coordinates of the vertices are determined by comparing the densities of adjacent voxels along each of the X, Y, and Z axes and interpolating based on the density difference. At this time, coordinate calculations can also be performed based on normal information, but the normal information may be stored in advance for at least some of the voxels, or if it is not stored, the normal information may also be calculated based on the densities of adjacent voxels. Note that in Figure 14, since the density of voxel 202 is below the threshold, voxel 202 is treated as outside the object when determining the presence or absence of a vertex, but the density value of voxel 202 itself is used in the calculation of the coordinates of the generated vertices. If the baseline value is set lower than the density of voxel 202, the result will be that more vertices will be added to the upper right and upper left sides of voxel 202 in Figure 14.
[0094] As described above, by generating a polygon mesh, 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 that 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 will be smaller because there will be fewer vertices compared to when they are treated as being inside the object. In other words, it is not necessary to calculate the polygon mesh so that the volume corresponds precisely to the density value.
[0095] Figure 15 shows an example of a game image including terrain objects. In this embodiment, by generating a mesh as described above, the voxel object can be made to have a shape with complex irregularities compared to the length of one side of a voxel.
[0096] The method for generating the mesh based on the voxel data is optional. For example, in another embodiment, if the density of the voxel data is greater than a predetermined value, the mesh may be generated such that cubes are placed in the voxels (see Figure 8).
[0097] Game System 1 determines the appearance (i.e., color and / or pattern) of each face of the mesh generated as described above, according to the material identified by the voxel data. Specifically, Game System 1 determines the texture to be used for rendering each face of the mesh based on the voxel data, and generates an image of the voxel object by mapping the determined texture to each face. The texture mapped to each face of the mesh is determined based on the voxel data of the voxel used to generate that face (referred to as the target voxel) among the voxels in which the voxel object exists. The target voxel is, depending on the mesh generation method, for example, one or more voxels arranged around that face. In other words, the texture mapped to the face of the mesh is determined to be the texture corresponding to the material set for one or more voxels arranged around that face.
[0098] In other embodiments, a single voxel data may contain multiple types (e.g., two types) of material data. In this case, the voxel data includes ratio data relating to the multiple types of material data. The ratio data is used to determine the texture to be used for the voxel object, and indicates the ratio by which each material (specifically, the texture corresponding to the material) represented by the multiple types of material data affects the appearance (specifically, the color and / or pattern) of the voxel object. Furthermore, when determining the texture to be mapped to each face of the mesh, the texture is determined based on the various data (specifically, density data, multiple types of material data, and ratio data) contained in the voxel data of the target voxel. For example, if multiple types of materials are set for a target voxel corresponding to one face, the texture corresponding to the material with the greatest influence (one type) may be used, taking the above ratio into consideration, or each texture corresponding to the multiple types of materials may be used, taking the above ratio into consideration.
[0099] In other embodiments, there may be both voxel objects that use voxel data containing one type of material data and voxel objects that use voxel data containing two types of material data.
[0100] (Overview of game processing) Next, we will describe the voxel objects that are placed in the game space when the game of this embodiment is executed. Figure 16 is a schematic diagram of the overall game space in the game of this embodiment. Figure 17 is an image of the game space as seen from a virtual camera, and is an example of a game image displayed on a display device.
[0101] In this embodiment, multiple game stages are provided, and a game space is set for each game stage. For example, there are game stages of rocky mountains, volcanoes, and wilderness. Figure 16 shows, for example, a game stage of rocky mountains, and a view of the game stage from above the game space.
[0102] As shown in Figure 16, a player character PC is placed in the game space. The player character PC moves around the game space and performs various actions such as jumping and punching in response to the player's input. The player character PC is not a voxel object, but a 3D object whose shape is predefined by polygons.
[0103] When the game starts, a fixed voxel space is set up in the game space, defined in an Xs-Ys-Zs coordinate system, to represent the field. The Xs-Ys-Zs coordinate system is assumed to have axes parallel to the XYZ coordinate system of the game space. That is, the Ys axis is the axis pointing upwards in the game space, and the Xs and Zs axes are axes perpendicular to the Ys axis. The voxel space defined in the Xs-Ys-Zs coordinate system may be referred to as the "field voxel space" below. The position of each object in the game space is represented by coordinate values in the Xs-Ys-Zs coordinate system. Note that, here, the orientation of the Xs-Ys-Zs coordinate system representing the field voxel space is assumed to coincide with the XYZ coordinate system representing the game space, but they do not have to coincide.
[0104] In the field voxel space, terrain objects are set as voxel objects. For example, terrain object 210 representing the ground and terrain object 220 representing a rocky mountain are set as terrain objects. For example, by setting material data representing rock to the voxel data of each voxel located below in the field voxel space, terrain object 210 representing a rocky ground is formed. Also, by setting material data representing rock to the voxel data of multiple voxels located above the ground in the field voxel space, terrain object 220 representing a rocky mountain rising from the ground is formed.
[0105] The terrain object 210 representing the ground and the terrain object 220 representing the rocky mountains can be destroyed by the player character PC. Terrain objects 210 and 220 are destroyed when the voxel data of the voxels in the field voxel space is updated. Object destruction will be described later.
[0106] Furthermore, as shown in Figures 16 and 17, rock object A is placed in the game space. Rock object A is a type of terrain object and can be destroyed, picked up, or thrown by the player character PC.
[0107] Specifically, rock object A is a voxel object different from the terrain objects 210 and 220 defined by the field voxel space. The shape of rock object A is defined by the voxel data of multiple voxels in voxel space VLa. Voxel space VLa is a voxel space located in game space, separate from the field voxel space, and is defined in the Xa-Ya-Za coordinate system. The voxel data of multiple voxels in voxel space VLa is set with a density value indicating the presence of an object and material data representing a rock. As described above, rock object A is displayed by generating and rendering a polygon mesh based on the voxel data of each voxel. Note that in Figures 16 and 17, voxel space VLa is shown by a dotted line for explanatory purposes, but in reality, the dotted line representing voxel space VLa is not displayed in the game.
[0108] The voxel space VLa can be moved and its orientation changed within the game space. For example, if the player character PC performs an action to throw rock object A, moving the voxel space VLa within the game space will cause rock object A to move within the game space while maintaining its shape. Also, rotating the voxel space VLa within the game space will cause rock object A to rotate within the game space.
[0109] Furthermore, rock object A can be destroyed, for example, by a destruction action performed by the player character PC. When a destruction action is performed on rock object A, part or all of rock object A may be erased, or a part of rock object A may be separated. Specifically, rock object A is destroyed by rewriting the voxel data of each voxel in the voxel space VLa. The destruction of rock object A will be described in more detail later.
[0110] Note that rock object A may be placed in the game space in advance. For example, initial data for forming terrain object 210 representing the ground and terrain object 220 representing a rocky mountain, as shown in Figure 16, is stored in an internal storage medium such as flash memory 84, or in an external storage medium installed in slot 23. This initial data may include rock object A. In other words, rock object A is an object stored as initial data and may be initially placed in the game space. In this case, the voxel space VLa is predefined in the initial data.
[0111] Alternatively, rock object A may not be included in the initial data and may be generated during the game's execution. For example, the game starts with the generation of terrain object 210 representing the ground and terrain object 220 representing a rocky mountain based on the initial data. During the game's execution, for example, a destruction action by the player character PC (e.g., punching or firing a projectile) may destroy a part of terrain object 210 representing the ground or terrain object 220 representing a rocky mountain. This destruction may cause a part of terrain object 210 or terrain object 220 to separate, and that part may be generated as rock object A. In this case, the voxel space VLa is not predefined in the initial data. The voxel space VLa is defined when terrain object 210 or terrain object 220 is destroyed and its fragments are generated as rock object A.
[0112] Furthermore, as shown in Figures 16 and 17, enemy object B is placed in the game space. Enemy object B is a character automatically controlled by processor 81, which moves around the game space, changes its posture, and attacks the player character PC.
[0113] Enemy object B is a voxel object. The shape of enemy object B is defined by the voxel data of multiple voxels in voxel space VLb. Voxel space VLb is a voxel space located in game space, separate from the field voxel space, and is defined in the Xb-Yb-Zb coordinate system. The voxel data of multiple voxels in voxel space VLb is set with a density value indicating the existence of an object and material data representing the enemy object. This forms enemy object B. As described above, enemy object B is displayed by generating and rendering a polygon mesh based on the voxel data of each voxel. Note that in Figures 16 and 17, voxel space VLb is shown with a dotted line for illustrative purposes, but in reality, the dotted line representing voxel space VLb is not displayed in the game.
[0114] Note that the hands, feet, and facial features (mouth and eyes) of enemy object B are not voxel objects, but 3D objects whose shapes are predefined using polygons. The torso of enemy object B (the ellipsoidal part in the diagram) is a voxel object, and the shape of this torso is defined by the generation of a mesh based on the voxel data as described above. Then, 3D objects representing the hands, feet, and facial features are attached to the generated mesh (torso) to form enemy object B.
[0115] The voxel space VLb can be moved and its orientation changed within the game space. For example, if the voxel space VLb is moved within the game space by processor 81, enemy object B will move within the game space. Also, if the voxel space VLb is rotated within the game space, enemy object B will rotate.
[0116] Furthermore, enemy object B can be destroyed, for example, by a destruction action performed by the player character PC. Specifically, enemy object B is destroyed when the voxel data of each voxel in the voxel space VLb is rewritten. The destruction of enemy object B will be described in more detail later.
[0117] Additionally, a weapon object C is placed in the game space. This weapon object C is grasped, for example, by an enemy object B. The weapon object C is also a voxel object. The shape of the weapon object C is defined by the voxel data of multiple voxels in the voxel space VLc. The voxel space VLc is a separate voxel space from the field voxel space, placed within the game space, and is defined in the Xc-Yc-Zc coordinate system. The weapon object C can also be moved and its orientation can be changed within the game space. For example, if enemy object B performs an action of swinging or throwing weapon object C, the position and / or orientation of voxel space VLc in the game space changes. This causes weapon object C to be moved and its orientation to change within the game space. For example, in Figure 17, the Xc-Yc-Zc coordinate system is tilted relative to the game space, and weapon object C is tilted within the game space.
[0118] Figure 18 shows an example of a voxel space VLa placed in game space. As shown in Figure 18, the voxel space VLa is defined by the Xa, Ya, and Za axes. The position of each voxel in the voxel space VLa is represented by the coordinate values of the Xa, Ya, and Za axes. One voxel in the voxel space VLa is a cubic region with sides of a predetermined length. Here, length is defined in game space, and the unit of length is, for example, "m (meter)". For example, the height of a player character PC in game space may be defined as 2m. The side length of one voxel in the voxel space VLa is, for example, "1m" in game space. Note that one voxel in the field voxel space is also a cube, and its side length is "1m".
[0119] Each voxel in the voxel space VLa is assigned voxel data including the density, material data, and state data described above. As shown in Figure 18, if, for example, 125 voxels (= 5 (length) × 5 (width) × 5 (height)) in the voxel space VLa have their voxel data assigned a density value indicating the presence of an object and material data representing a rock, then a rock object A with a length, width, and height of approximately 5m each is formed in the game space. For example, among the 125 voxels, the density of the voxels corresponding to the interior of the object when a mesh is generated may be set to 255, while the density of the voxels corresponding to the surface of the object may be set to a value in the range of 128 to 254 (or 1 to 255). The position and orientation of the rock object A in the game space are changed by changing the position of the origin of the voxel space VLa in the game space, and the direction of each axis (Xa, Ya, Za axes) of the voxel space VLa.
[0120] Figure 19 shows an example of the voxel space VLb placed in game space. As shown in Figure 19, the voxel space VLb is defined by the Xb, Yb, and Zb axes. The position of each voxel in the voxel space VLb is represented by the coordinate values of the Xb, Yb, and Zb axes. One voxel in the voxel space VLb is smaller than one voxel in the voxel space VLa (and field voxel space). For example, the side length of one voxel in the voxel space VLb is "0.5m" in game space. Therefore, if, for example, in the voxel space VLb, the voxel data of multiple voxels included in an area illustrated as an ellipsoid with a length and width of 3m and a height of 2m is set with a density value indicating the presence of an object and material data representing enemy object B, then the torso of enemy object B, which is roughly ellipsoidal in shape with a length and width of approximately 3m and a height of approximately 2m, will be formed in game space. For example, among the multiple voxels mentioned above, the density of the voxel corresponding to the interior of the torso may be set to 255, while the density of the voxel corresponding to the surface of the torso may be set to a value in the range of 1 to 254. By changing the position of the origin of the voxel space VLb in the game space, and the directions of each axis (Xb, Yb, Zb axes) of the voxel space VLb, the position and orientation of the enemy object B in the game space are changed.
[0121] Although not shown in the diagram, the voxel space VLc representing the weapon object C is defined by the Xc, Yc, and Zc axes. A single voxel in voxel space VLc is smaller than a single voxel in voxel space VLa (and field voxel space), and the length of one side of a single voxel in voxel space VLc may be, for example, "0.5m", or it may be shorter or longer than "0.5m". The position of the origin of voxel space VLc in game space, and the direction of each axis (Xc, Yc, Zc axes) of voxel space VLc are changed, which changes the position and orientation of the weapon object C in game space.
[0122] Next, we will explain the destruction of each object. In this embodiment, the area that is destroyed differs depending on whether the destruction action is performed on a terrain object or an enemy object.
[0123] Figure 20 shows an example of the destructible range of rock object A as a terrain object. Figure 21 shows an example of the destructible range of enemy object B. In Figure 20, each voxel in the voxel space VLa, viewed in a planar manner, is shown as a square. Similarly, in Figure 21, each voxel in the voxel space VLb, viewed in a planar manner, is shown as a square.
[0124] When a destruction action (e.g., punch, kick, or projectile) is performed by a player character PC, and that destruction action hits a terrain object, such as a rock object A, a first destruction range is set. As shown in Figure 20, the first destruction range is set based on the position where the destruction action hit. For example, the first destruction range is set centered on the position where the destruction action hit. For example, if the destruction action is a punch, the first destruction range in the voxel space VLa is set centered on the position in the voxel space VLa corresponding to the position (or vicinity of the fist) of the player character PC in the game space. Then, the destruction process described later is performed on each voxel in the voxel space VLa that is included in the first destruction range. The first destruction range is, for example, a sphere with a diameter of 4m.
[0125] Specifically, whether or not an object is included in the first destruction range is determined by the Signed Distance Field (SDF). For example, the range where the distance from the center is a negative value relative to the diameter is represented as the inside of the shape, and the range where the distance is a positive value is represented as the outside of the shape. When a destruction action is performed by a player character PC and the destruction action hits rock object A, it is determined whether or not each voxel in the voxel space VLa is within the first destruction range based on the signed distance from the position where the destruction action hit. Then, for voxels within the first destruction range, the voxel data is updated as part of the destruction process.
[0126] Furthermore, when a destruction action is performed by a player character PC, if that destruction action hits enemy object B, a second destruction range is set based on the position where the destruction action hit, as shown in Figure 21. For example, the second destruction range is set centered on the position where the destruction action hit. For example, if a punch is performed as a destruction action, the second destruction range is set centered on the position in voxel space VLb corresponding to the position of the player character PC's fist (or its vicinity) in the game space. Then, a destruction process is performed on each voxel in voxel space VLb that is included in the second destruction range. The second destruction range is, for example, a sphere with a diameter of 2m.
[0127] The second destruction range is determined by the SDF, similar to the first destruction range. When a destruction action is performed by a player character PC and hits enemy object B, it is determined whether each voxel in the voxel space VLb is within the second destruction range based on the signed distance from the point of impact. Then, for voxels within the second destruction range, the voxel data is updated as part of the destruction process.
[0128] Thus, the destruction range differs depending on the type of object hit by the destruction action. When the destruction action hits enemy object B, the destruction range is smaller than when the destruction action hits a terrain object. Note that the size and shape of the first and second destruction ranges are merely examples and are not limited to those described above. Furthermore, the first and second destruction ranges are not fixed and their shape and size may be changed depending on the type of destruction action, the location where the destruction action hits, the surrounding conditions, etc.
[0129] For example, if a terrain object is formed to rise from the ground, and a destruction action hits the raised portion, a first destruction range is set based on the location where the destruction action hit. Note that the destruction range does not necessarily have to be spherical; it can be any shape. For example, it can be a range with a flat bottom.
[0130] Figure 22 illustrates an example of a destructive treatment for voxels included in the first destructive area.
[0131] As shown in Figure 22, when a destruction action hits rock object A, the voxel data of voxels in the voxel space VLa that are included in the first destruction range based on the position where the destruction action hit is updated. Specifically, for voxels that are completely included in the first destruction range, the voxel data is rewritten to a value indicating that the object does not exist. In Figure 22, the voxels that are completely included in the first destruction range are voxels A100, A101, A102, and A103. That is, if the entire area of a voxel is included in the first destruction range, then that voxel is completely included in the first destruction range. Then, the voxel data of voxels A100, A101, A102, and A103 that are completely included in the first destruction range are set to a value indicating that the object does not exist. More specifically, the density of voxels A100, A101, A102, and A103, which are completely contained within the first destruction zone, is set to "0".
[0132] Additionally, the voxel data of voxels that are partially included within the first destruction range is also updated. Specifically, the density of voxels that are partially included within the first destruction range is reduced to a value smaller than the upper limit. For example, the voxel density is set to a range of 1 to 254. Voxels that are partially included within the first destruction range are voxels in which part of the region is included within the first destruction range, and other parts are not included within the first destruction range. For example, in Figure 22, voxels A104, A105, A106, A107, A108, A109, A110, A111, A112, A113, A114, and A115 are voxels that are partially included within the first destruction range.
[0133] Furthermore, for example, for voxels that are partially included in the first destruction range, the reduction in density may differ depending on the size of the area included in the first destruction range. For example, the larger the area included in the first destruction range, the greater the reduction in density may be, or it may be smaller. Alternatively, for voxels that are partially included in the first destruction range, the reduction in density may be the same regardless of the size of the area included in the first destruction range. Also, for voxels that are partially included in the first destruction range, the density may be set to "0", similar to voxels that are completely included in the first destruction range.
[0134] On the other hand, for voxels not included in the first destruction range, such as voxels A116, A117, and A118, the voxel data remains unchanged. That is, the density of voxels not included in the first destruction range is maintained. Alternatively, the voxel data may be changed for voxels adjacent to voxels partially included in the first destruction range (for example, voxels A116 and A117), while the voxel data may remain unchanged for voxels not adjacent to voxels partially included in the first destruction range (for example, voxel A118).
[0135] In this way, the voxel data (specifically, density) of voxels that are completely contained within the first destruction range is set to a value that indicates the absence of an object. That is, rock object A is removed from the area completely contained within the first destruction range. In addition, the voxel data (specifically, density) of voxels that are partially contained within the first destruction range is reduced to a value below the upper limit. As described above using Figure 14, the shape of the surface of the voxel object is defined according to the density. In this way, the voxel data (specifically, density) of each voxel that forms rock object A is updated, and the surface (mesh) of rock object A is updated based on the updated voxel data. Therefore, the shape of the surface of rock object A after the destruction process is not a smooth sphere like the surface of the first destruction range, but a natural shape with some irregularities.
[0136] In Figure 22, the destruction process for voxels included in the first destruction range is explained using rock object A, an example of a terrain object, as an example, but the same applies to other terrain objects. For example, if a destruction action is performed by a player character PC (or enemy object B) on terrain object 210, which is defined as a voxel in field voxel space, the first destruction range is set based on the position where the destruction action hit. For example, if the destruction action is a punch by the player character PC, the first destruction range in the field voxel space is set centered on the position in the field voxel space corresponding to the position (or vicinity of the fist) of the player character PC in the game space. For voxels in the field voxel space that are completely included in the first destruction range, a value indicating that no object exists is set in the density (for example, "0"). Also, for voxels in the field voxel space that are partially included in the first destruction range, the density is reduced to a value below the upper limit. The same applies when a destruction action is performed on terrain object 220, which is defined in field voxel space.
[0137] Furthermore, if a destruction action is performed on enemy object B, the same process is carried out, although the destruction range will be different. That is, when a destruction action is performed on enemy object B, voxels that are completely contained within a second destruction range, which is determined based on the position where the destruction action hits, will have their density set to a value indicating that the object does not exist. For example, the density of voxels that are completely contained within the second destruction range will be set to "0". Also, for voxels that are partially contained within the second destruction range, the density will be reduced to a value that is below the upper limit but greater than "0".
[0138] Figure 23 shows an example of the shape of rock object A after it has been destroyed by the destruction process. Figure 24 shows an example of the shape of enemy object B after it has been destroyed by the destruction process.
[0139] As shown in Figure 23, when a destruction action is performed on rock object A, and the voxel data of the voxels in the first destruction area is updated, a portion of rock object A is destroyed, and it changes into a shape with a hole. The size of the hole (cavity) in rock object A is relatively large. For example, the diameter of the hole in rock object A is approximately 4m in game space.
[0140] Furthermore, as shown in Figure 24, when a destruction action is performed on enemy object B, and the voxel data of the voxels in the second destruction area is updated, a portion of enemy object B is destroyed, and it changes into a shape with a hole. The size of the hole (cavity) in enemy object B is smaller than the hole in rock object A. For example, the diameter of the hole in enemy object B is approximately 2m in game space.
[0141] In this way, by varying the destruction range depending on the object hit by the destruction action, it is possible to destroy objects efficiently (quickly) depending on the type of object hit, or to give the player a sense of accomplishment when destroying an object. For example, if a destruction action hits a terrain object, the destruction range can be increased so that a wider area can be destroyed with a single destruction action (such as a punch), allowing for more efficient destruction of the terrain.
[0142] Furthermore, while enemy object B is generally smaller than terrain objects, if a single destruction action against enemy object B were to destroy the same wide area as a terrain object, enemy object B could be easily destroyed. In this embodiment, when a destruction action hits enemy object B, the destruction area is reduced compared to when it hits a terrain object, so that a narrow area is destroyed with a single destruction action. This makes it difficult to easily destroy enemy object B, and makes attacks against enemy object B more challenging. In addition, by representing enemy object B with voxel data and changing the voxel data according to the destruction action, the process of destroying enemy object B (the process of attack) can be represented, and the gradual destruction of enemy object B can be displayed by reducing the destruction area.
[0143] Furthermore, in this embodiment, the voxel resolution of enemy object B is set higher than that of the terrain object. Specifically, the length of one side of each voxel in the voxel space VLb used to represent enemy object B is, for example, 0.5m in game space. On the other hand, the length of one side of each voxel in the voxel space (voxel space VLa or field voxel space) used to represent the terrain object is, for example, 1m in game space. By setting the voxel resolution of enemy object B higher than that of the terrain object in this way, the shape of enemy object B can be represented in more detail. In addition, the destruction process when destroying enemy object B can be represented in more detail.
[0144] Furthermore, if a destruction action by a player character PC hits weapon object C held by enemy object B, a second destruction area may be set, or a third destruction area smaller or larger than the second destruction area may be set. Then, weapon object C may be destroyed by changing the voxel data of the voxels included in the set destruction area. In addition, multiple types of enemy objects represented by voxel data may appear in the game space, and different destruction areas of different sizes may be set for each type of enemy object. Also, for other objects represented by voxel data that can move in the game space, a destruction area of a different size than that of terrain objects may be set when a destruction action hits them. The destruction area of an object that can move in the game space may be smaller than that of terrain objects. In addition, the voxel resolution of an object that can move in the game space may be higher than that of terrain objects.
[0145] Furthermore, while the above assumes that a first destruction range is set when a destruction action is performed on a terrain object, the destruction range may differ depending on the terrain object. For example, the destruction range may differ depending on the type of terrain object (material such as rock, soil, or sand), or depending on the size of the terrain object. Also, for example, the destruction range may differ between a terrain object fixed in the game space (for example, terrain object 210 representing the ground or terrain object 220 representing a rocky mountain) and a terrain object that can move in the game space (rock object A). For example, the destruction range of a terrain object that can move in the game space may be smaller than the destruction range of a terrain object fixed in the game space. Also, the voxel resolution of a terrain object that can move in the game space may be higher than the voxel resolution of a terrain object fixed in the game space.
[0146] In this embodiment, when a destruction action hits a voxel object, destruction processing (density update) is not necessarily performed on voxels within the destruction range based on the position where the destruction action hit. The density of voxels within the destruction range is updated according to the "fragility" of the material (also called substance or material) in the material data set for the voxel. Specifically, the density of voxels within the destruction range may or may not be updated depending on the "hardness of the destroying side," the "hardness of the destroyed side," and the "amount of damage" to the voxel.
[0147] More specifically, the "hardness of the destroyer" varies depending on the type of destruction action. For example, the "hardness of the destroyer" is determined within a range of 1 to 5 depending on the type of destruction action (punch, kick, projectile, throw rock, etc.). Also, as mentioned above, voxel data includes material data, and "fragility" is set as a property of the material. Specifically, "fragility" is determined by the "hardness" and "durability" that are pre-set for the material. In other words, the "hardness of the destroyed object" is the hardness set for the material of the voxel object that the destruction action hits, and is determined within a range of 1 to 5. For example, the hardness of rock is pre-set to "3", and the hardness of iron is pre-set to "5". In addition, the amount of damage to a voxel is stored as state data in the voxel data and changes within a range of 0 to 15.
[0148] If the "hardness of the destroying side" is greater than or equal to the "hardness of the side being destroyed," the density of voxels within the destruction range is updated as described above. In other words, in this case, the voxel objects within the destruction range are destroyed in a single destruction action. If the "hardness of the destroying side" is less than the "hardness of the side being destroyed," and the difference is less than a predetermined value, the amount of damage to the voxels within the destruction range is updated. For example, the amount of damage to the voxels is set based on the hardness of the destroying side and / or the hardness of the material. The density of the voxels is updated when the amount of damage accumulated by multiple destruction actions exceeds the durability value mentioned above. In other words, if the "hardness of the destroying side" is less than the "hardness of the side being destroyed," and the difference is less than a predetermined value, the density of voxels within the destruction range is not updated (they are not destroyed) in a single destruction action, but rather the density is updated by multiple destruction actions. On the other hand, if the "hardness of the destroying side" is less than the "hardness of the destroyed side," and the difference is greater than or equal to a predetermined value, the damage amount and density of the voxels within the destruction range will not be updated. In this case, even if multiple destruction actions hit the voxel object, the voxel object will not be destroyed.
[0149] For example, suppose the "hardness of the destroyer" set for the first destruction action is "2", and the hardness of the voxel material (hardness of the destroyed side) is "3". In this case, since the "hardness of the destroyer" is less than the "hardness of the destroyed side", and the difference is less than a predetermined value, the amount of damage to the voxels included in the destruction range, which is set according to the voxel object hit by the first destruction action, is updated. As the first destruction action is performed multiple times, the amount of damage to the voxels included in the destruction range accumulates. If the amount of damage to a voxel exceeds its durability value, the density of that voxel is updated. Specifically, as described above, the density of voxels that are completely included in the destruction range is set to "0", and the density of voxels that are partially included in the destruction range is reduced to a value below the upper limit.
[0150] Furthermore, if the "hardness of the destroyer" set for the second destruction action is "4" and the "hardness of the destroyed object" is "3", the voxel object will be destroyed in one second destruction action. In other words, in this case, since the "hardness of the destroyer" is greater than the "hardness of the destroyed object", when the second destruction action hits the voxel object, the above damage amount update is omitted, and the density of voxels included in the destruction range is updated.
[0151] Furthermore, if the "hardness of the destroyer" set for the third destruction action is "1" and the "hardness of the destroyed object" is "3", the voxel object will not be destroyed even if the third destruction action is performed multiple times. In other words, in this case, the "hardness of the destroyer" is smaller than the "hardness of the destroyed object", and the difference is greater than or equal to a predetermined value, so even if the third destruction action hits the voxel object, the amount of damage and density of the voxels will not be updated.
[0152] [3. Specific examples of processing in game systems] Next, we will explain a specific example of information processing in game system 1 with reference to Figures 25 to 27.
[0153] Figure 25 shows an example of various data used for information processing in game system 1. As shown in Figure 25, game system 1 stores a game program, game space data, field voxel space data 300, first voxel space data 310, second voxel space data 320, and mesh data.
[0154] The game program is a program for executing the game processing in this embodiment (specifically, the game processing shown in Figure 26). The game program is pre-stored in a storage medium or flash memory 84 installed in slot 23 and is loaded into the DRAM 85 when the game is executed.
[0155] Game space data is data used to define the game space and includes data representing the XYZ coordinate system described above.
[0156] The field voxel space data 300 is data relating to the entire field voxel space. In this embodiment, multiple game stages are provided, and initial field voxel space data is provided for each game stage. As shown in Figure 25, the field voxel space data 300 includes size data 301. The size data 301 indicates the length of one side of each voxel in the field voxel space. For example, the length of one side of each voxel in the field voxel space is 1m. In this embodiment, the length of one side of each voxel in the field voxel space is the same regardless of the type of game stage. However, the length of one side of each voxel in the field voxel space may differ depending on the type of game stage. The field voxel space data 300 also includes position data 302. The position data 302 is data representing the position and rotation of the field voxel space in the game space. In this embodiment, the field voxel space is fixed in the game space.
[0157] Furthermore, the field voxel spatial data 300 includes field volume data 303. The field volume data 303 includes the voxel data of each voxel in the field voxel space. Voxel data is set for each voxel, and a mesh is generated based on the voxel data, thereby forming terrain in the game space. Initial field volume data 303 is pre-stored in the storage medium or flash memory 84 installed in slot 23 for each game stage (for each field voxel spatial data 300). At the start of the game, the field volume data 303 stored in the storage medium or flash memory 84 installed in slot 23 is read into the DRAM 85. This forms the initial terrain. During game execution, the terrain changes as the voxel data contained in the field volume data 303 stored in the DRAM 85 is modified.
[0158] The first voxel space data 310 is data relating to the voxel space VLa located in the game space. The first voxel space data 310 includes size data 311, position data 312, and first volume data 313. The size data 311 includes data indicating the length of one side of each voxel in the voxel space VLa, and data indicating the number of voxels in each axis (Xa, Ya, Za axes) direction of the voxel space VLa. For example, the length of one side of each voxel in the voxel space VLa is "1m". This size data 311 determines the size of the voxel space VLa in the game space. The position data 312 is data representing the position and rotation of the voxel space VLa in the game space. For example, the position data 312 includes coordinate data representing the position in the game space, and vector data representing the direction of each axis (Xa, Ya, Za axes) of the voxel space VLa in the game space. When this position data 312 is changed, the position and / or orientation of the voxel space VLa (i.e., rock object A) in game space is changed. The first volume data 313 is data that represents rock object A. The first volume data 313 holds voxel data indicating the presence of an object for each voxel contained within the voxel space VLa. That is, the first volume data 313 contains the voxel data of each voxel contained within the voxel space VLa. Rock object A is formed when voxel data is set for each voxel in the voxel space VLa, and a mesh is generated based on the voxel data.
[0159] The second voxel space data 320 is data relating to the voxel space VLb described above, which is placed within the game space. The second voxel space data 320 includes size data 321, position data 322, and second volume data 323. The size data 321 includes data indicating the length of one side of each voxel in the voxel space VLb, and data indicating the number of voxels in each axis (Xb, Yb, Zb axis) direction of the voxel space VLb. For example, the length of one side of each voxel in the voxel space VLb is "0.5m". This size data 321 determines the size of the voxel space VLb in the game space. The position data 322 is data representing the position and rotation of the voxel space VLb in the game space. For example, position data 322 includes coordinate data representing the position in game space and vector data representing the direction in game space for each axis (Xb, Yb, Zb axes) of the voxel space VLb. Changing this position data 322 changes the position and / or orientation of the voxel space VLb (i.e., enemy object B) in game space. Second volume data 323 is data for representing enemy object B. Second volume data 323 holds voxel data indicating the existence of an object for each voxel contained within the voxel space VLb. That is, second volume data 323 contains voxel data for each voxel contained within the voxel space VLb. Voxel data is set for each voxel in the voxel space VLb, and a mesh is generated based on the voxel data to form enemy object B.
[0160] Mesh data is data that represents the mesh set for voxel objects placed in game space. Mesh data includes, for example, data indicating the position of each vertex in the mesh. Mesh data is generated based on volume data 303, 313, 323, etc.
[0161] In addition to the data shown in Figure 25, Game System 1 also stores data that is stored in advance before game processing is executed, such as the aforementioned property information and texture information data, and data related to various characters that appear in the game. Furthermore, 3D object data representing 3D objects other than voxel objects (for example, the player character PC, and the hand and foot parts of enemy object B) is stored. Also, voxel space data is stored for each voxel object that can move in the game space. For example, voxel space data corresponding to weapon object C is stored.
[0162] Figure 26 is a flowchart illustrating an example of the game processing flow performed by game system 1. The game processing shown in Figure 26 is initiated, for example, when the player gives an instruction to start the game.
[0163] 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 26. 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 26 may be executed by the other information processing device. Furthermore, the processing of each step shown in Figure 26 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.
[0164] Furthermore, the processor 81 executes the processing of each step shown in Figure 26 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.
[0165] As shown in Figure 26, in step S1, the processor 81 sets up the initial game space. Specifically, the processor 81 acquires field voxel space data representing the terrain in the initial game space and stores part or all of the acquired field voxel space data in the DRAM 85. The field voxel space data representing the terrain in the initial game space is stored, for example, in a storage medium installed in slot 23 of the main unit 2. The field voxel space data includes field volume data 303 (voxel data) representing the terrain. The processor 81 also reads voxel space data (first voxel space data 310, second voxel space data 320, etc.) relating to other voxel objects from the storage medium and stores it in the DRAM 85. The first voxel space data 310 includes first volume data 313 (voxel data) representing rock object A. Furthermore, the second voxel space data 320 includes second volume data 323 (voxel data) representing enemy object B. The processor 81 also reads the 3D object data from the storage medium, sets the initial position and orientation of the 3D object, and stores it in the DRAM 85. The processor 81 also sets the initial position and orientation of the virtual camera and stores it in the DRAM 85.
[0166] Furthermore, the voxel data written to the DRAM 85 may be a portion of the voxel data used to generate game images from the voxel data of the entire game space. For example, the processor 81 may generate an image of an object using voxel data of voxels included in a portion of the game space (for example, within a predetermined distance from the virtual camera's position). Also, when voxel data for a portion of the game space is written, the same processing as in step S1 is executed at an appropriate timing during the execution of the series of processes in steps S2 to S11 (for example, when the virtual camera's position moves by a predetermined distance or more).
[0167] In step S2, the processor 81 generates a mesh for the voxel object. The mesh is generated according to the method described above in "[2-2. Mesh]". Specifically, the processor 81 generates a mesh representing each voxel object based on the volume data stored in the DRAM 85 in step S1. This constructs the terrain object in the game space and places the enemy object B in the game space. For example, the processor 81 generates a polygon mesh between voxels that have been set to a value indicating the existence of an object and voxels that have been set to a value indicating the absence of an object, based on the multiple voxel data contained in the field volume data 303. An example of a specific method for determining vertex positions is explained with reference to Figure 14. The processor 81 also generates a polygon mesh between voxels that have been set to a value indicating the existence of an object and voxels that have been set to a value indicating the absence of an object, based on the multiple voxel data contained in the first volume data 313. This generates a polygon mesh representing the rock object A. Furthermore, the processor 81 generates a polygon mesh between voxels that have been set to a value indicating the existence of an object and voxels that have been set to a value indicating the absence of an object, based on the multiple voxel data contained in the second volume data 323. This generates a polygon mesh representing enemy object B. After step S2, the game starts, and during the game, the processes in steps S3 to S11 are repeatedly executed at predetermined frame time intervals (for example, 1 / 60 second intervals).
[0168] In step S3, the processor 81 controls the actions of various objects appearing in the game space (for example, the player character PC and enemy object B). For example, the processor 81 moves the player character PC or causes the player character PC to perform predetermined actions (destruction actions, jumps, etc.) based on operation data received from controllers 3 and 4. The destruction actions of the player character PC may include punching, kicking, throwing projectiles, etc. The processor 81 also moves enemy object B or causes enemy object B to perform destruction actions (such as swinging or throwing weapon object C) based on an algorithm defined in the game program. The processing in step S4 is executed after step S3.
[0169] In step S4, the processor 81 determines, based on the operation data from the controller, whether or not a destruction action has been performed by the player character PC. Specifically, it determines, based on the operation data from the controller, whether or not a predetermined button on the left controller 3 or the right controller 4 has been pressed. If the result of the determination in step S4 is affirmative, the process in step S5 is executed. On the other hand, if the result of the determination in step S4 is negative, the process in step S10 is executed.
[0170] In step S5, the processor 81 determines whether the destruction action hit a voxel object. Here, for example, it is determined whether the destruction action performed by the player character PC hit a terrain object or enemy object B. Terrain objects include rock object A, terrain object 210 representing the ground, terrain object 220 representing a rocky mountain, etc. The determination of whether the destruction action hit a voxel object is made by a physical collision between the object doing the destroying and the voxel object being destroyed. The object doing the destroying is, for example, the player character PC's fist when the player character PC makes a punch, or the thrown bullet when the player character PC throws a bullet. The voxel object being destroyed is either a terrain object or enemy object B, and a mesh for collision detection is generated. The mesh for collision detection may be the same as the mesh used for display, or a coarser mesh may be prepared than the display mesh. Collision detection is performed between the mesh for collision detection and the object doing the destroying to determine whether a collision occurred. If the result of the determination in step S5 is affirmative, 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 S10 is executed.
[0171] In step S6, the processor 81 sets the destruction range according to the voxel object hit by the destruction action. For example, if the destruction action hits a terrain object, the processor 81 sets a first destruction range based on the position where the destruction action hit. Also, for example, if the destruction action hits enemy object B, the processor 81 sets a second destruction range based on the position where the destruction action hit. In the game space, the second destruction range is narrower than the first destruction range. After step S6, the processing of step S7 is executed.
[0172] In step S7, the processor 81 performs a voxel data update process on the voxel object that was hit by the destruction action. The voxel data update process in step S7 will be described below with reference to Figure 27.
[0173] Figure 27 is a flowchart showing an example of the voxel data update process in step S7. The process shown in Figure 27 is performed on each voxel in the voxel space of the voxel object to which the destruction action was applied (in other words, each voxel in the volume data representing the voxel object to which the destruction action was applied).
[0174] In step S21, the processor 81 selects one voxel from among the voxels in the volume data representing the voxel object hit by the destruction action that falls within the destruction range set in step S6. Here, either a voxel that is completely within the destruction range or a voxel that is partially within the destruction range is selected. For example, if the destruction action hits rock object A, one voxel that falls within the first destruction range set in step S6 is selected from among the voxels in the voxel space VLa. The processing in step S22 is executed after step S21.
[0175] In step S22, the processor 81 determines whether the hardness of the destructive side, determined according to the destructive action, is greater than or equal to the hardness of the material indicated by the material data included in the voxel data. If the result of the determination in step S22 is affirmative, the process in step S26 is then executed. On the other hand, if the result of the determination in step S22 is negative, the process in step S23 is then executed.
[0176] In step S23, the processor 81 determines whether the difference between the hardness of the destructive side and the hardness of the material (hardness of the side being destroyed) is less than a predetermined value. If the result of the determination in step S23 is positive, the process in step S24 is executed next. On the other hand, if the result of the determination in step S23 is negative, the process in step S29 is executed next.
[0177] In step S24, the processor 81 updates the damage amount of the selected voxel. For example, the damage amount is updated based on the hardness of the destroying object and the hardness of the material. The processing in step S25 is executed after step S24.
[0178] In step S25, the processor 81 determines whether the updated voxel damage exceeds the predetermined durability value of the material. If the result of the determination in step S25 is positive, the process in step S26 is executed next. On the other hand, if the result of the determination in step S25 is negative, the process in step S29 is executed next.
[0179] In step S26, the processor 81 determines whether the selected voxel is completely contained within the destruction range set in step S6. For example, the determination of whether the selected voxel is completely contained within the destruction range is made based on the signed distance from the surface of the set destruction range. For example, if the signed distance is a negative value, it is determined that the voxel is contained within the destruction range. If the determination result in step S26 is positive, the process in step S27 is then executed. On the other hand, if the determination result in step S26 is negative, the process in step S28 is then executed.
[0180] In step S27, the processor 81 performs a destruction process by updating the density of the selected voxels from a value indicating the existence of voxel objects (e.g., "255") to a value indicating the absence of voxel objects (e.g., "0").
[0181] In step S28, the processor 81 reduces the density of the selected voxels as a destruction process. Specifically, voxels determined to be NO in step S26 are voxels that are partially included in the set destruction range. Here, the density of voxels that are partially included in the destruction range is reduced to a value smaller than the upper limit. The process in step S29 is executed after step S28.
[0182] In step S29, the processor 81 determines whether the processing in steps S21 to S28 has been completed for all voxels within the destruction range among the multiple voxels in the voxel space corresponding to the voxel object that was hit by the destruction action. If the result of the determination in step S29 is positive, the process shown in Figure 27 is terminated. On the other hand, if the result of the determination in step S29 is negative, the processor 81 changes the voxel to be processed among the voxels within the destruction range and executes the processing in step S21 again.
[0183] Returning to Figure 26, after the processing of step S7, the processor 81 executes the processing of step S8.
[0184] In step S8, the processor 81 determines whether or not to update the mesh. Here, if the voxel data was updated in step S7, the processor 81 determines to update the mesh. If the determination result in step S8 is positive, the process in step S9 is executed. On the other hand, if the determination result in step S8 is negative, the process in step S10 is executed. Note that even if the voxel data was updated in step S7, if there are no updated voxels within the imaging range of the virtual camera, the processor 81 may determine in step S8 not to update the mesh. In other words, even if a destruction action hits a terrain object or enemy object B and part or all of the terrain object or enemy object B is destroyed, if the voxel objects in the game space visible from the virtual camera are not destroyed, the mesh does not need to be updated. Also, when the processing load is high, the mesh update may be postponed to the next frame or later instead of being performed in the current frame.
[0185] In step S9, the processor 81 updates the mesh for voxel objects whose voxel data was modified in step S7. Specifically, the vertex positions of the mesh are recalculated based on the updated voxel data. The updated mesh is stored in the DRAM 85 as mesh data. In other words, the processor 81 generates a mesh for the destroyed voxel object based on the updated voxel data from step S7. This allows the mesh of voxel objects that have undergone destruction actions (terrain objects and enemy object B) to be dynamically changed during gameplay. In step S9, the vertices of the mesh are recalculated only for the parts where the voxel data has been updated. For the parts of the mesh where the voxel data has not been updated, the vertex positions of the mesh generated in step S2 are used. In this way, the mesh is recalculated only for the updated voxel data, which reduces the processing load. In other embodiments, in step S9, the vertex positions of the mesh may be recalculated based on all voxel data in the game space (or all voxel data within the imaging range of the virtual camera), including both updated and unupdated voxel data. The process in step S10 is executed after step S9.
[0186] In step S10, the processor 81 generates a game image representing the game space based on the virtual camera and displays the generated game image on the display device. Specifically, the processor 81 generates a game image as seen from the position of the virtual camera, viewing the mesh generated in step S2 or S9. This generates a game image representing the game space, including voxel objects and other 3D objects (e.g., the player character PC). The processor 81 then displays the generated game image on the display device. The processing in step S11 is executed after step S10.
[0187] In step S11, the processor 81 determines whether or not to terminate the game. For example, the processor 81 determines whether or not the user has given an instruction to terminate the game. If the result of the determination in step S11 is negative, the process in step S3 is executed again. Thereafter, the series of processes from steps S3 to S11 are repeatedly executed until it is determined in step S11 that the game should be terminated. On the other hand, if the result of the determination in step S11 is positive, the processor 81 terminates the game process as shown in Figure 26.
[0188] Figure 26 illustrates the destruction of a terrain object or enemy object B by a player character PC performing a destruction action. However, various other processes can also be performed. For example, a terrain object may be destroyed in the same manner as described above when enemy object B performs a destruction action. That is, if enemy object B's destruction action hits a terrain object, a first destruction range corresponding to the terrain object is set based on the point of impact, and the terrain object within the first destruction range is destroyed. In addition to the destruction of terrain objects, terrain objects may also be added. For example, a new terrain object may be added when a predetermined action is performed by a player character PC. This addition of terrain objects is done by updating voxel data as described above. For example, a terrain object may be added to the game space by rewriting the voxel data of a voxel that has a value indicating the absence of a terrain object to a value indicating the existence of a terrain object. In this case, a new terrain object may be added by updating the voxel data of a voxel in the field voxel space. Furthermore, a new voxel space may be created in the game space, and voxel data may be set for the voxels within that space, thereby adding a new terrain object. For example, when a destruction action is performed on a terrain object generated based on field volume data 303, the density of multiple voxels included in field volume data 303 is set to "0" (part of the terrain is erased), and a new voxel space separate from the field voxel space is created, and the density of multiple voxels within that separate voxel space may be set to a value greater than the baseline. As a result, part of the terrain object is separated, and a new terrain object that can move within the game space is generated. In addition, other enemy objects may be added, not just the destruction of enemy object B. Adding enemy objects is done by creating a voxel space corresponding to the new enemy object in the game space, and setting voxel data for the voxels within that voxel space.
[0189] Furthermore, the process shown in the flowchart above is merely an example, and the order and content of the processes, as well as the values used for determination, may be changed as appropriate.
[0190] As described above, in this embodiment, field volume data 303, first volume data 313, and second volume data 323 are stored in memory. Field volume data 303 is data for representing terrain objects, and for each voxel included in the field voxel space placed in the game space, it holds voxel data indicating the presence of an object. First volume data 313 is data for representing rock objects, and for each voxel included in the voxel space VLa placed in the game space, it holds voxel data indicating the presence of an object. Second volume data 323 is data for representing enemy objects, and for each voxel included in the voxel space VLb placed in the game space, it holds voxel data indicating the presence of an object. For example, if a destruction action is performed on terrain objects 210, 220 based on the player's input, the voxel data of the voxels included in the first destruction range, which is set based on the position where the destruction action hit, is updated in the field volume data 303. Furthermore, if a destruction action is performed on a rock object based on player input, the voxel data of the voxels included in the first destruction range, which is set based on the position where the destruction action hits, is updated in the first volume data 313. Furthermore, if a destruction action is performed on an enemy object based on player input, the voxel data of the voxels included in the second destruction range, which is set based on the position where the destruction action hits, is updated in the second volume data 323. In addition, a polygon mesh is generated based on the field volume data 303, the first volume data 313, and the second volume data 323.
[0191] This allows the destruction range to vary depending on the object hit by the destruction action. Since the second destruction range is narrower than the first, terrain objects can be destroyed over a wider area by the destruction action, while enemy objects can be destroyed over a narrower area.
[0192] Furthermore, in this embodiment, the density of the voxel data is set to indicate the degree to which an object occupies the virtual space defined by the voxel. For example, if the destruction action hits a rock object, the density of the voxels included in the first destruction range among the multiple voxel data included in the first volume data 313 is reduced. Similarly, if the destruction action hits an enemy object, the density of the voxels included in the second destruction range among the multiple voxel data included in the second volume data 323 is reduced.
[0193] Furthermore, if the destruction action hits a terrain object, the density of at least some of the voxels within the first destruction range is set to a value indicating the absence of the object (specifically, "0"). Specifically, for voxels completely contained within the first destruction range, the density is set to a value indicating the absence of the object (specifically, "0"), and for voxels partially contained within the first destruction range, the density is reduced to a value below the upper limit. Similarly, the density of at least some of the voxels within the second destruction range is set to a value indicating the absence of the object (specifically, "0"). Specifically, for voxels completely contained within the second destruction range, the density is set to a value indicating the absence of the object (specifically, "0"), and for voxels partially contained within the second destruction range, the density is reduced to a value below the upper limit. This allows for different voxel densities inside the destruction range and on the surface of the destruction range, for example, making the surface of the destruction range a smooth and natural shape.
[0194] Furthermore, in this embodiment, the voxel data further includes material data indicating the object's material (rock, soil, sand, etc.) and the amount of damage. When a destruction action hits a voxel object (terrain object or enemy object), the amount of damage to the voxel is updated based on the type of destruction action and the hardness of the material indicated by the material data. If the amount of damage dealt to the voxel exceeds the durability value set for the material, the density of the voxel is updated. This allows for variations in the way objects are destroyed, for example, by destroying an object with a single destruction action or by destroying an object with multiple destruction actions.
[0195] Furthermore, in this embodiment, the size in game space of one voxel in the voxel space VLb used to represent an enemy object is smaller than the size in game space of one voxel in the field voxel space or voxel space VLa used to represent a terrain object. In other words, the resolution of a voxel in the voxel space VLb used to represent an enemy object is higher than the resolution of a voxel in the field voxel space or voxel space VLa used to represent a terrain object. Therefore, enemy objects can be represented in more detail than terrain objects.
[0196] (modified version) Although this embodiment has been described above, the above embodiment is merely an example, and modifications such as the following may be made.
[0197] For example, in the above embodiment, when a destruction action hits a terrain object, a first destruction range is set for the terrain object, and when a destruction action hits an enemy object, a second destruction range smaller than the first destruction range is set for the enemy object. Similar processing may be performed on any other voxel object. For example, when a destruction action hits a first object, a first destruction range may be set for the first object, and when a destruction action hits a second object, a second destruction range smaller than the first destruction range may be set for the second object. Furthermore, there may be three or more types of voxel objects, and the destruction ranges may differ depending on the type of voxel object.
[0198] Furthermore, in the above embodiment, the destruction range differs depending on the type of voxel object hit by the destruction action. However, the destruction range may differ not only depending on the type of voxel object, but also, for example, depending on the type of destruction action. In this case as well, when the same destruction action is performed, the destruction range will differ depending on the type of object hit by the destruction action. For example, if a punch hits a terrain object, a first destruction range in the terrain object will be destroyed; if a punch hits an enemy object, a second destruction range in the enemy object will be destroyed; if a kick hits a terrain object, a third destruction range in the terrain object will be destroyed; and if a kick hits an enemy object, a fourth destruction range in the enemy object may be destroyed.
[0199] Furthermore, in the above embodiment, the determination of whether or not the destruction action hit a voxel object was performed based on a determination mesh or display mesh generated based on the voxel data. In other embodiments, the determination of whether or not the destruction action hit a voxel object may be performed based on the voxel data.
[0200] Furthermore, in the above embodiment, the size of each voxel in the first voxel space (e.g., field voxel space or voxel space VLa) representing the first object (e.g., terrain object) is larger in game space than the size of each voxel in the second voxel space (e.g., voxel space VLb) representing the second object (e.g., enemy object). Also, the first destruction range when a destruction action hits the first object is larger than the second destruction range when a destruction action hits the second object. In other embodiments, the size of each voxel in the first voxel space may be the same as the size of each voxel in the second voxel space. Even in this case, the first destruction range when a destruction action hits the first object in game space may be larger than the second destruction range when a destruction action hits the second object.
[0201] Furthermore, in the above embodiment, when a destruction action is performed on the first object, the voxel data of the voxels included in the first destruction range is updated, and when a destruction action is performed on the second object, the voxel data of the voxels included in the second destruction range is updated, thereby destroying either the first or second object. In other embodiments, when any event occurs on an object, a range corresponding to the type of object may be set, and the voxel data of the voxels included in the set range may be updated. That is, when a first event occurs on the first object, a first range may be set based on the location where the first event occurred, and the voxel data of the voxels included in the first range may be updated (decreased or increased). Also, when a second event occurs on the second object, a second range may be set based on the location where the second event occurred, and the voxel data of the voxels included in the second range may be updated (decreased or increased). The event may be an action performed on a voxel object by a player character PC or an enemy object as described above. For example, an event may occur when a player character PC punches a voxel object, or when a projectile thrown by a player character PC hits a voxel object. Furthermore, events may occur independently of actions by player characters PCs or enemy objects, such as a volcanic eruption or falling rocks. For example, events may occur over time. Additionally, an event may result in the creation of a new object. In this case, when the event occurs, the voxel data of voxels within a range determined by the event's location may be updated (density increased), thereby creating a new object.
[0202] Furthermore, in the above embodiment, for each voxel of the voxel object, for voxels that are completely contained within the destruction range, a value is set to indicate that no object exists in that voxel by setting the voxel density to "0", and for voxels that are partially contained within the destruction range, the density is reduced to a value below the upper limit. For voxels that are completely contained within the destruction range, a value is set to indicate that no object exists, and for voxels that are partially contained within the destruction range, any value may be updated as long as the proportion (degree) occupied by the object is reduced.
[0203] Furthermore, in the above embodiment, for voxels within the destruction range, a value indicating that no object exists in that voxel was set by setting the voxel density to "0". As a result, the portion of the voxel object within the destruction range was erased, and the voxel object was destroyed. Destroying (erasing) a voxel object is not limited to setting the density in the voxel data to "0", but may also be performed by setting the density to another value. For example, with respect to density, the "value indicating that no object exists" is not limited to "0", but may be any value less than a reference value (e.g., 128). Also, with respect to density, the "value indicating that an object exists" may be a value in the range of 1 to 255, or a value greater than or equal to the reference value. Furthermore, voxel objects may be destroyed (or created) by methods other than changing the density in the voxel data. For example, a flag indicating the existence or non-existence of an object may be stored in the voxel data, and when the flag is ON, it indicates that an object exists in that voxel, and when the flag is OFF, it indicates that no object exists in that voxel (i.e., it is empty). Furthermore, if material data is stored in the voxel data, it may be indicated that an object consisting of the material indicated by the material data exists in that voxel. Conversely, if material data is not stored in the voxel data, it may be indicated that no object exists in that voxel.
[0204] Furthermore, the above-described process may be performed not only in game system 1, but also in any other information processing device or information processing system. The information processing system may consist of multiple devices, and these multiple devices may be connected via a network (for example, a LAN or the Internet).
[0205] Furthermore, the configurations of the above embodiments and their modified forms can be combined in any way, as long as they do not contradict each other. Moreover, the above is merely an example of the present invention, and various other improvements and modifications may be made. [Explanation of Symbols]
[0206] 1. Game System 81 processors 85 DRAM 201, 202, 203, 204 voxels 210, 220 Terrain Objects
Claims
1. A game program executed in the processor of an information processing device, wherein the processor: Data for representing a first object in a virtual space, comprising: first volume data that holds voxel data indicating the existence of an object for each voxel contained in a first voxel space arranged in the virtual space; Data for representing a second object in the virtual space, wherein second volume data holds the voxel data for each voxel included in the second voxel space arranged in the virtual space, is stored in a storage medium. When a first event occurs for the first object based on the player's input, the voxel data of the first volume data is updated for the voxels included in a first range set based on the location where the first event occurred. When a second event occurs for the second object based on the player's input, the voxel data of the second volume data is updated for the voxels included in the second range set based on the location where the second event occurred. A game program that generates an image of the virtual space by drawing at least polygon meshes representing the surfaces of the first object and the second object based on the first volume data and the second volume data.
2. The voxel data includes a value indicating the degree to which an object occupies the space defined by the voxel. The aforementioned processor, When the first event occurs, the voxel data is updated so that the degree of the voxels included in the first range within the first volume data decreases. The game program according to claim 1, wherein when the second event occurs, the voxel data is updated such that the degree of the voxels included in the second range within the second volume data decreases.
3. The aforementioned processor, When the first event occurs, the voxel data is updated to a value indicating that the first object does not exist for at least a portion of the voxels included in the first range within the first volume data. The game program according to claim 2, which, when the second event occurs, updates the voxel data to a value indicating that the second object does not exist for at least a portion of the voxels included in the second range within the second volume data.
4. The aforementioned processor, When the first event occurs, the voxel data is updated such that the value indicates that the first object does not exist for voxels that are completely contained within the first range in the first volume data, and the degree decreases for voxels that are partially contained within the first range. The game program according to claim 3, wherein, when the second event occurs, the voxel data is updated such that the value indicates that the second object does not exist for voxels that are completely contained within the second range in the second volume data, and the degree decreases for voxels that are partially contained within the second range.
5. The voxel data further includes material data indicating the object's material and damage amount indicating the amount of damage inflicted. The aforementioned processor, When the first event occurs, the amount of damage is updated for voxels within the first range in the first volume data, and for voxels whose damage amount exceeds the upper limit set for the material, the value indicating the degree is updated. The game program according to any one of claims 2 to 4, wherein when the second event occurs, the program updates the amount of damage for voxels included in the second range within the second volume data, and further updates the value indicating the degree for voxels whose damage amount exceeds the upper limit set for the material.
6. The game program according to any one of claims 1 to 5, wherein the size of one voxel included in the first volume data and the size of one voxel included in the second volume data are different in the virtual space.
7. The first object is the terrain in the virtual space, The game program according to any one of claims 1 to 6, wherein the first range is greater than the second range.
8. The second object is an object that can move within the virtual space by changing its position and / or orientation within the second voxel space. The game program according to any one of claims 1 to 7, wherein the second range is smaller than the first range.
9. The aforementioned processor, The polygon mesh is generated by determining the vertex positions of the polygons based on the voxel data between voxels where the first object or the second object does not exist and voxels where it does exist. The game program according to any one of claims 1 to 8, which, based on the occurrence of the first event or the second event, causes the program to recalculate the vertices of the polygon mesh in a range that includes at least the voxel whose voxel data has been updated.
10. The aforementioned processor further, Based on the player's input, the player character is instructed to perform a destruction action that can destroy the first object and the second object. The first event is that the destruction action hits the first object. The game program according to any one of claims 1 to 9, wherein the second event is the destruction action hitting the second object.
11. An information processing system comprising a storage medium and at least one processor, The aforementioned storage medium includes: Data for representing a first object in a virtual space, comprising: first volume data that holds voxel data indicating the existence of an object for each voxel contained in a first voxel space arranged in the virtual space; Data for representing a second object in the virtual space, wherein a second volume data is stored which holds the voxel data for each voxel included in the second voxel space arranged in the virtual space, The aforementioned processor, When a first event occurs for the first object based on the player's input, the voxel data of the first volume data is updated for the voxels included in a first range set based on the location where the first event occurred. When a second event occurs for the second object based on the player's input, the voxel data of the voxels included in the second range, which is set based on the location where the second event occurred, is updated in the second volume data. An information processing system that generates an image of the virtual space by drawing at least polygon meshes representing the surfaces of the first object and the second object based on the first volume data and the second volume data.
12. The voxel data includes a value indicating the degree to which an object occupies the space defined by the voxel. The aforementioned processor, When the first event occurs, the voxel data is updated so that the degree of the voxels included in the first range within the first volume data decreases. The information processing system according to claim 11, wherein when the second event occurs, the voxel data is updated such that the degree of the voxels included in the second range within the second volume data decreases.
13. The aforementioned processor, When the first event occurs, the voxel data is updated to a value indicating that the first object does not exist for at least a portion of the voxels included in the first range within the first volume data. The information processing system according to claim 12, wherein when the second event occurs, the voxel data is updated to a value indicating that the second object does not exist for at least a portion of the voxels included in the second range within the second volume data.
14. The aforementioned processor, When the first event occurs, the voxel data is updated such that the value indicates that the first object does not exist for voxels that are completely contained within the first range in the first volume data, and the degree decreases for voxels that are partially contained within the first range. The information processing system according to claim 13, wherein, when the second event occurs, the voxel data is updated such that the value indicates that the second object does not exist for voxels that are completely contained within the second range in the second volume data, and the degree decreases for voxels that are partially contained within the second range.
15. The voxel data further includes material data indicating the object's material and damage amount indicating the amount of damage inflicted. The aforementioned processor, When the first event occurs, the amount of damage is updated for voxels within the first range in the first volume data, and for voxels whose damage amount exceeds the upper limit set for the material, the value indicating the degree is updated. An information processing system according to any one of claims 12 to 14, wherein, when the second event occurs, the amount of damage is updated for voxels included in the second range within the second volume data, and further, for voxels whose amount of damage exceeds the upper limit set for the material, the value indicating the degree is updated.
16. The information processing system according to any one of claims 11 to 15, wherein one voxel included in the first volume data and one voxel included in the second volume data have different sizes defined within the virtual space.
17. The first object is the terrain in the virtual space, The information processing system according to any one of claims 11 to 16, wherein the first range is greater than the second range.
18. The second object is an object that can move within the virtual space by changing its position and / or orientation within the second voxel space. The information processing system according to any one of claims 11 to 17, wherein the second range is smaller than the first range.
19. The aforementioned processor, The polygon mesh is generated by determining the vertex positions of the polygons based on the voxel data between voxels where the first object or the second object does not exist and voxels where it does exist. An information processing system according to any one of claims 11 to 18, which recalculates the vertices of the polygon mesh in a range that includes at least the voxel whose voxel data has been updated, based on the occurrence of the first event or the second event.
20. The aforementioned processor further, Based on the player's input, the player character is instructed to perform a destruction action that can destroy the first object and the second object. The first event is that the destruction action hits the first object. The information processing system according to any one of claims 11 to 19, wherein the second event is the destruction action hitting the second object.
21. Data for representing a first object in a virtual space, comprising: first volume data that holds voxel data indicating the existence of an object for each voxel contained in a first voxel space arranged in the virtual space; The system stores data for representing a second object in the virtual space, which includes a second volume data that holds the voxel data for each voxel included in the second voxel space arranged in the virtual space, When a first event occurs for the first object based on the player's input, the voxel data of the first volume data is updated for the voxels included in a first range set based on the location where the first event occurred. When a second event occurs for the second object based on the player's input, the voxel data of the voxels included in the second range, which is set based on the location where the second event occurred, is updated in the second volume data. An information processing device that generates an image of the virtual space by drawing at least polygon meshes representing the surfaces of the first object and the second object based on the first volume data and the second volume data.
22. The voxel data includes a value indicating the degree to which an object occupies the space defined by the voxel. When the first event occurs, the voxel data is updated so that the degree of the voxels included in the first range within the first volume data decreases. The information processing apparatus according to claim 21, which, when the second event occurs, updates the voxel data such that the degree of the voxels included in the second range within the second volume data decreases.
23. When the first event occurs, the voxel data is updated to a value indicating that the first object does not exist for at least a portion of the voxels included in the first range within the first volume data. The information processing apparatus according to claim 22, which, when the second event occurs, updates the voxel data to a value indicating that the second object does not exist for at least a portion of the voxels included in the second range within the second volume data.
24. When the first event occurs, the voxel data is updated such that the value indicates that the first object does not exist for voxels that are completely contained within the first range in the first volume data, and the degree decreases for voxels that are partially contained within the first range. The information processing apparatus according to claim 23, wherein, when the second event occurs, the voxel data is updated such that the value indicates that the second object does not exist for voxels that are completely contained within the second range in the second volume data, and the degree decreases for voxels that are partially contained within the second range.
25. The voxel data further includes material data indicating the object's material and damage amount indicating the amount of damage inflicted. When the first event occurs, the amount of damage is updated for voxels within the first range in the first volume data, and for voxels whose damage amount exceeds the upper limit set for the material, the value indicating the degree is updated. The information processing device according to any one of claims 22 to 24, wherein, when the second event occurs, the amount of damage is updated for voxels included in the second range within the second volume data, and further, for voxels whose amount of damage exceeds the upper limit set for the material, the value indicating the degree is updated.
26. The information processing apparatus according to any one of claims 21 to 25, wherein one voxel included in the first volume data and one voxel included in the second volume data have different sizes defined within the virtual space.
27. An information processing method for executing game processing in an information processing system, wherein the information processing system Data for representing a first object in a virtual space, comprising: first volume data that holds voxel data indicating the existence of an object for each voxel contained in a first voxel space arranged in the virtual space; The steps include reading from a storage medium data that represents a second object in the virtual space, and which holds the voxel data for each voxel included in the second voxel space arranged in the virtual space, If a first event occurs for the first object based on the player's input, the first volume data is updated with the voxel data of the voxels included in a first range set based on the location where the first event occurred. If a second event occurs for the second object based on the player's input, the second volume data is updated with voxel data of voxels included in a second range set based on the location where the second event occurred. An information processing method that performs the steps of generating an image of the virtual space by drawing at least polygon meshes representing the surfaces of the first object and the second object based on the first volume data and the second volume data.
28. The voxel data includes a value indicating the degree to which an object occupies the space defined by the voxel. In the aforementioned information processing system, When the first event occurs, the voxel data is updated so that the degree of the voxels included in the first range within the first volume data decreases. The information processing method according to claim 27, wherein when the second event occurs, the voxel data is updated such that the degree of the voxels included in the second range within the second volume data decreases.
29. In the aforementioned information processing system, When the first event occurs, the voxel data is updated to a value indicating that the first object does not exist for at least a portion of the voxels included in the first range within the first volume data. The information processing method according to claim 28, wherein when the second event occurs, the voxel data is updated to a value indicating that the second object does not exist for at least a portion of the voxels included in the second range within the second volume data.
30. In the aforementioned information processing system, When the first event occurs, the voxel data is updated such that the value indicates that the first object does not exist for voxels that are completely contained within the first range in the first volume data, and the degree decreases for voxels that are partially contained within the first range. The information processing method according to claim 29, wherein, when the second event occurs, the voxel data is updated to a value indicating that the second object does not exist for voxels that are completely contained within the second range in the second volume data, and the degree decreases for voxels that are partially contained within the second range.
31. The voxel data further includes material data indicating the object's material and damage amount indicating the amount of damage inflicted. In the aforementioned information processing system, When the first event occurs, the amount of damage is updated for voxels within the first range in the first volume data, and for voxels whose damage amount exceeds the upper limit set for the material, the value indicating the degree is updated. The information processing method according to any one of claims 28 to 30, wherein when the second event occurs, the amount of damage is updated for voxels included in the second range within the second volume data, and the value indicating the degree is updated for voxels whose damage amount exceeds the upper limit set for the material.
32. The information processing method according to any one of claims 27 to 31, wherein one voxel included in the first volume data and one voxel included in the second volume data have different sizes defined within the virtual space.
Citation Information
Patent Citations
Program, information storage medium and image generation system
JP2008033521A