Game program, game system, game processing method, and game device

The game program and system utilize voxel data to generate and update meshes for interactive gameplay, enabling cooperative material-based interactions and reducing processing load, thus enhancing gameplay experiences.

JP2026115035APending Publication Date: 2026-07-08NINTENDO CO LTD

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
NINTENDO CO LTD
Filing Date
2026-01-14
Publication Date
2026-07-08

AI Technical Summary

Technical Problem

Existing game technologies do not effectively utilize voxel data for material sets in virtual spaces, limiting the interactive capabilities and gameplay experiences.

Method used

A game program and system that generates and updates voxel object meshes based on voxel data, allowing for material setting and interaction through cursor operations, enabling cooperative gameplay and various in-game effects based on material interactions.

Benefits of technology

Enhances gameplay by allowing multiple users to interact with voxel objects using different materials, creating rich gameplay experiences with reduced processing load.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026115035000001_ABST
    Figure 2026115035000001_ABST
Patent Text Reader

Abstract

This invention provides a game program, game system, game processing method, and game device that enable the use of materials set on objects using voxel data within a game. [Solution] The cursor position is controlled based on input from an operating device, and in response to a first instruction based on input from the operating device, the material of the virtual space position corresponding to the cursor position of the mesh of the voxel object is set as the first material, and in response to a second instruction based on input from the operating device, the object with the first material set is moved toward the virtual space position corresponding to the cursor position, and an in-game effect is generated that includes changing at least one of the voxel density and material of the voxel data corresponding to the voxel update range set at the collision position based on collision detection between the object and the mesh.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to a game program, a game system, a game processing method, and a game device that generate an object in a virtual space using voxel data.

Background Art

[0002] Conventionally, mesh generation of an object in a virtual space has been performed based on voxel data (see, for example, Non-Patent Document 1).

Prior Art Documents

Non-Patent Documents

[0003]

Non-Patent Document 1

Summary of the Invention

Problems to be Solved by the Invention

[0004] It is desired to utilize the material set for an object using voxel data in a game.

[0005] The present invention provides a game program, a game system, a game processing method, and a game device that can utilize the material set for an object using voxel data in a game.

Means for Solving the Problems

[0006] In order to achieve the above object, the present invention can adopt the following configurations (1) to (9), for example.

[0007] (1) One example of the game program configuration of the present invention involves a computer generating and updating a mesh of a voxel object corresponding to voxel data, where the vertex coordinates of the mesh are determined at least based on the density and the material of the mesh is determined at least based on the material included in the voxel data, based on voxel data defined in a virtual space, wherein for each of a plurality of voxels, a density indicating the degree to which the space defined by the voxel is virtually occupied by its contents and a material indicating the type of contents are set, and controlling the position of a first cursor based on operation input from a first operation device, and Based on an operation input from one control device, a first instruction is given to identify the material of the mesh at a position in virtual space corresponding to the position of a first cursor. The identified material is then used as the first material. Based on an operation input from the first control device, a second instruction is given to move the first object, to the position in virtual space corresponding to the position of the first cursor, to a position in virtual space corresponding to the position of the first cursor. Based on collision detection between the first object and the mesh, a first voxel update range is set at the collision position. A first in-game effect is generated, which includes a change in at least one of the density and material of the voxels in the voxel data corresponding to the first voxel update range.

[0008] According to the configuration described in (1) above, it is possible to obtain a material corresponding to the position of the first cursor on the mesh of the voxel object, and provide a game based on the interaction between the first object to which the material is set and the mesh of the voxel object, thereby making better use of the material set on an object using voxel data in the game.

[0009] (2) In the configuration of (1) above, the computer may further control the movement of the first player character in the virtual space based on the operation input from the second operation device, control the movement of the second player character together with the movement of the first player character, cause the first player character to perform a first action in response to a third instruction based on the operation input from the second operation device, cause the second player character to perform a second action in response to a second instruction, and move the first object.

[0010] According to the configuration described in (2) above, the actions of different player characters are controlled according to the operation on each of the two control devices, and the movement of both player characters is controlled by the operation on one of the control devices, allowing multiple users to play the game cooperatively.

[0011] (3) In the configuration described in (2) above, the computer may be further instructed to control the position of the virtual camera in the virtual space based on the position of the first player character, and to control the orientation of the virtual camera based on at least the input from the first operating device.

[0012] According to the configuration described in (3) above, controlling the orientation of the virtual camera using the first control device makes it easier to aim the first cursor in cooperative play with multiple users.

[0013] (4) In the configuration described in (3) above, the computer may be further instructed to control the orientation of the virtual camera based on the input from the second operating device.

[0014] According to the configuration described in (4) above, the orientation of the virtual camera can also be controlled by operating a second control device, allowing the other user in cooperative play to also control the virtual camera.

[0015] (5) In any one of the configurations (2) to (4) above, the computer may further control the position of a second cursor, cause the first player character to perform a first action in response to a third instruction, move a second object with a second material set toward a position in virtual space corresponding to the position of the second cursor, set a second voxel update range at the collision position based on collision detection between the second object and the mesh, and generate a second in-game effect that includes changing at least one of the density and material of the voxels in the voxel data corresponding to the second voxel update range.

[0016] According to the configuration described in (5) above, when multiple users play cooperatively, each user's cursor is displayed separately, making it possible to create a game where each user can aim within the same game space.

[0017] (6) In any one of the configurations (1) to (5) above, the computer may generate any of several effects, depending on the type of first material, which include at least the following as a first in-game effect: an effect that reduces the density of voxels in the voxel data corresponding to the first voxel update range; an effect that increases the density of voxels in the voxel data corresponding to the first voxel update range and sets their material to the first material; and an effect that changes the material of the voxels in the voxel data corresponding to the first voxel update range to the fourth material when the third material, which is the material of the mesh at the collision position, and the first material are in a predetermined combination.

[0018] According to the configuration described in (6) above, various in-game effects can be generated in the interaction between the first object and the mesh of the voxel object, depending on the type of material of the first object.

[0019] (7) In any one of the configurations (1) to (6) above, the operation input from the first operation device may include at least any one of data based on a mouse, data based on an inertial sensor, and direction input data. In this case, the computer may be caused to control the position of the first cursor based on at least any one of data based on a mouse, data based on an inertial sensor, and direction input data.

[0020] According to the configuration (7) above, when operating using an operation device capable of at least any one of an operation using a mouse function, an operation using an inertial sensor, and an operation using a direction input unit, the position of the first cursor can be controlled based on at least any one of these operations, so that operations rich in variations become possible.

[0021] (8) In any one of the configurations (1) to (7) above, the mesh may be a determination mesh used for collision determination. In this case, the computer may further be caused to generate or update a display mesh corresponding to the voxel data and drawn based on a virtual camera by determining the vertex coordinates of the display mesh based on at least the density included in the voxel data and determining the material of the display mesh based on at least the material included in the voxel data, and cause the computer to draw a virtual space including the display mesh based on the vertex coordinates of the display mesh and a texture corresponding to the material of the display mesh. <00000​​​​​​​​​​ According to the configuration of (9) above, since drawing and collision determination can be performed on the same mesh, the processing load for setting the mesh can be reduced.

[0025] Further, the present invention may be implemented in the form of a game system, a game processing method, and a game device.

Effects of the Invention

[0026] According to the present invention, the material set for an object using voxel data can be utilized in a game.

Brief Description of the Drawings

[0027] [Figure 1] A diagram showing an example of a state where the left controller 3 and the right controller 4 are attached to the main body device 2 [Figure 2] A diagram showing an example of a state where the left controller 3 and the right controller 4 are each removed from the main body device 2 [Figure 3] A six-sided view showing an example of the main body device 2 [Figure 4] A six-sided view showing an example of the left controller 3 [Figure 5] A six-sided view showing an example of the right controller 4 [Figure 6] A block diagram showing an example of the internal configuration of the main body device 2 [Figure 7] A block diagram showing an example of the internal configuration of the main body device 2, the left controller 3, and the right controller 4 [Figure 8] A diagram for explaining an example of the mode of the controller connected to one main body device 2 at the same time [Figure 9] A diagram showing an example of a terrain object that is a voxel object [Figure 10] A diagram showing an example of the state before and after a part of the terrain object shown in FIG. 9 is deleted [Figure 11] A diagram showing an example of the state before and after a part of the terrain object shown in FIG. 9 is deleted [Figure 12]A diagram showing an example of voxel data. [Figure 13] A diagram showing an example of material data. [Figure 14] A diagram showing an example of the game space when an update event occurs. [Figure 15] A diagram showing an example of the update scope. [Figure 16] A diagram showing an example of how to set vertices. [Figure 17] A diagram illustrating an example of how to determine the material of a vertex. [Figure 18] A diagram showing an example of vertex simplification. [Figure 19] A diagram showing an example of material-related conditions. [Figure 20] This diagram shows an example of a mesh generated based on vertices. [Figure 21] This diagram shows an example where the quadrilaterals that make up the mesh are divided into two triangles. [Figure 22] This diagram shows an example of a method for determining the material of the polygons that make up the display mesh. [Figure 23] This diagram shows an example of a material applied to each vertex of two adjacent polygons. [Figure 24] This diagram shows an example of applying a texture to a polygon. [Figure 25] This diagram shows an example of a method for determining the material of the polygons that make up the mesh used for judgment. [Figure 26] This is an example of a game image showing a player character moving over terrain objects. [Figure 27] This diagram shows an example of a game image illustrating the second player character 204 emitting a scream object 253. [Figure 28] This diagram shows an example of a game image illustrating what happens after the second player character 204 emits a scream object 253. [Figure 29] This diagram shows another example of a game image depicting a player character moving over terrain objects. [Figure 30]This diagram shows an example of a game image illustrating the second player character 204 emitting a scream object 271. [Figure 31] This diagram shows an example of a game image illustrating what happens after the second player character 204 emits a scream object 271. [Figure 32] This diagram illustrates the in-game effects that occur based on the material type set for scream object 253 and the material type of the object it collides with. [Figure 33] This diagram shows an example of a game image illustrating the first player character 201 pulling a fragment object 256 from a terrain object 251. [Figure 34] This diagram shows an example of a game image illustrating how the first player character 201 destroys terrain object 251, generating fragment object 258. [Figure 35] This diagram shows an example of game images illustrating a sequence of events in which player character 201 throws fragment object 260 into terrain object 252 made of lava material. [Figure 36] This diagram shows an example of game images illustrating a sequence of events in which player character 201 throws fragment object 260 into terrain object 252 made of lava material. [Figure 37] This diagram shows an example of operation instructions corresponding to the operation input for each controller used by the first user. [Figure 38] This diagram shows an example of operation instructions corresponding to the operation input for each controller used by the second user. [Figure 39] This diagram shows an example of various types of data used in information processing in Game System 1. [Figure 40] A flowchart illustrating an example of the game processing flow executed by Game System 1. [Figure 41] A subroutine showing an example of the first half of the process that controls the behavior of each object executed in step S12 in Figure 40. [Figure 42]A subroutine showing an example of the latter half of the process that controls the behavior of each object executed in step S12 in Figure 40. [Modes for carrying out the invention]

[0028] [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.

[0029] 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.

[0030] 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 the "first controller."

[0031] 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.

[0032] 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.

[0033] 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.

[0034] 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).

[0035] 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.

[0036] 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.

[0037] 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.

[0038] 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).

[0039] 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 unit 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. In this embodiment, the user can also use the left controller 3 as a mouse. That is, the left controller 3 may be used while placed on a surface such as a desk.

[0040] 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.

[0041] 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.

[0042] Furthermore, the right side of the housing 31 is equipped with a mouse sensor 106 to realize mouse functionality (for example, a function to instruct the movement of a cursor displayed on the screen). The mouse sensor 106 is, for example, an optical sensor using an LED, and may be the same as the sensor used in conventional mice. The mouse sensor may also be, for example, a sensor using laser light or a sensor using infrared light. In this embodiment, the mouse sensor 106 is positioned inside the housing 31 so as to be exposed to the outside through a through hole formed on the right side. When the left controller 3 is placed on the mounting surface with the right side of the housing 31 facing the mounting surface, the mouse sensor 106 irradiates light onto the mounting surface and detects the reflected light from the mounting surface. Based on the detection result of the reflected light, the game system 1 calculates parameters related to the movement of the left controller 3 on the mounting surface (for example, direction of movement and distance of movement). Note that the calculation of the above parameters may be performed by the left controller 3, or it may be performed by the main unit 2 that receives information on the detection result of the reflected light from the left controller 3.

[0043] Furthermore, the left controller 3 is equipped with a terminal 42 for wired communication between the left controller 3 and the main unit 2.

[0044] 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. The right controller 4 can also be held in a vertically elongated orientation when detached from the main unit 2. 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. In this embodiment, the user can also use the right controller 4 as a mouse. That is, the right controller 4 may be used while placed on a surface such as a desk.

[0045] 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.

[0046] Furthermore, the left side of the housing 51 is equipped with a mouse sensor 116 as a configuration for realizing the mouse function described above. The mouse sensor 116 is an optical sensor, similar to the mouse sensor 106. In this embodiment, the mouse sensor 116 is positioned within the housing 51 so as to be exposed to the outside through a through hole formed on the left side. When the right controller 4 is placed on the mounting surface such that the left side of the housing 51 faces the mounting surface, the mouse sensor 116 irradiates light onto the mounting surface and detects the reflected light from the mounting surface. Based on the detection result of the reflected light, the game system 1 calculates parameters related to the movement of the right controller 4 on the mounting surface. Note that the calculation of the above parameters may be performed by the right controller 4, or it may be performed by the main unit 2 that receives information regarding the detection result of the reflected light from the right controller 4.

