Game program, information processing system, information processing device, and game processing method
The game program uses voxel data to generate dynamic voxel meshes in response to player interactions, enabling novel gameplay experiences by allowing objects to move and interact on these meshes, thus enhancing gameplay dynamics.
Patent Information
- Application Number
- JP2025035624
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-03-06
- Publication Date
- 2025-08-01
- Estimated Expiration
- 2045-03-06
AI Technical Summary
Existing games do not effectively utilize voxel data to create novel gameplay experiences.
A game program that updates voxel data to generate voxel meshes based on player interactions, allowing for dynamic movement and event-driven mesh updates in a virtual space.
Enables the creation of a novel game experience by allowing player objects to move on voxel meshes and interact with the environment in a dynamic and responsive manner, enhancing gameplay dynamics.
Smart Images

Figure 2025113246000001_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to a game program, an information processing system, an information processing apparatus, and a game processing method for generating an object in a virtual space using voxel data.
Background Art
[0002] Conventionally, objects have been managed using voxel data, and a mesh of an object has been generated in a virtual space based on the 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 provide a novel game using voxel data.
[0005] Therefore, the present invention provides a game program, an information processing system, an information processing apparatus, and a game processing method for executing a novel game using voxel data.
Means for Solving the Problems
[0006] In order to solve the above problems, the present invention employs the following configurations (1) to (15).
[0007] (1) An example of the present invention is a game program that causes a computer to execute the following processes. · A process of updating voxel data defined in a virtual space, wherein for each of a plurality of voxels, the density indicating the degree to which the space defined by the voxel is virtually occupied by content is at least set, based on game processing · A process of updating a voxel mesh that is a mesh corresponding to the voxel data, wherein vertex coordinates are determined based on at least the density included in the voxel data · In game processing, when a player object in the virtual space is on the voxel mesh, a process of controlling movement based on an operation input at the position on the voxel mesh · In game processing, when a first event occurs, a process of continuously setting a first voxel update range in the virtual space along a path corresponding to the first event, and increasing the density of voxels corresponding to the first voxel update range
[0008] According to the configuration of (1) above, a voxel mesh along the movement path is set in response to a first event during the game, and the player object can move on the voxel mesh. Thereby, a new game using voxel data can be provided.
[0009] (2) In the configuration of (1) above, the first event may be an event in which a predetermined object moves in the virtual space. The game program may cause the computer to set a first voxel update range at a plurality of positions through which the predetermined object has passed in the virtual space when the first event occurs.
[0010] According to the configuration of (2) above, a voxel mesh can be set along the path through which the object has passed.
[0011] (3) In the configuration of (2) above, the predetermined object may be an enemy object in the game. The first event may be an event in which the enemy object moves in response to a first action, which is an attack action of the player object performed based on an operation input, hitting the enemy object.
[0012] According to the configuration of (3) above, a voxel mesh can be set along the movement path of the enemy object that moves by the attack action of the player object.
[0013] (4) In the configuration of (2) above, the first event may be an event in which, within a predetermined range in the virtual space, a second action of releasing a predetermined object to the player object performed based on an operation input is carried out, and the predetermined object is moved.
[0014] According to the configuration of (4) above, a voxel mesh can be set along the movement path of the object released by the action of the player object.
[0015] (5) In the configuration of (2) above, the predetermined object may be the player object. The first event may be an event in which the player object performs a third action of moving at least based on an operation input.
[0016] According to the configuration of (5) above, a voxel mesh can be set along the movement path of the player object.
[0017] (6) In the configuration of (1) above, the game program may cause the computer to set a first voxel update range along a first path from a first position to a second position in the virtual space when the first event occurs.
[0018] According to the configuration of (6) above, a voxel mesh can be set along the path from the first position to the second position of the object.
[0019] (7) In the configuration of (6) above, either the first position or the second position may be the position of the player object. The first voxel update range may be set to an arrangement in which the upper surface is located at the height of the lower end of the player object at the position of the player object.
[0020] According to the configuration of (7) above, the player object is likely to enter the voxel mesh set according to the first event.
[0021] (8) In the configuration of (7) above, the first event may be that a predetermined object released by a fourth action of the player object based on an operation input collides with the voxel mesh, and either the first position or the second position may be the collision position of the object.
[0022] According to the configuration of (8) above, a voxel mesh extending to the collision position of the object released by the player object can be set.
[0023] (9) In the configuration of (8) above, the path may be in the shape of a curve or a broken line having a gentler slope than the slope of the straight line connecting the first position and the second position at the first position and the second position.
[0024] According to the configuration of (9) above, the player object can easily get on and off the voxel mesh set according to the first event.
[0025] (10) In any of the configurations (1) to (9) above, the voxel data may at least include first voxel data and second voxel data defined in a first voxel space and a second voxel space, respectively, where at least a part overlaps in the virtual space. The game program may cause the computer to execute the following processing. · Processing to increase the density of voxels corresponding to a first voxel update range in the first voxel data based on a first event · When a second event occurs, setting a second voxel update range and processing to increase or decrease the density of voxels corresponding to the second voxel update range in the second voxel data
[0026] According to the configuration of (10) above, the voxel mesh set according to the first event and other voxel meshes can be deformed individually.
[0027] (11) In the configuration of (10) above, the game program may further cause the computer to execute the following processing. · Processing to move or rotate a first voxel space defined in the virtual space · Processing to update the voxel mesh corresponding to the first voxel data
[0028] According to the configuration of (11) above, the voxel mesh set according to the first event can be moved independently of other voxel meshes.
[0029] (12) In the configuration of (10) above, the game program may further cause the computer to decrease the density of voxels included in the first voxel data according to a third event in the game processing.
[0030] According to the configuration of (12) above, the voxel mesh set according to the first event can be easily erased without erasing other voxel meshes.
[0031] (13) In any of the configurations (1) to (12) above, the game program may cause the computer to set a first voxel update range after a predetermined period has elapsed when a first event occurs.
[0032] According to the configuration of (13) above, it is possible to reduce the possibility that the voxel mesh set in response to the first event interferes with other objects.
[0033] (14) In any of the configurations (1) to (13) above, the game program may cause the computer to set the first voxel update range in a range excluding a predetermined range including the position of the player object when a first event occurs.
[0034] According to the configuration of (14) above, it is possible to reduce the possibility that the voxel mesh set in response to the first event interferes with the player object.
[0035] (15) In any of the configurations (1) to (14) above, the game program may cause the computer to set the first voxel update range at a position where at least a part of the side of the upper surface coincides with the first voxel update range generated last time.
[0036] According to the configuration of (15) above, it is possible to make the voxel mesh set in response to the first event have a shape without steps or with few steps.
[0037] Note that another example of the present invention may be an information processing apparatus or an information processing system that executes the processing in (1) to (15) above. Further, another example of the present invention may be a game processing method that causes the information processing system to execute the processing in (1) to (15) above.
Effect of the Invention
[0038] According to the above game program, information processing system, information processing apparatus, or game processing method, a novel game using voxel data can be provided.
Brief Description of the Drawings
[0039]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13
Figure 14
Figure 15
Figure 16
Figure 17
Figure 18
Figure 19
Figure 20
Figure 21
Figure 22
Figure 23
Figure 24
Figure 25
Figure 26
Figure 27
Figure 28
Figure 29
Figure 30
Figure 31
Figure 32
Figure 33
Figure 34
Figure 35
Figure 36
Figure 37
Figure 38
Figure 39
Figure 40
Figure 41
Figure 42
Figure 43
Figure 44
Figure 45
Figure 46
Figure 47
Figure 48
Figure 49
Figure 50
Figure 51
Figure 52
Figure 53
Figure 54
Figure 55
Figure 56
Figure 57
Figure 58
[0040] [1. Configuration of Game System] Hereinafter, a game system according to an example of the present embodiment will be described. An example of the game system 1 in the present embodiment includes a main body device (information processing device; which functions as a game device main body in the present embodiment) 2, a left controller 3, and a right controller 4. The main body device 2 is detachable from the left controller 3 and the right controller 4 respectively. That is, the game system 1 can be used as a device in which the left controller 3 and the right controller 4 are respectively attached to the main body device 2 and integrated. Also, the game system 1 can also be used with the main body device 2, the left controller 3, and the right controller 4 separated from each other (see FIG. 2). Hereinafter, the hardware configuration of the game system 1 of the present embodiment will be described, and then the control of the game system 1 of the present embodiment will be described.
[0041] FIG. 1 is a diagram showing an example of a state in which the left controller 3 and the right controller 4 are attached to the main body device 2. As shown in FIG. 1, the left controller 3 and the right controller 4 are respectively attached to the main body device 2 and integrated. The main body device 2 is a device that executes various processes (for example, game processes) in the game system 1. The main body device 2 includes a display 12. The left controller 3 and the right controller 4 are devices that include an operation unit for the user to input.
[0042] FIG. 2 is a diagram showing an example of a state in which the left controller 3 and the right controller 4 are respectively removed from the main body device 2. As shown in FIGS. 1 and 2, the left controller 3 and the right controller 4 are detachable from the main body device 2. In the following, the left controller 3 and the right controller 4 may be collectively referred to as "controller".
[0043] FIG. 3 is an orthographic view showing an example of the main body device 2. As shown in FIG. 3, the main body device 2 includes a substantially plate-shaped housing 11. In the present embodiment, the main surface of the housing 11 (in other words, the front surface, that is, the surface on which the display 12 is provided) is generally rectangular in shape.
[0044] Incidentally, the shape and size of the housing 11 are arbitrary. As an example, the housing 11 may be of a portable size. Also, the main body device 2 alone or the integrated device with the left controller 3 and the right controller 4 attached to the main body device 2 may be a portable device. Further, the main body device 2 or the integrated device may be a hand-held device. Also, the main body device 2 or the integrated device may be a transportable device.
[0045] As shown in FIG. 3, the main body device 2 includes a display 12 provided on the main surface of the housing 11. The display 12 displays an image generated by the main body device 2. In the present embodiment, the display 12 is a liquid crystal display (LCD). However, the display 12 may be any type of display device.
[0046] Also, the main body device 2 includes a touch panel 13 on the screen of the display 12. In the present embodiment, the touch panel 13 is of a type capable of multi-touch input (for example, a capacitance type). However, the touch panel 13 may be of any type, for example, a type capable of single-touch input (for example, a resistive film type).
[0047] The main body device 2 includes a speaker (that is, the speaker 88 shown in FIG. 6) inside the housing 11. As shown in FIG. 3, speaker holes 11a and 11b are formed on the main surface of the housing 11. Then, the output sound of the speaker 88 is output from these speaker holes 11a and 11b, respectively.
[0048] Also, the main body device 2 includes a left terminal 17 that is a terminal for the main body device 2 to perform wired communication with the left controller 3, and a right terminal 21 for the main body device 2 to perform wired communication with the right controller 4.
[0049] As shown in FIG. 3, the main body device 2 includes a slot 23. The slot 23 is provided on the upper surface of the housing 11. The slot 23 has a shape capable of mounting a storage medium of a predetermined type. The storage medium of the predetermined type is, for example, a storage medium (e.g., a dedicated memory card) dedicated to the game system 1 and information processing devices of the same type. The storage medium of the predetermined type is used, for example, to store data (e.g., save data of an application, etc.) used in the main body device 2 and / or programs (e.g., application programs, etc.) executed by the main body device 2. Also, the main body device 2 includes a power button 28.
[0050] The main body device 2 includes a lower terminal 27. The lower terminal 27 is a terminal for the main body device 2 to communicate with the cradle. In the present embodiment, the lower terminal 27 is a USB connector (more specifically, a female connector). When the integrated device or the main body device 2 alone is placed on the cradle, the game system 1 can display an image generated and output by the main body device 2 on a stationary monitor. Also, in the present embodiment, the cradle has a function of charging the placed integrated device or the main body device 2 alone. Also, the cradle has a function of a hub device (specifically, a USB hub).
[0051] FIG. 4 is a six-sided view showing an example of the left controller 3. As shown in FIG. 4, the left controller 3 includes a housing 31. In the present embodiment, the housing 31 has a vertically long shape, that is, a shape long in the vertical direction (i.e., the y-axis direction shown in FIGS. 1 and 4). The left controller 3 can also be gripped in a vertically long orientation when removed from the main body device 2. The housing 31 has a shape and size that can be gripped with one hand, particularly the left hand, when gripped in a vertically long orientation. Also, the left controller 3 can be gripped in a horizontally long orientation. When the left controller 3 is gripped in a horizontally long orientation, it may be gripped with both hands.
[0052] The left controller 3 is provided with an analog stick 32. As shown in FIG. 4, the analog stick 32 is provided on the main surface of the housing 31. The analog stick 32 can be used as a direction input unit capable of inputting a direction. The user can input a direction corresponding to the tilting direction (and an input of a magnitude corresponding to the tilted angle) by tilting the analog stick 32. Note that the left controller 3 may be provided with a cross key or a slide stick capable of slide input, etc., instead of the analog stick, as the direction input unit. Also, in the present embodiment, it is possible to input by pressing the analog stick 32.
[0053] The left controller 3 is provided with various operation buttons. The left controller 3 is provided with four operation buttons 33 to 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. Further, the left controller 3 is provided with a recording button 37 and a -(minus) button 47. The left controller 3 is provided with a first L button 38 and a ZL button 39 at the upper left of the side surface of the housing 31. Also, the left controller 3 is provided with a second L button 43 and a second R button 44 on the side surface of the housing 31 on the side where it is attached when attached to the main body device 2. These operation buttons are used to give instructions according to various programs (for example, an OS program or an application program) executed by the main body device 2.
[0054] Also, the left controller 3 is provided with a terminal 42 for the left controller 3 to perform wired communication with the main body device 2.
[0055] FIG. 5 is a six-sided view showing an example of the right controller 4. As shown in FIG. 5, the right controller 4 includes a housing 51. In the present embodiment, the housing 51 has a vertically long shape, that is, a shape that is long in the vertical direction. The right controller 4 can also be held in a vertically long orientation when removed from the main body device 2. The housing 51 has a shape and size that can be held with one hand, particularly the right hand, when held in a vertically long orientation. Further, the right controller 4 can also be held in a horizontally long orientation. When the right controller 4 is held in a horizontally long orientation, it may be held with both hands.
[0056] Similar to the left controller 3, the right controller 4 includes an analog stick 52 as a direction input unit. In the present embodiment, the analog stick 52 has the same configuration as the analog stick 32 of the left controller 3. Further, instead of the analog stick, the right controller 4 may be provided with a cross key or a slide stick capable of slide input. Also, similar to the left controller 3, the right controller 4 includes four operation buttons 53 to 56 (specifically, an A button 53, a B button 54, an X button 55, and a Y button 56) on the main surface of the housing 51. Further, the right controller 4 includes a + (plus) button 57 and a home button 58. Also, the right controller 4 includes a first R button 60 and a ZR button 61 on the upper right side of the side surface of the housing 51. Also, similar to the left controller 3, the right controller 4 includes a second L button 65 and a second R button 66.
[0057] Further, the right controller 4 includes a terminal 64 for the right controller 4 to perform wired communication with the main body device 2.
[0058] FIG. 6 is a block diagram showing an example of the internal configuration of the main body device 2. The main body device 2 includes each of the components 81 to 91, 97, and 98 shown in FIG. 6 in addition to the configuration shown in FIG. 3. Some of these components 81 to 91, 97, and 98 may be mounted on an electronic circuit board as electronic components and housed in the housing 11.
[0059] The main body device 2 includes a processor 81. The processor 81 is an information processing unit that executes various information processes executed in the main body device 2. For example, it may be composed of only a CPU (Central Processing Unit), or may be composed of a SoC (System-on-a-chip) including a plurality of functions such as a CPU function and a GPU (Graphics Processing Unit) function. The processor 81 executes various information processes by executing an information processing program (for example, a game program) stored in a storage unit (specifically, an internal storage medium such as a flash memory 84 or an external storage medium mounted on the slot 23).
[0060] As an example of an internal storage medium built in the main body device 2, the main body device 2 includes a flash memory 84 and a DRAM (Dynamic Random Access Memory) 85. The flash memory 84 and the DRAM 85 are connected to the processor 81. The flash memory 84 is mainly a memory used to store various data (which may be a program) stored in the main body device 2. The DRAM 85 is a memory used to temporarily store various data used in information processing.
[0061] The main body device includes a slot interface (hereinafter abbreviated as "I / F") 91. The slot I / F 91 is connected to the processor 81. The slot I / F 91 is connected to the slot 23 and reads and writes data to and from a predetermined type of storage medium (for example, a dedicated memory card) mounted on the slot 23 in response to an instruction from the processor 81.
[0062] The processor 81 appropriately reads and writes data between the flash memory 84, the DRAM 85, and each of the above storage media to execute the above information processing.
[0063] The main body device 2 includes a network communication unit 82. The network communication unit 82 is connected to the processor 81. The network communication unit 82 communicates (specifically, wirelessly) with an external device via a network. In the present embodiment, the network communication unit 82 connects to a wireless LAN and communicates with an external device by a method compliant with the Wi-Fi (registered trademark) standard as a first communication mode. Further, the network communication unit 82 performs wireless communication with other main body devices 2 of the same type by a predetermined communication method (for example, communication by a proprietary protocol or infrared communication) as a second communication mode. Note that the wireless communication by the second communication mode enables so-called "local communication" in which wireless communication is possible with other main body devices 2 arranged within a closed local network area, and data is transmitted and received by direct communication between a plurality of main body devices 2.
[0064] The main body device 2 includes a controller communication unit 83. The controller communication unit 83 is connected to the processor 81. The controller communication unit 83 performs wireless communication with the left controller 3 and / or the right controller 4. The communication method between the main body device 2 and the left controller 3 and the right controller 4 is arbitrary, but in the present embodiment, the controller communication unit 83 communicates with the left controller 3 and the right controller 4 in accordance with the Bluetooth (registered trademark) standard.
[0065] The processor 81 is connected to the left terminal 17, the right terminal 21, and the lower terminal 27 described above. When the processor 81 performs wired communication with the left controller 3, 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. Further, when the processor 81 performs wired communication with the right controller 4, 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. Further, when the processor 81 communicates with the cradle, it transmits data to the cradle via the lower terminal 27. Thus, in the present embodiment, the main body device 2 can perform both wired communication and wireless communication with the left controller 3 and the right controller 4, respectively. Further, when the left controller 3 and the right controller 4 are attached to the main body device 2 as an integrated device or when the main body device 2 alone is attached to the cradle, the main body device 2 can output data (for example, image data or audio data) to a stationary monitor or the like via the cradle.
[0066] Here, the main body device 2 can communicate with a plurality of left controllers 3 simultaneously (in other words, in parallel). Further, the main body device 2 can communicate with a plurality of right controllers 4 simultaneously (in other words, in parallel). Therefore, a plurality of users can simultaneously input to the main body device 2 using the sets of the left controller 3 and the right controller 4, respectively. As an example, while the first user inputs to the main body device 2 using the first set of the left controller 3 and the right controller 4, the second user can input to the main body device 2 using the second set of the left controller 3 and the right controller 4.
[0067] Further, the display 12 is connected to the processor 81. The processor 81 displays an image generated (for example, by executing the above-described information processing) and / or an image acquired from the outside on the display 12.
[0068] The main body device 2 includes a codec circuit 87 and speakers (specifically, a left speaker and a right speaker) 88. The codec circuit 87 is connected to the speakers 88 and the audio input / output terminal 25, and is also connected to the processor 81. The codec circuit 87 is a circuit that controls the input / output of audio data to / from the speakers 88 and the audio input / output terminal 25.
[0069] The main body device 2 includes a power control unit 97 and a battery 98. The power control unit 97 is connected to the battery 98 and the processor 81. Also, although not shown, the power control unit 97 is connected to each part of the main body device 2 (specifically, each part that receives power supply from the battery 98, the left terminal 17, and the right terminal 21). The power control unit 97 controls the power supply from the battery 98 to the above-mentioned each part based on a command from the processor 81.
[0070] Also, the battery 98 is 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 body device 2 via the lower terminal 27, the supplied power is charged to the battery 98.
[0071] FIG. 7 is 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. Note that the details of the internal configuration regarding the main body device 2 are shown in FIG. 6, so they are omitted in FIG. 7.
[0072] The left controller 3 includes a communication control unit 101 that communicates with the main body device 2. As shown in FIG. 7, the communication control unit 101 is connected to each component including the terminal 42. In the present embodiment, the communication control unit 101 can communicate with the main body device 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 communication method that the left controller 3 performs with respect to the main body device 2. That is, when the left controller 3 is attached to the main body device 2, the communication control unit 101 communicates with the main body device 2 via the terminal 42. Further, when the left controller 3 is detached from the main body device 2, the communication control unit 101 performs wireless communication with the main body device 2 (specifically, the controller communication unit 83). The wireless communication between the controller communication unit 83 and the communication control unit 101 is performed in accordance with, for example, the Bluetooth (registered trademark) standard.
[0073] Further, the left controller 3 includes a memory 102 such as a flash memory. The communication control unit 101 is composed of, for example, a microcomputer (also referred to as a microprocessor), and executes various processes by executing the firmware stored in the memory 102.
[0074] The left controller 3 includes each button 103 (specifically, buttons 33 to 39, 43, 44, and 47). Further, the left controller 3 includes an analog stick (described as "stick" in FIG. 7) 32. Each button 103 and the analog stick 32 output information regarding the operation performed on themselves to the communication control unit 101 repeatedly at appropriate timings.
[0075] The communication control unit 101 acquires information regarding input (specifically, information regarding operations or detection results by sensors) 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 obtained by performing predetermined processing on the acquired information) to the main body device 2. Note that the operation data is repeatedly transmitted at a rate of once every predetermined time. Note that the intervals at which the information regarding input is transmitted to the main body device 2 may be the same or different for each input unit.
[0076] By transmitting the above operation data to the main body device 2, the main body device 2 can obtain the input performed on the left controller 3. That is, the main body device 2 can determine operations on each button 103 and the analog stick 32 based on the operation data.
[0077] The left controller 3 includes a power supply unit 108. In the present embodiment, the power supply unit 108 has a battery and a power control circuit. Although not shown, the power control circuit is connected to the battery and is also connected to each part of the left controller 3 (specifically, each part that receives power supply from the battery).
[0078] As shown in FIG. 7, the right controller 4 includes a communication control unit 111 that communicates with the main body device 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 the memory 102 of the left controller 3. Therefore, the communication control unit 111 can communicate with the main body device 2 both by wired communication via the terminal 64 and by wireless communication without using the terminal 64 (specifically, communication according to the Bluetooth (registered trademark) standard), and controls the communication method performed by the right controller 4 with respect to the main body device 2.
[0079] The right controller 4 includes each input unit similar to each input unit of the left controller 3. Specifically, it includes each button 113 and the analog stick 52. These input units have the same functions as the input units of the left controller 3 and operate in the same manner.
[0080] The right controller 4 includes a power supply unit 118. The power supply unit 118 has the same function as the power supply unit 108 of the left controller 3 and operates in the same manner.
[0081] [2. Overview of Processing in the Game System] Next, with reference to FIGS. 8 to 29, an overview of the processing executed in the game system 1 will be described. In the present embodiment, the game system 1 generates a game image in which terrain objects and characters (for example, player characters operated by players) are arranged in a game space, which is a three-dimensional virtual space, and displays it on a display device. Note that, in the present embodiment, the display device on which the game image is displayed may be the above-described display 12 or a stationary monitor.
[0082] [2-1. Voxel] In the present embodiment, for some objects in the game space, the shape is defined by voxel data. Here, a voxel is a rectangular parallelepiped (more specifically, a cubic) region arranged in a grid pattern in the game space, and voxel data is data indicating information regarding each voxel. Hereinafter, an object whose shape is defined by voxel data will be referred to as a "voxel object". In the present embodiment, the game system 1 stores voxel data as data for generating voxel objects in the game space for a plurality of voxels set in the game space.
[0083] FIG. 8 is a diagram showing an example of a terrain object that is a voxel object. As shown in FIG. 8, in the present embodiment, a terrain object representing a terrain such as the ground is defined in shape by voxel data (that is, it is a voxel object). Each cube shown in FIG. 8 represents a terrain object. In FIG. 8, the portions that are the sides of the terrain object are shown in thick lines, but this thick line is added for the purpose of making the drawing easier to view, and in reality, the sides of the terrain object do not need to be shown thickly.
[0084] Note that the terrain object shown in FIG. 8 is generated, for example, according to the rule that "if the parameter included in the voxel data set in the voxel is greater than a predetermined value, a cube is placed at the position of the voxel, and if it is less than or equal to the predetermined value, nothing is placed at the position of the voxel". The terrain object shown in FIG. 8 is shown for the purpose of easily exemplifying the relationship between the voxel and the voxel object. In the present embodiment, in reality, for example, like the terrain object shown in FIG. 13 described later, a voxel object is generated according to a rule that results in a complex shape (based on voxel data). Note that the rule for determining the shape of the voxel object based on the voxel data is arbitrary. In other embodiments, the game system 1 may generate a voxel object as shown in FIG. 8 or a voxel object as shown in FIG. 13 based on the object data.
[0085] Regarding the voxel object, the shape can be changed by changing the voxel data of each voxel. FIGS. 9 and 10 are diagrams showing an example of the state before and after a part of the terrain object shown in FIG. 8 is deleted. That is, when the hatched portion of the terrain object shown in FIG. 9 is destroyed, the terrain object changes to the shape shown in FIG. 10. At this time, the game system 1 can easily erase the terrain object by rewriting the voxel data described later so as to indicate that there is no terrain object for the voxels in the hatched portion. Note that when the game system 1 adds a terrain object, it can also easily change the shape of the terrain object by changing the voxel data of each voxel, in the same way as when erasing the terrain object.
[0086] In this way, the game system 1 can freely change the shape of the voxel object by rewriting the voxel data. For example, when the shape of a terrain object changes as a result of being destroyed for some reason (e.g., a player character strikes the terrain object) in the game, the game system 1 does not directly change the data indicating the outer shape of the terrain object (i.e., the mesh described later), but can freely change the shape of the terrain object by changing the voxel data used for generating the terrain object.
[0087] In the present embodiment, it is assumed that voxels are defined throughout the game space (that is, the voxel space in which voxels are set corresponds to the entire game space). However, the voxel space does not necessarily have to be set throughout the game space and may be set in a partial region of the game space. When the voxel space is set in a partial region of the game space, the shape of the voxel object is defined by the voxel data regarding the voxels in the voxel space, and the position of the voxel object in the game space is defined by the position of the voxel space in the game space. Also, in the game space, a main voxel space set throughout the game space and a sub-voxel space set in a partial region of the game space may be set. At this time, the game system 1 stores voxel data for each voxel space.
[0088] FIG. 11 is a diagram showing an example of voxel data. The voxel data includes density data, a first material ID, a second material ID, material mixing ratio data, and state data for each voxel defined in the game space. In the voxel data in the present embodiment, these data are set for each voxel.
[0089] The density data indicates the density, which is an index used to define the shape of the voxel object based on the voxel (specifically, the shape defined by a mesh described later). Although details will be described later, the position and shape of the surface of the voxel object (that is, the mesh described later) are determined based on the above density.
[0090] In this embodiment, the density can take an integer value in the range from a lower limit value (e.g., 0) to an upper limit value (e.g., 255). In this embodiment, in the game system 1, when the value of the density set for a voxel is high, the ratio of the volume occupied by the region within the voxel object in the voxel tends to be large, and when the value of the density is low, the ratio tends to be small. The surface shape of the voxel object is determined based on the density. In this way, the density is an index that affects the ratio of the volume occupied by the region within the voxel object in the voxel. It can also be said that the density is an index indicating the degree to which the space of the voxel is virtually occupied by the content (i.e., the virtual content of the voxel object). For example, when the density is 0, the inside of the voxel is empty, when the density is 255, all of the inside of the voxel is the content of the voxel object, and when the density is a value between 0 and 255, the inside of the voxel can be occupied by the content of the voxel object at a ratio corresponding to the value. Then, based on the above density, the shape of the mesh, that is, the surface shape of the voxel object can be determined. The mesh can also be said to be the surface of the part where the content exists in the voxel, or the boundary between the part where the content exists and the part where it does not exist in the voxel. Note that the volume occupied by the region within the voxel object generated based on the above density does not necessarily have to be exactly the volume corresponding to the ratio indicated by the density. For example, in the method of generating a voxel object as shown in FIG. 8 and the method of generating a voxel object as shown in FIG. 13, even if based on the same density, the volume of the voxel object may be different.
[0091] In other embodiments, the density may indicate either a state in which the volume occupied by the region within the voxel object occupies the entire region within the voxel, or a state in which the volume occupied by the region within the voxel object is not included in the region within the voxel. For example, the density data may be data that can only take values of 0 or 1.
[0092] The first material ID and the second material ID are information indicating the material (in other words, substance) of the voxel. Here, in the present embodiment, materials such as sand, rock, or soil are set for the voxel. Note that in the game system 1, a plurality of types of materials are prepared as materials that can be set for the voxel (refer to the material data shown in FIG. 12). In the present embodiment, up to two materials out of the plurality of types of prepared materials can be set for one voxel. The first material ID is an ID indicating the first material set for the voxel, and the second material ID is an ID indicating the second material set for the voxel. Although details will be described later, the material of the voxel object (that is, the material set for the polygon of the voxel object) is determined based on the material set for the voxel.
[0093] As described above, in the present embodiment, the voxel data includes an ID indicating the material. However, in other embodiments, the voxel data may be a data structure including data directly indicating the content of the material (that is, the name, properties, and drawing setting information described later).
[0094] The material mixing ratio data is an example of data indicating the ratio of each material in the voxel. In the present embodiment, since the number of material IDs set in one voxel is up to two, the material mixing ratio data indicating one of the ratios of the material indicated by the first material ID and the material indicated by the second material ID can also represent the other ratio. In the present embodiment, the material mixing ratio is a value indicating the ratio of the second material to the whole composed of the first material and the second material by a value of 0 or more and 1 or less. For example, when the material mixing ratio set in a certain voxel is 0.4, it represents that in the voxel, the first material and the second material are composed in a ratio of 0.6:0.4. Although details will be described later, the appearance and properties of the voxel object are determined based on the material. The material mixing ratio is used to determine the appearance and properties of the voxel object. In other embodiments, the material mixing ratio may be a value indicating the ratio of the first material. Also, the ratio of the materials in the voxel may be represented by respective values indicating the ratio of each material. In particular, in other embodiments, when it is possible to set three or more types of materials instead of up to two types, the ratio of the materials in the voxel is represented as a plurality of values respectively indicating the ratio of each material.
[0095] Note that in the present embodiment, it is not necessarily required to set two types of materials in the voxel, and one type of material may be set. For example, when one type of material is set in a certain voxel, the first material ID indicates the material, and the material mixing ratio is set to 0.
[0096] The state data indicates the state set in the voxel. The specific content and number of types of the state data are arbitrary. In the present embodiment, the state data includes data indicating the amount of damage set in the voxel. Note that in other embodiments, the state data may include, for example, data indicating whether the voxel is in a wet state (and the degree thereof).
[0097] As described above, since the voxel data includes the material ID in this embodiment, the game system 1 stores material data that defines the content of the material indicated by the material ID. FIG. 12 is a diagram showing an example of the material data. As shown in FIG. 12, in the material data in this embodiment, for each material, the material ID, the name, properties, and drawing setting information set for the material are associated with each other.
[0098] The name included in the material data is the name set for the material (for example, soil, sand, grass, etc.). Although details will be described later, during the game, the name of the material of the voxel object may be displayed (see FIG. 28). In order to perform such a display, the material data includes information on the name of the material.
[0099] The properties included in the material data are the properties set for the material. The properties of the material are the properties that the voxel object to which the material is set has in the game. Note that the specific content and number of types of the properties of the material are arbitrary. For example, at least any of the following information may be set as the properties of the material. · Hardness · Weight · Slipperiness · Damage setting when the player character touches · Temperature · Whether another object can adhere to the voxel object · Amount of recovery of the player character's physical strength when the player character destroys or acquires the voxel object · Amount of in-game currency acquired by the player character when the player character destroys or acquires the voxel object In other embodiments, information different from the above may be set as the information indicating the properties of the material.
[0100] In this embodiment, the material data includes, as information specifying the properties of the material, an ID indicating the property (see FIG. 12). Although not shown, the game system 1 stores property information in which, for each prepared property, the content of the property (for example, a value indicating the above-described weight or slipperiness) is associated with the property ID. By referring to the above property information, the game system 1 can specify the specific content of the property set for the material.
[0101] The rendering settings included in the material data are information indicating settings related to rendering, such as the texture used for rendering the voxel object to which the material is set. In this embodiment, the material data includes, as information on the rendering settings, the ID of the texture used for rendering the voxel object to which the material is set (see FIG. 12). Although not shown, the game system 1 stores texture information in which, for each prepared texture, the texture ID and the texture indicated by the texture ID are associated. By referring to the above texture information, the game system 1 can specify the specific content of the texture set for the material. In other embodiments, as information on the rendering settings, in addition to the texture information, any information related to the shading settings may be set. For example, the reflectivity, information related to the normal, etc. may be set.
[0102] Also, the material data may include other data than the data shown in FIG. 13. For example, the material data may include data related to sound settings. For example, the data related to sound settings may be data that defines the footstep sound output when the player character walks on the voxel object based on the voxel.
[0103] Note that the material data may be data in any format that can identify the properties of the material and / or rendering settings. For example, in other embodiments, the material data may have a data structure that includes data directly indicating the properties of the material and / or rendering settings, instead of a data structure that includes a material ID and a texture ID.
[0104] [2-2. Update of Voxel Data] During the game, when the above-described voxel data is updated, the voxel object is deformed. In the present embodiment, when a game event (hereinafter referred to as an "update event") for updating the voxel object occurs, the game system 1 updates the voxel data. The specific content of the update event is arbitrary. The update event may be, for example, that a character appearing in the game performs an action to deform the voxel object (for example, the player character punches the voxel object), or an event that deforms the voxel object occurs (for example, an object thrown by the character contacts the voxel object, or a bomb explodes).
[0105] FIG. 13 is a diagram showing an example of the game space when an update event occurs. The situation shown in FIG. 13 is a situation where the player character 201 performs a punch action on the terrain object 202, which is a voxel object. Although details will be described later, in the example shown in FIG. 13, the voxel data is updated so that the terrain object 202 around the position where the punch action by the player character 201 hits is deleted. As a result, the state in which the terrain object 202 is destroyed by the punch action of the player character 201 is expressed.
[0106] In this embodiment, when an update event occurs, the game system 1 sets an update range (update range 203 shown in FIG. 13) for updating the voxel object in the game space. The position, shape, and size of the update range are arbitrary. The position of the update range may be determined based on, for example, the position where an object related to the generated update event (for example, a player character who performed a punch) contacts the voxel object. In the example shown in FIG. 13, the position of the update range 203 may be determined based on the position where the punch by the player character 201 hits, and for example, the hit position or the position a predetermined distance ahead from the hit position may be the center position of the update range 203. The shape and size of the update range may be determined in advance to be a shape corresponding to the type of the update event. For example, when an update event due to the punch of the player character 201 occurs, the shape and size of the update range may be determined as a sphere with a predetermined size as shown in FIG. 13. Also, the size of the update range may be determined according to a value indicating the degree of influence of the generated update event (for example, the strength of the punch or the size of the explosion).
[0107] The game system 1 changes the density for the voxels corresponding to the set update range. Note that the voxels corresponding to the update range are, for example, the voxels within the update range or the voxels overlapping with the update range. As a result of the density being changed, the mesh of the voxel object is changed by the process described later, and thus the shape of the voxel object (the visible shape and the shape used for collision determination) is changed. Note that in other embodiments, in addition to changing the density for the voxels included in the update range, the game system 1 may change the material (that is, the first material, the second material, and the material mixing ratio) in the voxels or change the state in the voxels.
[0108] In this embodiment, the game system 1 determines whether a voxel is included in the update range using an SDF (Signed Distance Field). The game system 1 sets an SDF indicating the update range set in the game space, and makes the above determination based on the value of the SDF. The SDF represents, for any position, the signed distance from a defined shape. FIG. 14 is a diagram showing an example of the update range. In the example shown in FIG. 14, a spherical update range is set in the game space. For example, in the example shown in FIG. 14, among the positions in the game space, the value of the SDF becomes negative for the positions inside the shape represented by the SDF, and the value of the SDF becomes positive for the positions outside the shape represented by the SDF. In this example, it is possible to determine whether it is included in the update range based on whether the value of the SDF is positive or negative. Also, by using the value of the signed distance, not only simple inside / outside determination but also processes such as correction and interpolation can be performed.
[0109] In the above, an example in which a change is added to the voxel object such that the voxel object within the update range is deformed as if it were erased has been described, but the changes added to the voxel object using the update range are not limited to this. For example, a change in which a voxel object is newly added within the update range (that is, the volume occupied by the area within the voxel object increases by the amount of the update range) may be added to the voxel object (see FIG. 29 described later). Also, a change may be added to the voxel object such that only the material of the voxels within the update range changes without changing the density of the voxels. Further, a change combining a change in the density of the voxels and a change in the material may be added.
[0110] [2-3. Calculation of Vertices] When the density of the voxels is updated as described above, the game system 1 sets vertices based on the updated voxel data. The above vertices can be the vertices of the mesh of the voxel object. Although details will be described later, in this embodiment, the above vertices are simplified, and the simplified vertices become the vertices of the mesh of the voxel object.
[0111] FIG. 15 is a diagram showing an example of a method for setting vertices. In FIGS. 15 to 24 described below, for the purpose of making the drawings easier to view and the explanations easier to understand, voxels, vertices, meshes, etc. are represented two-dimensionally, but in reality, vertices and meshes are set in a three-dimensional space based on voxels in the three-dimensional space. In this embodiment, the game system 1 uses a method of setting vertices at coordinates based on the positions and densities of a plurality of surrounding voxels for a portion where a voxel having a set density indicating its existence (i.e., a density equal to or greater than a reference value described later) and a voxel having a set density indicating its non-existence (i.e., a density less than the reference value described later) are adjacent. The details of this method will be described below.
[0112] As described above, in the present embodiment, the density set for each voxel is set in the range of 0 to 255. A voxel with a density of 0 is completely in the air, and a voxel with a density of 255 represents a state where it is completely filled. Densities between 0 and 255 are treated interpolatively and used for vertex determination. And in the present 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 treated as being outside the object. It can also be said that voxels with a density greater than or equal to the reference value are virtually treated as voxels indicating their existence, and voxels with a density less than the reference value are treated as voxels indicating their non-existence. It is not necessary to define only voxels with a density of 0 as being outside the object (i.e., set the reference value = 1), and the reference value can be, for example, 128. In the example shown in FIG. 15, in voxel 211 and other outer voxels, the density is 0, in voxel 212 the density is 100 which is less than the reference value, and in voxels 213 and 214 the densities are 150 and 210 which are greater than or equal to the reference value. In the present embodiment, the game system 1 generates vertices between voxels with a density greater than or equal to the reference value and voxels with a density less than the reference value. Specifically, for each region spanning eight (four in the drawing) adjacent voxels (the region surrounded by the dotted line in the drawing), a determination is made as to whether to generate a vertex. That is, a vertex is generated in a region spanning both voxels with a density greater than or equal to the reference value and voxels with a density less than the reference value. The coordinates of the vertex are determined by comparing the densities of adjacent voxels for each of the X, Y, and Z axes and performing interpolation based on the density difference. Note that by setting normal information that defines the position and orientation of the straight line connecting the vertices, the coordinates of the vertex can be further calculated based on the normal information. The normal information may be retained in advance for at least some of the voxels, or if not retained, the normal information may also be calculated based on the densities of adjacent voxels. Note that in FIG. 15, since the density of voxel 212 is less than the reference value, in the determination of the presence or absence of vertices, voxel 212 is treated as being outside the object, but the density value of voxel 212 itself is used for the calculation of the coordinates of the generated vertices.If the reference value is set to a value lower than the density of voxel 212, the number of vertices will further increase on the upper right side and the upper left side of voxel 212 in Fig. 15.
[0113] By setting the vertices as described above, when generating a mesh that connects each of the set vertices (or each vertex after performing the simplification process described later on each of the set vertices), a shape having a volume that reflects the density of each voxel to some extent can be generated. However, depending on the relationship with adjacent voxels, it is possible that a voxel with a density of 0 includes a region within a part of the object, or a voxel with a density of 255 includes a region outside a part of the object. Also, in this embodiment, since voxels with a value less than the reference value are treated as outside the object, the volume becomes smaller by the amount that the number of vertices is less compared to the case of treating them as inside the object. Thus, it is not necessary to calculate the polygon mesh so as to have a volume that strictly corresponds to the density value.
[0114] [2-4. Determination of Vertex Material] The game system 1 determines the material for each of the vertices set as described above. The material of a vertex is determined based on the materials of the voxels around the vertex. The voxels around a vertex are, for example, the voxels used to determine whether to generate the vertex (that is, the voxels that overlap with the "region spanning voxels" described above). Note that in other embodiments, the voxels used to determine the material of a vertex do not have to be the same as the voxels used to determine the generation of the vertex and may be different.
[0115] FIG. 16 is a diagram showing an example of a method for determining the material of a vertex. In the example shown in FIG. 16, it is assumed that a vertex 219 is set for four voxels 215 to 218, and the four voxels 215 to 218 are the above-mentioned "voxels around the vertex". In the actual three-dimensional space, the number of voxels around the vertex is eight. Also, in the example shown in FIG. 16, for voxel 215, the density is set to 255, the first material is "sand", and the material mixing ratio is 0 (that is, the first material: the second material = 1:0, or the second material may not be set). For voxel 216, the density is set to 0 (the first and second materials may not be set). For voxel 217, the density is set to 204, the first material is "sand", the second material is "grass", and the material mixing ratio is 0.3 (that is, the first material: the 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 (that is, the first material: the second material = 0.6:0.4). Also, the coordinates indicating the position of vertex 219 are assumed to be (X, Y) = (0.8, 0.6). Note that the coordinate system of these coordinates has the left-right direction in FIG. 16 as the X coordinate, the up-down direction as the Y coordinate, and the center position of the lower-left voxel 217 (the position of the white circle shown in FIG. 13) among the center positions of voxels 215 to 218 as (0, 0).
[0116] When determining the material of a vertex, the game system 1 calculates an evaluation value based on the density of each material in the surrounding voxels 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 as the distance from the center position of the voxel to the vertex is closer. In the present embodiment, when the center position of the voxel is (x1, y1) and the coordinates of the vertex are (x2, y2), the weight value for a certain voxel is calculated according to the following formula (1). (Weight value) = |(1 - x1) - x2|·|(1 - y1) - y2|…(1) In the example shown in FIG. 16, the weight values of each of the voxels 215 to 218 calculated according to the above formula (1) are as follows. (Weight value of voxel 215)=|(1 - 0)-0.8|·|(1 - 1)-0.6| = 0.12 (Weight value of voxel 216)=|(1 - 1)-0.8|·|(1 - 1)-0.6| = 0.48 (Weight value of voxel 217)=|(1 - 0)-0.8|·|(1 - 0)-0.6| = 0.08 (Weight value of voxel 218)=|(1 - 1)-0.8|·|(1 - 0)-0.6| = 0.32
[0117] Also, the game system 1 calculates the density of the material for each voxel. Here, the density of the material is a value obtained by multiplying the ratio occupied by the material among the materials set in the voxel by the density of the voxel. In the present embodiment, as the density of the voxel, a value obtained by normalizing the values from 0 to 255 described above to values from 0 to 1 is used. In the example shown in FIG. 16, for voxel 215, since the only material set is sand, the above ratio for the sand material is 1, and the density of the voxel is 1, so the density of the sand material is 1. For voxel 216, since the density is 0 and no material is set, the density of the material is not calculated. Or, if some material is set, the density of the material is 0. For voxel 217, the above ratios of the set sand material and grass material are 0.7 and 0.3, respectively, and the density of the voxel is 204 / 255 = 0.8, so the density of the sand material is 0.7·0.8 = 0.56, and the density of the grass material is 0.3·0.8 = 0.24. For voxel 218, the above ratios of the set soil material and grass material are 0.6 and 0.4, respectively, and the density of the voxel is 153 / 255 = 0.6, so 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.
[0118] Then, the game system 1 calculates the above evaluation value for each material based on the above weight value and the density of the material. In the present embodiment, the evaluation value of the material is a value obtained by attaching a weight according to the weight value for each voxel to the density of the material calculated for each voxel and summing for each surrounding voxel. In the example shown in FIG. 16, for the evaluation value of the sand material, the density of the material for voxel 215 is 1 and the weight value is 0.12, and the density of the material for voxel 217 is 0.56 and the weight value is 0.08. Therefore, 1·0.12 + 0.56·0.08 = 0.1648. Also, for the evaluation value of the grass material, the density of the material for voxel 217 is 0.24 and the weight value is 0.08, and the density of the material for voxel 218 is 0.24 and the weight value is 0.32. Therefore, 0.24·0.08 + 0.24·0.32 = 0.096. Also, for the evaluation value of the soil material, the density of the material for voxel 218 is 0.36 and the weight value is 0.32. Therefore, 0.36·0.32 = 0.1152.
[0119] The game system 1 determines the vertex materials based on the evaluation values for each material. Specifically, a predetermined number of materials are determined as the vertex materials in descending order of the evaluation values. In this embodiment, two materials with large evaluation values are determined as the vertex materials. In the example shown in FIG. 16, since the evaluation values of the materials of sand, grass, and soil are 0.1648, 0.096, and 0.1152 respectively, the vertex materials are determined as the sand material and the soil material. Also, the game system 1 calculates the ratio of the two determined materials based on the above evaluation values. In this embodiment, the ratio of the two materials may be expressed as a second material ratio, which is the ratio of the second material to the whole, similar to the above material mixing ratio. In the example shown in FIG. 16, for example, when the first material is the soil material and the second material is set as the sand material, the above second material ratio is shown as 0.1648 / (0.1648 + 0.1152) ≈ 0.59. Note that in other embodiments, as the value representing the ratio of the two materials, a value indicating the ratio of the first material may be used. Also, respective values indicating the ratio of each material may be used.
[0120] In this embodiment, the game system 1 generates and stores vertex data indicating the position of the vertex, the material IDs of the first and second materials set for the vertex, and the ratio of the materials. However, the method of managing the materials set for the vertex is arbitrary. In other embodiments, the vertex data may be a data structure including data directly indicating the contents of the first and second materials.
[0121] As described above, in the present embodiment, for each vertex, for the material IDs included in the voxel data of a plurality of surrounding voxels, a priority parameter (for example, an evaluation value) for each material ID is calculated based on the voxel data. Then, based on the priority parameter, up to a predetermined number (here, two) of material IDs with high priority are selected and determined as the material ID of the vertex. Note that the specific parameter used as the priority parameter is not limited to the above evaluation value. For example, in other embodiments, an evaluation value calculated using the density of the material instead of the above weight value may be used as the priority parameter.
[0122] In the present embodiment, an evaluation value, which is an example of the priority parameter, is calculated based on the densities of a plurality of voxels around the vertex so that the priority of the material set in the voxel with a higher density becomes higher (that is, the evaluation value of the material becomes larger and the material is more likely to be selected). According to this, the material of the vertex can be determined by reflecting the magnitude of the density set in the voxel.
[0123] Also, in the present embodiment, an evaluation value, which is an example of the priority parameter, is calculated based on the distance from the reference position (specifically, the center position) of a plurality of voxels around the vertex to the vertex so that the priority of the material set in the voxel closer to the vertex becomes higher. According to this, the material of the vertex can be determined by reflecting the distance between the voxel and the vertex.
[0124] Also, in the present embodiment, it can be said that an evaluation value, which is an example of the priority parameter, is calculated based on the material mixing ratio of a plurality of voxels around the vertex so that the priority of the material with a higher material mixing ratio becomes higher. According to this, when a plurality of materials are set in one voxel, the material of the vertex can be determined by reflecting the ratio of each material.
[0125] [2-5. Simplification of Vertex] In this embodiment, the game system 1 simplifies each vertex calculated as described above. That is, the game system 1 reduces the number of vertices by grouping some of the vertices calculated as described above and replacing them with a single vertex. Although details will be described later, the coordinates (i.e., positions) and materials of the vertices to be replaced are set based on a plurality of vertices before replacement. By such simplification, the number of vertices and polygons constituting the mesh of the voxel object can be reduced, and the amount of memory used for processing and the processing load can be reduced.
[0126] In this embodiment, the game system 1 simplifies by expressing each vertex using an SVO (Sparse Voxel Octree). FIG. 17 is a diagram showing an example of vertex simplification. In FIG. 17, one square indicated by a solid line shown in FIG. 17(a) represents one vertex division region. Here, the vertex division region is a square region having the center position of the voxel as a vertex (in the actual three-dimensional space, the vertex division region is a cube or a rectangular parallelepiped), and is a region having the dotted lines in FIGS. 15 and 16 as sides. Further, in FIG. 17, the vertex division region in which the letter "v" is shown inside indicates the vertex division region in which vertices are set.
[0127] In this embodiment, the game system 1 determines whether or not it is possible to simplify the vertices within a predetermined number (four in FIG. 17, eight in the actual three-dimensional space) of mutually adjacent vertex division regions. When it is determined that simplification is possible, the vertices within the predetermined number of vertex division regions are simplified.
[0128] (a) of FIG. 17 is the state before simplification. In the example shown in FIG. 17, it is assumed that the vertex division regions within the range surrounded by the dotted line can be simplified. At this time, the game system 1 performs simplification so that the vertices within each of the predetermined number of vertex division regions determined to be simplifiable are replaced by one vertex (see FIG. 17(b)). As a result, the vertices within the predetermined number of vertex division regions are simplified to one vertex.
[0129] In this embodiment, the game system 1 performs simplification in multiple stages. The number of stages is arbitrary, but in FIG. 17, only the first two stages are illustrated and described. (b) of FIG. 17 shows the state after the first-stage simplification, and (c) of FIG. 17 shows the state after the second-stage simplification. In the second-stage simplification, it is determined whether simplification is possible for the vertices generated by the first-stage simplification. In the example shown in FIG. 17, as a result of determining that the vertex division region within the range surrounded by the dotted line in (b) of FIG. 17 can be simplified, the vertices of the vertex division region are simplified, resulting in the state shown in (c) of FIG. 17. Note that the determination conditions for whether the first-stage simplification is possible and the determination conditions for whether the second-stage simplification is possible may be the same or different.
[0130] Regarding the determination of whether simplification is possible, the specific method is arbitrary. In this embodiment, as the conditions for the above determination, conditions related to the shape of the voxel object and conditions related to the material are used. In this embodiment, when both the conditions related to the shape of the voxel object and the conditions related to the material are satisfied, it is determined that simplification is possible, and when at least one of the conditions related to the shape of the voxel object and the conditions related to the material is not satisfied, it is determined that simplification is impossible.
[0131] The condition regarding the shape means, for example, that the shape formed by each vertex before simplification and the shape formed by each vertex after simplification are not significantly changed. For example, whether the shape formed by each vertex is not significantly changed before and after simplification can be determined by calculating an index indicating the error between the mesh before simplification and the mesh after simplification, and checking whether the index is less than or equal to a predetermined allowable value. Also, for example, when the shape formed by each vertex before simplification is a hollow shape, while the shape formed by each vertex after simplification is not a hollow shape (that is, the information that it is hollow is lost due to simplification), it is also determined that the condition regarding the shape is not satisfied. Whether the above situation occurs can be determined, for example, based on the density of each voxel corresponding to the vertex division region to be determined. Also, for example, when the shape formed by each vertex before simplification is a shape that can only be represented by two or more vertices and cannot be represented by a single vertex, it is also determined that the condition regarding the shape is not satisfied. Note that, as the condition regarding the shape of the voxel object, the same conditions as those of the conventional method using SVO may be used.
[0132] Also, as a condition regarding materials, in the present embodiment, a condition regarding the number of types of materials set for each vertex within the above-mentioned predetermined number of vertex division regions to be simplified is used. FIG. 18 is a diagram showing an example of the condition regarding materials. FIG. 18(a) shows a case where the materials of vertices 221 to 224 are (grass), (grass), (grass and soil), and (grass and soil), respectively, and FIG. 18(b) shows a case where the materials of vertices 221 to 224 are (grass and sand), (grass), (grass and soil), and (grass and soil), respectively. In the present embodiment, the condition regarding materials is that the total number of types of materials set for each of the above vertices to be simplified is equal to or less than a predetermined number. For example, the condition regarding materials is that it is equal to or less than the number of materials that can be set for one vertex. In the present embodiment, the above-mentioned predetermined number is 2. For example, in the case of FIG. 18(a), the total number of types of materials set for each of the vertices 221 to 224 to be simplified is two types, namely grass and soil, so the condition regarding materials is satisfied. At this time, on the condition that the above-mentioned condition regarding the shape of the object is satisfied, each of the vertices 221 to 224 is determined to be simplifiable. On the other hand, in the case of FIG. 18(b), the total number of types of materials set for each of the vertices 221 to 224 to be simplified is three types, namely grass, soil, and sand, so the condition regarding materials is not satisfied. At this time, regardless of whether the above-mentioned condition regarding the shape of the object is satisfied, each of the vertices 221 to 224 is determined to be non-simplifiable.
[0133] Note that in the game system 1, even if materials that are strictly classified into different types are prepared, and there are a plurality of types of materials with the same set properties but different appearances, for some of such a plurality of types of materials, they may be regarded as the same type in the determination of the condition regarding materials and the determination may be made accordingly. For example, regarding soil materials, there may be a case where a plurality of types of soil materials with the same properties but similar appearances (for example, texture color and pattern) are prepared. In such a case, the game system 1 may regard the plurality of types of soil materials as the same type and make a determination of the condition regarding materials.
[0134] Here, in the present embodiment, with respect to vertices, similar to voxels, up to two types of materials can be set. On the other hand, in the present embodiment, when the total number of types of materials set for each vertex to be simplified is three or more, simplification is not performed. That is, when the total number of types of materials exceeds the number of materials that can be set for one vertex, simplification is not performed. Therefore, even if the number of vertices is reduced by simplification, the information on the materials set for the vertices will not be lost due to simplification, and the material information can be maintained.
[0135] In the present embodiment, the material of the vertex after simplification is determined based on the material of each vertex before simplification. Specifically, the game system 1 sets one or two types of materials set for the vertex before simplification as the first material and the second material for the vertex after simplification. Thereby, the material information can be maintained. Note that the ratio of the materials after simplification is determined based on the ratio of the materials of each vertex before simplification. In the present embodiment, the ratio of the materials after simplification is calculated in the same manner as the method of calculating the ratio of the materials of each vertex using the above evaluation value. That is, the game system 1 calculates a weight value based on the distance between the vertex after simplification and the vertex before simplification, and based on the weight value and the density of the material at the vertex before simplification (note that the evaluation value of the material described in [2-4. Determination of the material of the vertex] above can be used as the density of the material here), calculates an evaluation value for each material. Then, the ratio of the materials is calculated based on the calculated evaluation value of each material.
[0136] [2-6. Generation of Mesh] In this embodiment, based on each vertex simplified as described above, a mesh of the voxel object is generated. FIG. 19 is a diagram showing an example of a mesh generated based on each vertex. Note that the square shown in FIG. 19 indicates the above-described vertex division region, or a vertex division region in which a plurality of vertex division regions are combined into one by simplification. As shown in FIG. 19, the game system 1 generates a mesh composed of polygons having straight lines connecting adjacent vertices of the vertex division region as sides. Each polygon constituting the mesh is a triangle or a quadrilateral.
[0137] In this embodiment, the game system 1 generates two types of meshes: a display mesh and a determination mesh. The display mesh is a mesh used for displaying the voxel object. The determination mesh is a mesh used for collision determination of the voxel object. Although details will be described later, the game system 1 can perform processing using meshes suitable for displaying and collision determination of the voxel object by using the above two types of meshes.
[0138] In this embodiment, the game system 1 generates the display mesh and the determination mesh based on the data of the above-described SVO (that is, based on each simplified vertex). According to this, by sharing the vertex data used for generating the two types of meshes, the processing efficiency can be improved. Note that in other embodiments, the game system 1 may not perform vertex simplification and may generate the display mesh and / or the determination mesh based on non-simplified vertices.
[0139] In this embodiment, the game system 1 generates the determination mesh to have a simpler shape than the display mesh. Specifically, the game system 1 reduces the number of vertices of the determination mesh to be less than the number of vertices of the display mesh. Here, 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, and also includes the data used for determining whether simplification is possible. This data includes, for example, the data of vertices calculated as candidates for the vertices after simplification (referred to as temporary vertices), and the data of the above-mentioned index indicating the error between the vertices before simplification and the temporary vertices. For example, the game system 1 may use, for the generation of the determination mesh, vertices among the temporary vertices for which the above index is equal to or less than a predetermined threshold (this threshold is set to be larger than the above allowable value). According to this, the number of vertices of the determination mesh can be made less than the number of vertices of the display mesh. By making the number of vertices of the determination mesh less than the number of vertices of the display mesh, the processing load due to collision determination can be reduced. Also, since the number of vertices of the display mesh is not excessively reduced, the appearance of the voxel object can be expressed in detail.
[0140] Note that in other embodiments, the display mesh and the determination mesh may be generated based on the same data or different data. Also, the display mesh and the determination mesh may have the same shape (however, even in this case, the materials set for both may be different). Also, the number of vertices of the determination mesh may be the same as the number of vertices of the display mesh, or may be more than the number of vertices of the display mesh.
[0141] [2-6-1. Determination of the Material of the Display Mesh] Next, an example of a method for determining the material and appearance of the display mesh will be described. In the present embodiment, the game system 1 determines the material for each polygon constituting the display mesh. Although details will be described later, in the present embodiment, the polygon corresponding to the above polygon is drawn using up to two textures corresponding to up to two materials. Therefore, the game system 1 ensures that for each polygon constituting the mesh, ultimately, the number of materials set for one polygon is two or less. In other embodiments, three or more materials may be set. For example, in embodiments where there are three or more materials for voxels and vertices, the same number of materials may be set for the polygon.
[0142] In the present embodiment, a quadrilateral may be formed as the polygon constituting the display mesh (see FIG. 19). When determining the material of the display mesh, the game system 1 first divides the quadrilateral constituting the display mesh into two triangles under certain conditions. Hereinafter, with reference to FIG. 20, the process of dividing the quadrilateral into two triangles will be described.
[0143] FIG. 20 is a diagram showing an example in which a quadrilateral constituting a mesh is divided into two triangles. (a) shown in FIG. 20 shows the quadrilateral before division formed by vertices 231 to 234, which are part of the vertices of the mesh, and (b) shown in FIG. 20 shows the two triangles obtained by dividing the quadrilateral. In the example shown in FIG. 20, assume that the materials of each of the vertices 231 to 234 are grass, soil, sand and grass, and grass, respectively.
[0144] In this embodiment, when there are three or more types of materials set at each vertex of a quadrilateral in total, the game system 1 determines whether the division condition is satisfied. In this embodiment, the division condition is that by dividing the quadrilateral into two triangles, the total number of types of materials set at each vertex of the triangles can be made two or less. When the division condition is satisfied, the game system 1 divides the quadrilateral into two triangles such that the total number of types of materials set at each vertex is two or less. In the example shown in FIG. 20, the materials set at each vertex 231 to 234 forming the quadrilateral are three types: grass, soil, and sand. Also, when the above quadrilateral is divided into a triangle formed by vertices 231, 232, 234 and a triangle formed by vertices 231, 233, 234, the materials set at each vertex of the former triangle are two types: sand and grass, and the materials set at each vertex of the latter triangle are two types: grass and soil (see (b) of FIG. 20). Therefore, for the above quadrilateral, the division condition is satisfied, so the game system 1 divides the quadrilateral into two triangles.
[0145] Note that since there are two ways to divide a quadrilateral into two triangles, when the division condition is satisfied for the triangles divided by at least one of the two ways, the game system 1 performs the above division by the method that satisfies the division condition. On the other hand, when the division condition is not satisfied for the triangles divided by either of the two ways, the division is performed by either method.
[0146] By performing the division as described above, the game system 1 can generate two triangles in which the materials set at each vertex are two or less so as to minimize the omission of information on three or more types of materials set at each vertex of the quadrilateral. Here, as described above, each polygon constituting the mesh is drawn using up to two types of textures. Therefore, by performing the above division, the game system 1 can draw the polygon using two types of textures so as to minimize the omission of information on the materials set at each vertex.
[0147] In this embodiment, the game system 1 sets a polygon corresponding to the polygon after the above division. That is, the vertices of the polygon after the above division become the vertices of the polygon of the display mesh.
[0148] In this embodiment, for each polygon constituting the display mesh, when there are three or more types of materials set for each vertex of one polygon in total, the game system 1 selects two types of materials to determine the material of the polygon. FIG. 21 is a diagram showing an example of a method for determining the material of a polygon constituting the display mesh. In the example shown in FIG. 21, for vertex 241 of the triangular polygon constituting the display mesh, the first material is "grass", the second material is "soil", and the material ratio of the first material: the second material = 0.8: 0.2 is set. Also, for vertex 242 of the above polygon, the first material is "grass", the second material is "sand", and the material ratio of the first material: the second material = 0.5: 0.5 is set. Also, for vertex 243 of the above polygon, the first material is "sand", the second material is "soil", and the material ratio of the first material: the second material = 0.7: 0.3 is set.
[0149] When there are three or more types of materials set for each vertex of the polygon in total, the game system 1 calculates a determination value for each material. The determination value is calculated as the total value of the ratios for each vertex where the material is set. Then, the game system 1 selects two materials in order from the ones with larger determination values as the materials of the polygon. In the example shown in FIG. 21, the determination value of the grass material is 0.8 + 0.5 = 1.3, the determination value of the sand material is 0.5 + 0.7 = 1.2, and the determination value of the soil material is 0.2 + 0.3 = 0.5. Therefore, as the materials of the polygon shown in FIG. 21, the grass and sand materials are selected (see (a) in FIG. 21).
[0150] Note that the specific method for selecting the material of the polygon of the display mesh is arbitrary. In other embodiments, the material of the polygon of the display mesh may be selected by any method based on the information set at the vertices of the polygon. For example, for the material of the polygon of the display mesh, the material with the largest ratio at one vertex is specified for each vertex, and the material with the largest number of specified materials for each vertex may be selected as the material of the polygon.
[0151] In this embodiment, the material of the polygon selected as described above is indicated by the materials set at each vertex of the polygon. That is, when the material of the polygon is selected, the game system 1 changes the materials set at each vertex of the polygon (that is, the material IDs included in the vertex data) to the selected material. In the example shown in FIG. 21, for vertices 241 and 243, before the selection of the material of the polygon, the materials of grass and soil, and sand and soil are set respectively (see (a) of FIG. 21). When the materials of grass and sand are selected as the material of the polygon as described above, the materials set at each of vertices 241 and 243 are changed to grass and sand (see (b) of FIG. 21). Note that for vertex 242, since the material set before the selection is the same as the selected material of the polygon, the material is not changed. As described above, when two types of materials are selected as the material of the polygon, the information on the materials of the third type and later set at each vertex of the polygon will be deleted.
[0152] Further, the game system 1 changes the ratio of the materials set for the vertices according to the change of the materials set for the vertices. For example, for vertex 241, the content is changed from the first material being grass and the second material being soil to the first material being grass and the second material being sand. Here, since the proportion of the sand material is 0, the material ratio is the first material: the second material = 1:0. In this way, the above change formally changes the material of each vertex in order to represent the material of the polygon by the materials of each vertex of the polygon.
[0153] According to the above, since the materials set for each vertex of one polygon are only the materials corresponding to the textures used for the rendering described later, it is possible to facilitate the execution of the rendering process using the textures.
[0154] Note that due to the above change, it may be the case that all the materials for a certain vertex are changed (that is, none of the materials before the change match the materials after the change). Such a case is, for example, when the material set for the vertex before the change is soil and the materials selected as the material of the polygon are grass and sand. In such a case, the material ratio at the vertex may be set based on the material ratios at the other vertices of the polygon. For example, in the above example, if the first material set for one of the other vertices of the triangular polygon is grass and the material ratio is grass: sand = 1:0, and the material set for another vertex is sand and the material ratio is sand: grass = 1:0, the material ratio at the vertex may be set to grass: sand = 0.5:0.5. Further, the game system 1 may determine the material ratio at the vertex in consideration of the distance between the vertex and the other vertices (for example, based on a weight value that increases as the distance gets closer).
[0155] As described above, in the present embodiment, for each polygon, the game system 1 selects up to a predetermined number (here, two) of the material IDs set for the vertices included in the polygon (that is, the material IDs set for the vertices of the polygon corresponding to the polygon), and determines them as the material IDs of the polygon. According to this, the game system 1 can perform the drawing process while suppressing the number of textures used while reflecting the material set for the vertices in the appearance of the polygon.
[0156] In the present embodiment, regarding the materials of all the vertices constituting the polygon, when the number of the materials is less than or equal to the predetermined number, the game system 1 determines the material as the material of the polygon. When the material exceeds the predetermined number, a predetermined number of materials with high priority are selected based on the priority parameter of each vertex (specifically, based on the determination value calculated based on the above-described evaluation value) and determined as the material of the polygon. As a result, even when materials exceeding the predetermined number in total are set for each vertex, the material of the polygon can be set to be a predetermined number or less of materials considering the priority.
[0157] As described above, in the present embodiment, the first and second materials set for each vertex of one polygon are changed to be two types of materials set for the polygon. Here, when such a change is made, there may be a discrepancy in the first and second materials set for the vertices shared by two adjacent polygons.
[0158] FIG. 22 is a diagram showing an example of materials set at each vertex of two adjacent polygons. FIG. 22 shows a state (FIG. 20(b)) in which two polygons are formed by the respective vertices 231 to 234 shown in FIG. 20. In the example shown in FIG. 22, since the material of the first polygon formed by vertices 231, 233, and 234 is determined to be grass and sand, the first and second materials of these vertices should be set to grass and sand, respectively. On the other hand, since the material of the second polygon formed by vertices 231, 232, and 234 is determined to be grass and soil, the first and second materials of these vertices should be set to grass and soil, respectively. Therefore, in the example shown in FIG. 22, there is a conflict in the materials to be set for vertices 231 and 234 shared by the two polygons.
[0159] Therefore, in the present embodiment, when there is a conflict in the materials to be set for a vertex shared by two polygons, the game system 1 adds another vertex at the same position with respect to the said vertex. FIG. 22(b) is a diagram showing an example of a state in which vertex 231' is added for vertex 231 and vertex 234' is added for vertex 234. In the example of FIG. 22, for vertices 231 and 234, the game system 1 sets the first and second materials as grass and sand according to the material of the first polygon. Also, for vertices 231' and 234', the game system 1 sets the first and second materials as grass and soil according to the material of the second polygon. In this way, by formally setting two vertices as the vertices shared by the two polygons (that is, generating two vertex data with the same position but different materials), it is possible to suppress the occurrence of a conflict in the materials set for the vertices.
[0160] The game system 1 generates a display mesh composed of polygons in which vertices and materials are determined as described above. Also, the game system 1 performs the drawing of the voxel object by performing the drawing of the polygon based on the information of the materials set at each vertex (that is, the first material and the second material).
[0161] Figure 23 is a diagram showing an example of applying a texture to a polygon. In Figure 23, a triangular polygon formed by the respective vertices 241 to 243 shown in Figure 21 is shown. Note that the materials set for the respective vertices 241 to 243 are those shown in (b) of Figure 21.
[0162] Regarding the positions of the vertices of the polygon, drawing is performed by a mapping that blends the texture of the first material and the texture of the second material set for the vertex at the ratio of the material set for the vertex (that is, using the ratio as the blend ratio). Note that the textures of the first and second materials used for drawing are the textures indicated by the drawing setting information associated with each material ID associated with the data of the vertex in the above-described material data (see Figure 12). In the example shown in Figure 23, regarding the position of vertex 241, since the material ratio is grass:sand = 1:0, drawing is performed using only the grass texture. Also, regarding the position of vertex 243, since the first material is sand and the material ratio is sand:grass = 1:0, drawing is performed using only the sand texture. Further, regarding the position of vertex 242, since the first material is grass, the second material is sand, and the material ratio is grass:sand = 0.5:0.5, drawing is performed by blending the grass texture and the sand texture at a blend ratio of 0.5:0.5.
[0163] Also, for positions other than the vertices of the polygon, the game system 1 determines the blend rate by interpolating the blend rates at each vertex. Then, the textures of the two materials set for each vertex are drawn by a mapping that blends based on the interpolated blend rate. Note that the specific method of interpolation is arbitrary. As an example, the blend rate between vertices is linearly interpolated. In FIG. 23, the positions where the ratio of applying the texture of the grass material is high are shown in white, and the positions where the ratio of applying the texture of the sand material is high are shown in black. In the example shown in FIG. 23, the grass texture is applied at vertex 241, the blend ratio of the sand texture increases as it approaches vertex 243, the blend rate of grass and sand becomes 1:1 at the position of vertex 242, and only the sand texture is applied at the position of vertex 243. In this way, by blending and drawing the two textures set for the polygon (that is, set for each vertex of the polygon) at a blend rate according to the ratio of the materials, the appearance at the boundary between different materials in the display mesh can be made natural. As a result, the appearance of the display mesh with multiple types of materials set can be made natural.
[0164] [2-6-2. Determination of the Material of the Mesh for Judgment] Next, an example of a method for determining the material of the mesh for judgment will be described. Although details will be described later, in this embodiment, collision detection of the voxel object is performed using the mesh for judgment, and processing may be executed according to the material of the voxel object for which collision is detected. Therefore, in this embodiment, the material is also determined for the mesh for judgment.
[0165] In this embodiment, for each polygon constituting the determination mesh, the game system 1 makes it such that there is one type of material set for one polygon. Specifically, the game system 1 determines the material set for the polygon of the determination mesh based on the material information (that is, the information on the first and second materials and the ratio of the materials) set for the vertices of the polygon.
[0166] FIG. 24 is a diagram showing an example of a method for determining the material of a polygon constituting the determination mesh. FIG. 24 shows an example of determining the material for a triangular polygon formed by the respective vertices 241 to 243 shown in FIG. 21. Note that the materials set for the respective vertices 241 to 243 are those shown in FIG. 21(a).
[0167] When determining the material of the 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 for selecting the material of the polygon of the display mesh. Note that the specific method for calculating the determination value is arbitrary. In other embodiments, the determination value may be calculated by an arbitrary method based on the information set for the vertices of the polygon of the determination mesh.
[0168] In the example shown in FIG. 24, the determination value for each material is the same as in the case shown in FIG. 21 described above, where the determination value for the grass material is 1.3, the determination value for the sand material is 1.2, and the determination value for the soil material is 0.5. Therefore, the grass material is selected as the material of the polygon shown in FIG. 24.
[0169] As described above, in the present embodiment, for each polygon, the game system 1 selects up to a predetermined number (here, 1) of the material IDs set for the vertices included in the polygon (that is, the material IDs set for the vertices of the polygon corresponding to the polygon), and determines them as the material ID of the polygon. According to this, the game system 1 can suppress the number of materials set for the determination mesh to a predetermined number or less. As a result, it is possible to prevent the processing according to the type of material, which is performed according to the result of the collision determination using the determination mesh, from becoming complicated. Note that the method of determining the material of the polygon of the determination mesh is arbitrary and is not limited to the above. In other embodiments, the material of the polygon of the determination mesh may be determined by any method based on the information set for the vertices of the polygon.
[0170] Also, in the present embodiment, for the polygons of the display mesh, up to two types of materials are set, while for the polygons of the determination mesh, one type of material is set. According to this, for the polygons of the display mesh, two types of textures can be used to achieve a natural appearance, and for the determination mesh, it is possible to suppress the complication of the processing performed according to the result of the collision determination using the determination mesh. Note that in other embodiments, the types of materials that can be set for the polygons of the display mesh and the determination 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 determination mesh may both be plural, may be the same, or may be different.
[0171] In this embodiment, the number of material types set for one voxel is up to two, and the number of material types set for one polygon in the display mesh is up to two. According to this, while suppressing the data amount of the voxel data, the information of the material set in the voxel data can be reflected in the material of the display mesh. Further, in this embodiment, the number of material types set for the vertex set based on the voxel data is also up to two (see FIG. 16). According to this, since two types of materials can be set for the vertices generated during the process of obtaining the display mesh from the voxel data, the information of the material set in the voxel data can be reflected in the display mesh without loss of material information during the process.
[0172] In another embodiment, the game system 1 may set materials differently for vertices used to generate a display mesh and vertices used to generate a determination mesh with respect to vertices set based on voxel data. For example, the game system 1 may set up to two types of materials for vertices used to generate a display mesh as described above, and may set one type of material for vertices used to generate a determination mesh. For the materials of the polygons of the display mesh, two types of materials may be set in the same manner as above, and as the material of the polygon of the determination mesh, one type of material may be set based on the one type of material set for each vertex of the polygon. When setting one type of material for the vertices used to generate the determination mesh, the material for which the above-described determination value calculated for each material is the largest may be set as the material of the vertex. Also by the above, as in the present embodiment, the number of types of materials set for one polygon in the display mesh can be up to two, and the number of types of materials set for one polygon in the determination mesh can be one. Therefore, it is possible to reflect the material information set in the voxel data in the display mesh, and it is possible to suppress the complication of the processing performed according to the result of the collision determination using the determination mesh.
[0173] As described above, in the present embodiment, a display mesh and a determination mesh can be set for one voxel object. However, depending on the game situation, it is not necessary to set both the display mesh and the determination mesh for one voxel object at the same time (for example, it is not necessary to set both in the processing in one frame). For example, the determination mesh may be generated in the range in the game space where collision determination is performed, and may not be generated in the range where collision determination is not performed. As an example, the game system 1 may generate a determination mesh for voxel objects within a predetermined range centered on the player character, and may not generate a determination mesh for voxel objects outside the predetermined range, but only generate a display mesh.
[0174] Further, for the display mesh, the game system 1 may store the data related to the generated mesh in the memory, and in the frame after the mesh is generated, use the data without re-executing the process of generating the mesh except for the updated range. According to this, the processing load for generating the display mesh can be reduced. Also, for the determination mesh, the data related to the generated mesh may not be stored in the memory, and the mesh may be sequentially generated as needed (for example, every time collision determination needs to be performed). According to this, the memory area used for generating the mesh can be saved.
[0175] In the above, the method of generating each mesh (that is, the display mesh and the determination mesh) based on the changed voxel data when the voxel data is changed from the initial state has been described. Note that the above method can also be used when generating each mesh based on the voxel data in the initial state, for example, at the start of the game. However, each mesh based on the voxel data in the initial state does not necessarily need to be generated based on the voxel data in the initial state at the start of the game, and may be prepared in advance before the start of the game.
[0176] [Processing Using a Mesh [2-7]] Next, a processing example using the mesh generated as described above for the voxel object will be described. In the following, it is assumed that terrain objects such as the ground and walls are voxel objects, and a player character performs an action, and a game action occurs as a result of collision detection. An example of this case will be described.
[0177] FIG. 25 is a diagram showing an example of a game image representing the movement of a player character on a terrain object. In the example shown in FIG. 25, the material for a polygon in a partial region 251 of the determination mesh of the terrain object which is the ground is set to "lava". Note that the materials for polygons other than the region 251 in the determination mesh of the terrain object are set to "rock". In the example shown in FIG. 25, the game system 1 performs a collision determination between the terrain object and the player character 201 using the determination mesh. That is, a collision determination is made as to whether or not the determination mesh of the terrain object and a determination area set for the player character (for example, an area of a predetermined shape set based on the position of the player character) come into contact. When a collision is determined between the polygon whose material is lava and the player character 201, as a process for generating an action in the game, a process for reducing the physical strength of the player character 201 is performed. Also, in the above case, a process for causing the player character 201 to perform a predetermined reaction is performed.
[0178] Note that in the present embodiment, as the property information included in the above-described material data, for the lava material, a property of reducing the physical strength of the contacted player character (for example, the property that the temperature is equal to or higher than a predetermined value) is set. The game system 1 generates a game action (in the above example, a reduction in the physical strength of the player character) based on the property information corresponding to the material set for the polygon in the determination mesh for which a collision has been determined by the collision determination.
[0179] In addition, when a collision between a polygon whose material is rock and the player character 201 is determined, the process of reducing the physical strength of the player character is not executed. Also, based on the collision, the player character 201 is controlled so that it cannot enter the inside of the polygon. Therefore, the player character can stand on or walk on the above polygon. In this way, in the present embodiment, by setting the material for each polygon, the game system 1 can execute different processes according to which part of the voxel object another object contacts. Also, the content of the process to be executed can be made according to the type of material. In the present embodiment, since the player character can change the terrain object (for example, deform it or change the material), for example, a part of the terrain object that is lava can be erased or the lava can be changed to another material. Therefore, the player can avoid a decrease in the physical strength of the player character due to contact with lava by changing the terrain object.
[0180] The content of the process executed when a collision between a voxel object and another object is determined is arbitrary. For example, when the other object is a moving object such as a player character or an enemy character, the process may be a process of outputting the footsteps of the object or displaying an effect (for example, an effect representing dust or water splashes) at the contact location. At this time, the game system 1 can vary the footsteps or the effects according to the type of material set for the polygon of the part of the voxel object that has come into contact.
[0181] FIG. 26 is a diagram showing an example of a game image representing a state in which a player character extracts a fragment object from a terrain object. As shown in FIG. 26, in the present embodiment, the player can cause the player character 201 to perform an action (referred to as a "pull-out action") of grasping the terrain object 202 by a predetermined operation input and pulling out a part thereof as a fragment object 252 and gripping it. The game system 1, as an in-game effect caused by the pull-out action, erases a part of the terrain object 202 and generates a fragment object 252.
[0182] When the pull-out action is performed, the game system 1 specifically executes the following processing. That is, when an operation input for causing the player character to perform the pull-out action is performed by the player, the game system 1 causes the player character to perform an action of digging forward and grasping, and performs a collision determination. Then, when a collision between the player character performing the pull-out action and the terrain object is determined, an update range 253 is generated based on the position and orientation of the player character. For example, the update range 253 is generated in a predetermined direction (for example, the front) with respect to the player character. Note that the shape and size of the update range may be determined in advance according to the type of action of the player character. Further, the game system 1 decreases the density of the voxels corresponding to the update range 253. Then, by updating the mesh according to the decrease in the voxel density, the terrain object 202 is deformed so that the portion within the update range 253 is erased (see (b) of FIG. 26). In the present embodiment, the density of each voxel corresponding to the update range 253 is decreased, but the voxels to be decreased in density may be at least some of the voxels corresponding to the update range 253.
[0183] Also, in the above, it was assumed that the voxel object corresponding to the update range 253 is unconditionally deformed by the extraction action. However, in other embodiments, the deformation of the voxel object corresponding to the update range 253 may be performed on the condition of the amount of damage set for the voxel. For example, instead of unconditionally deforming the voxel object corresponding to the update range 253, the game system 1 may increase the amount of damage set for the voxel corresponding to the update range 253, and decrease the density in the voxel when the amount of damage exceeds a predetermined value. At this time, the increase amount of damage may be determined according to the action performed on the voxel object.
[0184] In addition, the game system 1 generates a fragment object 252 representing the portion of the terrain object 202 that has been erased. That is, the game system 1 generates the fragment object 252 while having the player character hold it based on the above extraction action. The fragment object 252 may be generated to have a shape corresponding to the portion of the terrain object 202 that has been erased, or may have a predetermined shape. The fragment object 252 may be a voxel object or may not be a voxel object. When the fragment object is a voxel object, a voxel space different from the voxel space of the voxels corresponding to the terrain object 202 or the like is defined for the fragment object 252.
[0185] The game system 1 determines the material of the above-mentioned fragment object 252. The material of the fragment object 252 is determined based on the material set for the polygons within the determination mesh that contacts the update range 253 among the determination meshes of the terrain object 202. The material of the fragment object 252 is determined to be the same as any one of the materials set for the polygons within the determination mesh that contacts the update range 253. According to this, the material of the fragment object 252 can be made the same as the material of the erased part of the terrain object. As is clear from the above description, the fragment object 252 is not actually a part of the terrain object. However, by being generated along with the erasure of a part of the terrain object and having the material of the erased part of the terrain object inherited by the fragment object 252, it is possible to give the player the impression that the player character 201 has taken out a part of the terrain object 202 by a pulling-out action.
[0186] In this embodiment, a priority is set for each type of material to be prepared, and the game system 1 determines the material with the highest priority among the materials set for each polygon of the determination mesh within the update range 253 as the material of the fragment object 252. Here, for example, consider a case where the determination mesh within the update range 253 includes a polygon with a material of rock and a polygon with a material of lava. In such a case, if the material of the fragment object 252 is set to lava, there is a possibility that the player character's physical strength will decrease when the player character grips the fragment object 252 by the extraction action (it is assumed that, as described in FIG. 25, the material of lava is set to have the property of decreasing the player character's physical strength when contacted). Also, as described above, when the determination mesh within the update range 253 includes polygons with different types of materials set, it is considered difficult for the player to predict what the material of the fragment object 252 will be, and it is also considered that the above-mentioned inconvenience may occur contrary to the player's intention. On the other hand, in this embodiment, by setting a priority for the material set as the material of the fragment object, the possibility of the above-mentioned inconvenience occurring can be reduced.
[0187] FIG. 27 is a diagram showing an example of a game image representing a state in which fragment objects are generated when a player character destroys a terrain object. As shown in FIG. 27, in the present embodiment, the player can cause the player character 201 to perform a punch action by a predetermined operation input. Further, as an in-game effect caused by the punch action, the game system 1 erases a part of the terrain object 202 and generates a fragment object 255, as in the case of the above punch action. Specifically, the terrain object 202 is deformed as if a part of it has been erased. Note that, when the punch action is performed, unlike the above-described extraction action, after the punch action, the fragment object 255 is not held by the player character 201 but is arranged around the position where the punch action is performed (see (b) of FIG. 27). Note that the fragments corresponding to the destruction of the terrain object 202 may not be generated in some cases.
[0188] When a punch action is performed, the game system 1 specifically executes the following processes. That is, when a player performs an operation input to cause the player character to perform a punch action, the game system 1 causes the player character to perform an action of punching forward and performs a collision determination. Then, when a collision between the player character performing the punch action and the terrain object is determined, an update range 254 is generated based on the position and orientation of the player character. For example, the update range 254 is generated in a predetermined direction (e.g., forward) with respect to the player character. Note that the position, shape, and size of the update range 254 due to the punch action may be the same as or different from those of the update range 253 due to the extraction action. Then, the game system 1 decreases the density of the voxels corresponding to the update range 254. As a result, similar to the extraction action, also due to the punch action, the terrain object 202 is deformed such that the portion within the update range 254 is erased (see (b) of FIG. 27). Note that, similar to the extraction action, for the punch action as well, instead of unconditionally deforming the voxel object corresponding to the update range 254, the game system 1 may increase the amount of damage set for the voxels within the update range 254 according to the punch action, and decrease the density of the voxels when the amount of damage exceeds a predetermined value. Also, the voxels whose density is to be decreased by the punch action may be at least some of the voxels corresponding to the update range 254.
[0189] In addition, the game system 1 generates a fragment object 255 corresponding to the portion of the terrain object 202 that has been erased. That is, the game system 1 generates the fragment object 255 without giving it to the player character based on the above punch action (for example, in a state where it is arranged around the position where the punch action was performed). The fragment object 255 may be generated to have a shape corresponding to the portion of the terrain object 202 that has been erased, or may have a predetermined shape. The fragment object 255 may be a voxel object or may not be a voxel object.
[0190] The game system 1 determines the material of the above fragment object 255. The material of the fragment object 255 is determined based on the material set for the polygon in the determination mesh that contacts the update range 254 among the determination meshes of the terrain object 202. The material of the fragment object 255 is determined to be the same as any one of the materials set for the polygons in the determination mesh that contacts the update range 254. According to this, the material of the fragment object 255 can be made the same as the material of the erased portion of the terrain object. Also, when the fragment object 255 is generated along with the partial erasure of the terrain object, and the material of the erased portion of the terrain object is inherited by the fragment object 255, it is possible to give the player an impression that a part of the terrain object destroyed by the punch action of the player character has occurred as a fragment object.
[0191] In the present embodiment, the material of the fragment object 255 is determined to be the material in which the degree of decrease in density in the voxel is the largest among the materials set for the polygons in the determination mesh that contacts the update range 254. According to this, it is possible to generate a fragment object that more accurately reflects the material composition of the portion of the terrain object erased by the punch action.
[0192] The method for determining the material of the fragment object generated by the above-described extraction action or punch action is arbitrary. For example, the method for determining the material of the fragment object may be the same for the extraction action and the punch action. Also, for example, among the materials set for each polygon of the determination mesh within the update range, the material set for the most polygons may be determined as the material of the fragment object. Also, for example, among the polygons of the determination mesh within the update range, the material set for a polygon that satisfies a predetermined condition (for example, a polygon at a position in contact with the hand of the player character that performs the extraction action or punch action) may be determined as the material of the fragment object. Also, in other embodiments, a plurality of types of materials may be set for the fragment object.
[0193] In the present embodiment, the player can cause the player character to perform an action of throwing the fragment object 252 or 255 generated as described above (hereinafter referred to as "throwing action"). Note that the player can cause the player character to perform an action of holding the fragment object generated in response to the punch action and placed on the ground by a predetermined operation input. By the above-described extraction action or the action of holding the fragment object after the above-described punch action, the player character is in a state of holding the fragment object. In this state, the game system 1 causes the player character to perform an action of releasing the held fragment object in a predetermined direction as a throwing action according to the operation input by the player.
[0194] FIG. 28 is a diagram showing an example of a game image in a scene where a player character can perform a throwing action and determines the throwing direction in a state of assuming a throwing stance. As shown in FIG. 28, in a state where the player character 201 holds the fragment object 261, the player character 201 can perform a throwing action. In this state, as shown in FIG. 28, the game system 1 displays the aiming image 262 and the object information image 263 over the image showing the game space as a process for generating an action within the game.
[0195] The aiming image 262 indicates the direction in which the fragment object is released by the throwing action (also referred to as the aim direction). That is, in response to the player performing an operation input for performing a throwing action, the game system 1 moves the fragment object 261 from the position of the player character 201 toward the position within the virtual space indicated by the aiming image 262. Note that the aim direction is controlled based on the operation input by the player. For example, the game system 1 may change the aim direction in response to an operation input for changing the direction of the virtual camera. Specifically, the game system 1 controls the virtual camera in response to an operation input so as to rotate and move around the player character while maintaining the state where the player character is included in the field of view, and controls the aim direction so as to be in the direction corresponding to the line-of-sight direction of the virtual camera. At this time, the aiming image 262 is displayed indicating the position where the straight line extending in the aim direction from the position of the player character intersects the terrain object 202. Specifically, the game system 1 performs a collision determination between the aim direction (that is, the above straight line extending in the aim direction) and the determination mesh of the terrain object 202, and when a collision is determined, the aiming image 262 is displayed. The aiming image 262 is arranged so as to indicate the position of the polygon that intersects the above straight line extending in the aim direction among the determination meshes.
[0196] When the player character performs a throwing action according to the aiming image 262 described above, the player can be presented with the position where the fragment object contacts the voxel object. This can make it easier for the player to perform the operation of the throwing action. Note that the specific control method of the aiming direction and the aiming image 262 is arbitrary, and a conventional method may be used. For example, in other embodiments, when the aiming image 262 is displayed, the aiming image 262 may be displayed in a first-person perspective game image where the player character is not displayed.
[0197] In a state where the player character is in a posture of throwing a fragment object, in response to a predetermined operation input by the player, a throwing action of throwing the fragment object in the aiming direction is performed.
[0198] The object information image 263 shows information about the terrain object 202 at the position indicated by the aiming image 262. In the present embodiment, the object information image 263 shows the name of the material set for the polygon of the determination mesh at the position indicated by the aiming image 262 (in the example shown in FIG. 28, rock). This can present the player with the material of the voxel object that the fragment object released by the throwing action contacts. Further, the object information image 263 shows information about the nature of the material (here, hardness). This can present the player with the nature of the voxel object that the fragment object released by the throwing action contacts. Note that the content shown by the object information image 263 is arbitrary. For example, in other embodiments, the object information image 263 may show any property of the material set for the polygon at the position indicated by the aiming image 262, or may show the state of the polygon (for example, the amount of damage described above). In the present embodiment, since there is one type of material for the polygon of the determination mesh, the material corresponding to the aiming position is specified as one. Therefore, it is suitable for displaying information about the material.
[0199] In this embodiment, in response to the fragment object released by the throwing action being determined to have contacted the voxel object as a result of the collision determination, the game system 1 makes a change to the voxel object as an action within the game. FIG. 29 is a diagram showing an example of a game image after the terrain object 202 shown in FIG. 28 has been changed due to the fragment object 261 contacting the terrain object 202. In the example shown in FIG. 29, the terrain object 202 is deformed so as to have a shape as if the fragment object is attached to the contact position between the fragment object and the terrain object 202. Specifically, the game system 1 generates an update range so as to include the contact position, and increases the density of the voxels in the update range, thereby deforming the terrain object 202 to have the above shape. For example, the update range may be set to a shape corresponding to the shape of the fragment object, and the terrain object 202 may be deformed so that the inside of the update range is within the terrain object 202. As described above, in the example shown in FIG. 29, an additional portion 265 is added to the terrain object before deformation. In the example shown in FIG. 29, the fragment object is erased in response to contacting the terrain object 202.
[0200] Also, the material of the polygon in the additional portion 265 is determined based on the material of the fragment object that has contacted the terrain object 202. Specifically, the game system 1 sets the material of the voxels within the update range to be the material of the fragment object. Then, based on the material of the voxels, the materials of the display mesh and the determination mesh are determined. According to this, since the appearance of the attached additional portion 265 can be made the same as the appearance of the fragment object, (although in reality, the terrain object 202 is deformed as described above), it becomes easier for the player to get the impression that the fragment object is attached to the terrain object 202.
[0201] In the example shown in FIG. 29, the change applied to the voxel object in response to the fragment object contacting the voxel object was a transformation that added an additional part to the voxel object, but the change applied to the voxel object is not limited to this. The above change may be one that changes the density of the voxels, or one that changes the material. For example, if the fragment object has the property of exploding, the fragment object may explode in response to contacting the voxel object, and at this time, the voxel object may be deformed as if a part of the voxel object has been erased. Specifically, the game system 1 sets an update range to include the contact position, and decreases the density of the voxels within the update range. Also for example, when the material of the voxel object is lava and the material of the fragment object is ice, the material of the voxel object may be changed in response to the fragment object contacting it. Specifically, the game system 1 sets an update range including the contact position, and among the materials of the voxels within the update range, the material that is lava may be changed to obsidian or rock. According to this, a situation where a lava object is cooled by an ice object and becomes obsidian or rock can be expressed.
[0202] The content of the above change may be determined based on the material of the voxel object, based on the material of the fragment object, or based on a combination of the material of the voxel object and the material of the fragment object. According to this, various changes can be caused to the voxel object.
[0203] Further, the game system 1 may determine whether to perform the above-described changes based on the material of the voxel object, based on the material of the fragment object, or based on a combination of the material of the voxel object and the material of the fragment object. For example, when a fragment object with a material of rock contacts a voxel object with a material of rock, the game system 1 makes the changes as shown in FIG. 29. On the other hand, when a fragment object with a material of rock contacts a voxel object with a material of iron, the game system 1 may not make the changes as shown in FIG. 29.
[0204] In this embodiment, as described above, one type of material is set for the polygon of the determination mesh and the fragment object. Here, if multiple types of materials are set for at least either the polygon of the determination mesh or the fragment object, it becomes difficult to determine the content of the change applied to the voxel object according to the types of the materials of both when the determination mesh and the fragment object come into contact. In contrast, in this embodiment, since the materials of the determination mesh and the fragment object determined to be in contact by the collision determination are each one type, it becomes easy to determine the content of the change applied to the voxel object.
[0205] [2-8. Example of Setting Voxel Object Based on Movement Route of Object] Next, an example of setting a voxel object based on the path of an object moving in the game space (for example, newly arranging or deforming the voxel object) will be described. In the first to fourth examples described below, in the game, when an event occurs in which an object moves, the game system 1 arranges a voxel object having a shape along the path based on the movement of the object. An object such as a player character can ride on the voxel object and move on the voxel object. Therefore, in the third example, a new game can be provided in which various movement routes are generated in the game space by the voxel object. Note that hereinafter, the voxel object arranged along the path is referred to as a "path object", the event that triggers the arrangement of the path object is referred to as an "arrangement event", and the object that moves in the arrangement event is referred to as a "moving object".
[0206] [2-8-1. First Example] As a first example, an example will be described in which a path object is arranged in accordance with the movement of a moving object by a throwing action or the like by a player character in a game space. FIG. 30 is a diagram showing an example of a game image in the first example. The situation shown in FIG. 30 is a situation where the player character 201 has lifted the fragment object 302. Further, FIG. 31 is a diagram showing an example of a game image in a situation where the player character 201 has thrown the fragment object 302 by a throwing action from the situation shown in FIG. 30. As shown in FIGS. 30 and 31, in the first example, when the player character 201 performs a throwing action of throwing the fragment object 302, a path object 304 is arranged along the movement path of the thrown fragment object 302. In the example shown in FIG. 31, as a result of the fragment object 302 moving in a parabolic shape, a path object 304 having a shape along a parabolic path is arranged. In the first example, as shown in FIG. 28 described above, the direction in which the fragment object 302 is released by the player character 201 is controlled based on the operation input by the player.
[0207] Note that in the first example, the moving object is not limited to the fragment object. For example, the moving object may be an object of a type that can be thrown by the player character by a throwing action. Specifically, in addition to the above-mentioned fragment object, objects such as rocks, trees, and furniture arranged in the game space may function as the moving object. Further, the fragment object may be generated from an arbitrary voxel object. The fragment object may be generated, for example, by a punch action or a pulling action on a terrain object as shown in FIG. 27 described above, or may be generated by a punch action or a pulling action on a path object. Note that in other embodiments, a fragment object generated from a predetermined type of voxel object may function as the moving object. Also, the moving object may or may not be a voxel object.
[0208] In the first example, the placement event is an event in which the moving object moves under a predetermined condition. In the first example, the above-mentioned predetermined condition is that the moving object is moved by a predetermined action by an operable object. An operable object is an object that can perform a predetermined action, such as a player character or an enemy character. Also, in the first example, the above-mentioned predetermined action is a throwing action of releasing the moving object. Note that the action of releasing the moving object is not limited to the throwing action and may include other actions. For example, when the moving object moves so as to be launched by a punch action by a player character or the like or an action of firing a gun, it may be determined that the above-mentioned predetermined condition is satisfied.
[0209] In the first example, it is not necessary that the above-mentioned predetermined condition is always satisfied when the moving object moves. For example, the above-mentioned predetermined action may not include an action of placing the lifted moving object on the ground. At this time, for example, when an action of a player character placing a fragment object on the ground is performed, the above-mentioned predetermined condition is not satisfied and the placement event does not occur, so the path object is not placed. Note that in other embodiments, the placement event may be that the moving object moves under any condition. At this time, when the moving object moves, a placement event always occurs and the path object is placed.
[0210] As described above, in the first example, even when not only the player character but also the enemy character throws a moving object, a path object is arranged. However, in other embodiments, the above-described predetermined conditions may include conditions related to the type of object that performs the action. For example, the game system 1 may determine that an arrangement event has occurred when a moving object moves due to a throwing action by the player character, and may determine that no arrangement event occurs when a moving object moves due to a throwing action by the enemy character.
[0211] In the first example, at least on the condition that the moving object moves within the object generation area set in the game space, a path object is generated. For example, in the arrangement event, when the moving object moves from the inside to the outside of the object generation area, or when it moves from the outside to the inside, the game system 1 arranges a path object inside the object generation area and does not arrange a path object outside the object generation area. In other embodiments, it is not necessary to set an object generation area in a part of the game space, and the entire game space may be the object generation area.
[0212] In the examples shown in FIGS. 30 and 31, the object generation area is cylindrical, and the player character 201 is located within the object generation area. In the first example, the game image includes an image 303 indicating the boundary of the object generation area (see FIG. 30). In the examples shown in FIGS. 30 and 31, the image 303 shows a part of one bottom surface and the side surface of the cylinder that is the object generation area. The image 303 may be, for example, semi-transparent, and the state outside the object generation area may be represented through the image 303. The player can recognize the range of the object generation area by the above-described image 303. In other embodiments, an image indicating the boundary of the object generation area may not be displayed.
[0213] FIG. 32 is a diagram showing an example of a game image in a situation where a player character moves along a path object. In the first example, as shown in FIG. 32, the player character 201 can move on top of the path object 304. For example, by arranging the path object 304 in the game space, the player can move the player character 201 from the scaffold where the player character 201 is currently located to another scaffold. As described above, in the first example, the player can cause the player character 201 to perform an action of moving a moving object in the object generation area, thereby arranging a path object that becomes a new movement route in the game space. This can improve the strategic nature and interestingness of the game. Also, in the first example, not only can an object pre-arranged in the game space become a moving object, but a moving object can also be generated by the above-described punch action, pulling action, or the like. As a result, various methods can be provided to the player as methods for arranging the path object, so that the strategic nature of the game can be further improved.
[0214] Also, although details will be described later, in the first example, the path object 304 is formed such that the upper surface facing upward in the game space has no step (see FIG. 32). Therefore, the player character 201 can easily move on the path object 304.
[0215] FIG. 33 is a diagram showing an example of a method for generating a path object in the first example. In FIG. 33, the current position 312 is the position of the fragment object 302, which is a moving object, in the current frame. Also, the previous position 311 is the position of the fragment object 302 one frame before the current frame. In FIG. 33, as an example, the center position of the fragment object 302 is used as the position of the fragment object 302.
[0216] When the moving object moves in the above-described placement event, the game system 1 sets a voxel update range 313 extending from the previous position 311 to the current position 312. For example, the voxel update range 313 has a shape in which the sides and corners of a quadrangular prism having four side faces parallel to the direction from the previous position 311 to the current position 312 are rounded. Also, the voxel update range 313 is set so that the previous position 311 and the current position 312 are located inside or on the surface thereof. In the first example, the game system 1 represents the voxel update range 313 using the above-described SDF. The voxel update range 313 may have an arbitrary shape extending from the previous position to the current position. For example, it may be the above-described quadrangular prism, or may be a cylindrical shape or a capsule shape. Also, in the first example, the voxel update range 313 is set so that one of the side faces faces the vertically upward direction in the game space. According to this, since the upper surface is formed on the path object, it is possible to facilitate the movement of the player character 201 on the path object.
[0217] Also, in the first example, the size of the voxel update range (for example, the size of the bottom surface of the above-described quadrangular prism) is set based on the type of the moving object. For example, the size of the voxel update range may be set according to the material set for the moving object. In other embodiments, the size of the voxel update range may be set independently of the type of the moving object. For example, it may be constant regardless of the type of the moving object. Also, for example, the size of the voxel update range may be set according to the size of the moving object.
[0218] As described above, the voxel update range is set to include the position through which the moving object passes. However, the voxel update range does not necessarily have to be set to include all of the areas through which the moving object passes, and may be set to include areas through which the moving object does not pass.
[0219] The game system 1 updates (specifically, increases) the density of the voxels corresponding to the voxel update range 313 so that the voxel update range 313 set as described above becomes the internal area of the voxel object. For example, the density of the voxels corresponding to the voxel update range 313 is updated to a value equal to or greater than a reference value (e.g., 255). The game system 1 generates a voxel mesh of the path object based on the voxel data after the density is updated according to the method described in the above [2-6. Generation of Mesh]. As a result, a path object having a shape corresponding to the voxel update range 313 is generated.
[0220] In the first example, the game system 1 sets the material of the voxels corresponding to the voxel update range 313 to a predetermined material. As a result, the material of the path object is set to the above predetermined material. The predetermined material may be any material, and may also be the material of the path described later.
[0221] In the first example, the game system 1 sets a prohibited area based on the position of the player character 201. FIG. 34 is a diagram showing an example when a part of the voxel update range overlaps with the prohibited area. FIG. 34 is a diagram when viewing the game space from above, and shows a state where a part of the voxel update range 313 set by the method shown in FIG. 33 overlaps with the prohibited area 315. As shown in FIG. 34, when at least a part of the voxel update range 313 is included in the prohibited area 315, the game system 1 changes the voxel update range so as to exclude the part included in the prohibited area 315 (the hatched part shown in FIG. 34) of the voxel update range 313. In the above case, based on the changed voxel update range, the density of the voxels is updated, and the voxel mesh of the path object is generated. As a result, the voxel mesh of the path object is not generated within the above prohibited area 315. Therefore, the possibility of contact between the player character 201 and the path object can be reduced. For example, by the player character 201 coming into contact with the generated path object, the possibility that the player character 201 makes a movement unintended by the player can be reduced. Also, for example, since a certain interval is provided between the player character 201 and the generated path object, the positional relationship between the player character 201 and the path object becomes easier for the player to grasp.
[0222] Note that in the first example, the prohibited area 315 is a spherical area having a radius of a predetermined length centered on the position of the player character 201. However, the prohibited area 315 may have any shape including the position of the player character 201. For example, the shape of the prohibited area 315 may be a rectangular parallelepiped or a cylinder.
[0223] In the first example, when the moving object is located within the object generation area, the game system 1 sets the voxel update range. For example, when the moving object moves from the inside to the outside of the object generation area, the voxel update range is set during the period when the position of the moving object is within the object generation area, and after the position of the moving object goes outside the object generation area, the voxel update range is no longer set. Also, when the moving object moves from the outside to the inside of the object generation area, the voxel update range is not set during the period when the position of the moving object is outside the object generation area, and after the position of the moving object comes inside the object generation area, the voxel update range is set.
[0224] In the first example, during the period from when the placement event occurs until the end condition is satisfied, the game system 1 sets the voxel update range every frame and updates the voxel mesh of the path object. As a result, in the first frame when the placement event occurs, a new path object is generated. Also, in the second frame and subsequent frames after the placement event occurs, a new voxel update range is set at a position extending from the voxel update range set in the previous frames, whereby the path object is deformed so as to gradually extend along the movement path of the moving object. Note that when the moving object moves in a parabolic shape in the first example, the path object is formed to extend in a direction having an upward component in the game space and then extend in a direction having a downward component.
[0225] In the first example, the upper surface of the voxel update range 313 is set at a position that coincides with at least a part of the side of the upper surface of the voxel update range set one frame before (specifically, the side connected to the voxel update range 313). For example, the game system 1 may adjust the position of the voxel update range 313 so that the upper surface of the voxel update range 313 set in the current frame is continuous with the upper surface of the voxel update range set in the previous frame. According to the above, since the path object is formed so as not to have a step (or have few steps) on the upper surface, it is possible to facilitate the movement of the player character 201 or the like on the path object. In the first example, since the player character 201 has little (or no) opportunity to move on the lower surface of the path object, the lower surface of the path object does not need to be formed without steps and may have an arbitrary shape (the same applies to the second to fourth examples described later).
[0226] The specific content of the above end condition is arbitrary. The end condition may be, for example, a condition such as the moving object has moved a predetermined distance or more, a predetermined time has elapsed since the start of the movement of the moving object, or the moving object has come into contact with another object. Further, the end condition may be a combination of these conditions. When the end condition is satisfied, the moving object itself may or may not be deleted from the game space.
[0227] The game system 1 does not need to execute the setting process of the voxel update range and the setting process of the voxel mesh of the path object based on the current position of the moving object in a certain frame, and may execute them in a frame later than that. In the first example, when the game system 1 sets a path object, the game system 1 executes the setting process of the voxel update range calculated with the position of the moving object in a certain frame as the current position, and the setting process of the voxel mesh of the path object based on the voxel update range, in the frame after the waiting period from the current frame. Therefore, the voxel mesh of the path object set at a certain position when the moving object passes through the position will be set after the waiting period has elapsed since the moving object passed through. According to this, the possibility of contact between the moving object and the path object can be reduced. For example, it is possible to reduce the possibility of inconveniences such as the moving object moving unnaturally due to contact. Note that the waiting period may be fixedly set in advance, or may be variably set based on the moving speed of the moving object or the like. For example, the waiting period may be set to a short time when the moving speed of the moving object is high, and may be set to a long time when the moving speed is low.
[0228] In the first example, the above-described object generation area moves or rotates within the game space. FIG. 35 is a diagram showing an example of the state before and after the object generation area moves within the game space. FIG. 35 is a top view of the game space including the object generation area 324, and shows a situation where a path object 323 is set between the terrain object 321 and the terrain object 322 within the object generation area 324. In the example shown in FIG. 35, the object generation area 324 moves parallel in the game space, but in other embodiments, the object generation area 324 may be controlled to rotate.
[0229] In the first example, the game system 1 moves or rotates the voxel space related to the path object 323 in accordance with the movement or rotation of the object generation area. As a result, the positional relationship between the arranged path object 323 and the object generation area 324 remains unchanged even when the object generation area 324 moves, and the path object 323 can be moved along with the movement of the object generation area 324.
[0230] Note that in the first example, the voxel spaces for the terrain objects 321 and 322 are different voxel spaces from the voxel space for the path object and are fixedly arranged in the game space. Since the terrain objects 321 and 322 do not move even when the object generation area 324 moves, the positional relationship between the terrain objects 321 and 322 and the path object 323 changes when the object generation area 324 moves (see Fig. 35). Therefore, when the path object 323 moves in response to the movement of the object generation area 324, the path object 323 may come into contact with other objects.
[0231] Here, there is a possibility that an inconvenience in the game may occur when the path object 323 comes into contact with other objects due to movement. For example, in the example shown in Fig. 35, on the terrain object 322, an object 326 is arranged at a position where it can come into contact with the moved path object 323. The object 326 may be, for example, an object necessary for advancing the game (such as an item or a non-player character necessary for the progress of the game). In the situation shown in Fig. 35, if the path object 323 comes into contact with the object 326 and as a result, the object 326 falls from the terrain object 322 and disappears, there may be an inconvenience such as an impact on the progress of the game.
[0232] As described above, in the first example, a prohibited area 325 is set in the space. The prohibited area 325 is set to include, for example, the positions of objects that would cause some inconvenience when contacting the path object 323. Also, for example, the prohibited area 325 may be set when the appearance would be unnatural if an object within the area contacts the path object. In the first example, when at least a part of the path object 323 is included in the prohibited area 325, the game system 1 deforms the path object 323 so that the part included in the prohibited area 325 is erased (see (b) of FIG. 35). Specifically, when the game system 1 moves the voxel space related to the path object 323, after the movement, it decreases the density of the voxels corresponding to the prohibited area 325 to a value less than the reference value (for example, 0). According to this, it is possible to suppress the path object 323 from being arranged inside the prohibited area 325, so it is possible to reduce the possibility of inconvenience caused by the path object 323 contacting an object within the prohibited area 325 and the possibility that the object contacting the path object is deformed and has an unnatural appearance.
[0233] [2-8-2. Second Example] As a second example, an example where a path object is arranged when an enemy character affected by an attack action by the player character moves will be described. FIG. 36 is a diagram showing an example of a game image in a situation where the player character is performing a punch action on the enemy character. Also, FIG. 37 is a diagram showing an example of a game image in a situation where the enemy character that has received the punch action is moving. As shown in FIGS. 36 and 37, when the player character 201 performs a punch action on the enemy character 331, the enemy character 331 that has received the punch action moves as if it is being thrown. At this time, in the second example, a path object 332 is arranged along the movement path of the enemy character 331 (see FIG. 37). Thus, similar to the first example, the second example is an example where a path object is set in response to the movement of an object affected by the action of the player character.
[0234] In the second example, the placement event is an event in which the character that has been hit by an attack action moves in response to the player character 201 performing a predetermined attack action on a character of a predetermined type. In the second example, the moving object is the character of the above-mentioned predetermined type. Note that the character of the above-mentioned predetermined type may be an enemy character or a character that is an ally of the player character. Also, in other embodiments, the object that becomes the moving object may be determined independently of the type of character. For example, whether or not the character that has received a predetermined attack action becomes the moving object may be determined based on the state of the player character. As an example, when the player character performs a predetermined attack action in a predetermined state (for example, a state of using a specific item or a state of being transformed into a specific form), and the character is moved by the attack action, the path object may be set with the character as the moving object.
[0235] The above-mentioned predetermined attack action is not limited to the punch action shown in FIG. 36 and may include any attack action. For example, when the player character 201 can perform a plurality of types of attack actions such as punches and kicks, those attack actions may be the above-mentioned predetermined actions. Also, the predetermined attack action may be an action that can be executed on the condition that the player character 201 is in a predetermined state. Also, in other embodiments, the action that triggers the setting of the path object in the second example is not limited to the attack action and may be other types of actions.
[0236] In the second example, the enemy character 331 that has received a punch action by the player character 201 moves in a direction corresponding to the punch action. Note that the moving direction of the enemy character 331 is, for example, a direction in which the direction from the player character 201 to the enemy character 331 is inclined by a predetermined angle in the upward direction (which can also be said to be the pitch direction). Thus, in the second example, since the moving direction of the enemy character 331 that has received a punch action has an upward component in the game space, the direction in which the path object extends also has an upward component in the game space (see FIG. 37). Also, in the second example, after the enemy character 331 moves a predetermined distance in the above direction, it moves in a parabolic shape and descends. Therefore, in the second example, the path object is formed so as to extend in a direction having an upward component in the game space and then extend in a direction having a downward component. Note that in the second example, the moving direction and the moving amount of the enemy character that has received a punch action are constant regardless of the enemy character. However, in other embodiments, the game system 1 may determine the moving direction and the moving amount of the enemy character based on the type and size of the enemy character, the type of action performed on the enemy character, and / or the positional relationship between the player character and the enemy character, etc.
[0237] FIG. 38 is a diagram showing an example of a game image in a situation where a player character moves on a path object. As shown in FIG. 38, also in the second example as in the first example, the player character 201 can move on the path object 304. Also in the second example as in the first example, since the player can arrange a path object that becomes a new moving route in the game space, the strategic nature and the interestingness of the game can be improved. In the second example, since the path object is generated so as to have a component extending upward, for example, the player character 201 can move beyond a place where it cannot move in the game space (for example, a valley, etc.) by using the path object.
[0238] As shown in FIGS. 37 and 38, in the second example, when the path object 332 is set, an item object (for example, the item object 333 shown in FIGS. 37 and 38) is arranged on the path object 332. The item object is, for example, an object of an item that gives the player character 201 an advantage in the game by acquiring it. In the second example, the item object is an object of an item that becomes currency in the game. By arranging the item object on the path object 332, it is possible to suggest to the player that the player character 201 can move on the path object 332. In addition, it is possible to give the player a motivation to perform a game operation of moving the player character 201 on the path object 322.
[0239] FIG. 39 is a diagram showing an example of a method for generating a path object in the second example. In FIG. 39, the current position 342 is the position of the enemy character 331, which is a moving object, in the current frame. The previous position 341 is the position of the enemy character 331 one frame before the current frame. In FIG. 39, as an example, the position of the feet of the enemy character 331 in a state of standing on a horizontal ground is used as the position of the enemy character 331.
[0240] When the enemy character 331 moves in the placement event in the second example, the game system 1 sets a voxel update range extending in the moving direction of the enemy character 331 (specifically, the direction from the previous position 341 to the current position 342). Here, the voxel update range 343 shown in FIG. 39 was set one frame before the current frame. Although details will be described later, in the second example, the voxel update range set at the current time is set to include the current position of the enemy character. Therefore, in the example shown in FIG. 39, the voxel update range 343 one frame before includes the position of the enemy character 331 one frame before.
[0241] In the second example, the game system 1 determines whether the distance from the previous position 341 to the current position 342 is equal to or greater than a predetermined distance. Then, when the distance from the previous position 341 to the current position 342 is equal to or greater than the predetermined distance, a voxel update range is set. On the other hand, when the distance from the previous position 341 to the current position 342 is less than the predetermined distance, the voxel update range is not set. In the second example, when the voxel update range was not set in the previous frame, the game system 1 calculates the above distance using the position of the enemy character 331 in the frame where the voxel update range was last set as the previous position. As described above, in the second example, the voxel update range is not necessarily set every frame. In other embodiments, the game system 1 may set the voxel update range every frame, for example, as in the first example above. In the example shown in FIG. 39, it is assumed that the distance from the previous position 341 to the current position 342 is equal to or greater than the predetermined distance, and the voxel update range is set.
[0242] In the second example, the voxel update range is set using a unit update range. The unit update range is a range of a predetermined shape and size, and is represented by, for example, an SDF. The shape of the unit update range is arbitrary. In the second example, it is a shape having an upper surface, and more specifically, a columnar shape with a semi-circular cross section. In other embodiments, the unit update range may be, for example, a quadrangular prism, or a shape in which the sides and corners of the quadrangular prism are rounded.
[0243] In the second example, in the frame in which the voxel update range is set, the game system 1 arranges one or more unit update ranges from the end of the voxel update range set last in the past frame (more specifically, the end in the moving direction of the enemy character 331) in the moving direction of the enemy character 331 until the current position 342 is reached. In the example shown in FIG. 39, since the current position 342 is not reached in the unit update range 344 arranged next to the voxel update range 343 set last, another unit update range 345 is arranged. In the example shown in FIG. 39, the range composed of the two unit update ranges 344 and 345 set as described above becomes the voxel update range set in the current frame. As described above, in the second example, the game system 1 sets the voxel update range so as to extend in the direction of the current position from the end of the voxel update range set last in the past frame to at least the position where the current position 342 is reached.
[0244] Note that, in the second example, for the unit update range including the position of the enemy character 331 (for example, the unit update ranges 343 and 345 shown in FIG. 39), the unit update range is set so that the position of the feet of the enemy character 331 is included in the upper surface of the unit update range. The position of the feet of the enemy character 331 is, for example, the position overlapping the ground when the enemy character 331 stands horizontally on the ground (which can also be said to be the position of the lower end of the enemy character 331). Although details will be described later, the position of the upper surface of the unit update range becomes the position of the upper surface of the path object. Therefore, by including the position of the feet of the enemy character 331 in the upper surface of the unit update range, it is possible to make the ground on which the enemy character 331 stands and the upper surface of the path object have no (or few) steps in the first frame in which the path object is set. As a result, it becomes easier for the player character 201 to enter the path object.
[0245] Also, in the second example, for two adjacent unit update ranges, at least a part of each upper surface side (specifically, the side connected to the adjacent unit update range) is set at a position where they coincide. For example, the game system 1 adjusts the arrangement position of the unit update range so that the upper surface of the unit update range to be arranged this time is continuous with the upper surface of the unit update range arranged one time before. According to the above, since the path object is formed so as not to have a step (or to have few steps) on the upper surface, it becomes easier for the player character 201 etc. to move on the path object.
[0246] The game system 1 updates (specifically, increases) the density of the voxels corresponding to the voxel update range so that the voxel update range set as described above becomes the internal area of the voxel object. For example, the density of the voxels corresponding to the voxel update range is updated to a value equal to or higher than a reference value (for example, 255). The game system 1 generates the voxel mesh of the path object based on the voxel data after the density is updated according to the method described in the above [2-6. Generation of Mesh]. As a result, a path object having a shape corresponding to the voxel update range is generated.
[0247] In the second example, during the period from when the arrangement event occurs until the end condition is satisfied, the game system 1 performs, for each frame, a determination process as to whether or not to set the voxel update range, a setting process of the voxel update range when the determination result of the determination process is affirmative, and an update process of the voxel mesh of the path object. As a result, also in the second example, as in the first example, the path object is set so as to gradually extend along the movement path of the moving object.
[0248] Also in the second example, the specific content of the above termination condition is arbitrary. The termination condition may be, for example, that the enemy character 331 has moved a predetermined distance or more, that a predetermined time has elapsed since the start of the movement of the enemy character 331, or that the enemy character 331 has come into contact with another object. Also, the termination condition may be a combination of these conditions. Note that when the termination condition is satisfied, the enemy character 331 itself may or may not be erased from the game space.
[0249] The game system 1 does not need to execute each process (specifically, the determination process of whether to set the voxel update range, the setting process of the voxel update range, and the setting process of the voxel mesh of the path object) for setting the path object based on the current position of the moving object in a certain frame in that frame, and may execute it in a later frame. In the second example, when the game system 1 sets a path object, the game system 1 executes each of the above processes with the position of the moving object in a certain frame as the current position in a frame after the waiting period from that frame. Therefore, when the enemy character that has received the punch action by the player character 201 passes a certain position, the voxel mesh of the path object set at that position will be set after the waiting period has elapsed after the enemy character has passed. According to this, the possibility of contact between the enemy character and the path object can be reduced.
[0250] In the second example, the game system 1 places the above-described item object on the arranged path object. The specific method of placing the item object is arbitrary. In the second example, the item objects are placed at regular intervals on the path object. For example, the game system 1 places the first item object at a position a predetermined distance away from the starting position of the path object in the moving direction of the enemy character, and if there is a mesh of the path object below the position a predetermined distance away from the position of the last placed item object, a new item object is placed at that position. According to the above, even if the length of the path object extending every frame is not constant, the item objects can be placed so that the distance intervals are constant. In other embodiments, the game system 1 may execute a process of placing item objects every predetermined number of frames, for example, during the period from when the placement event occurs until the end condition is satisfied.
[0251] In the second example, the player character 201 that has performed an action on the enemy character may be adjusted so that it can immediately move onto the set path object. For example, the player character 201 may be able to move the enemy character by means of a charging action. At this time, the game system 1 may set a large collision determination area for the player character 201 that performs the charging action, so as to move the enemy character a little before the player character 201 and the enemy character actually come into contact. Also, for example, the game system 1 may generate a path object from a position behind the player character 201 as seen from the player character 201, rather than from the position of the enemy character when it comes into contact with the player character 201. According to the above, the distance between the position of the player character 201 at the time when the placement event occurs and the position where the path object is first generated can be increased. As a result, for example, the player character 201 that performs a charging action can enter directly onto the path object set by the movement of the enemy character after knocking the enemy character away.
[0252] In the second example, the material of the path object is set to a predetermined material (referred to as the "material of the path"). Specifically, the game system 1 sets the material of the path for the voxels corresponding to the voxel update range. As a result, the material of the voxel mesh set based on the voxel becomes the material of the path. In the second example, the material of the path is set with the property that when the player character 201 lifts the object to which the material is set, the player character 201 can fly (for example, rise into the air in the lifted state). Therefore, in the second example, after the player character 201 climbs the path object, the player character 201 can rise to a higher position from above the path object by lifting the fragment object (specifically, the object to which the material of the path is set) generated by the punch action or the pulling-out action on the path object. Note that, in addition to (or instead of) the above property, the material of the path may have the property that the speed increases when the player character 201 moves on the object to which the material is set. According to this, the player character 201 can move on the path object at a speed faster than moving on the normal ground where the material of the path is not set.
[0253] [2-8-3. Third Example] As a third example, an example in which a path object is arranged by the movement when a player object performs a predetermined action in the game space will be described. In the third example, the player object is a moving object, and the arrangement event is an event in which the player object moves by a predetermined action (generation action described later) by the player object based on an operation input by the player.
[0254] FIG. 40 is a diagram showing an example of a game image in the third example. As shown in FIG. 40, in the third example, a game image representing a scene where the player character 201 rides on a vehicle object and races is displayed. In the third example, the player object 351 is an object including the player character 201 and the vehicle object. In other embodiments, the vehicle object on which the player character 201 rides may be any object such as a car, an airplane, an animal, or another character. Also, the player object may be composed of one object (for example, only the player character 201). In the third example, the player object 351 and another race object 352 that races with it appear. In other embodiments, the other race object may not appear.
[0255] The player object 351 is controlled based on an operation input by the player. In the third example, the moving speed of the player object 351 is determined based on a control rule defined in the game program, and the traveling direction of the player object 351 is determined based on an operation input by the player. Note that the control method of the player object 301 is arbitrary, and the moving speed and the traveling direction may be determined based on an operation input by the player.
[0256] In the third example, the player object 351 can perform a generation action to generate a path object. FIG. 41 is a diagram showing an example of a game image representing the state in which the player object is performing the generation action. In the third example, the player object 351 performs the generation action in response to a predetermined operation input by the player (for example, an input to the ZR button 61). In the third example, the player object 351 that performs the generation action moves forward or diagonally upward in front. Note that the moving direction during the generation action is arbitrary, and the player object 351 during the generation action may move along the ground object or may move so as to jump in the air. Also, the moving direction during the generation action may be determined based on the operation input by the player. For example, the angle of the moving direction regarding the pitch direction (specifically, the angle of the moving direction when the horizontal direction is used as a reference) may be determined to be an angle corresponding to the operation input during the generation action within a predetermined angle range. Specifically, the moving direction regarding the pitch direction during the generation action may be determined within a range from the horizontal direction to a predetermined angle upward with respect to the horizontal direction in response to the operation input (for example, an input to tilt the analog stick 32) during the generation action.
[0257] Also, in the third example, the moving speed of the player object 351 during the generation action is set to be higher than the moving speed when the generation action is not being performed. Note that the moving speed during the generation action is arbitrary. In other embodiments, the moving speed during the generation action may be the same as the moving speed when the generation action is not being performed, or may be slower than the moving speed.
[0258] As described above, in the third example, the movement mode of the player object 351 during the generation action is different from the movement mode when the generation action is not being performed. In other embodiments, there may be no change in the movement mode of the player object 351 when the generation action is started. That is, the game system 1 may determine the movement speed and the traveling direction of the player object 351 in the same manner whether the player object 351 performs the generation action or not.
[0259] In the third example, an action parameter having a value corresponding to the time during which the player object 351 can execute the generation action is set for the player object 351. The game system 1 increases the value of the action parameter in response to the player object 351 satisfying a predetermined condition. Here, in the third example, the predetermined condition is that the soil object 354 and the mud object 355 (see FIG. 40) arranged in the game space are deformed by the player object 351.
[0260] In the third example, a soil object 354 and a mud object 355, which are voxel objects, are arranged in the game space (see FIG. 40). When the player object 351 moves, it can move while deforming so as to erase the soil object 354 or the mud object 355 in front of itself. Specifically, when an event occurs in which the player object 351 moves near the soil object 354 or the mud object 355, the game system 1 sets a voxel update range in front of the player object 351, and decreases the density of the voxels corresponding to the voxel update range to a value less than the reference value (for example, 0). As a result, the meshes of the soil object 354 and the mud object 355 are deformed into a shape such that the portions within the voxel update range are erased. As described above, it is possible to express a state in which the player object 351 advances while destroying or absorbing the soil object 354 or the mud object 355. Note that the specific position, size, and shape of the voxel update range are arbitrary. For example, the voxel update range may be a spherical shape centered at a position a predetermined distance in front of the player object 351. In the third example, the ground object 353 is an object that is not deformed even when the soil object 354 and the mud object 355 are deformed (for example, an object that is not a voxel object).
[0261] During the period in which the player object 351 is performing a generation action, the game system 1 gradually subtracts the value of the action parameter. The game system 1 causes the player object 351 to perform a generation action on at least the condition that the value of the action parameter is not 0. When the value of the action parameter becomes 0, even if an operation input for a generation action is being performed on the player object, the game system 1 ends the generation action on the player object 351.
[0262] As described above, the player can increase the value of the action parameter by operating the player object 351 so as to deform the soil object or the mud object, thereby causing the generated action to be performed on the player object 351. In this way, by providing conditions for the execution of the generated action, the strategic nature of the game can be improved. Note that in other embodiments, the conditions for the player object 351 to perform the generated action are arbitrary, and the player object 351 may be able to perform the generated action unconditionally.
[0263] As shown in FIGS. 40 and 41, the game system 1 may display a gauge image 356 indicating the current value and the upper limit value of the action parameter. Further, the game system 1 may display an effect image for the player object 351 during the generated action in order to notify the player that the generated action is in progress. For example, in the example shown in FIG. 41, an effect image 357 representing smoke is displayed behind the player object 351 during the generated action.
[0264] In the third example, when the player object 351 performs the generated action, after the movement of the player object 351, a path object is arranged along the trajectory passed by the player object 351 during the generated action. Hereinafter, with reference to FIGS. 42 to 44, the process of setting the path object according to the generated action will be described.
[0265] FIG. 42 is a diagram showing an example of the voxel update range set when one frame has elapsed since the start of the generated action. In the example shown in FIG. 42, the start position 361 is the position of the player object 301 when the generated action is started. The current position 362 is the position of the player object 351 at present (here, after one frame has elapsed since the start of the generated action). Note that in the third example, the position of the player object 351 is set at a predetermined position on the horizontal plane including the lower end of the player object 351 as an example (see FIG. 42).
[0266] In the third example, the game system 1 sets a passage area 363 along the path through which the player object 351 that performs a generation action passes. In the third example, the game system 1 represents the passage area 363 using the above-described SDF. In the situation shown in FIG. 42, the passage area 363 is set to extend from the start position 361 to the current position 362. For example, the passage area 363 has four side faces parallel to the direction from the start position 361 to the current position 362, includes the start position 361 in one of the two faces other than the side faces (hereinafter referred to as the bottom face), and includes the current position 362 in the other face, and has a rectangular parallelepiped shape. Also, one side of the bottom face of the passage area 363 is set to pass through the start position 361 and be parallel to the ground at the start position 361. Note that the passage area may have an arbitrary shape extending from the start position to the current position, for example, it may have a capsule shape, or a shape in which the vertices and sides of the above-described rectangular parallelepiped are rounded. Also, the passage area may be shaped such that the upper part of the cross-sectional shape perpendicular to the direction from the start position to the current position is a straight line. According to this, since an upper surface is formed on the path object, the path object can be shaped so that the player object 351 can easily travel.
[0267] As described above, the passage area 363 is set to include the position through which the player object 351 that performs a generation action passes. However, the passage area 363 does not necessarily need to be set to include all the areas through which the player object 351 passes, and may also be set to include areas through which the player object 351 does not pass.
[0268] In the third example, the game system 1 sets an inclined surface 364 within the passage area 363. As shown in FIG. 42, the inclined surface 364 is a surface obtained by rotating the lower side surface of the passage area 363 (specifically, the side surface including the start position 361 and the current position 362) upward by a predetermined angle with the side passing through the start position 361 as the rotation axis. Note that the predetermined angle is greater than 0° and less than 90°. Details will be described later, but the upper surface of the path object is generated along the inclined surface 364. Here, if the upper surface of the path object and the ground are connected so that there is no large angular difference at the start position 361, it becomes easier for the player object 351 to move onto the path object. Therefore, the predetermined angle may be set to an angle of 45° or less (for example, 10°). In the third example, since the position on the horizontal plane including the lower end of the player object 351 is used as the position of the player object 351, the predetermined angle is set to a value greater than 0°. However, a position other than the horizontal plane including the lower end of the player object 351 may be used as the position of the player object 351, and at this time, the predetermined angle may be set to 0°.
[0269] The game system 1 sets, as the voxel update range 365, the area of the passage area 363 excluding the area above the inclined surface 364 (see the hatched area shown in FIG. 42). Specifically, the game system 1 changes the data of the SDF representing the passage area 363 so as to represent the area excluding the area above the inclined surface 364. The game system 1 updates (specifically, increases) the density of the voxels corresponding to the voxel update range 365 so that it becomes the internal area of the voxel object of the voxel update range 365. For example, the density of the voxels corresponding to the voxel update range 365 is updated to a value equal to or higher than the reference value (for example, 255). The game system 1 generates a voxel mesh of the path object based on the voxel data after the density is updated according to the method described in the above [2-6. Generation of Mesh]. As a result, a path object having a shape corresponding to the voxel update range 365 is generated.
[0270] FIG. 43 is a diagram showing an example of a voxel update range set when two frames have elapsed since the generation action was started. In the third example, during the generation action, the player object 351 is assumed to move straight in the direction determined at the start of the action. Therefore, in FIG. 43, the current position 366 is on the straight line passing through the start position 361 and the position 362 one frame before.
[0271] Even after the second frame since the generation action was started, the game system 1 sets the passing area in the same way as in the first frame. After the second frame, the passing area is set to extend from the position of the player object 351 in the previous frame to the current position. In the second frame, a passing area 367 extending from the position 362 one frame before to the current position 366 is set (see FIG. 43). As described above, in the third example, since the player object 351 performing the generation action moves straight, the upper side surface of the passing area 363 one frame before and the upper side surface of the passing area 367 set in the current frame are continuous. Note that the player object 351 performing the generation action may be controlled not to move straight (for example, to move along a parabolic trajectory). At this time, the game system 1 adjusts and sets the position of the passing area 367 so that at least a part of the side of the upper side surface of the passing area 363 one frame before and the side of the upper side surface of the passing area 367 set in the current frame coincide (more specifically, the respective side surfaces are continuous).
[0272] Next, the game system 1 sets an inclined plane 368 within the passage area 367. Even from the second frame onwards, similar to the first frame, the inclined plane 368 is a plane obtained by rotating the lower side surface of the passage area 367 upward by a predetermined angle with the side passing through the start position 361 as the rotation axis. In the third example, since the player object 351 that performs the generation action moves straight, each inclined plane set in each frame will be located on the same plane. If the player object 351 that performs the generation action is controlled not to move straight, the game system 1 may adjust and set the position of the inclined plane so that at least a part of the side of the inclined plane in the previous frame coincides with the side of the inclined plane set in the current frame (more specifically, the respective inclined planes are continuous).
[0273] Even from the second frame onwards, similar to the first frame, the game system 1 sets the area of the passage area 367 excluding the area above the inclined plane 368 as the voxel update range 369 (refer to the hatched area shown in FIG. 43). The density of the voxels corresponding to the voxel update range 369 is updated so that voxel meshes are arranged on the surface of such a voxel update range 369, and the voxel mesh of the path object is set based on the voxel data after the density is updated. As a result, from the second frame onwards, the path object is deformed to have a shape corresponding to the voxel update ranges (in the example of FIG. 43, the voxel update ranges 365 and 369) set so far. Thus, in the third example, the path object is deformed to extend along the traveling direction of the player object 351.
[0274] FIG. 44 is a diagram showing an example of a voxel update range set after a certain period of time has elapsed since the generation action was started. In FIG. 44, region 371 is a region obtained by combining all the passing regions set from the start of the generation action to the current time. Here, as shown in FIG. 44, the slope 372 will be located above the upper side surface of region 371 at a position separated from the start position 361 by a certain distance. That is, in the frame after a certain period of time has elapsed since the generation action was started, the slope 372 will be located above the upper side surface of the passing region in that frame. At this time, the passing region is set as the voxel update range as it is. From the above, in the third example, the voxel update range 373 has a shape in which a part of the upper side (specifically, the part above the slope 372) of the region 371 on the side closer to the start position 361 is excluded (see FIG. 44).
[0275] In the third example, the game system 1 executes a process of excluding the region above the slope among the passing regions in the frames from the start of the generation action until the exclusion processing period elapses, and in the frames after the exclusion processing period has elapsed, sets the passing region as the voxel update range without executing the process. The exclusion processing period is a period before the frame in which the slope will be located above the upper side surface of the passing region in that frame. According to this, the path object generated within the exclusion processing period from the start of the generation action has an upper surface along the above slope. Thereby, the step between the ground and the path object can be reduced (or the step can be eliminated), so that the player object 351 can easily enter from the ground into the path object. In other embodiments, the voxel update range may be set without using a slope. Specifically, the game system 1 may set the passing region before being excluded by the slope as the voxel update range.
[0276] In the third example, the upper side surface of each passage area set for each frame and each inclined surface for each frame are set to be continuous. Therefore, the voxel mesh of the path object is generated such that the upper surface generated by the deformation for each frame is continuous with respect to the upper surface generated so far. As a result, the path object can be generated such that the player object 351 can easily travel along the path object.
[0277] In the third example, the game system 1 sets the voxel update range for each frame, and sets the voxel mesh of the path object for each frame to have a shape corresponding to the voxel update range. Therefore, the voxel update range is continuously set at the position where the player object 351 has passed by the generation action, and the path object is deformed so as to gradually extend along the path where the player object 351 has passed. According to this, it is possible to clearly show how the path object is generated following the player object 351 that performs the generation action.
[0278] Note that the method of continuously setting the voxel update range is not limited to the method of setting the voxel update range for each frame. For example, in other embodiments, the game system 1 may perform the setting process of the passage area and the setting process of the voxel update range based on these positions on the condition that the distance between the current position of the player object 351 and the position one frame before is equal to or greater than a predetermined distance, similar to the second example described above. When the voxel update range was not set in the previous frame, the game system 1 calculates the above distance using the position of the player object 351 in the frame where the voxel update range was last set as the previous position. Also by the above, as the generation action is performed over a plurality of frames, the voxel update range is continuously set and the path object is continuously deformed.
[0279] Note that the game system 1 does not need to execute the setting process of the voxel update range and the setting process of the voxel mesh of the path object based on the current position of the player object 351 in a certain frame where a generation action is being performed, and it may be executed in a frame later than that. In the third example, when the player object 351 during a generation action reaches a certain position in a certain frame, the game system 1 executes the setting process of the voxel update range calculated with the certain position as the current position, and the setting process of the voxel mesh of the path object based on the voxel update range, in a frame after the waiting period from the certain frame. Therefore, the voxel mesh of the path object set at the certain position in response to the player object 351 passing through the certain position is set after the above waiting period has elapsed after the player object 351 has passed through. According to this, the possibility of contact between the player object 351 and the path object can be reduced. Note that the waiting period may be set fixedly in advance, or may be variably set based on the moving speed of the player object 351 or the like. For example, the waiting period may be set to a short time when the moving speed of the player object 351 is fast, and may be set to a long time when it is slow.
[0280] In the above, an example in which a path object is set by a generation action of the player object 351 has been described. Here, in the third example, other race objects other than the player object 351 may also be controlled to perform a generation action. At this time, a path object may be generated according to the movement of another race object that performs a generation action.
[0281] FIG. 45 is a diagram showing an example of a game image after a route object is generated. In the situation shown in FIG. 45, a route object 375 is arranged on the ground object 353. In the third example, a racing object such as the player object 351 can move on the ground object and can travel on the route object arranged on the ground object. As shown in FIG. 45, since the route object 375 can be arranged so as to extend obliquely upward from the ground object 353, for example, it can be a route different from the route on the ground object 353. Thus, since where to generate the route object affects the outcome of the racing game, the strategic nature of the racing game can be improved.
[0282] Here, in the third example, it is assumed that the race course is circular and the racing game is a rule of going around the circular race course a plurality of times. Therefore, the player object 301 can, for example, arrange a route object by its own generation action and travel on the route object in subsequent rounds. Thus, the strategic nature of the racing game can be further improved. Note that the circular course is a course of any shape that can be circled, for example, a course including a closed route. The circular course can also be referred to as a course constituting a track. Note that in other embodiments, the shape of the race course is arbitrary and does not have to be circular. Also, the racing game may be a rule of traveling only once around the circular course.
[0283] In the third example, in addition to the traveling surface portion 376 based on the voxel update range set according to the method shown in FIGS. 42 to 44, the path object 375 has a guide portion 377 on the outside of the portion (specifically, the outside in the left-right direction when the forward direction is the direction in which the player object advances by the generation action). Specifically, in the frame in which the generation action is performed by the race object, the game system 1 sets the voxel update range (for example, the voxel update range 365 shown in FIG. 42) based on the above-described passing area, and further sets a voxel update range for the guide portion outside the voxel update range. The game system 1 updates so as to increase the density of the voxels corresponding to these voxel update ranges. Note that the shape of the guide portion and the shape of the corresponding voxel update range are arbitrary. For example, the voxel update range for the guide portion may be set not only in the area outside the traveling surface portion but also in the area overlapping the traveling surface portion. Also, the shape of the guide portion and the corresponding voxel update range may be predetermined. For example, these shapes may be shapes extending to the upper side surface of the passing area or a position above the above-described slope (see FIG. 45). Also, in the third example, the guide portion is generated in the range from the start position of the generation action to a predetermined distance in the direction in which the traveling surface portion extends. For example, the game system 1 may execute a process of setting a voxel update range for the guide portion during a period until a predetermined number of frames have elapsed from the start of the generation action, and may not execute the process after the elapse of the period. Note that in other embodiments, the guide portion may be generated outside the traveling surface portion in the range from the start position to the end position of the generation action.
[0284] The above-described guide portion 377 makes it easier for the race object to enter onto the path object 375. Also, the guide portion 377 makes the start position of the path object 375 easier for the player to understand.
[0285] FIG. 46 is a diagram showing an example of a game image when a player object moves on a path object. In the third example, when moving on the path object 375, the player object 351 is controlled to accelerate. Specifically, when the game system 1 updates the density of the voxel update range corresponding to the path object, the material of the voxel corresponding to the voxel update range is set to the material of the path. As a result, the voxel mesh of the path object is set to the material of the path. In the third example, the material of the path is assumed to have the property of increasing the speed when the player object 351 moves on the object to which the material is set. In the third example, the game system 1 identifies on which object the player object 351 is located, and if it is located on the object of the above path material, performs control to accelerate the player object 351. Note that the specific control method for accelerating the player object 351 is arbitrary. For example, the game system 1 may gradually increase the moving speed of the player object 351 from the current speed during the period when acceleration is performed, or may change the moving speed during the period when acceleration is performed to a constant speed faster than the normal speed. According to the above, the player can advantageously advance the racing game by driving the player object 351 on the path object. As a result, the strategic nature of the racing game in which the path object is arranged can be further improved.
[0286] In the first to third examples described above, when an arrangement event occurs, the game system 1 sets a voxel update range at one or more positions through which the moving object has passed. As a result, a path object extending along the path along which the moving object has moved can be set. In other embodiments, in the first to third examples, the game system 1 sets a path connecting a first position and a second position on the moving path of the moving object, as in a fourth example described later, and sets a voxel update range so as to extend along the path. Note that the above path does not necessarily coincide with the moving path of the moving object from the first position to the second position. For example, the path object in the first to third examples may be formed to extend while meandering from the first position to the second position, as in the fourth example described later, or the slopes of the upper surfaces at the first position and the second position may be formed to be gentler than the slope of the upper surface at the intermediate portion.
[0287] [2-8-4. Fourth Example] As a fourth example, an example in which a path object is arranged by the movement of a moving object due to a throwing action by a player character in a game space will be described. In the fourth example, as in the first example, a path object is arranged by the movement of the object thrown by the player character. However, in the fourth example, the path object is set regardless of the object generation area, and the moving object is a predetermined type of object (specifically, a fruit object). Also, in the fourth example, the method of determining the path of the path object and the timing at which the path object is set are different from those in the first example. Hereinafter, the operation of setting the path object in the fourth example will be described.
[0288] FIG. 47 is a diagram showing an example of a game image in a situation where a player character is lifting a fruit object. FIG. 48 is a diagram showing an example of a game image in a situation where the player character has thrown the fruit object by a throwing action from the situation shown in FIG. 47. FIG. 49 is a diagram showing an example of a game image in a situation where a path object is arranged from the situation shown in FIG. 48.
[0289] As shown in FIG. 47, the player character 201 can perform a throwing action of throwing the fruit object 381. In the fourth example, as shown in FIG. 28 described above, the direction in which the fruit object 381 is released by the player character 201 is controlled based on the operation input by the player. As shown in FIG. 48, the fruit object 381 released by the throwing action moves in the game space. In the fourth example, the fruit object 381 moves in a parabolic shape (see FIG. 48). In the examples shown in FIGS. 47 to 49, the fruit object released by the throwing action collides with the terrain object 382. At this time, the game system 1 sets a path object 383 along the path connecting the position of the player character 201 that threw the fruit object 381 and the position of the object at the time of collision (see FIG. 49).
[0290] In the fourth example, the placement event is an event in which a predetermined type of object that becomes a moving object is released by the throwing action of the player character 201 and collides with another object. In the fourth example, the predetermined type of object is a fruit object. In other embodiments, the moving object is not limited to a fruit object, and a path object may be set by a placement event due to the movement of other types of objects.
[0291] In the fourth example, a path object is set when the fruit object moves due to the throwing action of the player character 201. However, in other embodiments, a path object may also be set when the fruit object moves due to other actions of the player character 201. For example, when the fruit object moves so as to be thrown by a punch action or a shooting action of the player character 201, a path object may be set. Further, in other embodiments, the character that performs the action for setting the path object is not limited to the player character 201, and may be other characters (for example, enemy characters) or the like. Further, in other embodiments, a path object may be set when a predetermined action is performed on the fruit object when the character is in a predetermined state (for example, a state of using a specific item).
[0292] In the fourth example, after the fruit object 381 released by the throwing action of the player character 201 collides with another object (in the example shown in FIG. 49, the terrain object 382), the setting of the path object is started. Note that, in other embodiments, the game system 1 may start setting the path object after the released fruit object 381 has moved a predetermined distance, or after a predetermined time has elapsed since the fruit object 381 was released.
[0293] FIG. 50 is a diagram showing an example of a game image in a situation where the player character moves on the path object. As shown in FIG. 50, also in the fourth example, similar to the first to third examples, the player character 201 can move on the path object 304. As described above, in the fourth example, the player can arrange the path object 383 extending in the throwing direction in the game space by throwing the fruit object 381, and set a new path in the game space. Thereby, the strategic nature and the interestingness of the game can be improved.
[0294] Hereinafter, with reference to FIGS. 51 and 52, a method for setting a path object in the fourth example will be described. In the fourth example, the game system 1 sets a path connecting the start position and the end position in the movement of the fruit object 381 of the tree that becomes a moving object, and sets a path object so as to extend along the path. FIG. 51 is a diagram showing an example of a path for setting a path object. In FIG. 51, a path 387 connecting the start position 385 and the end position 386 is set. The start position 385 is a position based on the player character 201 who threw the fruit object 381 of the tree. Specifically, the start position 385 is the position at the feet of the player character 201 when the throwing action is performed (for example, the position at the lower end of the player character 201). Note that the start position 385 is not limited to the position at the feet of the player character 201, and may be set at any position in the vicinity of the player character 201. The end position 386 is a position based on the fruit object 381 of the tree released by the throwing action. Specifically, the end position 386 is the position where the released fruit object 381 collides with another object (in the example of FIG. 51, the terrain object 382). Note that the end position 386 is not limited to the above, and may be, for example, the position where the fruit object 381 stops moving, the position where the fruit object 381 has moved a predetermined distance after being released, or the position at the time when a predetermined time has elapsed after the fruit object 381 is released.
[0295] In the fourth example, a path 387 extending from the start position 385 to the end position 386 is set. In the fourth example, the game system 1 sets the path 387 such that the slopes at the start position 385 and the end position 386 are gentler than the slope in the middle portion between the start position 385 and the end position 386. Specifically, when the game system 1 views the path 387 from a direction parallel to the horizontal direction in the game space and perpendicular to the direction from the start position 385 to the end position 386, the path 387 is set to be a broken line or a curve (e.g., a Bézier curve) whose inclination angles at the start position 385 and the end position 386 are smaller than the inclination angle of the straight line 388 connecting the start position 385 and the end position 386 (see FIG. 51). According to the above, in the portion of the path 387 from the start position 385 to a certain position 389, the inclination angle gradually increases as it approaches the position 389, and in the portion of the path 387 from the position 389 to the end position 386, the inclination angle gradually increases as it approaches the end position 386. By setting the path 387 as described above, it is possible to facilitate the movement when the player character 201 enters the path object 383 from the start position 385 or gets off the path object 383 from the end position 386.
[0296] Also, in the fourth example, the path 387 is generated to have a portion shifted with respect to the straight line connecting the start position 385 and the end position 386 in the lateral direction with respect to the direction from the start position 385 to the end position 386 (specifically, a direction perpendicular to the direction from the start position 385 to the end position 386 and perpendicular to the vertical direction in the game space). For example, the game system 1 sets the path 387 to be a sine wave when viewed from a direction perpendicular to a plane parallel to both the direction of the above straight line and the above lateral direction. According to this, the path object 383 is formed to extend while meandering from the start position 385 to the end position 386 (see FIG. 49). Therefore, when the path object 383 is made to look like, for example, the vine of a plant generated from the fruit object 381, it can be given a natural shape as an object imitating such a plant.
[0297] Note that the method for determining the path for setting the path object in the fourth example is arbitrary. For example, in other embodiments, the path may be set to be a straight line extending from the start position 385 to the end position 386, or the path may be set to match the movement path of the fruit object 381 from the start position 385 to the end position 386.
[0298] In the fourth example, the path object 383 is set to gradually extend along the path set as described above. FIG. 52 is a diagram showing an example of the voxel update range set in a certain frame when the path object is set. In FIG. 52, the previous position 391 and the current position 392 are set on the set path 387. In the fourth example, in the first frame in which the path object is set, the above-described end position 386 is set as the previous position, and the position advanced by a predetermined distance from the previous position 391 along the path 387 in the direction of the start position 385 is set as the current position. In subsequent frames, the current position in the previous frame is set as the previous position, and the position advanced by a predetermined distance from the previous position along the path 387 in the direction of the start position 385 is set as the new current position. Also, when the position advanced by a predetermined distance from the previous position along the path 387 in the direction of the start position 385 exceeds the start position 385, the start position 385 is set as the new current position. As described above, in the fourth example, the voxel update range is set to gradually extend from the end position 386 to the start position 385. Therefore, although details will be described later, the path object generated at the end position 386 will be deformed so as to gradually extend to the start position 385. As a result, in the fourth example, it is possible to perform an expression in which the path object gradually extends from the fruit object 381 that has collided with another object. Note that in other embodiments, the voxel update range may be set to gradually extend from the start position 385 to the end position 386. Also, the above-described predetermined distance may be constant or not constant in each frame in which the voxel update range is set.
[0299] The game system 1 sets a voxel update range (the hatched area shown in FIG. 52) 395 that extends from the previous position 391 to the current position 392. In the fourth example, the voxel update range 395 is the area below the plane 394 among the capsule shapes 393 that include the previous position 391 and the current position 392 inside and are arranged to extend along the path 387. The plane 394 is, for example, a plane parallel to the straight line passing through the previous position 391 and the current position 392, and also parallel to a straight line in the horizontal direction in the game space that is perpendicular to the straight line. In the fourth example, the cross-sectional shape perpendicular to the straight line passing through the previous position 391 and the current position 392 is a shape in which a part of the upper side of a circle is cut off, and the upper side becomes a straight line. Although details will be described later, the upper surface of the path object is generated along the above plane 394. Therefore, by setting the voxel update range 395 to the above shape, the path object can be made into a shape that is easy for the player character 201 to move on. In other embodiments, the voxel update range may be an arbitrary shape that extends from the previous position to the current position, for example, a quadrangular prism shape or a shape in which the sides and corners of the quadrangular prism are rounded.
[0300] Note that in the fourth example, the voxel update range 395 is set at a position where the plane 394 coincides with at least a part of the side of the plane of the voxel update range set in the previous frame (specifically, the side connected to the voxel update range 395). For example, the game system 1 may adjust the position of the voxel update range 395 and / or the plane 394 so that the plane 394 set in the current frame is continuous with at least a part of the plane of the voxel update range set in the previous frame. According to the above, the path object is formed so as not to have (or have few) steps on the upper surface, so that it is easy for the player character 201 or the like to move on the path object.
[0301] Also, in the fourth example, the voxel update range 395 is set such that the plane 394 includes the previous position 391 and the current position 392. According to this, the upper surface of the path object will be located at the position of the feet of the player character 201 (for example, the position of the lower end of the player character 201). This can facilitate the player character 201 to enter the path object.
[0302] The game system 1 updates (specifically, increases) the density of the voxels corresponding to the voxel update range 395 so that the voxel update range 395 set as described above becomes the internal area of the voxel object. For example, the density of the voxels corresponding to the voxel update range 395 is updated to a value equal to or higher than the reference value (for example, 255). The game system 1 generates the voxel mesh of the path object based on the voxel data after the density is updated according to the method described in the above [2-6. Generation of Mesh]. As a result, a path object having a shape corresponding to the voxel update range 395 is generated.
[0303] In the fourth example, the game system 1 sets the material of the voxels corresponding to the voxel update range 395 to a predetermined material (for example, the material of vines) different from the material of the path. Therefore, the material of the path object is set to the above predetermined material. In other embodiments, the game system 1 may set the material of the voxels corresponding to the voxel update range 395 to the material of the path, as in the second and third examples also in the fourth example.
[0304] In the fourth example, after the path from the start position to the end position is set, the game system 1 sets the voxel update range every frame and updates the voxel mesh of the path object during the period from when the setting of the path object starts until the end condition is satisfied. As a result, in the first frame when the setting of the path object starts, a new path object is generated. Also, in the second frame and subsequent frames after the setting of the path object starts, a new voxel update range is set at a position extending from the voxel update range set in the previous frame, and thereby, the path object is deformed so as to gradually extend along the path from the end position to the start position. In the fourth example, the end condition is that the voxel update range including the start position is set. Therefore, the deformation of the path object ends in response to the path object being deformed to extend to the start position.
[0305] Note that, also in the fourth example, similar to the first to third examples, the processes for setting the path object after the occurrence of the placement event (specifically, the process for setting the voxel update range and the process for setting the voxel mesh of the path object) are executed. Therefore, also in the fourth example, similar to the first to third examples, the possibility of contact between the moving object and the path object can be reduced.
[0306] Also, in the fourth example, the setting of the path object starts at the timing after the path for setting the path object is set. However, in other embodiments, the setting of the path object may start at the timing before the path is determined. For example, in other embodiments, the game system 1 may start the process for setting the path object in the frame after the elapse of the above-described waiting period since the movement of the fruit object starts, similar to the first to third examples described above. At this time, the voxel update range may be set by any of the methods of the first to third examples.
[0307] In the first to fourth examples described above, the voxel space for the path object is a voxel space different from the voxel spaces for other types of voxel objects different from the path object (for example, terrain objects, the soil object and the mud object in the third example, etc.). These voxel spaces may be set such that at least a part thereof overlaps in the game space. According to the above, the deformation of the path object and the deformation of the other types of voxel objects can be controlled individually. Further, the game system 1 may reduce (for example, set to 0) the density of the voxels included in the voxel data of the path object to a value less than the reference value in response to an erasure event. According to this, the path object can be easily erased without deforming other types of voxel objects. Note that the content of the erasure event may be arbitrary. For example, it may be an event in which a predetermined time has elapsed since the path object was placed, or an event in which the player character 201 has achieved a predetermined condition. Note that in other embodiments, the voxel space for the path object may be the same voxel space as the voxel space for the other types of voxel objects.
[0308] [3. Specific Examples of Processing in Game System] Next, with reference to FIGS. 53 to 58, specific examples of information processing in the game system 1 will be described.
[0309] FIG. 53 is a diagram showing an example of various data used for information processing in the game system 1. Each data shown in FIG. 53 is stored in a memory accessible by the main body device 2 (for example, a flash memory 84, a DRAM 85, and / or a memory card mounted on the slot 23, etc.). As shown in FIG. 53, the game system 1 stores a game program. The game program is for executing the game processing in the present embodiment (specifically, the game processing shown in FIG. 54). Note that the game program includes the above-described material data (see FIG. 12). Further, the above memory stores the above-described voxel data (see FIG. 11), the above-described material data (see FIG. 12), position history data, update range data, mesh data, and object data, etc. (see FIG. 53).
[0310] The position history data is data indicating the history of the positions of moving objects. Specifically, the position history data includes data indicating the current position of the moving object at the time when the movement of the moving object is performed, and data capable of specifying the elapsed time from the start of the movement to the current time. Note that the data capable of specifying the elapsed time may be, for example, data indicating the time from the start of the movement, or data indicating the number of frames from the start of the movement.
[0311] The update range data is data indicating the above-described voxel update range. In the present embodiment, the voxel update range is represented by the above-described SDF.
[0312] Mesh data includes various data related to the mesh of the voxel object. As shown in FIG. 53, in this embodiment, the mesh data includes SVO data, display mesh data, and determination mesh data. The SVO data is data that holds each vertex calculated from the voxel data in the above-described SVO structure. In this 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).
[0313] Object data includes various data related to objects other than the voxel object (for example, player character 201, 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, movement speed, and state of the object.
[0314] FIG. 54 is a flowchart showing an example of the flow of game processing executed by the game system 1. The execution of the game processing is started, for example, in response to the start of the game according to the player's instruction during the execution of the above game program. Note that the series of processes from steps S1 to S13 is executed in one cycle per frame.
[0315] In the present embodiment, the processor 81 of the main body device 2 executes the processing of each step shown in FIG. 54 by executing the game program stored in the game system 1. However, in other embodiments, some of the processing of each step may be executed by a processor (for example, a dedicated circuit or the like) different from the processor 81. Further, when the game system 1 can communicate with another information processing device (for example, a server), some of the processing of each step shown in FIG. 54 may be executed in the other information processing device. Also, the processing of each step shown in FIG. 54 is merely an example, and if the same result can be obtained, the processing order of each step may be changed, or another processing may be executed in addition to (or instead of) the processing of each step.
[0316] Further, the processor 81 executes the processing of each step shown in FIG. 54 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 the information from the memory and uses it.
[0317] In step S1 shown in FIG. 54, the processor 81 acquires the operation data indicating the operation input by the player. That is, the processor 81 acquires the operation data received from each controller via the controller communication unit 83 and / or each of the terminals 17 and 21. The processing of step S2 is executed after step S1.
[0318] In step S2, the processor 81 designates, as a processing target, any object among the objects in the game space that requires processing and for which the processing has not been completed, and executes a process of calculating the speed and a process of reflecting the result of contact between the objects in the previous frame for the designated object. The speed of the object is used to calculate the position of the object in the current frame in the processes of steps S3, S10, and S11 described later. For example, when the designated object is the player character, the speed of the player character is calculated based on the operation data acquired in step S1. Also, when the designated object is an object not operated by the player (for example, an enemy character, a fragment object, or a fruit object), the speed of the object is calculated based on rules predetermined in the game program. For example, the speed of a fragment object or a fruit object is set to 0 when it is placed on a terrain object and not moving, is set to the same speed as the player character when held by the player character, and is set to a speed moving in the above-mentioned aiming direction with a magnitude determined by the above rules when released by a throwing action by the player character. Specifically, the speed of the object is calculated based on virtual physical calculations including the interaction between the objects. For example, interactions such as repulsion due to collision between the objects, friction due to contact, falling due to virtual gravity, and deceleration due to virtual air resistance are reflected in the speed determination.
[0319] Also, the process of reflecting the result of contact between the objects in the previous frame includes a process of applying an influence due to contact to the object when it is determined in the collision determination (step S9) in the previous frame that the objects have come into contact with each other. The above process is, for example, the following process. · A process of reducing the physical strength of the player character or the enemy character when it is determined that an attack action by another object has come into contact with the player character or the enemy character · When it is determined in the previous frame that the player character has contacted a terrain object by a pulling action or a punching action, a process of generating a fragment object · When it is determined in the previous frame that the fragment object has contacted another object, a process of disappearing the fragment object In the process of step S2 above, when the state regarding the object is changed, the processor 81 updates the object data stored in the memory regarding the object so as to indicate the content after the change. The process of step S3 is executed next to step S2.
[0320] In step S3, the processor 81 executes a voxel update process of updating voxel data for the object specified in step S2. The voxel update process includes, for example, the following processes. · When the object specified in step S2 is a moving object, a process of updating voxel data for the path object according to the movement of the moving object · When the object specified in step S2 is a terrain object (including the soil object and the mud object in the third example), a process of updating voxel data for the terrain object according to an action performed on the terrain object by the player character 201 or the like Note that the details of the voxel update process in the above first to fourth examples will be described later (see FIGS. 55 to 58). The process of step S4 is executed next to step S3.
[0321] In step S4, the processor 81 determines whether or not the processes of steps S2 and S3 above have been completed for all the objects for which processing is required. If the determination result in step S4 is affirmative, the process of step S5 is executed. On the other hand, if the determination result in step S4 is negative, the process of step S2 is executed again.
[0322] In step S5, the processor 81 updates the vertices of the voxel object in the game space. That is, when the voxel data is updated in the voxel update process of step S3, new vertices are calculated based on the updated voxel data. Note that the positions of the new vertices are calculated according to the method described in the above [2-3. Calculation of Vertices]. Also, the materials of the new vertices are calculated according to the method described in the above [2-4. Determination of Vertex Materials]. The process of step S6 is executed after step S5.
[0323] In step S6, the processor 81 performs vertex simplification. That is, the processor 81 simplifies each vertex updated by the process of step S5 according to the method described in the above [2-5. Vertex Simplification]. The SVO data stored in the memory is updated to indicate each vertex obtained by the processes of steps S5 and S6 above. Therefore, the SVO data is updated by the processes of steps S5 and S6. Note that the processes of steps S5 and S6 do not need to recalculate the vertices for the entire voxel data, and may be executed only for the parts where the contents of the voxels are changed in the process of step S5. The process of step S7 is executed after step S6.
[0324] In step S7, the processor 81 updates the display mesh of the voxel object based on the SVO data stored in the memory. Note that the position of each vertex of the display mesh and the material of each polygon of the display mesh (i.e., the material set for each vertex of the polygon) are calculated according to the methods described in the above [2-6. Generation of Mesh] and [2-6-1. Determination of the Material of the Display Mesh]. The processor 81 updates the display mesh data stored in the memory to indicate the position and material of each vertex of the updated display mesh. The process of step S8 is executed after step S7. Note that the processor 81 may start the processes after step S8 and execute them in parallel without waiting for the completion of step S7. In that case, step S7 needs to be completed before the start of step S9.
[0325] In step S8, the processor 81 updates the determination mesh of the voxel object based on the SVO data stored in the memory. Note that the position of each vertex of the determination mesh and the material of each polygon of the determination mesh (i.e., the material set for each vertex of the polygon) are calculated according to the methods described in the above [2-6. Generation of Mesh] and [2-6-2. Determination of the Material of the Determination Mesh]. The processor 81 updates the determination mesh data stored in the memory to indicate the position and material of each vertex of the updated determination mesh. The process of step S9 is executed after step S8.
[0326] In the example shown in FIG. 54, the generation process of the determination mesh (step S8) is executed every frame. However, the generation process of the determination mesh does not necessarily have to be executed every frame. For example, when the collision determination process in step S9 is executed only in frames that satisfy a predetermined condition, the processor 81 may execute the generation process of the determination mesh in the frames in which the collision determination in step S9 is performed. Further, the processor 81 may execute the generation process of the determination mesh for the voxels within the area in the game space where the collision determination in step S9 is performed. For example, in a situation where there are no objects to be subjected to collision determination other than voxel objects around the player character in the game space (that is, a situation where only the collision determination between the player character and the surrounding voxel objects needs to be performed), the processor 81 may execute the generation process of the determination mesh for the voxels within a predetermined range based on the player character.
[0327] In step S9, the processor 81 performs a collision determination for each object in the game space based on the determination mesh data and the object data stored in the memory. That is, the processor 81 performs the collision determination using the determination mesh for voxel objects and using a determination area of a predetermined shape set for an object that is not a voxel object. In the present embodiment, the collision determination in step S9 is performed in consideration of the speed calculated in step S2 above. That is, the processor 81 performs the collision determination using the position when moving at the above speed as the position of each object.
[0328] In the present embodiment, the presence or absence of the following contacts, for example, is determined by the collision determination in step S9. · Contact between a player character performing a movement, a punch action, a pull-out action, etc. and another object (for example, a terrain object, a path object, an enemy character, etc.) ·Contact between a character that performs an action of lifting (an object) and the object ·Contact between a straight line extending in the aiming direction from the position of the player character and another object ·Contact between an object released by a throwing action performed by the player character and another object In addition, when it is determined in the collision determination in step S9 that the objects are in contact with each other, in the process of step S2 in the next frame, a process that reflects the result of the contact between the objects is executed, or in the voxel update process of step S3 in the next frame, it is determined that an update event has occurred. The process of step S10 is executed after step S9.
[0329] In step S10, the processor 81 controls the operation of the player character (player object in the third example). For example, based on the operation data acquired in step S1, the processor 81 performs control to cause the player character to move and perform various actions. When a predetermined action occurs, a region for collision determination corresponding to the action is generated in the game space. In addition, in one execution of the process of step S10, the processor 81 controls the player character so as to advance the operation for one frame for operations performed over a plurality of frames (for example, a throwing action or a pulling-out action by the player character). By repeatedly executing the process of step S10 over a plurality of frames, the player character performs a series of operations related to movement and various actions. Also, the object data stored in the memory is updated to show the player character after the control in step S10. The process of step S11 is executed after step S10.
[0330] In step S11, the processor 81 controls the operations of objects other than the player character. For example, based on rules predefined in the game program, the processor 81 performs control to cause the enemy character to move and / or perform various actions, and performs control to move the above-mentioned fragment objects and fruit objects as needed. Also, when performing the operation of the first example, the processor 81 performs control to move or rotate the object generation area and the voxel space for the path object according to the rules defined in the game program. As a result, the path object moves or rotates in the game space. Note that in the process of one step S11, the processor 81 controls the object so that the operation performed over a plurality of frames progresses by one frame. By repeatedly executing the process of step S11 over a plurality of frames, the object performs a series of operations related to movement and various actions. Also, the object data stored in the memory is updated to show the object after the control in step S11. The process of step S12 is executed after step S11.
[0331] Note that in steps S10 and S11 above, the position of the player character or the object is basically determined to be the position after moving at the speed calculated in step S2 above. However, when it is determined by the collision determination in step S9 that the player character or the object contacts another object and the movement is blocked by the contacted other object, the position of the player character or the object is determined not to change.
[0332] In step S12, the processor 81 generates a game image. That is, the processor 81 generates a game image by performing drawing on each polygon of the display mesh of the voxel object and each polygon of the object other than the voxel object based on the virtual camera. Note that each polygon of the display mesh is drawn using drawing settings such as a texture corresponding to the material set for the polygon according to the method described in the above [2-6-1. Determination of the material of the display mesh]. Further, in the present embodiment, when the player character is in a state where a throwing action is possible, the processor 81 generates a game image including the above-described aiming image and object information image (see FIG. 28). The game image generated in step S12 is output to the display device and displayed at a cycle of once per frame.
[0333] In step S13, the processor 81 determines whether to end the game. For example, when a predetermined operation input for ending the game is performed by the player, the processor 81 determines to end the game. If the determination result in step S13 is negative, the process of step S1 is executed again. Thereafter, a series of processes from steps S1 to S13 are repeatedly executed until it is determined in step S13 to end the game. On the other hand, if the determination result in step S13 is positive, the processor 81 ends the game process shown in FIG. 54.
[0334] Next, the voxel update process (step S3 in FIG. 54) for executing the operation in the first example described in the above [2-8-1. First example] will be described. FIG. 55 is a sub flowchart showing an example of the detailed flow of the voxel update process in the first example. For example, when the object specified in step S2 is an object on which the player character can perform a throwing action (for example, a fragment object), the voxel update process in the first example is executed.
[0335] In the voxel update process in the first example, first in step S21, the processor 81 determines whether the object specified in step S2 above is moving due to a throwing action by the player character. If the determination result in step S21 is affirmative, the process of step S22 is executed. On the other hand, if the determination result in step S21 is negative, the process of step S24 is executed.
[0336] In step S22, the processor 81 determines whether the condition for setting a path object is satisfied for the object specified in step S2 above. The above condition is, for example, that the above-mentioned end condition is not satisfied and the object is located within the above-mentioned object generation area. If the above-mentioned end condition is not satisfied and the object is located within the above-mentioned object generation area, the determination result in step S22 is affirmative, and if the end condition is satisfied or the object is located outside the above-mentioned object generation area, the determination result is negative. If the determination result in step S22 is affirmative, the process of step S23 is executed. On the other hand, if the determination result in step S21 is negative, the process of step S24 is executed.
[0337] In step S23, the processor 81 stores the current position of the object specified in step S2 above in association with the current time. In the present embodiment, the above current position is the position obtained by moving the position calculated in the process of the previous frame according to the speed calculated in step S2. However, in other embodiments, the position calculated in the process of the previous frame may be used as the above current position. The processor 81 updates the position history data stored in the memory so as to include the data indicating the above current position and the data capable of specifying the elapsed time since the start of the movement. The process of step S24 is executed after step S23.
[0338] In step S24, the processor 81 determines whether there is a position of the object indicated by the position history data stored in the memory for which the above-described waiting period has elapsed. For example, the determination in step S24 is made based on whether the position history data includes data indicating a position associated with an elapsed time equal to or longer than the waiting time for the object. If the determination result in step S24 is affirmative, the process of step S25 is executed. On the other hand, if the determination result in step S24 is negative, the process of step S29 is executed.
[0339] In step S25, the processor 81 sets a voxel update range based on the position of the object determined in step S24 to have elapsed the waiting period. The voxel update range is set by using, as the current position, the position of the object determined in step S24 to have elapsed the waiting period, according to the method described in the above [2-8-1. First Example]. The processor 81 updates the voxel update range data stored in the memory to include data indicating the set voxel update range. In step S25, the processor 81 deletes from the position history data stored in the memory the data indicating the position of the object used for setting the voxel update range. However, if the data indicating the position of the object is used in subsequent processing (for example, used as the data of the previous position), the processor 81 stores the data in the memory. The process of step S26 is executed after step S25.
[0340] In step S26, the processor 81 determines whether the voxel update range set in step S25 overlaps at least partially with the prohibited area based on the position of the player character. If the determination result in step S26 is affirmative, the process of step S27 is executed. On the other hand, if the determination result in step S26 is negative, the process of step S28 is executed.
[0341] In step S27, the processor 81 changes the voxel update range set in step S25 so that the overlapping part with the above prohibited area is excluded. The processor 81 updates the voxel update range data stored in the memory so as to indicate the changed range. The process of step S28 is executed after step S27.
[0342] In step S28, the processor 81 updates the voxels corresponding to the voxel update ranges set in steps S25 and S27. Specifically, the processor 81 updates so as to increase the density of the voxel to a value equal to or higher than the reference value, and updates the material of the voxel to a predetermined material. The processor 81 updates the voxel data stored in the memory so as to indicate the updated density and material for the voxel. As a result, the mesh of the path object is deformed so that the path object has a shape that includes the voxel update range therein by the processes of steps S5 to S8 executed thereafter. The process of step S29 is executed after step S28.
[0343] In step S29, the processor 81 determines whether the path object overlaps at least partially with the prohibited area set in the game space. If the determination result in step S29 is affirmative, the process of step S30 is executed. On the other hand, if the determination result in step S29 is negative, the processor 81 ends the voxel update process shown in FIG. 55.
[0344] In step S30, the processor 81 sets the voxel update range so that it becomes the area where the path object and the above prohibited area overlap. The processor 81 updates the voxel update range data stored in the memory so as to include data indicating the set voxel update range.
[0345] In step S31, the processor 81 updates the voxels corresponding to the voxel update range set in step S30. Specifically, the processor 81 updates the density of the voxel to a value less than the reference value and updates the material of the voxel to a predetermined material. The processor 81 updates the voxel data stored in the memory so as to indicate the density and material after the update for the voxel. As a result, the mesh of the path object is deformed so that the path object has a shape that does not include the prohibited area inside by the processing of steps S5 to S8 executed thereafter. After step S31, the processor 81 ends the voxel update process shown in FIG. 55.
[0346] Next, a voxel update process (step S3 in FIG. 54) for executing the operation in the second example described in the above [2-8-2. Second example] will be described. FIG. 56 is a sub-flowchart showing an example of the detailed flow of the voxel update process in the second example. For example, when the object specified in step S2 above is the above-mentioned type of character in which a path object is generated when moving by a predetermined attack action by the player character, the voxel update process in the second example is executed.
[0347] In the voxel update process in the second example, first, in step S41, the processor 81 determines whether or not the enemy character, which is the object specified in step S2 above, is moving due to a predetermined attack action by the player character. If the determination result in step S41 is affirmative, the process of step S42 is executed. On the other hand, if the determination result in step S41 is negative, the process of step S44 is executed.
[0348] In step S42, the processor 81 determines whether or not the above-mentioned end condition is satisfied for the above enemy character. If the determination result in step S42 is affirmative, the process of step S44 is executed. On the other hand, if the determination result in step S42 is negative, the process of step S43 is executed.
[0349] In step S43, the processor 81 stores the current position of the enemy character in association with the current time. In the present embodiment, the current position is the position obtained by moving the position calculated in the previous frame processing according to the speed calculated in step S2. However, in other embodiments, the position calculated in the previous frame processing may be used as the current position. The processor 81 updates the position history data stored in the memory so as to include data indicating the current position and data capable of specifying the elapsed time since the start of the movement. The process of step S44 is executed next to step S43.
[0350] In step S44, the processor 81 determines whether there is a position among the positions of the enemy character indicated by the position history data stored in the memory for which the above-described waiting period has elapsed. For example, the determination in step S44 is made based on whether the position history data includes data indicating a position associated with an elapsed time that is equal to or longer than the waiting time for the enemy character. If the determination result in step S44 is affirmative, the process of step S45 is executed. On the other hand, if the determination result in step S44 is negative, the processor 81 ends the voxel update process shown in FIG. 56.
[0351] In step S45, when the processor 81 sets the position of the enemy character determined to have elapsed the waiting period in step S24 as the current position, the processor 81 determines whether the distance from the previous position to the current position is equal to or greater than a predetermined distance. If the determination result in step S45 is affirmative, the process of step S46 is executed. On the other hand, if the determination result in step S45 is negative, the processor 81 ends the voxel update process shown in FIG. 56.
[0352] In step S46, the processor 81 sets a voxel update range based on the position of the enemy character determined in step S24 that the waiting period has elapsed. The voxel update range is set by using the position of the enemy character as the current position according to the method described in the above [2-8-2. Second example]. The processor 81 updates the voxel update range data stored in the memory to include data indicating the set voxel update range. Note that in step S46, the processor 81 deletes the data indicating the position of the enemy character used for setting the voxel update range from the position history data stored in the memory. However, if the data indicating the position of the enemy character is used in subsequent processing (for example, when used as the data of the previous position), the processor 81 stores the data in the memory. The process of step S47 is executed after step S46.
[0353] In step S47, the processor 81 updates the voxels corresponding to the voxel update range set in step S46. Specifically, the processor 81 updates the density of the voxel to increase it to a value equal to or higher than the reference value, and updates the material of the voxel to be the material of the above-described path. The processor 81 updates the voxel data stored in the memory to indicate the density and material after the update for the voxel. As a result, the mesh of the path object is deformed so that the path object has a shape that internally includes the voxel update range by the processing of steps S5 to S8 executed thereafter. After step S47, the processor 81 ends the voxel update process shown in FIG. 56.
[0354] Next, a voxel update process (step S3 in FIG. 54) for executing the operation in the third example described in the above [2-8-3. Third example] will be described. FIG. 57 is a sub flowchart showing an example of the detailed flow of the voxel update process in the third example. For example, when the object specified in step S2 is a player object, the voxel update process in the third example is executed.
[0355] In the voxel update process in the third example, first in step S51, the processor 81 sets a voxel update range in front of the player object, which is the object specified in step S2. For example, the processor 81 updates the voxel update range data stored in the memory to include data indicating a spherical region centered at a position a predetermined distance in front of the player object. The process of step S52 is executed after step S51.
[0356] In step S52, the processor 81 updates the density of the voxels corresponding to the voxel update range set in step S51. Specifically, the processor 81 updates the voxel data stored in the memory so as to decrease the density of the voxel to a value less than the reference value. As a result, when a voxel mesh is arranged within the voxel update range, in the processes of steps S5 to S8 described later, the voxel mesh is deformed so that the portion of the voxel object within the voxel update range has a shape in which it is erased. In the third example, the voxel objects deformed by the process of step S52 are the soil object and the mud object, and it is assumed that the path object is not deformed by the process of step S52. For example, the processor 81 may update the density when the material set for the voxel corresponding to the voxel update range is a soil or mud material, and may not update the density when it is a path material. Also, for example, the voxel space for the path object may be set separately from the voxel spaces for the soil object and the mud object. The process of step S53 is executed after step S52.
[0357] In step S53, the processor 81 determines whether the player object is performing a generation action. If the determination result in step S53 is affirmative, the process of step S54 is executed. On the other hand, if the determination result in step S53 is negative, the process of step S55 is executed.
[0358] In step S54, the processor 81 stores the current position of the player object in association with the current time. For example, the current position is a position obtained by moving the position calculated in the process of the previous frame in the direction according to the operation input by the player by a distance corresponding to the movement speed set in step S2. However, in other embodiments, the position calculated in the process of the previous frame may be used as the current position. The processor 81 updates the position history data stored in the memory so as to include the data indicating the current position and the data capable of specifying the elapsed time since the start of the generation action. The process of step S55 is executed after step S54.
[0359] In step S55, the processor 81 determines whether there is a position of the player object indicated by the position history data stored in the memory for which the above-described waiting period has elapsed. For example, the determination in step S55 is made based on whether the data indicating the position associated with the elapsed time that is equal to or longer than the waiting time is included in the position history data. If the determination result in step S55 is affirmative, the process of step S56 is executed. On the other hand, if the determination result in step S55 is negative, the processor 81 ends the voxel update process shown in FIG. 57.
[0360] In step S56, the processor 81 sets a passing area extending from the position one frame before the position to the position based on the position of the player object determined in step S55 that the waiting period has elapsed. The process of step S57 is executed after step S56.
[0361] In step S57, the processor 81 determines whether the elapsed time associated with the position of the player object determined to have elapsed the waiting period in step S55 is within the above-described exclusion processing period since the generation action was started. If the determination result in step S57 is affirmative, the process of step S56 is executed. On the other hand, if the determination result in step S57 is negative, the process of step S59 is executed.
[0362] In step S58, the processor 81 changes the passage area so that an area above the slope set for the passage area among the passage areas set in step S56 is excluded. The slope is set by the method described in the above [2-8-3. Third example]. The process of step S59 is executed after step S58.
[0363] In step S59, the processor 81 sets a voxel update range based on the passage area. Here, the passage area used for setting the voxel update range is the passage area set in step S56 when the process of step S58 has not been executed, and is the passage area after being changed in step S58 when the process of step S58 has been executed. Specifically, the processor 81 updates the voxel update range data stored in the memory to include the data indicating the passage area. As a result, the voxel update range corresponding to the traveling surface portion of the path object is set. In step S59, the processor 81 deletes the data indicating the position of the player object used for setting the voxel update range from the position history data stored in the memory. However, if the data indicating the position of the player object is used in subsequent processing (for example, when used as the data of the previous position), the processor 81 stores the data in the memory. The process of step S60 is executed after step S59.
[0364] In step S60, the processor 81 determines whether to add a guide portion to the path object. The determination in step S60 is made, for example, based on whether a predetermined time has elapsed before the start of the generation action, or whether the current position of the player object is within a predetermined distance from the start position of the generation action. If the determination result in step S60 is affirmative, the process of step S61 is executed. On the other hand, if the determination result in step S60 is negative, the process of step S62 is executed.
[0365] In step S61, the processor 81 sets a voxel update range corresponding to the guide portion. The voxel update range set in step S61 may be a predetermined shape determined based on, for example, the distance from the start position of the generation action to the current position of the player object. The processor 81 updates the voxel update range data stored in the memory to include data indicating the set voxel update range. The process of step S62 is executed after step S61.
[0366] In step S62, the processor 81 updates the voxels corresponding to the voxel update ranges set in steps S59 and S61. Specifically, the processor 81 updates the density of the voxels to increase to a value equal to or greater than the reference value, and updates the material of the voxels to be the material of the path. The processor 81 updates the voxel data stored in the memory to indicate the density and material of the voxels after the update. As a result, the mesh of the path object is deformed so that the path object has a shape that includes the above voxel update range therein by the processes of steps S5 to S8 described later. After step S62, the processor 81 ends the voxel update process shown in FIG. 57.
[0367] In the processing examples shown in FIGS. 55 to 57, in the frame in which the moving object moves, the current position of the moving object at that time is stored (steps S23, S43, S54). After the standby period has elapsed, in the frame, based on the stored position, the setting of the voxel update range (steps S25, S46, S59) and the update of the voxel (steps S28, S47, S62) are performed. Here, the processing for updating the path object after the standby period has elapsed is not limited to the above. For example, in another embodiment, the processor 81 sets and stores a voxel update range based on the position of the moving object at that time in the frame in which the moving object moves, and in the frame after the standby period has elapsed, updates the voxel based on the stored voxel update range. Also, in the first example, the processor 81 sets and stores a passing area based on the position of the moving object at that time in the frame in which the moving object moves, and in the frame after the standby period has elapsed, sets the voxel update range and updates the voxel based on the stored passing area.
[0368] Next, the voxel update process (step S3 in FIG. 54) for executing the operation in the fourth example described in the above [2-8-4. Fourth example] will be described. FIG. 58 is a sub flowchart showing an example of the detailed flow of the voxel update process in the fourth example. For example, when the object specified in step S2 above is the above-mentioned fruit object of the tree, the voxel update process in the fourth example is executed.
[0369] In the voxel update process in the fourth example, first, in step S71, the processor 81 determines whether the fruit object of the tree, which is the object specified in step S2 above, is moving due to a throwing action by the player character. If the determination result in step S71 is affirmative, the process of step S72 is executed. On the other hand, if the determination result in step S71 is negative, the process of step S73 is executed.
[0370] In step S72, the processor 81 stores in the memory the position of the current tree fruit object as the starting position. The process of step S73 is executed after step S72.
[0371] In step S73, the processor 81 determines whether the tree fruit object has collided with another object. If the determination result in step S73 is affirmative, the process of step S74 is executed. On the other hand, if the determination result in step S73 is negative, the process of step S76 is executed.
[0372] In step S74, the processor 81 stores in the memory the position of the current tree fruit object as the ending position. The process of step S75 is executed after step S74.
[0373] In step S75, the processor 81 sets the path of the path object based on the starting position stored in step S72 and the ending position stored in step S74. The above path is determined according to the method described in the above [2-8-4. Fourth example]. The process of step S76 is executed after step S75.
[0374] In step S76, the processor 81 determines whether to set a path object. The determination in step S76 is made, for example, by whether a path object is set up to the starting position of the path set in step S75 (more specifically, whether a path object including the starting position inside is set). If the determination result in step S76 is affirmative, the process of step S77 is executed. On the other hand, if the determination result in step S76 is negative, the processor 81 ends the voxel update process shown in FIG. 58.
[0375] In step S77, the processor 81 sets a voxel update range based on the path set in step S75. Specifically, the processor 81 sets a voxel update range including the previous position and the current position set on the path according to the method described in the above [2-8-4. Fourth example] (see FIG. 52). The processor 81 updates the voxel update range data stored in the memory to include data indicating the set voxel update range. The process of step S78 is executed after step S77.
[0376] In step S78, the processor 81 updates the voxels corresponding to the voxel update range set in step S77. Specifically, the processor 81 updates the density of the voxels to increase to a value equal to or greater than the reference value, and updates the material of the voxels to a predetermined material. The processor 81 updates the voxel data stored in the memory to indicate the density and material after the update for the voxels. As a result, by the processes of steps S5 to S8 described later, the mesh of the path object is deformed so that the path object includes the voxel update range inside. After step S78, the processor 81 ends the voxel update process shown in FIG. 58.
[0377] [4. Operational Effects and Modification Examples of the Present Embodiment] In the above embodiments (for example, the first example to the fourth example), by continuously setting a voxel update range along a path corresponding to an arrangement event and increasing the density of the voxels corresponding to the voxel update range, a path object that a player character can move along can be set. According to this, it is possible to provide a new game in which a path object is dynamically set in the game space.
[0378] Note that continuously setting the voxel update range is not limited to the mode of setting the voxel update range for each frame. It includes a mode in which the voxel update range is set under certain conditions over a plurality of frames, and the voxel update range is not set for frames in which the conditions are not satisfied during that period (for example, the second example).
[0379] As shown in the first to fourth examples above, the path object may have a three-dimensional shape with at least a flat surface on the upper surface. This makes it easier for a player character or the like to move on the path object. Note that in other embodiments, the shape of the path object is arbitrary, and the path object may have a shape without the above flat surface portion.
[0380] In the above embodiments, as a process for setting a voxel object based on the movement path of an object, the processes of the first to fourth examples above have been described as being executed in one game. Here, in other embodiments, at least one of the processes of the first to fourth examples may be executed in a game.
[0381] Also, in any one of the first to fourth examples, the methods described in other examples may be used, and the processes described in other examples may be executed. For example, in any one of the first to fourth examples, the method for setting the voxel update range described in other examples may be used. Also, for example, in any one of the first to fourth examples, the shape of the path object may be the shape of the path object described in other examples. Also, for example, in the second to fourth examples, the prohibited regions in the first example (for example, the prohibited region 315 shown in FIG. 34 and the prohibited region 325 shown in FIG. 35) may be set. Also, for example, in the first, third, and fourth examples, the game system 1 may arrange the item object in the second example on the path object. Also, for example, in the first to third examples, the game system 1 may start setting the path object after determining the path based on the position of the moving object as in the fourth example.
[0382] In addition, in the above embodiment, when processing is executed using data (in the sense including programs) in a certain information processing apparatus, a part of the data necessary for the processing may be transmitted from another information processing apparatus different from the certain information processing apparatus. At this time, the certain information processing apparatus may execute the above processing using the data received from another information processing apparatus and the data stored in itself.
[0383] In addition, in other embodiments, the information processing system may not include a part of the configuration in the above embodiment, or may not execute a part of the processing executed in the above embodiment. For example, in order for the information processing system to obtain some specific results in the above embodiment, it may be provided with a configuration for obtaining the results and execute the processing for obtaining the results, and may not be provided with other configurations or execute other processing.
Industrial Applicability
[0384] The above embodiment can be used, for example, as a game system or a game program for the purpose of providing a novel game using voxel data.
Explanation of Signs
[0385] 1 Game system 2 Main body device 81 Processor 201 Player character 302 Fragment object 304, 323, 332, 376, 383 Route object 313, 343 - 345, 365, 369, 373, 395 Voxel update range 331 Enemy character 351 Player object 381 Fruit object
Claims
1. Cause a computer to update, based on game processing, voxel data defined in a virtual space, the voxel data having at least a density set for each of a plurality of voxels indicating the degree to which the space defined by the voxel is virtually occupied by content, update a voxel mesh that is a mesh corresponding to the voxel data, the vertex coordinates of the voxel mesh being determined based on at least the density included in the voxel data, In the game processing, when a player object in the virtual space is on the voxel mesh, control the movement of the player object based on an operation input at a position on the voxel mesh, When a first event occurs, continuously set a first voxel update range in the virtual space along a path corresponding to the first event, and increase the density of voxels corresponding to the first voxel update range, a game program.
2. The first event is an event in which a predetermined object moves in the virtual space, and Cause the computer to set the first voxel update range at a plurality of positions through which the predetermined object has passed in the virtual space when the first event occurs, the game program according to claim 1.
3. The predetermined object is an enemy object in the game, and The first event is an event in which the enemy object moves in response to a first action, which is an attack action of the player object performed based on an operation input, hitting the enemy object, the game program according to claim 2.
4. The first event is an event in which, within a predetermined range in the virtual space, a second action of releasing the predetermined object to the player object performed based on an operation input is performed to move the predetermined object, the game program according to claim 2.
5. The predetermined object is the player object, and The first event is an event in which the player object performs at least a third action of moving based on an operation input, the game program according to claim 2.
6. Cause the computer to The game program according to claim 1, wherein when the first event occurs, the first voxel update range is set along a first path from a first position to a second position in the virtual space.
7. Either the first position or the second position is the position of the player object, The game program according to claim 6, wherein the first voxel update range is set in an arrangement where the upper surface is located at the height of the lower end of the player object at the position of the player object.
8. The first event is that a predetermined object released by a fourth action of the player object based on an operation input collides with the voxel mesh, and either the first position or the second position is the collision position of the object. The game program according to claim 7.
9. The game program according to claim 8, wherein the path has a shape of a curve or a broken line having a gentler slope than the slope of the straight line connecting the first position and the second position at the first position and the second position.
10. The voxel data includes at least first voxel data and second voxel data defined in a first voxel space and a second voxel space that at least partially overlap in the virtual space, to the computer, Based on the first event, increase the density of the voxels corresponding to the first voxel update range in the first voxel data, When a second event occurs, set a second voxel update range, and increase or decrease the density of the voxels corresponding to the second voxel update range in the second voxel data. The game program according to any one of claims 1 to 9.
11. Further to the computer, Move or rotate the first voxel space defined in the virtual space, Update the voxel mesh corresponding to the first voxel data. The game program according to claim 10.
12. Further to the computer, in the game process, Reduce the density of the voxels included in the first voxel data according to a third event. The game program according to claim 10.
13. to the computer, The game program according to any one of claims 1 to 9, which causes the first voxel update range to be set after a predetermined period has elapsed when the first event occurs.
14. The computer is caused to set the first voxel update range in a range excluding a predetermined range including the position of the player object when the first event occurs, the game program according to any one of claims 1 to 9.
15. The computer is caused to set the first voxel update range at a position where at least a part of the side of the upper surface coincides with the previously generated first voxel update range, the game program according to any one of claims 1 to 9.
16. Voxel data defined in a virtual space, wherein for each of a plurality of voxels, voxel data in which at least a density indicating the degree to which the space defined by the voxel is virtually occupied by the content is set is updated based on game processing, a mesh corresponding to the voxel data, and a voxel mesh in which vertex coordinates are determined based on at least the density included in the voxel data is updated, In the game processing, when the player object in the virtual space is on the voxel mesh, the player object is moved and controlled based on an operation input at the position on the voxel mesh, An information processing system that, when a first event occurs, continuously sets a first voxel update range in the virtual space along a path corresponding to the first event, and increases the density of the voxels corresponding to the first voxel update range.
17. The first event is an event in which a predetermined object moves in the virtual space, The information processing system according to claim 16, wherein when the first event occurs, the first voxel update range is set at a plurality of positions through which the predetermined object has passed in the virtual space.
18. The predetermined object is an enemy object in the game, The information processing system according to claim 17, wherein the first event is an event in which the enemy object moves in response to a first action, which is an attack action of the player object performed based on an operation input, hitting the enemy object.
19. The information processing system according to claim 17, wherein the first event is an event of causing the player object to perform a second action of releasing the predetermined object within a predetermined range in the virtual space based on an operation input, and moving the predetermined object.
20. The predetermined object is the player object, The information processing system according to claim 17, wherein the first event is an event of causing the player object to perform at least a third action of moving based on an operation input.
21. The information processing system according to claim 16, wherein when the first event occurs, a first voxel update range is set along a first path from a first position to a second position in the virtual space.
22. Either the first position or the second position is the position of the player object, The information processing system according to claim 21, wherein the first voxel update range is set in an arrangement where the upper surface is located at the height of the lower end of the player object at the position of the player object.
23. The information processing system according to claim 22, wherein the first event is that a predetermined object released by a fourth action of the player object based on an operation input collides with a voxel mesh, and either the first position or the second position is the collision position of the object.
24. The information processing system according to claim 23, wherein the path has a shape of a curve or a broken line having a gentler slope than the slope of a straight line connecting the first position and the second position at the first position and the second position.
25. The voxel data includes at least first voxel data and second voxel data defined in a first voxel space and a second voxel space that at least partially overlap in the virtual space, Based on the first event, increasing the density of the voxels corresponding to the first voxel update range in the first voxel data, The information processing system according to any one of claims 16 to 24, wherein when a second event occurs, a second voxel update range is set, and the density of the voxels corresponding to the second voxel update range in the second voxel data is increased or decreased.
26. Moving or rotating the first voxel space defined within the virtual space, Updating the voxel mesh corresponding to the first voxel data, the information processing system according to claim 25.
27. In the game processing, further, Reducing the density of the voxels included in the first voxel data in response to a third event, the information processing system according to claim 25.
28. When the first event occurs, setting the first voxel update range from after a predetermined period has elapsed, the information processing system according to any one of claims 16 to 24.
29. When the first event occurs, setting the first voxel update range to a range excluding a predetermined range including the position of the player object, the information processing system according to any one of claims 16 to 24.
30. Setting the first voxel update range to a position where at least a part of the side of the upper surface coincides with the previously generated first voxel update range, the information processing system according to any one of claims 16 to 24.
31. Voxel data defined within a virtual space, for each of a plurality of voxels, updating voxel data in which at least a density indicating the degree to which the space defined by the voxel is virtually occupied by content is set based on game processing, Updating a voxel mesh that is a mesh corresponding to the voxel data, wherein vertex coordinates are determined based on at least the density included in the voxel data, In the game processing, When the player object within the virtual space is on the voxel mesh, controlling the movement based on an operation input at the position on the voxel mesh, When a first event occurs, continuously setting a first voxel update range within the virtual space along a path corresponding to the first event, and increasing the density of the voxels corresponding to the first voxel update range, an information processing apparatus.
32. In an information processing system, Voxel data defined within a virtual space, for each of a plurality of voxels, updating voxel data in which at least a density indicating the degree to which the space defined by the voxel is virtually occupied by content is set based on game processing, Update a voxel mesh that corresponds to the voxel data and whose vertex coordinates are determined based at least on the density included in the voxel data. In the game processing, When the player object in the virtual space is on the voxel mesh, control its movement based on an operation input at the position on the voxel mesh. A game processing method, comprising: when a first event occurs, continuously setting a first voxel update range in the virtual space along a path corresponding to the first event, and increasing the density of voxels corresponding to the first voxel update range.
33. The first event is an event in which a predetermined object moves in the virtual space, and In the information processing system, The game processing method according to claim 32, wherein when the first event occurs, the first voxel update range is set at a plurality of positions through which the predetermined object has passed in the virtual space.
34. The predetermined object is an enemy object in the game, and The game processing method according to claim 33, wherein the first event is an event in which the enemy object moves in response to a first action of an attack action of the player object performed based on an operation input hitting the enemy object.
35. The game processing method according to claim 33, wherein the first event is an event in which a second action of releasing the predetermined object to the player object performed based on an operation input within a predetermined range in the virtual space causes the predetermined object to move.
36. The predetermined object is the player object, and The game processing method according to claim 33, wherein the first event is an event in which the player object performs at least a third action of moving based on an operation input.
37. In the information processing system, The game processing method according to claim 32, wherein when the first event occurs, the first voxel update range is set along a first path from a first position to a second position in the virtual space.
38. Either the first position or the second position is the position of the player object, and The game processing method according to claim 37, wherein the first voxel update range is set such that, at the position of the player object, the upper surface is positioned at the height of the lower end of the player object.
39. The first event is that a predetermined object released by a fourth action of the player object based on an operation input collides with the voxel mesh, and either the first position or the second position is the collision position of the object. The game processing method according to claim 38.
40. The path has a shape of a curve or a broken line having a gentler slope than the slope of the straight line connecting the first position and the second position at the first position and the second position. The game processing method according to claim 39.
41. The voxel data includes at least first voxel data and second voxel data defined in a first voxel space and a second voxel space that at least partially overlap within the virtual space. In the information processing system, Based on the first event, increase the density of the voxels corresponding to the first voxel update range in the first voxel data. When a second event occurs, set a second voxel update range, and increase or decrease the density of the voxels corresponding to the second voxel update range in the second voxel data. The game processing method according to any one of claims 32 to 40.
42. Further in the information processing system, Move or rotate the first voxel space defined within the virtual space. Update the voxel mesh corresponding to the first voxel data. The game processing method according to claim 41.
43. Further in the information processing system, in the game processing, Reduce the density of the voxels included in the first voxel data in response to a third event. The game processing method according to claim 41.
44. In the information processing system, When the first event occurs, set the first voxel update range after a predetermined period has elapsed. The game processing method according to any one of claims 32 to 40.
45. In the information processing system, The game processing method according to any one of claims 32 to 40, wherein when the first event occurs, the first voxel update range is set in a range excluding a predetermined range including the position of the player object.
46. In the information processing system, The game processing method according to any one of claims 32 to 40, wherein the first voxel update range is set at a position where at least a part of the side of the upper surface coincides with the previously generated first voxel update range.
Citation Information
Patent Citations
Program, recording medium, game character drawing method and game machine
JP2004062666A
Method and system for generating polygon meshes approximating surfaces using root-finding and iteration for mesh vertex positions
JP2023178274A
Generating surface meshes from voxel models of 3D environments.
JP2024521128A