[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 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 communicates wirelessly with other main unit 2 of the same type using a predetermined communication method (for example, communication using a proprietary protocol or infrared communication) as a second communication mode. The wireless communication using the second communication mode is possible with other main unit 2 located within a closed local network area, and realizes a function that enables so-called "local communication" in which data is transmitted and received by communicating directly between multiple main unit 2.

[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 left controller 3 is equipped with an inertial sensor. Specifically, the left controller 3 is equipped with an acceleration sensor 104. The left controller 3 is also equipped with an angular velocity sensor 105. In this embodiment, the acceleration sensor 104 detects the magnitude of acceleration along three predetermined axes (for example, the x, y, and z axes shown in Figure 4). Note that the acceleration sensor 104 may also detect acceleration in one or two axes. In this embodiment, the angular velocity sensor 105 detects angular velocity around three predetermined axes (for example, the x, y, and z axes shown in Figure 4). Note that the angular velocity sensor 105 may also detect angular velocity around one or two axes. The acceleration sensor 104 and the angular velocity sensor 105 are each connected to the communication control unit 101. The detection results from the acceleration sensor 104 and the angular velocity sensor 105 are repeatedly output to the communication control unit 101 at appropriate timings.

[0066] 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.

[0067] 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. That is, the main unit 2 can determine the operation of each button 103 and the analog stick 32 based on the operation data. In addition, the main unit 2 can calculate information regarding the movement and / or posture of the left controller 3 based on the operation data (specifically, the detection results of the acceleration sensor 104 and the angular velocity sensor 105).

[0068] 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 various parts of the left controller 3 (specifically, to each part that receives power from the battery).

[0069] 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.

[0070] The right controller 4 is equipped with the same inputs as the left controller 3. Specifically, it includes buttons 113, an analog stick 52, and inertial sensors (accelerometer 114 and angular velocity sensor 115). Each of these inputs has the same function and operates in the same way as the inputs of the left controller 3.

[0071] 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.

[0072] Furthermore, the game system 1 may be configured to have only one of the mouse sensors provided on the left controller 3 (106) or the right controller 4 (116). Also, if the mouse function described above is not required, the game system 1 may not have both the mouse sensors 106 and 116 provided on the left controller 3 and the right controller 4.

[0073] Furthermore, in this embodiment, in addition to being able to communicate simultaneously with the multiple left controllers 3 and / or right controllers 4 (the first controllers) described above, the main unit 2 may also communicate simultaneously (in other words, in parallel) with a second controller 7 (see Figure 9) that is different from the first controller. The second controller 7 is a controller that can be held and operated by the user with both hands. The second controller 7 can perform the same operations as the first controller, except for the mouse function described above. That is, the second controller 7 is equipped with left and right analog sticks on the main surface of the housing, and is equipped with various operation buttons on the main surface and sides of the housing, similar to those of the first controller, and is used to give instructions according to various programs executed by the main unit 2. The second controller 7 is also equipped with inertial sensors (e.g., acceleration sensors and angular velocity sensors) similar to those of the first controller. When the second controller 7 is connected to the main unit 2 wirelessly or by wire, the operation content of the analog sticks and operation buttons and the detection results of the inertial sensors are transmitted to the main unit 2 as appropriate. In the following, the first controller and the second controller may be collectively referred to as "controller."

[0074] Figure 8 illustrates an example of a configuration in which controllers are simultaneously connected to a single main unit 2. In the example shown in Figure 8, a game displayed on the display 12 of the main unit 2 is played by multiple users, with the first user and the second user each operating controllers to play the game. For example, the first user controls the movements of the first player character appearing in the game space by operating the controller and outputting operation data from the controller to the main unit 2. Similarly, the second user controls the movements of the second player character appearing in the same game space by operating the controller and outputting operation data from the controller to the main unit 2.

[0075] The first example shown in Figure 8 is an example in which the first user operates the left controller 3 and the second user operates the right controller 4. Specifically, the left controller 3 is held and operated by the first user with both hands in a horizontal orientation. This operation method allows the first user to operate the analog stick 32 (left analog stick) and operation button 43 (SL button), etc. with their left hand. The first user can also operate operation buttons 33-36 (up, down, left, and right direction buttons) and operation button 44 (SR button), etc. with their right hand. Furthermore, the first user can operate the left controller 3 using its inertial sensor by moving the entire left controller 3 or changing the orientation of the entire left controller 3. The right controller 4 is operated by the second user with one hand while the left side of the housing 51 is placed on the mounting surface in a vertical orientation, or it is held and operated by the first user with one hand in a vertical orientation. This operation method allows the second user to operate the analog stick 52 (right analog stick), operation buttons 53-56 (ABXY buttons), and operation buttons 60-61 (R button, ZR button), etc., with one hand holding the controller. In addition, the second user can operate the right controller 4 using the mouse sensor 116 based on the direction and distance of movement on the mounting surface of the right controller 4, or by moving the entire right controller 4 or changing the orientation of the entire right controller 4, thereby enabling operation using the inertial sensor of the right controller 4. In the first example described above, the first user may operate the right controller 4 in a horizontal orientation, and the second user may operate the left controller 3 in a vertical orientation.

[0076] The second example shown in Figure 8 is an example in which the first user operates the second controller 7, and the second user operates the set of left controller 3 and right controller 4. Specifically, the second controller 7 is held and operated by the first user with both hands. With this method of operation, the first user can operate the left analog stick and various operation buttons (e.g., up, down, left, right direction buttons, L button, ZL button) with their left hand. The first user can also operate the right analog stick and various operation buttons (e.g., ABXY buttons, R button, ZR button) with their right hand. Furthermore, by moving the entire second controller 7 or changing the orientation of the entire second controller 7, the first user can operate the second controller 7 using its inertial sensor. The left controller 3 is held and operated by the second user with their left hand in a vertical orientation, and the right controller 4 is held and operated by the second user with their right hand in a vertical orientation. This operation method allows the second user to operate the analog stick 32 (left analog stick), operation buttons 33-36 (up, down, left, and right direction buttons), and operation buttons 38-39 (L button, ZL button), etc., with their left hand which is holding the controller. The second user can also operate the analog stick 52 (right analog stick), operation buttons 53-56 (ABXY buttons), and operation buttons 60-61 (R button, ZR button), etc., with their right hand which is holding the controller. Furthermore, the second user can operate the left controller 3 and / or right controller 4 using their inertial sensors by moving the entire left controller 3 and / or right controller 4 or changing the orientation of the entire left controller 3 and / or right controller 4. In the second example described above, the second user's operation may also be performed using the mouse sensors 106 and / or 116 of the left controller 3 and / or right controller 4, based on the direction and distance of movement on the mounting surface of the left controller 3 and / or right controller 4.

[0077] The third example shown in Figure 8 is an example in which the first user operates the set of left controller 3 and right controller 4, and the second user operates the second controller 7. Specifically, the method by which the first user operates the set of left controller 3 and right controller 4 is the same as that of the second user in the second example above. Also, the method by which the second user operates the second controller 7 is the same as that of the first user in the second example above.

[0078] As described above, in this embodiment, the first user can control the movements of the first player character appearing in the game space by operating either the left controller 3 or the right controller 4, the set of the left controller 3 and the right controller 4, or the second controller 7. Similarly, the second user can control the movements of the second player character appearing in the same game space by operating either the left controller 3 or the right controller 4, the set of the left controller 3 and the right controller 4, or the second controller 7. The combination of controller types used by the first user and the second user is arbitrary and may be any combination as exemplified in the first to third examples above, or any combination other than those exemplified in the first to third examples above. Furthermore, in other embodiments, the first user and / or the second user may operate controllers different from the first and second controllers described above, which are wirelessly or wiredly connected to the main unit 2.

[0079] [2. Overview of processing in the game system] Next, with reference to Figures 9 to 25, an overview of the processes performed in the game system 1 will be described. In this embodiment, the game system 1 generates a game image in which terrain objects and characters (for example, a player character controlled by the user) 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.

[0080] [2-1. Voxel] In this embodiment, the shape of some objects in the game space is defined by voxel data. Here, a voxel is a rectangular (more specifically, cubic) region arranged in a grid in the game space, and voxel data is data that indicates information about each voxel. Hereafter, objects whose shape is defined by voxel data will be called "voxel objects". In this embodiment, the game system 1 stores voxel data for a plurality of voxels set in the game space as data for generating voxel objects in the game space.

[0081] Figure 9 shows an example of a terrain object that is a voxel object. As shown in Figure 9, in this embodiment, terrain objects representing terrain such as the ground are defined by voxel data (i.e., they are voxel objects). Each cube shown in Figure 9 represents a terrain object. Note that in Figure 9, 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 terrain objects do not need to be displayed with thick lines.

[0082] The terrain object shown in Figure 9 was generated using a rule such as, "If the parameter included in the voxel data set for a voxel is greater than a predetermined value, a cube is placed at the voxel's location; if it is less than or equal to the predetermined value, nothing is placed at the voxel's location." The terrain object shown in Figure 9 is presented to illustrate the relationship between voxels and voxel objects in an easy-to-understand manner. In this embodiment, voxel objects are actually generated using rules (based on voxel data) that result in complex shapes, such as the terrain object shown in Figure 14, which will be described later. The rules for determining the shape of the voxel object based on the voxel data are arbitrary. In other embodiments, the game system 1 may generate voxel objects as shown in Figure 9 or as shown in Figure 14 based on object data.

[0083] For voxel objects, the shape can be changed by modifying the voxel data of each voxel. Figures 10 and 11 show examples of what the terrain object shown in Figure 9 looks like before and after a portion of it is deleted. That is, when the shaded portion of the terrain object shown in Figure 10 is destroyed, the terrain object changes to the shape shown in Figure 11. 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.

[0084] 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).

[0085] In this embodiment, voxels are defined throughout the entire game space (i.e., the voxel space in which voxels are defined corresponds to the entire game space). However, the voxel space does not need to be defined throughout the entire game space; it may be defined in a part of the game space. When the voxel space is defined in a part of the game space, the shape of the voxel object is defined by the voxel data relating to the voxels in that voxel space, and the position of the voxel object in the game space is defined by the position of that voxel space in the game space. Furthermore, multiple voxel spaces may be defined in the game space, such as a main voxel space defined throughout the entire game space and sub-voxel spaces defined in a part of the game space. In this case, the game system 1 stores voxel data for each voxel space.

[0086] Figure 12 shows an example of voxel data. For each voxel defined in the game space, the voxel data includes density data, a first material ID, a second material ID, material mixing ratio data, and state data. In this embodiment, this data is set for each individual voxel.

[0087] The density data indicates the density, which is an index used to define the shape of the voxel object based on the voxel in question (specifically, the shape defined by the mesh described later). As will be explained in detail later, the position and shape of the surface of the voxel object (i.e., the mesh described later) are determined based on the density described above.

[0088] In this embodiment, density can take the range of an integer value from a lower limit (e.g., 0) to an upper limit (e.g., 255). In this embodiment, the game system 1 determines the surface shape of a voxel object based on density, such that a higher density value for a voxel tends to result in a larger proportion of the volume occupied by the area within the voxel object within that voxel, and a lower density value tends to result in a smaller proportion. Thus, density is an indicator that affects the proportion of the volume occupied by the area within the voxel object within that voxel. Density can also be said to be an indicator that shows the degree to which the space of the voxel is virtually occupied by its contents (i.e., the virtual contents of the voxel object). For example, if the density is 0, the inside of the voxel is empty; if the density is 255, the entire inside of the voxel is the contents of the voxel object; and if the density is a value between 0 and 255, the contents of the voxel object can occupy the inside of the voxel in proportion to the value. Based on the above density, the shape of the mesh, i.e., the surface shape of the voxel object, can be determined. A mesh can be described as the surface of the portion of a voxel that contains content, or as the boundary between the portion of a voxel that contains content and the portion that does not. Furthermore, the volume occupied by a region within a voxel object generated based on the above density does not need to be exactly equal to the volume indicated by the density. For example, the volume of a voxel object generated using a method like that shown in Figure 9 may differ from that generated using a method like that shown in Figure 14, even if both methods are based on the same density.

[0089] In other embodiments, density may represent either a state where the entire region within the voxel is occupied by the volume of the region within the voxel object, or a state where the region within the voxel does not include the volume occupied by the region within the voxel object. For example, density data may only take the values ​​of 0 or 1.

[0090] The first material ID and the second material ID are information indicating the material (in other words, substance) of the voxel. In this embodiment, a voxel may be assigned a material such as sand, rock, soil, or gold. In the game system 1, multiple types of materials are available that can be assigned to a voxel (see the material data shown in Figure 13). In this embodiment, up to two materials from the multiple types of materials available can be assigned to a single voxel. The first material ID is an ID indicating the first material assigned to the voxel, and the second material ID is an ID indicating the second material assigned to the voxel. As will be described in detail later, the material of a voxel object (i.e., the material assigned to the polygon of a voxel object) is determined based on the material assigned to the voxel.

[0091] As described above, in this embodiment, the voxel data includes an ID indicating the material, but in other embodiments, the voxel data may be a data structure that directly includes data indicating the content of the material (i.e., information such as the name, properties, and drawing settings, which will be described later).

[0092] The material mixing ratio data is an example of data that shows the ratio of each material in a given voxel. In this embodiment, since up to two material IDs can be set for one voxel, the material mixing ratio data that shows the ratio of one of the materials, the material indicated by the first material ID and the material indicated by the second material ID, can also represent the ratio of the other material. In this embodiment, the material mixing ratio is a value between 0 and 1 that indicates the proportion of the second material to the whole consisting of the first and second materials. For example, if the material mixing ratio set for a voxel is 0.4, it means that in that voxel, the first material and the second material are composed in a ratio of 0.6:0.4. As will be described in detail later, the appearance and properties of a voxel object are determined based on the material. The material mixing ratio is used to determine the appearance and properties of a voxel object. In other embodiments, the material mixing ratio may be a value that indicates the proportion of the first material. Also, the ratio of materials within a voxel may be represented by separate values ​​that indicate the proportion of each material. In particular, in other embodiments where it is possible to set not just two types of materials but three or more, the ratio within the material voxels will be represented as multiple values ​​that indicate the proportion of each material.

[0093] In this embodiment, it is not necessary for a voxel to have two types of materials assigned to it; it may have only one type of material assigned. For example, if a voxel has only one type of material assigned to it, the first material ID will indicate that material, and the material mixing ratio will be set to 0.

[0094] The status data indicates the state set for the voxel. The specific content and number of types of status data are arbitrary. In this embodiment, the status data includes data indicating the amount of damage set for the voxel. In other embodiments, the status data may include, for example, data indicating whether (and to what extent) the voxel is wet.

[0095] As described above, in this embodiment, the voxel data includes a material ID, so the game system 1 stores material data that defines the content of the material indicated by the material ID. Figure 13 is a diagram showing an example of material data. As shown in Figure 13, in the material data of this embodiment, each material is associated with a material ID and information on the name, properties, and rendering settings set for that material.

[0096] The names included in the material data are the names assigned to the material in question (e.g., soil, sand, grass, gold, etc.). During gameplay, the material names of voxel objects may be displayed. To enable this display, the material data includes information about the material's name.

[0097] The properties included in material data are the properties set for that material. Material properties are the properties that the voxel object to which the material is applied possesses in the game. The specific content and number of types of material properties are arbitrary. For example, at least one of the following pieces of information may be set as material properties. Hardness • weight • Slippery • Damage settings when the player character makes contact ·temperature • Can other objects be attached to a voxel object? • The amount of health restored to the player character when the player character destroys or acquires a voxel object. • The amount of in-game currency a player character acquires when they destroy or acquire a voxel object. In other embodiments, information different from that described above may be set as information indicating the properties of the material.

[0098] In this embodiment, the material data includes an ID indicating the properties of the material as information that identifies those properties (see Figure 13). Although not shown, the game system 1 stores property information for each available property, where the content of that property (for example, the weight and slipperiness values ​​mentioned above) is associated with the property ID. By referring to the above property information, the game system 1 can identify the specific content of the properties set for the material.

[0099] The rendering settings included in the material data are information indicating rendering-related settings, such as the texture used to render the voxel object to which the material is set. In this embodiment, the material data includes the ID of the texture used to render the voxel object to which the material is set as rendering setting information (see Figure 13). Although not shown, the game system 1 stores texture information for each prepared texture, associating the texture ID with the texture indicated by that texture ID. By referring to the above texture information, the game system 1 can identify the specific content of the texture set for the material. In other embodiments, in addition to texture information, arbitrary information related to shading settings may be set as rendering setting information. For example, reflectivity and information related to normals may be set.

[0100] Furthermore, the material data may include other data besides the data shown in Figure 13. For example, the material data may include data related to sound settings. For example, the data related to sound settings may be data that defines the footsteps that are output when the player character walks on the voxel object based on the voxel.

[0101] The material data may be in any format that can identify the properties and / or rendering settings of the material. For example, in other embodiments, the material data may have a data structure that directly indicates the properties and / or rendering settings of the material, instead of a data structure that includes a material ID and a texture ID.

[0102] [2-2. Updating Voxel Data] During gameplay, voxel objects are deformed when the aforementioned voxel data is updated. In this embodiment, when a game event that updates a voxel object (hereinafter referred to as an "update event") occurs, the game system 1 updates the voxel data. The specific content of the update event is arbitrary. An update event may be, for example, a character appearing in the game performing an action that deforms a voxel object (for example, a player character punching a voxel object), or an event that deforms a voxel object may occur (for example, an object thrown by a character making contact with a voxel object, or a bomb exploding).

[0103] Figure 14 shows an example of the game space when an update event occurs. The situation shown in Figure 14 is when the first player character 201 performs a punch action on a terrain object 202, which is a voxel object. As will be explained in detail later, in the example shown in Figure 14, the voxel data is updated so that the terrain object 202 around the location where the punch action by the first player character 201 hits is erased. This represents the destruction of the terrain object 202 by the punch action by the first player character 201.

[0104] In this embodiment, when an update event occurs, the game system 1 sets an update range (update range 203 in the example shown in Figure 14) in the game space for updating the voxel object. The position, shape, and size of the update range are arbitrary. The position of the update range may be determined, for example, based on the position where the object related to the update event that occurred (e.g., the player character that made the punch) and the voxel object came into contact. In the example shown in Figure 14, the position of the update range 203 may be determined based on the position where the punch by the first player character 201 hit. For example, the center position of the update range 203 may be the position where it hit, or a predetermined distance forward from the position where it hit. The shape and size of the update range may be predetermined to be a shape corresponding to the type of update event. For example, when an update event occurs due to a punch by the first player character 201, the shape and size of the update range may be determined as a sphere of a predetermined size, as shown in Figure 14. The size of the update range may also be determined according to a value indicating the degree of influence of the update event that occurred (e.g., the strength of the punch or the size of the explosion).

[0105] Game system 1 changes the density of voxels corresponding to the set update range. Voxels corresponding to the update range are, for example, voxels within the update range or voxels that overlap with the update range. As a result of the density change, the mesh of the voxel object is changed by the process described later, thereby changing the shape of the voxel object (visual shape and shape used for contact detection). In other embodiments, in addition to changing the density of voxels included in the update range, game system 1 may also change the material of the voxel (i.e., the first material, the second material, and the material mixing ratio) or change the state of the voxel.

[0106] In this embodiment, the game system 1 determines whether a voxel is included in the update range using an SDF (Signed Distance Field). The game system 1 sets an SDF that indicates the update range set in the game space and makes the above determination based on the value of the SDF. The SDF represents the distance from a defined shape to any given position with a sign. Figure 15 shows an example of an update range. In the example shown in Figure 15, a spherical update range is set in the game space. For example, in the example shown in Figure 15, the SDF is set such that for positions inside the shape represented by the SDF in the game space, the SDF value is negative, and for positions outside the shape represented by the SDF, the SDF value is positive. In this example, it is possible to determine whether or not a voxel is included in the update range based on whether the SDF value is positive or negative. Furthermore, by using the SDF value, it is possible to perform not only simple inside / outside determinations but also processing such as correction and interpolation.

[0107] The above example describes a change applied to a voxel object where the voxel object within the update range is deformed to appear as if it were deleted. However, the changes that can be applied to a voxel object using the update range are not limited to this. For example, a change may be applied to a voxel object where a new voxel object is added within the update range (i.e., the volume occupied by the area within the voxel object increases by the amount of the update range). Alternatively, a change may be applied to a voxel object where only the material of the voxels within the update range changes, without changing the voxel density. Furthermore, a combination of changes to voxel density and material may be applied.

[0108] [2-3. Calculation of Vertices] When the voxel density is updated as described above, the game system 1 sets vertices based on the updated voxel data. These vertices are those that can become the vertices of the mesh of the voxel object. As will be described in detail later, in this embodiment, the above vertices are simplified, and the simplified vertices become the vertices of the mesh of the voxel object.

[0109] Figure 16 shows an example of how vertices are set. In Figures 16 to 25 described below, voxels, vertices, meshes, etc. are represented in 2D for the purpose of making the diagrams easier to see and the explanations easier to understand. However, in reality, vertices and meshes are set in 3D space based on voxels in 3D space. In this embodiment, the game system 1 uses a method to set vertices at coordinates based on the positions and densities of multiple surrounding voxels in areas where voxels with a set density indicating existence (i.e., a density greater than or equal to the reference value described later) and voxels with a set density indicating non-existence (i.e., a density less than the reference value described later) are adjacent. The details of this method will be described below.

[0110] As described above, in this embodiment, the density set for a voxel is set in the range of 0 to 255. A voxel with a density of 0 represents being completely in the air, and a voxel with a density of 255 represents being completely filled. Densities between 0 and 255 are treated interpolatively and used to determine vertices. In this embodiment, voxels with a density greater than or equal to a reference value are virtually treated as being inside the object, and voxels with a density less than the reference value are virtually treated as being outside the object. Alternatively, voxels with a density greater than or equal to a reference value are virtually treated as existing voxels, and voxels with a density less than the reference value are virtually treated as non-existent voxels. It is not necessary to define only voxels with a density of 0 as being outside the object (i.e., the reference value = 1); the reference value can be, for example, 128. In the example shown in Figure 16, the density of voxel 211 and the other outer voxels is set to 0, the density of voxel 212 is set to 100 (below the reference value), and the densities of voxels 213 and 214 are set to 150 and 210 (above the reference value). In this embodiment, the game system 1 generates vertices between voxels with a density above the reference value and voxels with a density below the reference value. Specifically, for each region spanning eight adjacent voxels (four in the diagram) (the region enclosed by dotted lines in the diagram), a decision is made as to whether or not to generate a vertex. In other words, vertices are generated in regions that span both voxels with a density above the reference value and voxels with a density below the reference value. The coordinates of the vertices are determined by comparing the densities of adjacent voxels along the XYZ axes and interpolating based on the density difference. Furthermore, by setting normal information that defines the position and orientation of the straight line connecting the vertices, the coordinates of the vertices can be calculated based on the normal information. Furthermore, normal information may be stored in advance for at least some of the voxels, or if it is not stored, the normal information may be calculated based on the density of adjacent voxels. In Figure 16, since the density of voxel 212 is below the standard value, voxel 212 is treated as outside the object when determining the presence or absence of a vertex, but the density value of voxel 212 itself is used in calculating the coordinates of the generated vertices.If the baseline value is set lower than the density of voxel 212, the result will be an increase in the number of vertices on the upper right and upper left sides of voxel 212 in Figure 16.

[0111] By setting vertices as described above, when generating a mesh connecting each set vertex (or each vertex after the simplification process described later has been applied to each set vertex), it is possible to generate a shape with a volume that reflects the density of each voxel to some extent. However, depending on the relationship with adjacent voxels, it is possible that voxels with a density of 0 may include some areas within the object, or voxels with a density of 255 may include some areas outside the object. Also, in this embodiment, voxels below a certain threshold are treated as being outside the object, so the volume is smaller because there are fewer vertices compared to when they are treated as being inside the object. Thus, it is not necessary to calculate the polygon mesh so that the volume strictly corresponds to the density value.

[0112] [2-4. Determining the material of the vertices] Game system 1 determines the material for each vertex set as described above. The material of a vertex is determined based on the material of the voxels surrounding that vertex. The voxels surrounding a vertex are, for example, the voxels used to determine whether or not to generate that vertex (i.e., voxels that overlap with the "region spanning voxels" described above). In other embodiments, the voxels used to determine the material of a vertex and the voxels used to determine whether or not to generate a vertex do not need to be the same and may be different.

[0113] Figure 17 shows an example of a method for determining the material of a vertex. In the example shown in Figure 17, vertex 219 is set with respect to four voxels 215-218, and these four voxels 215-218 are the "voxels surrounding the vertex" mentioned above. In actual 3D space, the number of voxels surrounding a vertex is eight. Also in the example shown in Figure 17, voxel 215 is set to have a density of 255, a first material of "sand", and a material mixing ratio of 0 (i.e., first material:second material = 1:0, or the second material does not need to be set). Voxel 216 is set to have a density of 0 (the first and second materials do not need to be set). For voxel 217, the density is set to 204, the first material is "sand", the second material is "grass", and the material mixing ratio is 0.3 (i.e., first material:second material = 0.7:0.3). For voxel 218, the density is set to 153, the first material is "soil", the second material is "grass", and the material mixing ratio is 0.4 (i.e., first material:second material = 0.6:0.4). The coordinates indicating the position of vertex 219 are set to (X,Y)=(0.8,0.6). The coordinate system for these coordinates is one in which the left-right direction in Figure 17 is the X-coordinate and the up-down direction is the Y-coordinate, with the center position of the bottom-left voxel 217 among the center positions of voxels 215-218 (positions of the white circles shown in Figure 14) being (0,0).

[0114] When determining the material of a vertex, the game system 1 calculates an evaluation value for each material in the surrounding voxels based on the density of that material and a weight value based on the distance from the voxel to the vertex. First, the weight value is calculated for each voxel, and is calculated so that it becomes larger the closer the distance from the center position of the voxel to the vertex. In this embodiment, when the center position of the voxel is (x1, y1) and the coordinates of the vertex are (x2, y2), the weight value for a given voxel is calculated according to the following equation (1). (Weight value) = |(1-x1)-x2|·|(1-y1)-y2|…(1) In the example shown in Figure 17, the weight values ​​for each voxel 215 to 218 calculated according to equation (1) above are as follows: (Weight value of voxel 215) = |(1-0)-0.8|·|(1-1)-0.6| = 0.12 (Weight value of voxel 216) = |(1-1)-0.8|·|(1-1)-0.6| = 0.48 (Weight value of voxel 217) = |(1-0)-0.8|·|(1-0)-0.6| = 0.08 (Weight value of voxel 218) = |(1-1)-0.8|·|(1-0)-0.6| = 0.32

[0115] Furthermore, game system 1 calculates the material density for each voxel. Here, material density is the value obtained by multiplying the density of the voxel by the proportion of the material set for that voxel that is occupied by that material. In this embodiment, the voxel density is the value normalized from the above values ​​of 0 to 255 to a value of 0 to 1. In the example shown in Figure 17, for voxel 215, the only material set is sand, so the proportion of sand material is 1, and the density of that voxel is 1, so the density of sand material is 1. For voxel 216, the density is 0 and no material is set, so the material density is not calculated. Alternatively, if any material is set, the density of that material is 0. For voxel 217, the set ratios of sand material and grass material are 0.7 and 0.3, respectively, and the density of the voxel is 204 / 255=0.8. Therefore, the density of the sand material is 0.7·0.8=0.56, and the density of the grass material is 0.3·0.8=0.24. For voxel 218, the set ratios of soil material and grass material are 0.6 and 0.4, respectively, and the density of the voxel is 153 / 255=0.6. Therefore, the density of the soil material is 0.6·0.6=0.36, and the density of the soil material is 0.4·0.6=0.24.

[0116] The game system 1 then calculates the above evaluation value for each material based on the weight value and the density of the material. In this embodiment, the evaluation value of a material is the sum of the density of the material calculated for each voxel, weighted according to the weight value for each voxel, for all surrounding voxels. In the example shown in Figure 17, the evaluation value of the sand material is 1·0.12+0.56·0.08=0.1648, since the material density for voxel 215 is 1 and the weight value is 0.12, and the material density for voxel 217 is 0.56 and the weight value is 0.08. Similarly, the evaluation value of the grass material is 0.24·0.08+0.24·0.32=0.096, since the material density for voxel 217 is 0.24 and the weight value is 0.08, and the material density for voxel 218 is 0.24 and the weight value is 0.32. Furthermore, the evaluation value of the soil material is calculated as follows: for 218 voxels, the material density is 0.36 and the weight value is 0.32, so 0.36 * 0.32 = 0.1152.

[0117] Game System 1 determines the vertex material based on the evaluation value of each material. Specifically, a predetermined number of materials are selected as vertex materials in order from those with the highest evaluation values. In this embodiment, the two materials with the highest evaluation values ​​are selected as vertex materials. In the example shown in Figure 17, the evaluation values ​​of the sand, grass, and soil materials are 0.1648, 0.096, and 0.1152, respectively, so the vertex materials are determined to be the sand material and the soil material. Game System 1 also calculates the ratio of the two selected materials based on the evaluation values. In this embodiment, the ratio of the two materials may be expressed as a second material ratio, which is the proportion of the second material to the whole, similar to the material mixing ratio described above. In the example shown in Figure 17, for example, if the first material is soil and the second material is sand, the second material ratio is shown as 0.1648 / (0.1648+0.1152)≈0.59. In other embodiments, the value representing the ratio of the two materials may be a value indicating the proportion of the first material. Alternatively, separate values ​​representing the proportion of each material may be used.

[0118] In this embodiment, the game system 1 generates and stores vertex data indicating the position of a vertex, the material IDs of the first and second materials set on the vertex, and the ratio of the materials. However, the method for managing the materials set on the vertices is arbitrary. In other embodiments, the vertex data may be a data structure that includes data that directly indicates the contents of the first and second materials.

[0119] As described above, in this embodiment, for each vertex, the game system 1 calculates a priority parameter (e.g., an evaluation value) for each material ID contained in the voxel data of the surrounding voxels, based on the voxel data. Then, based on the priority parameter, it selects up to a predetermined number (in this case, 2) of the highest priority material IDs and determines them as the material IDs for the vertex. Note that the specific parameters used as priority parameters are not limited to the evaluation value described above. For example, in other embodiments, an evaluation value calculated using the density of the material may be used as the priority parameter instead of using the weight value described above.

[0120] In this embodiment, the evaluation value, which is an example of a priority parameter, is calculated based on the density of multiple voxels surrounding the vertex, so that the priority of the material set on the denser voxels is increased (i.e., the evaluation value of the material increases, making it more likely to be selected). This allows the material of a vertex to be determined in accordance with the density set on the voxels.

[0121] Furthermore, in this embodiment, the evaluation value, which is an example of a priority parameter, is calculated based on the distance from the reference position (specifically, the center position) of multiple voxels surrounding the vertex to the vertex in question, so that the priority of the material set on the voxel closest to the vertex is increased. This makes it possible to determine the material of a vertex by reflecting the distance between the voxel and the vertex.

[0122] Furthermore, in this embodiment, the evaluation value, which is an example of a priority parameter, can be said to be calculated based on the material mixing ratio of multiple voxels surrounding the vertex, so that materials with a higher material mixing ratio have a higher priority. According to this, when multiple materials are set for a single voxel, the material of the vertex can be determined by reflecting the ratio of each material.

[0123] [2-5. Simplification of Vertices] In this embodiment, the game system 1 simplifies each vertex calculated as described above. Specifically, the game system 1 reduces the number of vertices by replacing some of the vertices calculated as described above with a single vertex. As will be described in detail later, the coordinates (i.e., position) and material of the replaced vertices are set based on the multiple vertices before replacement. This simplification reduces the number of vertices and polygons that make up the mesh of the voxel object, thereby reducing the amount of memory used for processing and reducing the processing load.

[0124] In this embodiment, the game system 1 simplifies by representing each vertex using SVO (Sparse Voxel Octree). Figure 18 shows an example of vertex simplification. In Figure 18, one square shown by the solid line in Figure 18(a) represents one vertex partition region. Here, a vertex partition region is a square region with the center position of the voxel as its vertex (in actual 3D space, a vertex partition region is a cube or cuboid), and is the region with the dotted lines as its edges in Figures 16 and 17 described above. Also, in Figure 18, a vertex partition region with the letter "v" inside indicates a vertex partition region where a vertex is set.

[0125] In this embodiment, the game system 1 determines whether simplification is possible for vertices within a predetermined number of adjacent vertex division regions (four in Figure 18, eight in actual 3D space). If it is determined that simplification is possible, simplification is performed for the vertices within that predetermined number of vertex division regions.

[0126] Figure 18(a) shows the state before simplification. In the example shown in Figure 18, it is assumed that the vertex division regions within the area enclosed by the dotted line are determined to be simplifiable. At this time, the game system 1 performs simplification so that the vertices in each of the predetermined number of vertex division regions determined to be simplifiable are replaced with a single vertex (see Figure 18(b)). As a result, the vertices in the predetermined number of vertex division regions are simplified to a single vertex.

[0127] In this embodiment, the game system 1 performs simplification in multiple stages. The number of stages is arbitrary, but Figure 18 illustrates and explains up to the second stage. Figure 18(b) shows the state after the first stage of simplification, and Figure 18(c) shows the state after the second stage of simplification. In the second stage of simplification, it is determined whether or not simplification is possible for the vertices that were created by the first stage of simplification. In the example shown in Figure 18, it is determined that simplification is possible for the vertex division region enclosed by the dotted line in Figure 18(b), and as a result, the vertices in that vertex division region are simplified, resulting in the state shown in Figure 18(c). Note that the criteria for determining whether or not simplification is possible in the first stage and the criteria for determining whether or not simplification is possible in the second stage may be the same or different.

[0128] The specific method for determining whether simplification is possible is arbitrary. In this embodiment, the conditions used for the above determination are a condition relating to the shape of the voxel object and a condition relating to the material. In this embodiment, if both the condition relating to the shape of the voxel object and the condition relating to the material are satisfied, it is determined that simplification is possible, and if at least one of the conditions relating to the shape of the voxel object and the condition relating to the material is not satisfied, it is determined that simplification is not possible.

[0129] The shape-related condition is, for example, that the shape of each vertex before simplification does not change significantly from the shape of each vertex after simplification. For example, whether or not the shape of each vertex changes significantly before and after simplification can be determined by calculating an index that shows the error between the mesh before simplification and the mesh after simplification, and determining whether or not this index is below a predetermined tolerance value. Also, for example, if the shape of each vertex before simplification is hollow, but the shape of each vertex after simplification is not hollow (i.e., the information that it is hollow is lost due to simplification), the shape-related condition is determined not to be met. Whether or not the above case occurs can be determined, for example, based on the density of each voxel corresponding to the vertex division region to be judged. Also, for example, if the shape of each vertex before simplification is a shape that can only be represented by two or more vertices and cannot be represented by one vertex, the shape-related condition is determined not to be met. The same conditions as in conventional methods using SVO may be used for the shape-related conditions of the voxel object.

[0130] Furthermore, as a condition regarding materials, in this embodiment, the condition is the number of material types set for each vertex within the predetermined number of vertex division areas that are subject to simplification. Figure 19 is a diagram showing an example of a material condition. Figure 19(a) shows the case where the materials of vertices 221 to 224 are (grass), (grass), (grass and soil), and (grass and soil), respectively, and Figure 19(b) shows the case where the materials of vertices 221 to 224 are (grass and sand), (grass), (grass and soil), and (grass and soil), respectively. In this embodiment, the material condition is that the total number of material types set for each of the above vertices subject to simplification is less than or equal to a predetermined number. For example, the material condition is that it is less than or equal to the number of materials that can be set for one vertex. In this embodiment, the predetermined number is 2. For example, in the case of Figure 19(a), the total number of material types set for each of the vertices 221 to 224 subject to simplification is 2 types, grass and soil, so the material condition is satisfied. In this case, provided that the above-mentioned conditions regarding the shape of the object are met, each vertex 221-224 is determined to be simplifiable. On the other hand, in the case of (b) shown in Figure 19, the total number of material types that can be set for each vertex 221-224 that is subject to simplification is three types: grass, soil, and sand, so the material conditions are not met. In this case, regardless of whether the above-mentioned conditions regarding the shape of the object are met or not, each vertex 221-224 is determined to be unsimplifiable.

[0131] In addition, in Game System 1, even if materials are strictly classified as different types, multiple types of materials may be provided that have the same set properties but different appearances. Some of these multiple types of materials may be treated as the same type when determining the conditions related to materials. For example, regarding soil materials, there may be multiple types of soil materials that have the same properties but similar appearances (e.g., texture color and pattern). In such cases, Game System 1 may treat these multiple types of soil materials as the same type when determining the conditions related to materials.

[0132] In this embodiment, similar to voxels, up to two types of materials can be set for vertices. However, in this embodiment, if the total number of material types set for each vertex subject to simplification is three or more, simplification will not be performed. That is, if the total number of material types exceeds the number of materials that can be set for a single vertex, simplification will not be performed. Therefore, even if the number of vertices is reduced through simplification, the material information set for the vertices will not be lost due to the simplification, and the material information can be maintained.

[0133] In this embodiment, the material of the simplified vertex is determined based on the material of each vertex before simplification. Specifically, the game system 1 sets one or two types of materials set for the vertex before simplification as the first material and second material of the simplified vertex. This allows the material information to be maintained. The ratio of the simplified materials is determined based on the ratio of the materials of each vertex before simplification. In this embodiment, the ratio of the simplified materials is calculated in the same way as the method for calculating the ratio of each vertex's material using the evaluation value described above. That is, the game system 1 calculates a weight value based on the distance between the simplified vertex and the vertex before simplification, and calculates an evaluation value for each material based on this weight value and the density of the material at the vertex before simplification (the evaluation value of the material described in [2-4. Determination of Vertex Materials] above can be used as the density of the material here). Then, the ratio of the materials is calculated based on the calculated evaluation value of each material.

[0134] [2-6. Mesh Generation] In this embodiment, a mesh of a voxel object is generated based on each vertex that has been simplified as described above. Figure 20 shows an example of a mesh generated based on each vertex. The squares shown in Figure 20 represent the vertex division regions described above, or vertex division regions that have been combined into one through simplification. As shown in Figure 20, the game system 1 generates a mesh in which the vertex division regions are polygons whose sides are straight lines connecting adjacent vertices. Each polygon that makes up the mesh is either a triangle or a quadrilateral.

[0135] In this embodiment, the game system 1 generates two types of meshes: a display mesh and a collision detection mesh. The display mesh is used for displaying voxel objects. The collision detection mesh is used for collision detection of voxel objects. As will be described in detail later, by using the above two types of meshes, the game system 1 can process using meshes suitable for displaying voxel objects and collision detection, respectively.

[0136] In this embodiment, the game system 1 generates the display mesh and the judgment mesh based on the SVO data described above (i.e., based on each simplified vertex). This allows for improved processing efficiency by sharing the vertex data used to generate the two types of meshes. In other embodiments, the game system 1 may not need to simplify the vertices and may generate the display mesh and / or judgment mesh based on the unsimplified vertices.

[0137] In this embodiment, the game system 1 generates a judgment mesh with a simpler shape than the display mesh. Specifically, the game system 1 ensures that the number of vertices in the judgment mesh is less than the number of vertices in the display mesh. In this embodiment, the SVO data is data that holds the data of the vertices before simplification and the data of the simplified vertices in an octree structure, but also includes data used to determine whether simplification is possible or not. This data includes, for example, data of vertices calculated as candidates for the simplified vertices (referred to as provisional vertices), and the above-mentioned index data that indicates the error between the vertices before simplification and the provisional vertices. For example, the game system 1 may use vertices from the provisional vertices whose index is less than or equal to a predetermined threshold (this threshold shall be greater than the above-mentioned tolerance value) for generating the judgment mesh. This makes it possible to reduce the number of vertices in the judgment mesh to less than the number of vertices in the display mesh. By reducing the number of vertices in the judgment mesh to less than the number of vertices in the display mesh, the processing load due to collision detection can be reduced. Furthermore, since the number of vertices in the display mesh is not excessively reduced, the appearance of voxel objects can be represented in detail.

[0138] In other embodiments, the display mesh and the judgment mesh may be generated based on the same data or on different data. Furthermore, the display mesh and the judgment mesh may have the same shape (however, even in this case, the materials set for them may be different). Also, the number of vertices in the judgment mesh may be the same as the number of vertices in the display mesh, or it may be greater than the number of vertices in the display mesh.

[0139] [2-6-1. Determining the material for the display mesh] Next, an example of a method for determining the material and appearance of the display mesh will be described. In this embodiment, the game system 1 determines a material for each polygon that makes up the display mesh. As will be described in detail later, in this embodiment, the polygons corresponding to the above polygons are drawn using up to two types of textures corresponding to up to two types of materials. Therefore, the game system 1 ensures that, for each polygon that makes up the mesh, the number of materials set for one polygon is ultimately two or less. In other embodiments, three or more types of materials may be set. For example, in embodiments where there are three or more types of materials for voxels and three or more types of materials for vertices, the same number of materials may be set for each polygon.

[0140] In this embodiment, quadrilaterals may be formed as polygons constituting the display mesh (see Figure 20). When determining the material of the display mesh, the game system 1 first divides the quadrilateral constituting the display mesh into two triangles under certain conditions. The process of dividing a quadrilateral into two triangles will be described below with reference to Figure 21.

[0141] Figure 21 shows an example of how a quadrilateral constituting a mesh is divided into two triangles. Figure 21(a) shows the quadrilateral before division, formed by vertices 231-234, which are part of the mesh's vertices, and Figure 21(b) shows the two triangles obtained by dividing the quadrilateral. In the example shown in Figure 21, the materials set for vertices 231-234 are grass, soil, sand and grass, and grass, respectively.

[0142] In this embodiment, the game system 1 determines whether the division condition is met if the total number of material types set for each vertex of the quadrilateral is three or more. In this embodiment, the division condition is that by dividing the quadrilateral into two triangles, the total number of material types set for each vertex of the triangles can be reduced to two or less. If the division condition is met, the game system 1 divides the quadrilateral into two triangles, where the total number of material types set for each vertex is two or less. In the example shown in Figure 21, the materials set for each vertex 231-234 forming the quadrilateral are three types: grass, soil, and sand. Furthermore, if the quadrilateral is divided into a triangle formed by vertices 231, 232, and 234, and a triangle formed by vertices 231, 233, and 234, the materials set for each vertex of the former triangle will be two types: sand and grass, and the materials set for each vertex of the latter triangle will be two types: grass and soil (see Figure 21(b)). Therefore, since the division condition is met for the above quadrilateral, game system 1 divides the quadrilateral into two triangles.

[0143] Since there are two ways to divide a quadrilateral into two triangles, Game System 1 performs the above division using the method that satisfies the division condition if the division condition is satisfied for any triangle divided using at least one of the two methods. On the other hand, if the division condition is not satisfied for any triangle divided using either of the two methods, the division is performed using either method.

[0144] By performing the division as described above, game system 1 can generate two triangles, each with two or fewer materials assigned to each vertex, while minimizing the loss of information from the three or more materials assigned to each vertex of the quadrilateral. Here, as described above, each polygon constituting the mesh is rendered using up to two textures. Therefore, by performing the division described above, game system 1 can render polygons using two textures while minimizing the loss of information from the materials assigned to each vertex.

[0145] In this embodiment, the game system 1 sets polygons corresponding to the polygons after the above division has been performed. That is, the vertices of the polygons after the above division have been performed become the vertices of the polygons of the display mesh.

[0146] In this embodiment, the game system 1 determines the material of each polygon constituting the display mesh by selecting two materials if there are a total of three or more materials that can be set for each vertex of a single polygon. Figure 22 is a diagram showing an example of a method for determining the material of polygons constituting the display mesh. In the example shown in Figure 22, for vertex 241 of the triangular polygon constituting the display mesh, the first material is set to "grass", the second material to "soil", and the material ratio of the first material to the second material is set to 0.8:0.2. For vertex 242 of the same polygon, the first material is set to "grass", the second material to "sand", and the material ratio of the first material to the second material is set to 0.5:0.5. For vertex 243 of the same polygon, the first material is set to "sand", the second material to "soil", and the material ratio of the first material to the second material is set to 0.7:0.3.

[0147] If there are three or more different materials assigned to each vertex of a polygon, Game System 1 calculates a judgment value for each material. The judgment value is calculated as the sum of the ratios of each vertex to which that material is assigned. Then, Game System 1 selects the two materials with the largest judgment values ​​as the materials for that polygon. In the example shown in Figure 22, the judgment value for the grass material is 0.8 + 0.5 = 1.3, the judgment value for the sand material is 0.5 + 0.7 = 1.2, and the judgment value for the soil material is 0.2 + 0.3 = 0.5. Therefore, the materials selected for the polygon shown in Figure 22 are the grass and sand materials (see (a) in Figure 22).

[0148] The specific method for selecting the material of the polygons in the display mesh is arbitrary. In other embodiments, the material of the polygons in the display mesh may be selected by any method based on the information set at the vertices of the polygons. For example, the material of a polygon in the display mesh may be selected by identifying the material with the largest ratio at each vertex, and then selecting the material with the largest number of identified materials for each vertex as the material of that polygon.

[0149] In this embodiment, the material of the selected polygon is indicated by the material set on each vertex of the polygon. That is, when a polygon material is selected, the game system 1 changes the material set on each vertex of the polygon (i.e., the material ID included in the vertex data) to the selected material. In the example shown in Figure 22, vertices 241 and 243 are set to grass and soil and sand and soil materials, respectively, before the polygon material is selected (see Figure 22(a)). When the grass and sand material is selected as the polygon material as described above, the materials set on each vertex 241 and 243 are changed to grass and sand (see Figure 22(b)). Note that for vertex 242, the material set before selection is the same as the material of the selected polygon, so the material is not changed. As described above, when two types of materials are selected as the polygon material, the information of the third and subsequent types of materials set on each vertex of the polygon is deleted.

[0150] Furthermore, Game System 1 changes the ratio of materials set on a vertex in response to changes in the materials set on that vertex. For example, for vertex 241, the content changes from having a first material of grass and a second material of soil to having a first material of grass and a second material of sand. Here, since the proportion of sand material is 0, the material ratio of first material:second material = 1:0. In this way, the above changes formally modify the material of each vertex in order to represent the material of the polygon by the material of each vertex of that polygon.

[0151] As described above, the only material assigned to each vertex of a single polygon will be the material corresponding to the texture used for rendering, as described later. This makes it easier to perform rendering processes using textures.

[0152] It should be noted that the above changes may result in all materials being changed for a given vertex (i.e., no materials before and after the change match). For example, this might occur if the material set for a vertex before the change was soil, and the materials selected for the polygon are grass and sand. In such cases, the material ratio for that vertex may be set based on the material ratios for the other vertices of the polygon. For example, in the above example, if the first material set for one of the other vertices of the triangle polygon is grass with a material ratio of grass:sand = 1:0, and the material set for the other vertex is sand with a material ratio of sand:grass = 1:0, then the material ratio for that vertex may be set to grass:sand = 0.5:0.5. Game system 1 may also determine the material ratio for that vertex by considering the distance between that vertex and the other vertices (for example, based on a weight value that increases as the distance decreases).

[0153] As described above, in this embodiment, the game system 1 selects up to a predetermined number (in this case, 2) of material IDs set on the vertices included in each polygon (i.e., material IDs set on the vertices of the polygon corresponding to the polygon) and determines them as the material IDs for that polygon. This allows the game system 1 to reflect the materials set on the vertices in the appearance of the polygon while reducing the number of textures used during rendering.

[0154] In this embodiment, the game system 1 determines the polygon's material if the number of materials for all vertices constituting the polygon is less than or equal to the predetermined number, and if the number of materials exceeds the predetermined number, it selects a predetermined number of materials with high priority based on the priority parameter of each vertex (specifically, based on the determination value calculated based on the evaluation value described above) and determines them to be the polygon's material. This ensures that even if the total number of materials set for each vertex exceeds the predetermined number, the polygon's material can be set to a predetermined number or less, taking priority into consideration.

[0155] As described above, in this embodiment, the first and second materials set for each vertex of a polygon are changed so that there are two types of materials set for that polygon. However, when such a change is made, there is a possibility that inconsistencies may occur in the first and second materials set for vertices shared by two adjacent polygons.

[0156] Figure 23 shows an example of the materials that can be set for each vertex of two adjacent polygons. Figure 23 shows the state in which two polygons are formed by the vertices 231-234 shown in Figure 21 (Figure 21(b)). In the example shown in Figure 23, the material of the first polygon formed by vertices 231, 233, and 234 is determined to be grass and sand, so the first and second materials of these vertices should be set to grass and sand, respectively. On the other hand, the material of the second polygon formed by vertices 231, 232, and 234 is determined to be grass and soil, so the first and second materials of these vertices should be set to grass and soil, respectively. Therefore, in the example shown in Figure 23, there is a discrepancy in the materials that should be set for vertices 231 and 234, which are shared by the two polygons.

[0157] Therefore, in this embodiment, if there is a discrepancy in the materials to be set for vertices shared by two polygons, the game system 1 adds another vertex at the same position with respect to that vertex. Figure 23(b) shows an example where vertex 231' is added for vertex 231 and vertex 234' is added for vertex 234. In the example in Figure 23, the game system 1 sets the first and second materials for vertices 231 and 234 as grass and sand, respectively, according to the material of the first polygon. It also sets the first and second materials for vertices 231' and 234' as grass and soil, respectively, according to the material of the second polygon. In this way, by formally setting two vertices as vertices shared by two polygons (i.e., generating two vertex data with the same position but different materials), it is possible to suppress discrepancies in the materials set for vertices.

[0158] Game System 1 generates a display mesh consisting of polygons whose vertices and materials have been determined as described above. Game System 1 also renders voxel objects by drawing polygons based on the material information set for each vertex (i.e., the first material and the second material).

[0159] Figure 24 shows an example of applying a texture to a polygon. Figure 24 shows a triangular polygon formed by vertices 241-243, as shown in Figure 22. The material applied to vertices 241-243 is as shown in Figure 22(b).

[0160] The positions of polygon vertices are rendered by mapping, which blends the textures of the first and second materials set for each vertex using the ratio of the materials set for that vertex (i.e., this ratio as the blending ratio). The textures of the first and second materials used for rendering are the textures indicated by the rendering settings information associated with each material ID associated with the data of the vertex in the material data described above (see Figure 13). In the example shown in Figure 24, the position of vertex 241 has a material ratio of grass:sand = 1:0, so rendering is performed using only the grass texture. Similarly, the position of vertex 243 has a material ratio of sand:grass = 1:0 for the first material, so rendering is performed using only the sand texture. Finally, the position of vertex 242 has a material ratio of grass:sand = 0.5:0.5 for the first material and sand for the second material, so rendering is performed by blending the grass texture and the sand texture with a blending ratio of 0.5:0.5.

[0161] Furthermore, for positions other than polygon vertices, Game System 1 determines the blend ratio by interpolating the blend ratio at each vertex. Then, rendering is performed by mapping, which blends the textures of the two materials set for each vertex based on the interpolated blend ratio. Note that the specific interpolation method is arbitrary. As an example, the blend ratio between vertices is linearly interpolated. In Figure 24, positions where the grass material texture is applied at a high ratio are shown in white, and positions where the sand material texture is applied at a high ratio are shown in black. In the example shown in Figure 24, the grass texture is applied at vertex 241, the blend ratio of the sand texture increases towards vertex 243, the blend ratio of grass and sand becomes 1:1 at vertex 242, and only the sand texture is applied at vertex 243. In this way, by blending the two textures set for a polygon (i.e., set for each vertex of the polygon) at a blend ratio corresponding to the ratio of materials, the appearance at the boundary between different materials in the display mesh can be made natural. This makes the appearance of a display mesh with multiple types of materials set to it more natural.

[0162] [2-6-2. Determining the material of the mesh used for judgment] Next, an example of a method for determining the material of the detection mesh will be described. As will be explained in detail later, in this embodiment, collision detection of voxel objects is performed using the detection mesh, and processing may be performed according to the material of the voxel object that has been detected as having a collision. Therefore, in this embodiment, the material of the detection mesh is also determined.

[0163] In this embodiment, the game system 1 ensures that for each polygon constituting the judgment mesh, only one type of material is assigned to each polygon. Specifically, the game system 1 determines the material assigned to a polygon of the judgment mesh based on the material information assigned to the vertices of that polygon (i.e., the first and second materials and the material ratio information).

[0164] Figure 25 shows an example of a method for determining the material of the polygons that make up the judgment mesh. Figure 25 shows an example of determining the material for the triangular polygon formed by vertices 241 to 243 shown in Figure 22. The material set for each vertex 241 to 243 is as shown in (a) of Figure 22.

[0165] When determining the material of a polygon, the game system 1 calculates a determination value for each material set for each vertex of the polygon. In this embodiment, the method for calculating the determination value is the same as the method for calculating the determination value used to select the material set for the polygons of the display mesh. The specific method for calculating the determination value is arbitrary. In other embodiments, the determination value may be calculated by any method based on the information set for the vertices of the polygons of the determination mesh.

[0166] In the example shown in Figure 25, the judgment values ​​for each material are the same as in Figure 22 above: the judgment value for grass material is 1.3, the judgment value for sand material is 1.2, and the judgment value for soil material is 0.5. Therefore, the grass material is selected as the material for the polygon shown in Figure 25.

[0167] As described above, in this embodiment, the game system 1, for each polygon, selects up to a predetermined number (here, 1) of material IDs from the material IDs set at the vertices included in the polygon (i.e., material IDs set at the vertices of the polygon corresponding to the polygon) and determines them as the material IDs for that polygon. This allows the game system 1 to keep the number of materials set on the judgment mesh below a predetermined number. This makes it possible to suppress the complexity of processing according to the type of material, which is performed according to the result of collision judgment using the judgment mesh. Note that the method for determining the material of the polygons of the judgment mesh is arbitrary and is not limited to the above. In other embodiments, the material of the polygons of the judgment mesh may be determined by any method based on the information set at the vertices of the polygon.

[0168] Furthermore, in this embodiment, up to two types of materials can be set for the polygons of the display mesh, while only one type of material can be set for the polygons of the detection mesh. This allows for a natural appearance using two types of textures for the polygons of the display mesh, and reduces the complexity of the processing performed on the detection mesh in response to the collision detection results. In other embodiments, the types of materials that can be set for the polygons of the display mesh and the detection mesh are arbitrary. The number of materials that can be set for the polygons of the display mesh and the number of materials that can be set for the polygons of the detection mesh may both be multiple, the same, or different.

[0169] In this embodiment, the number of material types set for a single voxel is limited to two, and the number of material types set for a single polygon in the display mesh is also limited to two. This allows the material information set in the voxel data to be reflected in the material of the display mesh while keeping the amount of data in the voxel data down. Furthermore, in this embodiment, the number of material types set for vertices set based on the voxel data is also limited to two (see Figure 17). This allows two types of materials to be set for vertices generated during the process of obtaining the display mesh from the voxel data, so that the material information set in the voxel data is reflected in the display mesh without any loss of material information during the process.

[0170] In other embodiments, the game system 1 may set different materials for vertices used to generate the display mesh and vertices used to generate the judgment mesh, with respect to the vertices set based on the voxel data. For example, the game system 1 may set up to two types of materials for vertices used to generate the display mesh, as described above, and set one type of material for vertices used to generate the judgment mesh. Then, for the polygons of the display mesh, two types of materials may be set in the same way as described above, and for the polygons of the judgment mesh, one type of material may be set based on one type of material set for each vertex of the polygon. When one type of material is set for vertices used to generate the judgment mesh, the material with the largest judgment value calculated for each material may be set as the material for that vertex. In the above, as in this embodiment, the number of types of materials set for one polygon in the display mesh can be limited to two, and the number of types of materials set for one polygon in the judgment mesh can be limited to one. Therefore, the material information set in the voxel data can be reflected in the display mesh, and the complexity of the processing performed according to the result of collision judgment using the judgment mesh can be suppressed.

[0171] As described above, in this embodiment, a display mesh and a detection mesh may be set for a single voxel object. However, depending on the game situation, it is not necessary for both a display mesh and a detection mesh to be set for a single voxel object simultaneously (for example, it is not necessary for both to be set in the processing of one frame). For example, the detection mesh may be generated in the range where collision detection is performed within the game space, and not generated in the range where collision detection is not performed. As an example, the game system 1 may generate a detection mesh for voxel objects within a predetermined range centered on the player character, and not generate a detection mesh for voxel objects outside that predetermined range, but only generate a display mesh.

[0172] Furthermore, the game system 1 may store data related to the generated mesh in memory for display meshes, and in frames after the mesh has been generated, use this data without re-executing the mesh generation process, except for the updated range. This reduces the processing load required to generate display meshes. Also, for collision detection meshes, the data related to the generated mesh may not be stored in memory, and meshes may be generated sequentially as needed (for example, whenever collision detection is required). This saves memory space used for mesh generation.

[0173] The above describes a method for generating each mesh (i.e., the display mesh and the judgment mesh) based on the modified voxel data when the voxel data is changed from its initial state. This method can also be used, for example, at the start of a game when generating each mesh based on the initial voxel data. However, the meshes based on the initial voxel data do not necessarily need to be generated based on the initial voxel data at the start of the game; they may be prepared in advance before the game starts.

[0174] In other embodiments, only one of the display mesh and the determination mesh described above may be set (i.e., the same mesh may be used for both display and determination). In this case, the display mesh may be used as both the display mesh and the determination mesh, or the determination mesh may be used as both the display mesh and the determination mesh.

[0175] [2-7. Processing using objects with materials set on the mesh] Next, referring to Figures 26 to 38, we will explain an example of a process that involves obtaining a material on a mesh and playing a game using an object to which that material has been set. In the following, we will assume that terrain objects such as the ground and walls are voxel objects, and we will explain an example in which an in-game effect occurs as a result of a collision detection when a player character performs an action.

[0176] The above-mentioned "in-game actions" refer to any changes that occur in the game, such as changes resulting from "processing that reflects the results of contact between objects." The "in-game actions" only need to be based on collision detection between a detection mesh and a detection shape corresponding to the object to be detected based on game processing (for example, a detection area set on an object such as a player character or a scream object). The above actions may occur on the object corresponding to the detection mesh, or on the object corresponding to the object to be detected. The content of the "in-game actions" may be associated with the material set on the polygon that was detected as a collision in the collision detection that causes the action to occur (i.e., the content of the action may be determined by the material).

[0177] Figure 26 shows an example of a game image illustrating the movement of a player character over terrain objects. In the game example described below, we will use an example in which a first player character 201 and a second player character 204 appear in the game space in which the game is played. The first player character 201's movements in the game space are controlled based on input from a controller operated by the first user. The second player character 204's movements in the game space are controlled based on input from a controller operated by the second user. Here, as shown in Figure 26, the second player character 204 is riding on a part of the first player character 201 (for example, the shoulder, arm, back, head, etc.). The second player character 204 can then move around the game space together with the first player character 201 while maintaining the above state. Therefore, when the first player character 201 moves within the game space based on input from a controller operated by the first user, the second player character 204 also moves along with it, allowing the first user to move not only the first player character 201 but also the second player character 204. The manner in which the first player character 201 and the second player character 204 move together within the game space is arbitrary. For example, the second player character 204 may always follow the first player character 201, or the second player character 204 may always be positioned floating above the first player character 201 or leading in front of it. Furthermore, the second player character 204 may be a part of the first player character 201, or it may be integrated with the first player character 201. For example, one arm or hand, one eye, part of clothing, accessories, ornaments, etc. of the first player character 201 may function as the second player character 204, and the first user and the second user may operate on different parts of a single first player character 201.

[0178] In the example shown in Figure 26, the material for some of the polygons of terrain object 252 in the mesh used to determine the terrain object (ground) is set to "lava". In addition, the material for the polygons other than terrain object 252 in the mesh used to determine the terrain object is set to "rock".

[0179] In the example shown in Figure 26, the game system 1 uses a collision detection mesh to determine whether a terrain object is in contact with the first player character 201 and the second player character 204. Specifically, it determines whether the collision detection mesh of the terrain object is in contact with a detection area set for the player character (for example, an area of ​​a predetermined shape set based on the position of the first player character 201). If a collision is detected between a polygon whose material is lava and the first player character 201 and the second player character 204, the system performs a process to reduce the health of the first player character 201 and / or the second player character 204 as a game action. In addition, the system performs a process to cause the first player character 201 and / or the second player character 204 to perform a predetermined reaction. The collision detection with the first player character 201 and the second player character 204 may be performed for each character individually, or it may be performed based on a single detection area representing both characters. Alternatively, the collision check with the first player character 201 may be performed, while the collision check with the second player character 204 is omitted.

[0180] In this embodiment, the lava material is assumed to have a property that reduces the health of the player character it comes into contact with (for example, a property that its temperature is above a predetermined value) as part of the property information included in the material data described above. The game system 1 generates an in-game action (in the above example, a reduction in the player character's health) based on the property information corresponding to the material set on the polygon in the collision mesh where collision has been detected by collision detection.

[0181] Furthermore, if a collision is detected between a polygon whose material is rock and the first player character 201 and the second player character 204, the process of reducing the player character's health will not be executed. Also, based on the collision, the first player character 201 (and the second player character 204) are controlled so that they cannot enter the inside of the polygon. Therefore, the player character can stand on or walk on the polygon. In this way, in this embodiment, by setting a material for each polygon, the game system 1 can execute different processes depending on which part of the voxel object other objects come into contact with. Furthermore, the content of the executed process can be made according to the type of material. In this embodiment, the player character can change the terrain object (for example, by deforming it or changing its material).

[0182] Furthermore, the content of the processing performed when a collision between a voxel object and another object is detected is arbitrary. For example, if the other object is a moving object such as a player character or an enemy character, the processing may include outputting the sound of the object's footsteps or displaying an effect (for example, an effect representing dust or splashes of water) at the point of contact. In this case, the game system 1 can make the footsteps sound different or the effects different depending on the type of material set on the polygon of the part of the voxel object that made contact.

[0183] Figure 26 is an example of a game image showing the second player character 204 acquiring a material on a judgment mesh in a terrain object and acquiring a scream object 253 to which that material is set. Figure 27 is an example of a game image showing the second player character 204 emitting a scream object 253. Figure 28 is an example of a game image showing the state after the second player character 204 has emitted the scream object 253.

[0184] In the upper diagram of Figure 26, in this embodiment, a cursor C is displayed that indicates the position within the displayed game space. The position indicated by the cursor C moves based on predetermined operation inputs from the controller operated by the second user (see Figure 38). As a first example, when the second user is operating the left controller 3 or the right controller 4 in a vertical orientation, the position of the cursor C is controlled to indicate a position based on operation using the mouse function or a position based on operation using the inertial sensor based on the movement and orientation of the entire left controller 3 or the right controller 4. As a second example, when the second user is operating using the left controller 3 and the right controller 4 set, the position of the cursor C is controlled to indicate a position based on the tilt direction and amount of the analog stick 32 (left analog stick) or a position based on operation using the mouse function of the left controller 3 or the right controller 4. As a third example, when the second user is operating using the second controller 7, the position of the cursor C is controlled to indicate a position based on the tilt direction and amount of the left analog stick or a position based on operation using the inertial sensor based on the movement and orientation of the entire second controller 7. In this way, cursor C can be moved up, down, left, or right on the display 12 based on the second user's operation described above. Note that cursor C may be superimposed on the game space image displayed on the display 12, or it may be displayed by being placed within the game space.

[0185] Game System 1 identifies the material of the location in game space corresponding to the position indicated by cursor C, and displays the name of the identified material near cursor C. For example, Game System 1 identifies the material of the location on the determination mesh of a terrain object in game space corresponding to the position indicated by cursor C. As an example, in the upper part of Figure 26, cursor C indicates a location where the material is part of the rock terrain object 251, and the "rock" material of the determination mesh corresponding to that location is identified, and the name of the identified material, "rock," is displayed near cursor C.

[0186] Next, in this embodiment, in response to instructions based on predetermined operation inputs from a controller operated by the second user (see Figure 38), the material identified by cursor C is set as the material for the scream object 253 emitted by the second player character 204. For example, when the ZR button (operation button 61 if the right controller 4 is being operated; the ZL button (operation button 39) may also be used if the left controller 3 is being operated) of the controller operated by the second user is pressed and held down, the material identified by cursor C is set as the material for the scream object 253 when the duration of this press and hold operation reaches a predetermined time. In the example shown in the lower part of Figure 26, a gauge indicating the duration of the press and hold operation is displayed inside cursor C, and when this gauge extends to its upper limit, it indicates that the material for the scream object 253 has been set to the "rock" material. When the material for the scream object 253 is set, an indicator showing the remaining number of rounds that can be fired from the scream object 253 is added and displayed near cursor C (see upper part of Figure 27). Note that some types of materials may not be set as materials for the scream object 253. For example, materials with an indestructible hardness or materials that inflict damage on the player character may not be set as materials for the scream object 253. In this embodiment, the material identified by cursor C and set as the material for the scream object 253 is the material on the judgment mesh, but in other embodiments, it may be in a different form. For example, the game system 1 may identify the material of the position on the display mesh of the terrain object in the game space corresponding to the position indicated by cursor C, or, if one of the judgment mesh and the display mesh is set, it may identify the material on the mesh of the other.Furthermore, the remaining number of bullets when the scream object 253 is set may be a predetermined fixed number, a number corresponding to the type of material being set, a number corresponding to the game stage, or a number corresponding to the type and level of the second player character 204.

[0187] As shown in the upper part of Figure 27, the screaming object 253, whose material has been set by the process described above, is emitted and moves toward a position in game space corresponding to the position of cursor C in response to a screaming action by the second player character 204, which is in response to a predetermined operation input from a controller operated by the second user (see Figure 38). Here, cursor C, which is the target of the screaming object 253's movement, can be moved based on the operation input from the controller operated by the second user as described above. The game system 1 then identifies the material of the position in game space corresponding to the position indicated by cursor C, and displays the name of the identified material near cursor C, similar to the process described above. In the example in the upper part of Figure 27, cursor C is pointing to a part of the terrain object 251 with the material "rock", so the material name "rock" is displayed near cursor C.

[0188] As shown in the upper and lower diagrams of Figure 27, when the ZR button (or ZL button if the left controller 3 is being operated) of the controller being operated by the second user is pressed, the scream object 253, to which the material has been set, moves at a predetermined speed toward a position in game space corresponding to the position of cursor C. The start of the scream object 253's movement may be simulated as if it were appearing from inside the second player character 204 (or the first player character 201), or as if it were appearing from the vicinity of the second player character 204 or the first player character 201. Furthermore, the remaining ammunition displayed by the indicator may be reduced by 1 when the scream object 253 starts moving.

[0189] The scream object 253 is a virtual object that appears in the game space when the second player character 204 screams. The scream object 253 is composed of a material set by the process described above, and its size and shape are arbitrary. For example, the scream object 253 is composed of a 3D object representing the words screamed by the second player character 204, with a texture corresponding to the set material (for example, a texture representing the surface of the set material) applied to it. In the example shown in Figure 27, the scream object 253 is composed of a 3D object representing the word "Wow" screamed by the second player character 204, with a texture representing the surface of a rock applied to it. The scream object 253 may be a non-voxel object or a voxel object. In the following explanation, an example in which the scream object 253 is composed of a non-voxel object will be used.

[0190] The game system 1 then sets an update range for updating the voxel object at the collision location based on the collision detection between the judgment area set on the scream object 253 and the judgment mesh of the other object when the scream object 253 collides with another object. In the example shown in the lower part of Figure 27, the update range 254 is set at the collision location based on the collision detection between the judgment area set on the scream object 253 and the judgment mesh of the terrain object 251, which is a voxel object. The position, shape, and size of the update range 254 in this embodiment are arbitrary. For example, the center position of the update range 254 may be the position where the scream object 253 and the judgment mesh of the terrain object 251 come into contact, or a position that is inside the terrain object 251 at a predetermined distance from the contact position. The shape and size of the update range 254 may be determined as a sphere of a predetermined size, regardless of the size of the scream object 253. The size of the update range 254 may also be determined according to the material of the scream object 253.

[0191] Game system 1 generates an in-game effect that modifies at least one of the density and material of voxels corresponding to the set update range 254. For example, game system 1: • Reduce the voxel density of voxel data corresponding to the update range of 254. • For voxels in voxel data corresponding to update range 254, increase the density and set the material to a predetermined material. - When the material of the mesh used for collision position determination and the material of the scream object 253 are in a predetermined combination, the material of the voxel in the voxel data corresponding to the update range 254 is changed to the predetermined material. Among several effects, including at least one of the above, one of the in-game effects will occur depending on the material type of the screaming object 253.

[0192] For example, in the example shown in Figure 28, the game system 1 reduces the density of voxels in the voxel data corresponding to the update range 254. This results in an in-game effect where the terrain object 251 appears to be destroyed and disappear at the collision location. For example, in this embodiment, the reduction of each voxel is controlled by rewriting the density of each voxel based on the SDF of each voxel. As an example, the density of voxels whose SDF is a negative distance is rewritten to a lower value as the absolute value of the distance increases, and the density of voxels whose absolute value is greater than a predetermined value is rewritten to a lower limit, thereby causing at least a portion of the terrain object 251 within the update range 254 to be removed. In the example shown in Figure 28, the surface 251a of the rock generated by the removal of a portion of the terrain object 251 due to the collision with the scream object 253 is shown to be newly exposed to the outside.

[0193] As another example, in the upper diagram of Figure 29, cursor C indicates a location where the material is part of the sand terrain object 270. The "sand" material of the determination mesh corresponding to that location is identified, and the name of the identified material, "sand," is displayed near cursor C.

[0194] Next, when the predetermined input from the controller operated by the second user (see Figure 38) continues for a predetermined amount of time, the material of the screaming object 271 is set to "sand," which is identified by cursor C. In the example shown in the lower part of Figure 29, a gauge indicating the duration of the above input is displayed inside cursor C, and when this gauge extends to its upper limit, it indicates that the material of the screaming object 271 has been set to "sand." When the material of the screaming object 271 is set, an indicator showing the remaining number of rounds that can be fired from the screaming object 271 is added and displayed near cursor C (see upper part of Figure 30).

[0195] As shown in the upper part of Figure 30, the screaming object 271, which has the "sand" material set, is emitted and moves toward the position in game space corresponding to the position of cursor C in response to the screaming action of the second player character 204, which is in response to a predetermined operation input from a controller operated by the second user (see Figure 38). Then, the game system 1 identifies the material of the position in game space corresponding to the position indicated by cursor C, and displays the name of the identified material near cursor C, similar to the process described above. In the example in the upper part of Figure 30, as in the example in the upper part of Figure 27, cursor C is pointing to a part of the terrain object 251 with the "rock" material, so the name of the material "rock" is displayed near cursor C.

[0196] As shown in the upper and lower diagrams of Figure 30, a predetermined input from the controller operated by the second user (see Figure 38) causes the screaming object 271, which has a "sand" material set on it, to move at a predetermined speed toward a position in game space corresponding to the position of cursor C. In the example shown in Figure 30, the screaming object 271 is constructed by applying a texture representing the surface of sand to a 3D object representing the word "Wow" shouted by the second player character 204.

[0197] Then, when the scream object 271 collides with another object, the game system 1 sets an update range for updating the voxel object at the collision location based on the collision detection between the detection area set for the scream object 271 and the detection mesh of the other object. In the example shown in the lower part of Figure 30, the update range 272 is set at the collision location based on the collision detection between the detection area set for the scream object 271 and the detection mesh of the terrain object 251, which is a voxel object. The position, shape, and size of the update range 272 are arbitrary, similar to the update range 254 described above.

[0198] Game system 1 generates an in-game effect that increases the density of voxels corresponding to the update range 272, which is set when a scream object 271, composed of sand material, collides with a terrain object 251, composed of solid rock material, and sets the material to a predetermined material. For example, as shown in Figure 31, game system 1 increases the density of voxels in the voxel data corresponding to the update range 272 and sets the material of those voxels with increased density to "sand" material. This generates an in-game effect that causes deformation as if a terrain object 273, composed of sand material, has been added to the collision site of the terrain object 251. For example, the increase of each voxel is controlled by rewriting the density of each voxel based on the SDF of each voxel. As an example, the density of voxels whose SDF is a negative distance is rewritten to a higher value as the absolute value of the distance increases, and the density of voxels whose absolute value is greater than a predetermined value is rewritten to an upper limit value, and the material of the rewritten voxels is set to "sand," so that a terrain object 273 made of sand material is piled on top of terrain object 251 which is at least a part of the update range 2752. Note that the material set for the voxels in the voxel data corresponding to the update range 272 (i.e., the material of the voxels whose density increases) may be the material of the scream object 271, the material set at the collision position of the judgment mesh of terrain object 251, or a material in which these materials are mixed in a predetermined ratio (for example, 1:1).

[0199] In this embodiment, various in-game effects may occur based on the type of material set for the screaming object and the type of material set for the collision position in the collision detection mesh of the object to be hit. For example, as illustrated in Figure 32, in the first example, the screaming object is set to a gold material, and the collision position in the collision detection mesh of the object to be hit is set to a general solid material. Furthermore, the property information included in the material data described above is set for the gold material to destroy the object it comes into contact with by an explosion. In this case, an explosion occurs within a predetermined range based on the collision position, resulting in an in-game effect that reduces the density of voxels in the voxel data corresponding to the update range set based on the collision position.

[0200] As a second example, a screaming object is assigned a salt material, and a fungal material is assigned to the collision location in the collision detection mesh of the object it collides with. Furthermore, the property information included in the aforementioned material data for the salt material is set to disinfect the object it comes into contact with. In this case, melting occurs within a predetermined range based on the collision location, resulting in an in-game effect that reduces the voxel density of the voxel data corresponding to the update range set based on the collision location.

[0201] As a third example, a screaming object is assigned a rock material, and a general solid material is assigned to the collision location in the collision detection mesh of the object it collides with. Furthermore, the property information included in the aforementioned material data for the rock material is set to destroy objects it comes into contact with. In this case, destruction occurs within a predetermined range based on the collision location, and an in-game effect occurs that reduces the voxel density of the voxel data corresponding to the update range set based on the collision location.

[0202] As a fourth example, a screaming object is assigned materials such as soil and sand, and a general solid material is assigned to the collision location in the collision detection mesh of the object it collides with. Furthermore, the property information included in the aforementioned material data is set so that materials such as soil and sand solidify on the object they come into contact with. In this case, by increasing the density of voxels in the voxel data corresponding to the update range set based on the collision location, and setting the material of those voxels to a predetermined material, an in-game effect occurs in which voxel objects of the predetermined material are piled up in a predetermined range based on the collision location.

[0203] As a fifth example, suppose a screaming object has an ice material set, and the collision location in the collision detection mesh of the object it collides with has a lava material set. Furthermore, assume that the ice material has the property of lowering the temperature of the object it comes into contact with (for example, the property that the temperature is below a predetermined value (for example, below freezing)) as part of the property information included in the material data mentioned above. In this case, the lava material is cooled by the ice material, causing an in-game effect in which the material of the voxel in the voxel data corresponding to the update range set based on the collision location above changes from lava to obsidian.

[0204] In other embodiments, the screaming objects exemplified in the first to fifth examples may be included in the screaming objects exemplified in other examples. For example, the screaming object with the rock material described in the third example may be included in the screaming object exemplified in the fourth example. Furthermore, screaming objects with materials not described in the above examples may be further included in any of the first to fifth examples.

[0205] Furthermore, in the above, the voxel object corresponding to the update range set by collision with the scream object is modified unconditionally. However, in other embodiments, the modification of the voxel object corresponding to the update range may be conditional on the amount of damage set on the voxel. For example, instead of unconditionally deforming the voxel object corresponding to the update range, the game system 1 may increase the amount of damage set on the voxel corresponding to the update range and modify the voxel object when the amount of damage exceeds a predetermined value. In this case, the amount of damage increase may be determined according to the scream object 253 that collides with the voxel object.

[0206] Furthermore, in this embodiment, when the first player character 201 performs an action of throwing a fragment object, an update range is set for updating the voxel object at the collision position based on the collision detection between the detection area set on the fragment object and the detection mesh of the other object. The game system 1 can then generate an in-game effect based on the action of the first player character 201 that changes at least one of the density and material of the voxels corresponding to the set update range.

[0207] The above-mentioned fragment object may or may not be a voxel object, and its material, size, and shape are arbitrary. In this embodiment, multiple fragment objects are placed in the game space, and they can also be generated by the actions of the first player character 201 described later. If the above-mentioned fragment object is a voxel object, a unique voxel space is defined for the fragment object, and a unique display mesh and a unique detection mesh are set based on the unique voxel data. The unique voxel space can be moved / rotated within the game space along with the defined fragment object, and the position and orientation (orientation) of the unique voxel space within the game space are controlled. Note that the voxels defined in the above-mentioned unique voxel space may be of a different size from the voxels that make up the terrain object, and the size of the voxels may be relatively small. In the following description, an example in which the fragment object is composed of voxel objects is used.

[0208] Figure 33 is a diagram showing an example of a game image illustrating the process of the first player character 201 pulling out a fragment object 256 from a terrain object 251. In this embodiment, the first player character 201 can perform an action (referred to as a "pulling action") in which they grasp the terrain object 251 and pull out a part of it as a fragment object 256 based on a predetermined operation input from a controller operated by the first user (see Figure 37). For example, if the first user is operating the left controller 3 alone or the right controller 4 alone, the pulling action is performed by pressing the SR button (operation button 44 or 66), or if the first user is operating the set of the left controller 3 and the right controller 4 or the second controller 7, the pulling action is performed by pressing the ZR button (for example, operation button 61). In response to the pulling action of the first player character 201, the game system 1 erases a part of the terrain object 251 and generates a fragment object 256.

[0209] For example, when a pull-out action is performed, the game system 1 executes the following process. For example, if the user inputs an operation to have the first player character 201 perform a pull-out action, the game system 1 has the first player character 201 perform an action such as digging forward and grabbing, and performs a collision check. If a collision is detected between the first player character 201 performing the pull-out action and the terrain object 251, an update range 255 is generated based on the position and orientation of the first player character 201. For example, the update range 255 is generated in a predetermined direction (for example, forward) relative to the first player character 201. The shape and size of the update range 255 may be predetermined according to the type and level of the action of the first player character 201. The game system 1 also reduces the density of voxels corresponding to the update range 255. Then, by updating the mesh in accordance with the reduction in voxel density, the terrain object 251 is deformed so that the part within the update range 255 is erased (see the lower diagram in Figure 33). In this embodiment, the density is reduced for each voxel corresponding to the update range 255, but the voxels whose density is reduced may be at least a portion of the voxels corresponding to the update range 255.

[0210] Furthermore, while the above assumes that the voxel object corresponding to the update range 255 is unconditionally deformed by the pull action, in other embodiments, the deformation of the voxel object corresponding to the update range 255 may be conditional on the amount of damage set on the voxel. For example, instead of unconditionally deforming the voxel object corresponding to the update range 255, the game system 1 may increase the amount of damage set on the voxel corresponding to the update range 255 and decrease the density of the voxel when the amount of damage exceeds a predetermined value. In this case, the amount of damage increase may be determined according to the action performed on the voxel object.

[0211] Furthermore, the game system 1 generates a fragment object 256 representing the erased portion of the terrain object 251. For example, as illustrated in the lower diagram of Figure 33, the game system 1 generates the fragment object 256 in the possession of the first player character 201 based on the pull action. The fragment object 256 is a voxel object and may be generated to have a shape corresponding to the erased portion of the terrain object 251, or it may have a predetermined shape. A unique voxel space is defined for the fragment object 256, which is different from the voxel space of the voxels corresponding to the terrain object 251, etc.

[0212] Game system 1 determines the material of the fragment object 256. For example, the material of the fragment object 256 is determined based on the material set for the polygons in the detection mesh of the terrain object 251 that come into contact with the update range 255. The material of the fragment object 256 is determined to be the same as one of the materials set for the polygons in the detection mesh that come into contact with the update range 255. This makes it possible to make the material of the fragment object 256 the same as the material of the erased portion of the terrain object 251. As is clear from the above explanation, the fragment object 256 is not actually part of the terrain object 251. However, because it is generated along with the erasure of a portion of the terrain object 251, and the material of the erased portion of the terrain object 251 is inherited by the fragment object 256, it is possible to give the user the impression that the first player character 201 has extracted a portion of the terrain object 251 through a pull action. As another example, the material of the fragment object 256 may be determined based on the material set for the voxel data in the voxels that come into contact with the update range 255.

[0213] In this embodiment, each type of material provided is assigned a priority, and the game system 1 determines the material with the highest priority (for example, the single material with the highest priority) among the materials set for each polygon of the judgment mesh within the update range 255 as the material for the fragment object 256. If the judgment mesh within the update range 255 includes polygons with different types of materials, it may be difficult for the user to predict what material the fragment object 256 will have, and the above-mentioned inconvenience may occur against the user's will. In contrast, in this embodiment, by assigning a priority to the material to be assigned to the fragment object 256, the possibility of the above-mentioned inconvenience occurring can be reduced. In other embodiments, the game system 1 may determine the material with the highest material mixing ratio among the materials set for each polygon of the judgment mesh within the update range 255 as the material for the fragment object 256. Furthermore, in addition to priority, settings may be made to exclude specific materials from the extraction target. For example, if the judgment mesh within the update range 255 includes polygons with the material of rock and polygons with the material of lava, and the material of the fragment object 256 is set to lava, then the first player character 201 will lose health when the first player character 201 grabs the fragment object 256 through the pull action (as explained in Figure 26, the lava material is set to have the property of reducing the first player character 201's health upon contact). For this reason, materials that inflict damage, such as lava, may be excluded from the pull target so that they are not included in the material of the fragment object 256.

[0214] Figure 34 is an example of a game image showing how fragment objects 258 are generated when the first player character 201 destroys a terrain object 251. In this embodiment, the first player character 201 can perform a punch action by predetermined input from a controller operated by the first user (see Figure 37). For example, if the first user is operating the left controller 3 alone or the right controller 4 alone, the punch action is performed by pressing the up button (operation button 35) or the B button (operation button 54). If the first user is operating the set of the left controller 3 and the right controller 4 or the second controller 7, the punch action is performed by pressing the Y button (for example, operation button 56). The game system 1, as an in-game effect resulting from the punch action, erases a part of the terrain object 251 and generates fragment objects 258, similar to the case of the pull-out action described above. Specifically, the terrain object 251 is deformed so that a part of it has been erased. In addition, unlike the pull-out action described above, if a punch action is performed, the fragment object 258 is not grasped by the first player character 201 after the punch action, but is placed around the location where the punch action was performed (see the lower diagram in Figure 34).

[0215] When a punch action is performed, the game system 1 specifically executes the following processes. For example, if the user inputs an operation to make the first player character 201 perform a punch action, the game system 1 makes the first player character 201 perform a punch action toward the front and performs a collision check. If a collision is detected between the first player character 201 performing the punch action and the terrain object 251, an update range 257 is generated based on the position and orientation of the first player character 201. For example, the update range 257 is generated in a predetermined direction (for example, forward) relative to the first player character 201. The position, shape, and size of the update range 257 due to the punch action may be the same as or different from the update range 255 due to the pull-out action. The game system 1 then reduces the density of voxels corresponding to the update range 257. As a result, similar to the pull-out action, the terrain object 251 is deformed by the punch action so that the portion within the update range 257 is erased (see the lower diagram of Figure 34). Furthermore, similar to the pull-out action, the game system 1 may, instead of unconditionally deforming the voxel objects corresponding to the update range 257, increase the amount of damage set for voxels within the update range 257 in accordance with the punch action, and decrease the density of the voxel in question when the amount of damage exceeds a predetermined value. In addition, the voxels whose density is reduced by the punch action may be at least a portion of the voxels corresponding to the update range 257.

[0216] Furthermore, the game system 1 generates fragment objects 258 corresponding to the erased portion of the terrain object 251. That is, based on the punch action, the game system 1 generates the fragment objects 258 without the first player character 201 holding them (for example, by placing them around the location where the punch action was performed). The fragment objects 258 are voxel objects and may be generated to have a shape corresponding to the erased portion of the terrain object 251, or they may have a predetermined shape.

[0217] Game system 1 determines the material of the fragment object 258. The material of the fragment object 258 is determined based on the material set for the polygons in the detection mesh of the terrain object 251 that come into contact with the update range 257. The material of the fragment object 258 is determined to be the same as one of the materials set for the polygons in the detection mesh that come into contact with the update range 257. This makes it possible to make the material of the fragment object 258 the same as the material of the erased part of the terrain object 251. In addition, by generating the fragment object 258 along with the erasure of a part of the terrain object 251, and by inheriting the material of the erased part of the terrain object 251 to the fragment object 258, it is possible to give the user the impression that a part of the terrain object 251 destroyed by the punch action of the first player character 201 was generated as the fragment object 258.

[0218] In this embodiment, the material of the fragment object 258 is determined to be the material that has the greatest decrease in voxel density among the materials set for polygons in the determination mesh that come into contact with the update range 257. This makes it possible to generate a fragment object 258 that more accurately reflects the material configuration of the part of the terrain object 251 that has been erased by the punch action.

[0219] The method for determining the material of the fragment object 256 or 258 extracted by the above-mentioned pull-out action or punch-out action is arbitrary. For example, the method for determining the material of the fragment object 256 or 258 may be the same for both the pull-out action and the punch-out action. Alternatively, for example, the material set on the most polygons among the materials set on each polygon of the determination mesh within the update range 255 or 257 may be determined as the material of the fragment object 256 or 258. Alternatively, for example, the material set on polygons that satisfy a predetermined condition (for example, polygons at the position that come into contact with the hand of the first player character 201 performing the pull-out action or punch-out action) among the polygons of the determination mesh within the update range 255 or 257 may be determined as the material of the fragment object 256 or 258. In other embodiments, multiple types of materials may be set on the fragment object 256 or 258.

[0220] In this embodiment, the user can perform various actions using the fragment objects generated by extracting them from terrain objects as described above. For example, in this embodiment, if the material of a fragment object is a specific material, the in-game effect corresponding to that specific material is applied to the fragment object, and the size of the fragment object is reduced as the game progresses.

[0221] Referring to Figures 35 and 36, an example is described in which the material of other voxel objects is changed by the first player character 201 performing a throwing action using the fragment objects generated as described above in the game space. Figures 35 and 36 are examples of game images showing a series of events in which the player character 201 throws the fragment object 260 into a terrain object 252 made of lava material.

[0222] In this embodiment, if the material of the fragment object extracted from the terrain object as described above is made of ice (fragment object 260 shown in Figures 35 and 36), the first user can change the material of the terrain object 252 by having the first player character 201 throw the fragment object 260 into the terrain object 252 which is made of lava. As described above, the first player character 201 will be in possession of the fragment object 260 by the extraction action or by the action of holding the fragment object after the punching action. As shown in the upper and lower figures of Figure 35, the first user can have the first player character 201 perform an action to throw the fragment object 260 that they are holding by inputting a predetermined operation (see Figure 37). For example, the throwing action described above is performed when the SR button (operation buttons 44 or 66) is pressed if the first user is operating either the left controller 3 or the right controller 4 alone, or when the first user is operating either the left controller 3 and the right controller 4 set or the second controller 7, the ZR button (for example, operation button 61) is pressed.

[0223] As shown in the upper and lower figures of Figure 35, when the first player character 201 performs an action to throw a fragment object 260, the fragment object 260 moves toward a position in game space corresponding to the position of the targeting reticle T. The targeting reticle T is displayed, for example, when the first player character 201 is holding a fragment object, and indicates the position in game space corresponding to the position where the targeting reticle T is displayed. The targeting reticle T is fixedly displayed at a predetermined position on the display screen (for example, the center of the display screen or a position shifted upward by a predetermined length from the center). Here, as will become clear later, the direction of the virtual camera can be changed based on predetermined operation inputs from the controller operated by the first user (see Figure 37). As a first example, when the first user is operating the left controller 3 or the right controller 4 in a horizontal orientation, the line of sight of the virtual camera changes based on the tilt direction and amount of the L button (operation button 38) pressed + analog stick 32 (left analog stick) or the R button (operation button 60) pressed + analog stick 52 (right analog stick). As a second example, when the first user is operating using the left controller 3 and right controller 4 set or the second controller 7, the line of sight of the virtual camera changes based on the tilt direction and amount of the analog stick 52 (right analog stick). When the line of sight of the virtual camera changes in this way, the position indicated by the fixed reticle T displayed on the display screen also changes. In other words, the first user can control the position in the game space corresponding to the position of the reticle T based on the operation described above. The reticle T is typically superimposed on the game space image displayed on the display 12, but in other embodiments, it may be displayed by being placed within the game space.

[0224] Game System 1, like cursor C, identifies the material of the position in game space corresponding to the position indicated by the targeting reticle T, and displays the name of the identified material near the targeting reticle T. For example, Game System 1 identifies the material of the position on the judgment mesh of a terrain object in game space corresponding to the position indicated by the targeting reticle T. In the example shown in the upper part of Figure 35, the targeting reticle T indicates a position where the material is part of the lava terrain object 252, and the "lava" material of the judgment mesh corresponding to that position is identified, and the name of the identified material, "lava," is displayed near the targeting reticle T. In this embodiment, even while the targeting reticle T is displayed, the cursor C described above can also be displayed simultaneously at a position based on the input from the controller operated by the second user. In the example shown in the upper part of Figure 35, cursor C indicates a position where the material is part of the rock terrain object 251, and the "rock" material of the judgment mesh corresponding to that position is identified, and the name of the identified material, "rock," is displayed near cursor C.

[0225] In the example shown in the lower diagram of Figure 35, the first player character 201 throws a fragment object 260 into a terrain object 252 made of lava material through a throwing action. Then, near the point where the fragment object 260 first contacts the terrain object 252, a portion of the terrain object 252 is cooled by the fragment object 260, causing a change in its material. Specifically, the game system 1 generates an update range that includes the contact point and changes a portion of the terrain object 252 by changing the material of the voxels of the terrain object 252 within this update range. In addition, the size of the fragment object 260 is reduced through scaling or other processes so that it takes on a shape that appears to have melted due to contact with the terrain object 252 made of lava material.

[0226] For example, the update range is set to a shape corresponding to the shape where the fragment object 260 first made contact with the terrain object 252, and the voxels of the terrain object 252 within the update range are set so that the lava material in those voxels becomes obsidian material. Specifically, the voxels within the update range corresponding to the terrain object 252 have their lava material changed to obsidian material. Then, based on the material of the changed voxels, the material of the display mesh and the detection mesh of the terrain object 252 is determined. In the lower diagram of Figure 35, the part of the terrain object 252 that has been changed to obsidian material is set to region 261. According to this, the appearance of the area 261 of the terrain object 252 that was made of lava material but has been changed to obsidian material can be made to look different from the appearance of the terrain object 252 made of lava material. This makes it easier to give the user the impression that the fragment object 260 has altered the lava material of the terrain object 252 by cooling it, and it is possible to represent the situation in which the lava object is cooled by the fragment object 260, which is made of ice material, and turns into obsidian.

[0227] Furthermore, the size of the fragment object 260 decreases over time as it remains in contact with the terrain object 252, which is made of lava material. When the size of the fragment object 260 falls below a predetermined threshold, the cooling effect of the fragment object 260 on the terrain object 252 ends, and the fragment object 260 is removed from the game space.

[0228] In the example shown in Figure 36, the fragment object 260 moves on the terrain object 252 while further contacting it from the position exemplified in the lower diagram of Figure 35. As a result of this movement, the terrain object 252 is modified as if the material has changed due to the further contact with the fragment object 260, causing it to cool down near the point of contact. In addition, the size of the fragment object 260 decreases as it takes on a shape that appears to have melted further due to further contact with the terrain object 252.

[0229] Specifically, in a similar manner to the method for changing the material described above, game system 1 generates a new update range that includes the location of further contact with the smaller fragment object 260, and further changes a part of the terrain object 252 by further changing the material of the voxels of the terrain object 252 in this new update range. In other words, game system 1 reduces the size of the new update range in proportion to the size of the smaller fragment object 260. Game system 1 generates the new update range so that it connects smoothly with the previously created update range. This results in a shape where the area where the material changes and the area where the material has already changed are smoothly connected each time an update range is generated (for example, area 261 shown in Figure 36). As a result, the area 261 in the terrain object 252 that has been changed from the lava material to the obsidian material can be further expanded, making it easier to give the user the impression that the fragment object 260 is expanding the altered area by further cooling and altering the lava material of the terrain object 252. Furthermore, by making the size of the fragment object 260 even smaller, it becomes easier to give the user the impression that the fragment object 260 has been further melted by the lava material of the terrain object 252.

[0230] Furthermore, the content of the material changes described above may be determined based on the material of the contacted terrain object, the material of the contacted debris object, or a combination of the materials of the contacted terrain object and the debris object. This allows for various changes to be made to the voxel objects that make up the terrain object or debris object.

[0231] Furthermore, in the example described above, the changes made to the other voxel object in response to the fragment object 260 coming into contact with it were to change the material of the other voxel object, but the changes made to the other voxel object are not limited to this. The above changes may also change the density of voxels in the other voxel object. For example, when the fragment object 260 comes into contact with the lava material area 252 of the terrain object, not only may the material be changed, but a change may also be made to decrease the density of voxels in the lava material. This makes it possible to represent a situation in the terrain object where the lava material is cooled and shrunk by the ice material fragment object 260 that it comes into contact with.

[0232] Furthermore, similar to the in-game effects generated by the screaming object 253 described above, the first player character 201 throwing a fragment object may generate an in-game effect that changes at least one of the density and material of the voxels corresponding to the set update range. For example, game system 1 may: • The density of voxels in the voxel data corresponding to the update range set by collision detection with fragment objects is reduced. - For voxels in the voxel data corresponding to the update range determined by collision detection with fragment objects, the density is increased and the material is set to the predetermined material. - When the material of the mesh used to determine the collision position with the fragment object and the material of the fragment object are in a predetermined combination, the material of the voxel in the voxel data corresponding to the update range is changed to the predetermined material. You may generate any of several effects, including at least one of them, depending on the material type of the fragment object.

[0233] Furthermore, as described above, in this embodiment, different operation inputs are possible depending on the type of controller used by the first user and the second user. Figure 37 shows an example of operation instruction content corresponding to operation input for each controller used by the first user. Figure 38 shows an example of operation instruction content corresponding to operation input for each controller used by the second user.

[0234] In Figure 37, when the first user operates the left controller 3 in a horizontal orientation, the movement speed and direction of the first player character 201 are controlled based on the input of the first user tilting the analog stick 32 (left analog stick). As a result, the movement of the second player character 204, which is riding on a part of the first player character 201, is also controlled along with the movement of the first player character 201, and therefore the movement speed and direction of the second player character 204 are also controlled. Based on the input of the first user pressing the up button (operation button 35), the first player character 201 performs a punch action. Based on the input of the first user pressing the SR button (operation button 44), the first player character 201 performs a pull-out action, a lift-up action, or a throw action depending on its state. Then, based on the input from the first user, who presses the L button (operation button 38) and tilts the analog stick 32 (left analog stick), the line of sight of the virtual camera and the position indicated by the aiming reticle T are controlled.

[0235] When the first user operates the right controller 4 in a horizontal orientation, the movement speed and direction of the first player character 201 are controlled based on the input of tilting the analog stick 52 (right analog stick) by the first user. This also controls the movement speed and direction of the second player character 204. Based on the input of pressing the B button (operation button 54) by the first user, the first player character 201 performs a punch action. Based on the input of pressing the SR button (operation button 66) by the first user, the first player character 201 performs a pull-out action, a lift-up action, or a throw action depending on the situation. Furthermore, based on the input of tilting the analog stick 52 (right analog stick) while pressing the R button (operation button 60) by the first user, the line of sight direction of the virtual camera and the position indicated by the aiming reticle T are controlled.

[0236] When the first user operates the set of left controller 3 and right controller 4 or the second controller 7, the movement speed and direction of the first player character 201 are controlled based on the input of tilting the analog stick 32 (left analog stick) by the first user. This also controls the movement speed and direction of the second player character 204. Based on the input of pressing the Y button (e.g., operation button 56) by the first user, the first player character 201 performs a punch action. Based on the input of pressing the ZR button (e.g., operation button 61) by the first user, the first player character 201 performs a pull-out action, a lift-up action, or a throw action depending on the situation. Furthermore, based on the input of tilting the analog stick 52 (right analog stick) by the first user, the line of sight direction of the virtual camera and the position indicated by the aiming reticle T are controlled.

[0237] In Figure 38, when the second user operates the right controller 4 in a vertical orientation, the display position of cursor C is controlled based on the second user's input using the mouse function of the right controller 4 or the input using the inertial sensor based on the movement and posture of the entire right controller 4. The material of the scream object 253 is set based on the second user's input of holding down the ZR button (operation button 61). The scream object 253 is emitted into the game space based on the second user's input of pressing the ZR button (operation button 61). Then, the line of sight of the virtual camera and the position indicated by the aiming reticle T are controlled based on the second user's input of tilting the analog stick 52 (right analog stick).

[0238] When the second user operates the left controller 3 in a vertical orientation, the display position of cursor C is controlled based on the second user's input using the mouse function of the left controller 3 or on the inertial sensor input based on the movement and posture of the entire left controller 3. The material of the scream object 253 is set based on the second user's input of holding down the ZL button (operation button 39). The scream object 253 is emitted into the game space based on the second user's input of pressing the ZL button (operation button 39). Then, the line of sight of the virtual camera and the position indicated by the aiming reticle T are controlled based on the second user's input of tilting the analog stick 32 (left analog stick).

[0239] When a second user operates the set of left controller 3 and right controller 4, the display position of cursor C is controlled based on the input of tilting the analog stick 32 (left analog stick) or the second user's input using the mouse function of right controller 4. The material of the scream object 253 is set based on the input of the second user holding down the ZR button (operation button 61). The scream object 253 is emitted into the game space based on the input of the second user pressing the ZR button (operation button 61). Then, the line of sight of the virtual camera and the position indicated by the crosshair T are controlled based on the input of the second user tilting the analog stick 52 (right analog stick).

[0240] When a second user operates the second controller 7, the display position of cursor C is controlled based on input by tilting the left analog stick or input using the inertial sensor based on the movement and posture of the entire second controller 7. Based on input by the second user holding down the ZR button, the material of the scream object 253 is set. Based on input by the second user pressing the ZR button, the scream object 253 is emitted into the game space. Then, based on input by the second user tilting the right analog stick, the line of sight of the virtual camera and the position indicated by the crosshair T are controlled.

[0241] Regarding the position of the virtual camera in the game space, since the virtual camera moves to follow the first player character 201 (and the second player character 204), it can be considered that the position of the virtual camera is controlled based on the operation input of the first user, which controls the movement of the first player character 201. On the other hand, according to the operation instructions described above, the direction of movement of the virtual camera can be controlled by both the operation input of the first user and the operation input of the second user. In this embodiment, if these operation inputs overlap, control by one operation input may be given priority. For example, if such operation inputs overlap, the control of the virtual camera's line of sight direction by the operation input performed first may be given priority, and control of the virtual camera's line of sight direction by the other operation input may be performed after the operation input has finished. As another example, if such operation inputs overlap, control of the virtual camera's line of sight direction by a predetermined operation input (for example, the operation input of the second user) may be given priority, and control of the virtual camera's line of sight direction by the other operation input may be performed if there is no preferred operation input. In other embodiments, the direction of movement of the virtual camera may be controlled by either the operation input of the first user or the operation input of the second user. For example, the position of the virtual camera may be controlled based on the operation input of the first user, but the direction of the virtual camera's line of sight may not be controlled (i.e., control is only possible based on the operation input of the second user). In this case, since the direction of the virtual camera's line of sight and the position of cursor C are controlled by the operation input of the second user, it becomes easier to aim at the scream object 253 in cooperative play with the first user.

[0242] Thus, in this embodiment, the first player character 201 and the second player character 204 are controlled to move according to the operations of the first and second users on each of the two controllers, and both the first player character 201 and the second player character 204 are controlled to move by the operation of one of the controllers, allowing the first and second users to play cooperatively.

[0243] Furthermore, in the aforementioned operation instructions, in operation modes where the controller used for operation has two analog sticks, different operation instructions are assigned to the tilt operation of each analog stick. On the other hand, in operation modes where the controller used for operation has one analog stick, the above assignment is not possible, so different operations are assigned to the operation instructions. Specifically, in the operation mode of the first user, different operation instructions are assigned depending on whether or not a predetermined operation button is pressed simultaneously. In the operation mode of the second user, the above different operation instructions are assigned to operations using the mouse function or inertial sensor instead of tilt operation of the analog stick. In this way, in this embodiment, appropriate operation instructions are assigned according to the operation mode used by the user, and intuitive user operation is possible even when using different controllers.

[0244] Furthermore, if the controller operated by the second user is capable of at least one of the following: operation using a mouse function, operation using an inertial sensor, and operation using a directional input unit (e.g., an analog stick), then control of cursor C based on any of these operations is possible. Therefore, in this embodiment, cursor C can be controlled by a wide variety of operation methods, allowing the second user playing cooperatively with the first user to select an appropriate operation method.

[0245] In the embodiment described above, the posture and orientation of the second player character 204 when the second player character 204 emits the scream object 253 are arbitrary. For example, the posture and orientation of the second player character 204 may be changed so that the second player character 204 sees the position in the in-game space indicated by the cursor C, which is the destination of the scream object 253, or the posture and orientation of the second player character 204 may be controlled independently of that position. Furthermore, the object to which the material of a specific position on the mesh used for determining terrain objects is obtained and the material is set can be any object. In addition, if the operation to emit the scream object 253 is performed before the scream object 253 is set or when the remaining ammunition count is already 0, a predetermined object consisting of a predetermined material or materials existing around the second player character 204 may be emitted from the second player character 204.

[0246] [3. Specific examples of processing in game systems] Next, we will explain specific examples of information processing in game system 1 with reference to Figures 39 to 42.

[0247] Figure 39 shows an example of various data used for information processing in the game system 1. Each piece of data shown in Figure 39 is stored in memory accessible by the main unit 2 (for example, flash memory 84, DRAM 85, and / or a memory card installed in slot 23). As shown in Figure 39, the game system 1 stores the game program. The game program is for executing the game processing in this embodiment (for example, the game processing shown in Figures 40 to 42). The game program includes the material data mentioned above (see Figure 13). The memory also stores the voxel data mentioned above (see Figure 12), update range data, mesh data, object data, etc. (see Figure 39).

[0248] The update range data is data indicating the above-mentioned update range. In the present embodiment, the update range is represented by the above-mentioned SDF.

[0249] The mesh data includes various data related to the mesh of the voxel object. As shown in FIG. 39, in the present embodiment, the mesh data includes SVO data, display mesh data, and determination mesh data. The SVO data is data that holds each vertex calculated from the voxel data in the above-mentioned SVO structure. In the present embodiment, the SVO data includes, in addition to the data indicating the position of each vertex, data indicating the material set for each vertex (for example, data indicating the ID of the material). The display mesh data includes various data related to the display mesh. Specifically, the display mesh data includes data indicating each vertex of the display mesh and data indicating the material set for each vertex (for example, data indicating the ID of the material). The determination mesh data includes various data related to the determination mesh. Specifically, the determination mesh data includes data indicating each vertex of the determination mesh and data indicating the material set for each vertex (for example, data indicating the ID of the material).

[0250] The object data includes various data related to objects other than the voxel object (for example, player characters, virtual objects, etc.). The object data is stored for each object that appears in the game space. The object data includes, for example, data indicating the position, speed, and state of the object. The object data includes voice object data. The voice object data includes data indicating the set material, remaining ammunition, type, position, speed, and state of the emitted voice object.

[0251] FIG. 40 is a flowchart showing an example of the flow of game processing executed by the game system 1. FIG. 41 is a subroutine showing an example of the first half of the process for controlling the operations of each object executed in step S12 in FIG. 40. FIG. 42 is a subroutine showing an example of the second half of the process for controlling the operations of each object executed in step S12 in FIG. 40. The execution of the game processing is started, for example, in response to the start of the game according to a user instruction during the execution of the above game program. Note that the processing loop consisting of a series of processes from steps S1 to S14 is executed once per frame in one cycle.

[0252] In this embodiment, the processor 81 of the main body device 2 executes the processes of each step shown in FIGS. 40 to 42 by executing the above game program stored in the game system 1. However, in other embodiments, some of the processes of each step above may be executed by a processor (for example, a dedicated circuit, etc.) different from the processor 81. Also, when the game system 1 can communicate with another information processing device (for example, a server), some of the processes of each step shown in FIGS. 40 to 42 may be executed in the other information processing device. Also, the processes of each step shown in FIGS. 40 to 42 are merely examples, and if the same result can be obtained, the order of the processes of each step may be changed, or another process may be executed in addition to (or instead of) the processes of each step.

[0253] Also, the processor 81 executes the processes of each step shown in FIGS. 40 to 42 using a memory (for example, DRAM 85). That is, the processor 81 stores the information (in other words, data) obtained by each processing step in the memory, and when using the information in subsequent processing steps, reads out and uses the information from the memory.

[0254] In Figure 40, the processor 81 acquires the operation data indicating user input (step S1) and proceeds to the next step. For example, the processor 81 acquires operation data (see Figure 8) output from the controller operated by the first user and the controller operated by the second user, respectively, via the controller communication unit 83 and / or terminals 17 and 21, as well as operation data output from the main unit 2 (e.g., touch panel 13).

[0255] Next, the processor 81 designates one of the game space objects that needs processing but has not yet been processed (including voxel objects defined by the unique voxel space) as the object to be processed, and performs the process of calculating the velocity of the designated object and the process of reflecting the results of contact between objects in the previous frame (step S2), and then proceeds to the next step. The velocity of the object is used in the process of step S12, described later, to calculate the position of the object in the current frame. For example, if the designated object is the first player character, the velocity of the first player character is calculated based on the operation data obtained in step S1. If the designated object is the second player character, the velocity of the second player character is calculated so as to move together with the first player character. If the designated object is an object that is not operated by the user (for example, a scream object or a fragment object), the velocity of that object is calculated based on rules predetermined in the game program. For example, the velocity of a fragment object is set to 0 if it is placed on a terrain object and not moving, to the same velocity as the player character if it is being held by the player character, and to a velocity that moves in the direction based on the position indicated by the targeting reticle T with the size determined by the above rules if it is released by the player character's throwing action. In addition, the velocity of a scream object is set to the velocity at which it continues to move after starting to move based on the direction and speed of movement set in step S53 described later. Specifically, the velocity of an object is calculated based on virtual physics calculations that include interactions between objects. For example, interactions such as repulsion from collisions between objects, friction from contact, falling due to virtual gravity, and deceleration due to virtual air resistance are reflected in the velocity determination.

[0256] Furthermore, the process that reflects the results of object contact in the previous frame includes processing that affects the objects if it is determined in the collision detection (step S11 described later) in the previous frame that objects have come into contact with each other. The above processing is, for example, as follows. - If it is determined that the first player character came into contact with a lava terrain object in the previous frame, the health of the first player character will be reduced. • If it is determined that the first player character made contact with a terrain object in the previous frame due to an action such as pulling or punching, then process to generate a fragment object. If the state of an object is changed during the processing of step S2 described above, the processor 81 updates the object data stored in memory for that object to reflect the changed state.

[0257] Next, the processor 81 determines whether an update event has occurred that updates the voxel object due to the object specified in step S2 (step S3). For example, the determination in step S3 is made based on the result of the collision determination in the previous frame (step S11, described later). For example, if it is determined that the first player character has come into contact with a terrain object in the previous frame due to a pull-out action or punch action, it is determined that an update event has occurred that erases part of the terrain object (see Figures 33-34). As another example, if it is determined that a scream object or a fragment object has collided with a terrain object in the previous frame, the in-game effect is determined based on the materials of both objects at the collision location, and it is determined that an update event has occurred based on that in-game effect (see Figures 27-32, 35-36). If an update event has occurred, the processor 81 proceeds to step S4. On the other hand, if no update event has occurred, the processor 81 proceeds to step S6.

[0258] In step S4, the processor 81 sets an update range in the game space for updating voxel objects and proceeds to the next step. For example, the specific details of the update range (e.g., position, shape, and size) are associated with each type of update event in the game program. The update range set in step S4 is set to be associated with the type of update event that was determined to occur in step S3. In step S4, the processor 81 stores data indicating the set update range in memory as update range data.

[0259] Next, the processor 81 makes changes to the voxels corresponding to the update range set in step S4 in accordance with the update event (step S5), and proceeds to step S6. For example, if the processor 81 deforms a voxel object within the update range so that it appears to be deleted or shrunk, or deforms it so that a voxel object appears to be added to the update range, it updates the voxel data stored in memory to change the density of the voxels corresponding to the update range (see [2-2. Updating Voxel Data] and [2-7. Processing Using Objects with Materials Set on a Mesh] above). Also, if the processor 81 changes the material of a voxel object within the update range, it updates the voxel data stored in memory to update at least one of the first material ID, second material ID, and material mixing ratio of the voxel corresponding to the update range (see [2-7. Processing Using Objects with Materials Set on a Mesh] above).

[0260] In step S6, the processor 81 determines whether the processing in steps S2 to S5 has been completed for all objects that require processing (including voxel objects defined by the unique voxel space). If the processing of all objects is complete, the processor 81 proceeds to step S7. On the other hand, if the processing of any object is not complete, the processor 81 returns to step S2 and repeats the process.

[0261] In step S7, the processor 81 updates the vertices of the voxel object in the game space and proceeds to the next step. For example, if the voxel data was updated in step S5, the processor 81 calculates new vertices based on the updated voxel data. The positions of the new vertices are calculated according to the method described in [2-3. Vertex Calculation] above. The material of the new vertices is calculated according to the method described in [2-4. Vertex Material Determination] above.

[0262] Next, the processor 81 simplifies the vertices (step S8) and proceeds to the next step. For example, the processor 81 simplifies each updated vertex according to the method described in [2-5. Simplification of Vertices] above. Then, the processor 81 updates the SVO data stored in memory to show each vertex obtained by the processes in steps S7 and S8. Note that the processes in steps S7 and S8 do not need to recalculate the vertices for the entire voxel data, and may be performed only on the parts of the voxels whose contents were changed in the process in step S5.

[0263] Next, the processor 81 updates the display mesh of the voxel object based on the SVO data stored in memory (step S9), and proceeds to the next step. The position of each vertex of the display mesh and the material of each polygon of the display mesh (for example, the material set for each vertex of the polygon) are calculated according to the methods described in [2-6. Mesh Generation] and [2-6-1. Determination of Display Mesh Material] above. In step S9, the processor 81 updates the display mesh data stored in memory to show the updated position and material of each vertex of the display mesh. The processor 81 may start the processing from step S10 onwards, described later, without waiting for the completion of step S9, and execute it in parallel. In that case, step S9 must be completed before the start of step S13, described later.

[0264] Next, the processor 81 updates the determination mesh of the voxel object based on the SVO data stored in memory (step S10), and proceeds to the next step. The position of each vertex of the determination mesh and the material of each polygon of the determination mesh (for example, the material set for each vertex of the polygon) are calculated according to the methods described in [2-6. Mesh Generation] and [2-6-2. Determination of the Material of the Determination Mesh] above. In step S10 above, the processor 81 updates the determination mesh data stored in memory to show the updated position and material of each vertex of the determination mesh.

[0265] In the example shown in Figure 40, the process of generating the judgment mesh in step S10 is performed every frame, but the process of generating the judgment mesh does not have to be performed every frame. For example, if the collision judgment process in step S11, which will be described later, is performed only on frames that satisfy predetermined conditions, the processor 81 may perform the process of generating the judgment mesh on the frame in which the collision judgment is performed. The processor 81 may also perform the process of generating the judgment mesh for voxels within the area in the game space in which the collision judgment in step S11 is performed. For example, in a situation where there are no objects other than voxel objects that are subject to collision judgment around the player character in the game space (i.e., a situation where only collision judgment between the player character and the surrounding voxel objects needs to be performed), the processor 81 may perform the process of generating the judgment mesh for voxels within a predetermined range relative to the player character.

[0266] Next, the processor 81 performs collision detection for each object in the game space based on the detection mesh data and object data stored in memory (step S11), and proceeds to the next step. For example, the processor 81 uses the detection mesh for voxel objects and a predetermined shape detection area set for non-voxel objects to perform collision detection. In this embodiment, the collision detection in step S11 is performed taking into account the speed calculated in step S2. In other words, the processor 81 performs collision detection using the position of each object when it moves at the above speed.

[0267] In this embodiment, the collision determination in step S11 determines, for example, whether or not the following contact occurs. - Contact between the first player character, which performs actions such as movement and punching, and terrain objects. · Contact between the first player character that performs the action of lifting the fragment object and the fragment object · Contact between the fragment object released by the action of throwing by the fragment player character and the terrain object · Contact between the scream object emitted from the second player character and the terrain object In addition, when it is determined in the collision determination of step S11 that the objects are in contact with each other, in the process of step S2 in the next frame, a process reflecting the result of the contact between the objects is executed, or in the process of step S3 in the next frame, it is determined that an update event has occurred.

[0268] Next, the processor 81 controls the operations of each object in the game space (step S12), and proceeds to the process of step S13. Hereinafter, referring to FIGS. 41 and 42, the process of controlling the operations of each object performed in step S12 will be described.

[0269] In FIG. 41, the processor 81 determines whether or not the control process for all the objects to be operationally controlled has ended (step S41). Then, when there is an object for which the control process has not ended, the processor 81 proceeds to step S42. On the other hand, when the control process for all the objects has ended, the processor 81 ends the process by this subroutine.

[0270] In step S42, the processor 81 selects an object to be operationally controlled from the objects for which the operation control process has not ended, and proceeds to the next step.

[0271] Next, the processor 81 determines whether the object currently selected as the target of the motion control process is the first player character (step S43). If the object currently selected as the target of the motion control process is not the first player character, the processor 81 proceeds to step S44. On the other hand, if the object currently selected as the target of the motion control process is the first player character, the processor 81 proceeds to step S46.

[0272] In step S44, the processor 81 determines whether the object currently selected as the target of the motion control process is the second player character. If the object currently selected as the target of the motion control process is not the second player character, the processor 81 proceeds to step S45. On the other hand, if the object currently selected as the target of the motion control process is the second player character, the processor 81 proceeds to step S55 (see Figure 42).

[0273] In step S45, the processor 81 controls the movement of the object currently selected as the target of the movement control process, and then returns to step S41 to repeat the process. In one execution of step S45, the processor 81 controls each object so that any movement that spans multiple frames proceeds for one frame. As a result, the process of step S45 is repeatedly executed over multiple frames, allowing each object to perform a series of movements related to movement and various actions. The position of an object is basically determined to be the position after moving at the speed calculated in step S2. However, if the collision detection in step S11 determines that the object is in contact with another object and its movement is hindered by the other object it is in contact with, the position of that object may be determined not to change. In step S45, the processor 81 updates the object data stored in memory to reflect the object after the control in step S45.

[0274] On the other hand, if it is determined in step S43 that the object selected as the target of the motion control processing is the first player character, then in step S46, the processor 81 determines whether or not to move the first player character in the game space. For example, the processor 81 refers to the operation data acquired in step S1 and, if the operation input from the controller operated by the first user is an operation instruction to move the first player character, it makes a positive determination in step S46. Then, if the processor 81 decides to move the first player character, it proceeds to step S47. On the other hand, if the processor 81 decides not to move the first player character, it proceeds to step S48.

[0275] In step S47, the processor 81 performs movement control processing for the first player character and proceeds to step S48. For example, the processor 81 refers to the operation data acquired in step S1 and moves the first player character in the game space based on the operation input from the controller operated by the first user. The processor 81 also generates a collision detection area in the game space according to the position and orientation of the first player character after the movement. The processor 81 then updates the object data stored in memory to reflect the object after the control in step S47.

[0276] In step S48, the processor 81 determines whether or not to have the first player character perform a specific action in the game space. For example, the processor 81 refers to the operation data acquired in step S1 and, if the operation input from the controller operated by the first user is an operation instruction to have the first player character perform a specific action, it makes a positive determination in step S48. If the processor 81 decides to have the first player character perform the specific action, it proceeds to step S49. On the other hand, if the processor 81 decides not to have the first player character perform the specific action, it returns to step S41 and repeats the process.

[0277] In step S49, the processor 81 performs action animation processing for the first player character and returns to step S41 to repeat the process. For example, the processor 81 controls the first player character to perform various actions (for example, the pull-out action shown in Figure 33, the punch action shown in Figure 34, the throwing action shown in Figures 35 and 36, etc.) based on the operation data acquired in step S1. When a predetermined action occurs, the processor 81 generates a collision detection area in the game space corresponding to that action. The processor 81 also controls the movement of the fragment object in the direction based on the position in the game space indicated by the targeting reticle T, which is set in step S13, described later, in response to the fragment object being released by the throwing action of the first player character. In one processing of step S49, the processor 81 controls the first player character so that actions performed by the first player character over multiple frames proceed at the rate of one frame.

[0278] Proceeding to Figure 42, in step S55, the processor 81 controls the movement of the second player character so that it moves and moves in conjunction with the movement and movement of the first player character, and proceeds to the next step. In one processing of step S55, the processor 81 controls the movement and movement of the second player character so that if an action takes place over multiple frames (for example, if the first player character is performing an action over multiple frames), it performs the action for one frame. The processor 81 also generates a collision detection area in the game space according to the position and orientation of the second player character after the above movement and movement. However, as mentioned above, the collision detection area for the second player character may be omitted. Then, in step S55, the processor 81 updates the object data stored in memory to reflect the second player character after the control in step S55.

[0279] Next, the processor 81 sets the position of cursor C (see Figures 26-27 and 29-30) (step S56) and proceeds to the next step. For example, the processor 81 refers to the operation data acquired in step S1 and, if the operation input from the controller operated by the second user is an operation instruction to change the position of cursor C, it changes the position of cursor C based on that operation input. The process of setting the position of cursor C in step S56 is performed according to the method described in [2-7. Processing using an object with a material set on a mesh] above.

[0280] Next, the processor 81 retrieves the material for the position in game space corresponding to the position of cursor C and controls its display near cursor C (step S57), and then proceeds to the next step. The process of retrieving the material and controlling its display in step S57 is performed according to the method described in [2-7. Processing using an object with a material set on a mesh] based on the settings set in the scream object data.

[0281] Next, the processor 81 determines whether or not to set a material for the scream object (step S57). For example, the processor 81 refers to the operation data obtained in step S1 and, if the operation input from the controller operated by the second user is an operation instruction to set a material, it makes a positive determination in step S57. If the processor 81 decides to set a material, it proceeds to step S59. On the other hand, if the processor 81 decides not to set a material, it proceeds to step S62.

[0282] In step S58, the processor 81 performs an animation to set the material of the scream object and proceeds to the next step. For example, the processor 81 performs an animation to increase the amount shown by the gauge displayed inside cursor C by a predetermined amount (see Figure 26 and Figure 29 below).

[0283] Next, the processor 81 determines whether the process of setting the material of the scream object has been completed (step S60). For example, if the duration of the second user's operation input indicating the operation instruction to set the material reaches a predetermined time, the processor 81 makes a positive determination in step S60. If the process of setting the material has been completed, the processor 81 proceeds to step S61. On the other hand, if the process of setting the material has not been completed, the processor 81 proceeds to step S62.

[0284] In step S61, the processor 81 sets up a scream object and proceeds to step S62. The process of setting up the scream object in step S61 is performed according to the method described in [2-7. Processing using an object with a material set on a mesh] above. Then, in step S61, the processor 81 updates the scream object data of the object data stored in memory based on the settings in step S61 (the material to be set, the number of remaining bullets, etc.).

[0285] In step S62, the processor 81 determines whether an operation to start the movement of the screaming object has been performed. For example, the processor 81 refers to the operation data obtained in step S1 and determines in step S62 that the operation input from the controller operated by the second user is an operation instruction to emit a screaming object (for example, an operation instruction for the second player character to perform an action of screaming in order to emit a screaming object). If an operation to start the movement of the screaming object has been performed, the processor 81 proceeds to step S63. On the other hand, if an operation to start the movement of the screaming object has not been performed, the processor 81 returns to step S41 (see Figure 41) and repeats the process.

[0286] In step S63, the processor 81 sets the direction and speed of movement of the emitted scream object, and returns to step S41 (see Figure 41) to repeat the process. For example, the processor 81 sets a scream object composed of the material set in the scream object data, calculates the speed of movement based on rules predetermined in the game program, and calculates the direction of movement based on the direction from a predetermined nearby position where the second player character emits the scream object toward the position in the game space indicated by cursor C. The processor 81 also deducts 1 from the remaining ammunition set in the scream object data. Then, in step S63, the processor 81 updates the scream object data of the object data stored in memory based on the settings in step S63 (type, position, speed, state, remaining ammunition, etc. of the emitted scream object). If no scream object is set in the scream object data or if the remaining ammunition is already 0, the processor 81 may set a default object composed of a predetermined material or a material existing around the second player character, set the direction and speed of movement of the default object, and update the scream object data. In this case, the second player character will emit the specified object.

[0287] Returning to Figure 40, after the processing in step S12, the processor 81 generates a game image (step S13) and proceeds to the next step. For example, the processor 81 generates a game image by drawing each polygon of the display mesh for the voxel object and each polygon of objects other than the voxel object based on a virtual camera. Each polygon of the display mesh is drawn using drawing settings such as textures corresponding to the material set for the polygon, according to the method described in [2-6-1. Determination of the material of the display mesh] above. The game image generated in step S13 is output to the display device and displayed in a cycle of once per frame.

[0288] Furthermore, the position of the virtual camera set to generate the above game image may be set to a predetermined position that follows the first player character. In addition, the line of sight direction of the virtual camera may be controlled based on input from a controller operated by the first or second user (see Figures 37 and 38).

[0289] Furthermore, in the processing of step S13, the processor 81 superimposes the cursor C (see Figures 26, 27, 29, and 30) set in step S12 onto the game image and outputs it to the display device. Also, if the conditions for displaying the crosshair T (see Figure 35) are met, the processor 81 sets the crosshair T at a predetermined position on the display screen, acquires the material at a position in the game space that is superimposed on the position of the crosshair T, and superimposes the name of the material, which is located nearby, onto the game image and outputs it to the display device.

[0290] Next, the processor 81 determines whether or not to terminate the game (step S14). For example, if the user performs a predetermined operation input to terminate the game or if the conditions for terminating the game are met, the processor 81 makes an affirmative determination in step S14. If the game is to be terminated, the processor 81 terminates the process according to the flowchart. On the other hand, if the game is not to be terminated, the processor 81 returns to step S1 and repeats the process. Thereafter, the series of processes from steps S1 to S14 are repeatedly executed until it is determined in step S14 that the game should be terminated.

[0291] Thus, in this embodiment, by acquiring the material at a specific position on the terrain object's detection mesh and causing a scream object with that material to collide with the terrain object, an in-game effect based on the interaction between the scream object and the terrain object's detection mesh can be generated. Therefore, in this embodiment, the material set on an object using voxel data can be utilized in the game.

[0292] In the explanation above, we used an example where a voxel object is defined by generating a 3D mesh based on voxel data set in a 3D space. However, a voxel object can also be defined based on voxel data set in a 2D space.

[0293] Furthermore, the game system 1 may be any device, including a portable game device, any portable electronic device (PDA (Personal Digital Assistant), mobile phone, smartphone, personal computer, camera, tablet, etc.). In this case, the input device for user operation to control the player character, etc., does not have to be the left controller 3, right controller 4, or touch panel 13, etc., but may be another controller, mouse, touchpad, touch panel, trackball, keyboard, directional pad, slide pad, etc.

[0294] Furthermore, although the above description uses an example in which each information processing is performed by the game system 1, at least a part of the above processing steps may be performed by other devices. For example, if the game system 1 is configured to communicate with other devices (e.g., another server, another information processing device, another game device, another mobile terminal, etc.), the above processing steps may be performed by the cooperation of those other devices. In this way, by performing at least a part of the above processing steps by other devices, it becomes possible to perform processing similar to the processing described above. In addition, the above information processing can be performed by the cooperation of one processor or multiple processors included in an information processing system composed of at least one information processing device. Furthermore, in the above embodiment, the processor 81 of the game system 1 can perform information processing by executing a predetermined program, but some or all of the above processing may be performed by a dedicated circuit provided in the game system 1.

[0295] As described above, the invention can be realized in so-called cloud computing system configurations, distributed wide-area networks, and local network system configurations. For example, in a distributed local network system configuration, the above processing can be performed collaboratively between a stationary information processing device (stationary game device) and a portable information processing device (portable game device). It goes without saying that in these system configurations, there are no particular limitations on which device performs the above processing, and the invention can be realized regardless of how the processing is divided.

[0296] Furthermore, the processing order, set values, and conditions used in the information processing described above are merely examples, and it goes without saying that this embodiment can be realized even with other orders, values, and conditions.

[0297] Furthermore, the above program may be supplied to the game system 1 not only through an external storage medium such as external memory, but also to the device via a wired or wireless communication line. The program may also be pre-recorded in a non-volatile storage device inside the device. The information storage medium for storing the program may be a CD-ROM, DVD, or similar optical disc-type storage medium, a flexible disk, a hard disk, a magneto-optical disk, a magnetic tape, etc. Alternatively, the information storage medium for storing the program may be a volatile memory for storing the program. Such storage media can be described as recording media that can be read by a computer or the like. For example, by having a computer or the like read and execute the program on these recording media, the various functions described above can be provided.

[0298] Although the present invention has been described in detail above, the above description is merely illustrative in all respects and is not intended to limit its scope. Needless to say, various improvements and modifications can be made without departing from the scope of the present invention. Furthermore, those skilled in the art will understand from the description of specific embodiments of the present invention that an equivalent scope can be implemented based on the description of the present invention and common technical knowledge. In addition, it should be understood that the terms used herein are used in the sense commonly used in the art unless otherwise specified. Accordingly, unless otherwise defined, all technical terms used herein have the same meaning as commonly understood by those skilled in the art to which the present invention pertains. In case of any conflict, this specification (including definitions) shall prevail. [Industrial applicability]

[0299] As described above, the present invention can be used as a game program, game system, game processing method, and game device, etc., that can utilize materials set on objects using voxel data in a game. [Explanation of symbols]

[0300] 1…Game System 2…Main unit 3…Left controller 4…Right controller 7…Second controller 11… Housing 12…Display 13…Touch panel 32, 52... Analog stick 42, 64… terminals 81… Processor 82…Network Communications Department 83…Controller Communication Unit 85…DRAM

Claims

1. On the computer, Based on voxel data defined in a virtual space, in which each of multiple voxels has at least a density indicating the degree to which the space defined by the voxel is virtually occupied by its contents, and a material indicating the type of contents, a mesh of a voxel object corresponding to the voxel data is generated and updated, in which the vertex coordinates of the mesh are determined at least based on the density, and the material of the mesh is determined at least based on the material included in the voxel data. Based on the input from the first operating device, the position of the first cursor is controlled. In response to a first instruction based on an operation input from the first operating device, the material of the mesh at the position in the virtual space corresponding to the position of the first cursor is identified, and the identified material is used as the first material. In response to a second instruction based on an operation input from the first operating device, the first object with the first material set is moved toward a position in the virtual space corresponding to the position of the first cursor. A game program that, based on collision detection between the first object and the mesh, sets a first voxel update range at the collision location and generates a first in-game effect that includes changing at least one of the density and material of the voxels in the voxel data corresponding to the first voxel update range.

2. The aforementioned computer further, Based on the operation input from the second operating device, the first player character is moved and controlled within the virtual space. The second player character is controlled to move in conjunction with the movement of the first player character. In response to a third instruction based on the operation input from the second operation device, the first player character is made to perform a first action. The game program according to claim 1, which causes the second player character to perform a second action and moves the first object in response to the second instruction.

3. The aforementioned computer further, The position of the virtual camera in the virtual space is controlled based on the position of the first player character. The game program according to claim 2, wherein the orientation of the virtual camera is controlled based at least on an operation input from the first operation device.

4. The game program according to claim 3, wherein the computer is further instructed to control the orientation of the virtual camera based on the operation input from the second operation device.

5. The aforementioned computer further, Control the position of the second cursor, In response to the third instruction, the first player character is made to perform the first action, and the second object, to which the second material has been set, is moved toward the position in the virtual space corresponding to the position of the second cursor. The game program according to claim 2, wherein, based on collision detection between the second object and the mesh, a second voxel update range is set at the collision position, and a second in-game effect is generated, which includes a change in at least one of the density and material of the voxels in the voxel data corresponding to the second voxel update range.

6. The computer receives the first in-game effect, The effect of reducing the density of voxels in the voxel data corresponding to the first voxel update range, The effect of increasing the density of the voxels in the voxel data corresponding to the first voxel update range and setting the material to the first material, and When the third material, which is the material of the mesh at the collision location, and the first material are in a predetermined combination, the effect of changing the material of the voxel in the voxel data corresponding to the first voxel update range to the fourth material, A game program according to any one of claims 1 to 5, which generates any of a plurality of effects, including at least one of the above, depending on the type of the first material.

7. The operation input from the first operating device includes at least one of mouse-based data, inertial sensor-based data, and directional input data. The game program according to any one of claims 1 to 5, which causes the computer to control the position of the first cursor based on at least one of the data based on the mouse, the data based on the inertial sensor, and the directional input data.

8. The aforementioned mesh is a determination mesh used for collision detection, The aforementioned computer further, A display mesh corresponding to the voxel data and drawn based on a virtual camera is generated or updated by determining the vertex coordinates of the display mesh based on the density included in at least the voxel data, and determining the material of the display mesh based on the material included in at least the voxel data. A game program according to any one of claims 1 to 5, which causes the program to draw the virtual space including the display mesh based on the vertex coordinates of the display mesh and the texture corresponding to the material of the display mesh.

9. The game program according to any one of claims 1 to 5, further comprising causing the computer to render the virtual space including the mesh based on the vertex coordinates of the mesh and the texture corresponding to the material of the mesh.

10. A game system comprising at least an information processing device equipped with a processor and a first operating device, The aforementioned processor, Based on voxel data defined in a virtual space, where each of multiple voxels has at least a density indicating the degree to which the space defined by the voxel is virtually occupied by its contents, and a material indicating the type of contents, a mesh of a voxel object corresponding to the voxel data is generated and updated, where the vertex coordinates of the mesh are determined at least based on the density, and the material of the mesh is determined at least based on the material included in the voxel data. Based on the operation input from the first operating device, the position of the first cursor is controlled. In response to a first instruction based on an operation input from the first operating device, the material of the mesh at the position in the virtual space corresponding to the position of the first cursor is identified, and the identified material is set as the first material. In response to a second instruction based on an operation input from the first operating device, the first object with the first material set is moved toward a position in the virtual space corresponding to the position of the first cursor. A game system that, based on collision detection between the first object and the mesh, sets a first voxel update range at the collision location and generates a first in-game effect that includes changing at least one of the density and material of the voxels in the voxel data corresponding to the first voxel update range.

11. A second operating device is further provided, The aforementioned processor further, Based on the operation input from the second operation device, the movement of the first player character is controlled within the virtual space. The second player character is controlled to move in conjunction with the movement of the first player character. In response to a third instruction based on the operation input from the second operation device, the first player character is made to perform a first action. The game system according to claim 10, wherein, in response to the second instruction, the second player character is made to perform a second action and the first object is moved.

12. The first operating device comprises at least a first direction input unit, and outputs first direction input data based on the input to the first direction input unit. The aforementioned processor further, The position of the virtual camera in the virtual space is controlled based on the position of the first player character. The game program according to claim 11, wherein the orientation of the virtual camera is controlled based on at least the first direction input data.

13. The second operating device comprises at least a second direction input unit, and outputs second direction input data based on the input to the second direction input unit. The processor controls the movement of the first player character in the virtual space based on the second directional input data. The game system according to claim 12, wherein the processor further comprises a first embodiment in which the second operating device further comprises a third direction input unit and outputs third direction input data based on the input to the third direction input unit, and a second embodiment in which the processor does not comprises the third direction input unit, and in the first embodiment, controls the orientation of the virtual camera based on the third direction input data.

14. The aforementioned processor further, Control the position of the second cursor, In response to the third instruction, the first player character is made to perform the first action, and the second object, to which the second material has been set, is moved toward the position in the virtual space corresponding to the position of the second cursor. The game system according to claim 11, wherein, based on collision detection between the second object and the mesh, a second voxel update range is set at the collision location, and a second in-game effect is generated which includes a change in at least one of the density and material of the voxels of the voxel data corresponding to the second voxel update range.

15. The processor, as the first in-game effect, The effect of reducing the density of voxels in the voxel data corresponding to the first voxel update range, The effect of increasing the density of the voxels in the voxel data corresponding to the first voxel update range and setting the material to the first material, and When the third material, which is the material of the mesh at the collision location, and the first material are in a predetermined combination, the effect of changing the material of the voxel in the voxel data corresponding to the first voxel update range to the fourth material, A game system according to any one of claims 11 to 14, which generates any of a plurality of effects, including at least one of the above, depending on the type of the first material.

16. The first operating device is Equipped with at least one of a mouse and an inertial sensor, At least one of the mouse data based on the mouse output and the inertial data based on the inertial sensor output is output. The game system according to any one of claims 11 to 14, wherein the processor controls the position of the first cursor based on at least one of the mouse data and the inertia data.

17. The first operating device is The system comprises at least one of a mouse, an inertial sensor, and a fourth directional input unit. At least one of the following is output: mouse data based on the output of the mouse, inertial data based on the output of the inertial sensor, and fourth directional input data based on the input to the fourth directional input unit. The game system according to any one of claims 11 to 14, wherein the processor controls the position of the first cursor based on at least one of the mouse data, the inertia data, and the fourth directional input data.

18. The aforementioned mesh is a determination mesh used for collision detection, The aforementioned processor further, A display mesh corresponding to the voxel data and drawn based on a virtual camera is generated or updated by determining the vertex coordinates of the display mesh based on the density included in at least the voxel data, and determining the material of the display mesh based on the material included in at least the voxel data. A game system according to any one of claims 11 to 14, wherein the virtual space including the display mesh is rendered based on the vertex coordinates of the display mesh and the texture corresponding to the material of the display mesh.

19. The game system according to any one of claims 11 to 14, wherein the processor further renders the virtual space including the mesh based on the vertex coordinates of the mesh and the texture corresponding to the material of the mesh.

20. In the information processing system, Based on voxel data defined in a virtual space, in which each of multiple voxels has at least a density indicating the degree to which the space defined by the voxel is virtually occupied by its contents, and a material indicating the type of contents, a mesh of a voxel object corresponding to the voxel data is generated and updated, in which the vertex coordinates of the mesh are determined at least based on the density, and the material of the mesh is determined at least based on the material included in the voxel data. Based on the input from the first operating device, the position of the first cursor is controlled. In response to a first instruction based on an operation input from the first operating device, the material of the mesh at the position in the virtual space corresponding to the position of the first cursor is identified, and the identified material is used as the first material. In response to a second instruction based on an operation input from the first operating device, the first object with the first material set is moved toward a position in the virtual space corresponding to the position of the first cursor. A game processing method that, based on collision detection between the first object and the mesh, sets a first voxel update range at the collision position and generates a first in-game effect that includes changing at least one of the density and material of the voxels in the voxel data corresponding to the first voxel update range.

21. The aforementioned information processing system further includes, Based on the operation input from the second operating device, the first player character is moved and controlled within the virtual space. The second player character is controlled to move in conjunction with the movement of the first player character. In response to a third instruction based on the operation input from the second operation device, the first player character is made to perform a first action. The game processing method according to claim 20, wherein, in response to the second instruction, the second player character is made to perform a second action and the first object is moved.

22. The aforementioned information processing system further includes, The position of the virtual camera in the virtual space is controlled based on the position of the first player character. The game processing method according to claim 21, wherein the orientation of the virtual camera is controlled based on at least the operation input from the first operation device.

23. The game processing method according to claim 22, wherein the information processing system is further made to control the orientation of the virtual camera based on the operation input from the second operation device.

24. The aforementioned information processing system further includes, Control the position of the second cursor, In response to the third instruction, the first player character is made to perform the first action, and the second object, to which the second material has been set, is moved toward the position in the virtual space corresponding to the position of the second cursor. The game processing method according to claim 21, wherein, based on collision detection between the second object and the mesh, a second voxel update range is set at the collision position, and a second in-game effect is generated which includes a change in at least one of the density and material of the voxels of the voxel data corresponding to the second voxel update range.

25. The information processing system includes, as the first in-game effect, The effect of reducing the density of voxels in the voxel data corresponding to the first voxel update range, The effect of increasing the density of the voxels in the voxel data corresponding to the first voxel update range and setting the material to the first material, and When the third material, which is the material of the mesh at the collision location, and the first material are in a predetermined combination, the effect of changing the material of the voxel in the voxel data corresponding to the first voxel update range to the fourth material, A game processing method according to any one of claims 20 to 24, which generates any of a plurality of effects, including at least one of the first material types, depending on the type of the first material.

26. The operation input from the first operating device includes at least one of mouse-based data, inertial sensor-based data, and directional input data. The game processing method according to any one of claims 20 to 24, wherein the information processing system controls the position of the first cursor based on at least one of the data based on the mouse, the data based on the inertial sensor, and the direction input data.

27. The aforementioned mesh is a determination mesh used for collision detection, The aforementioned information processing system further includes, A display mesh corresponding to the voxel data and drawn based on a virtual camera is generated or updated by determining the vertex coordinates of the display mesh based on the density included in at least the voxel data, and determining the material of the display mesh based on the material included in at least the voxel data. A game processing method according to any one of claims 20 to 24, wherein the virtual space including the display mesh is rendered based on the vertex coordinates of the display mesh and the texture corresponding to the material of the display mesh.

28. The game processing method according to any one of claims 20 to 24, further comprising causing the information processing system to render the virtual space including the mesh based on the vertex coordinates of the mesh and the texture corresponding to the material of the mesh.

29. A game device equipped with a processor, The aforementioned processor, Based on voxel data defined in a virtual space, where each of multiple voxels has at least a density indicating the degree to which the space defined by the voxel is virtually occupied by its contents, and a material indicating the type of contents, a mesh of a voxel object corresponding to the voxel data is generated and updated, where the vertex coordinates of the mesh are determined at least based on the density, and the material of the mesh is determined at least based on the material included in the voxel data. Based on the operation input from the first operating device, the position of the first cursor is controlled. In response to a first instruction based on an operation input from the first operating device, the material of the mesh at the position in the virtual space corresponding to the position of the first cursor is identified, and the identified material is set as the first material. In response to a second instruction based on an operation input from the first operating device, the first object with the first material set is moved toward a position in the virtual space corresponding to the position of the first cursor. A game device that, based on collision detection between the first object and the mesh, sets a first voxel update range at the collision location and generates a first in-game effect that includes changing at least one of the density and material of the voxels in the voxel data corresponding to the first voxel update range.