Information processing program, information processing system, information processing device, and information processing method
The information processing program addresses the inefficiency of large motion data requirements by employing mesh generation and voxel data updates to achieve natural object movements with reduced data usage.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- NINTENDO CO LTD
- Filing Date
- 2024-01-30
- Publication Date
- 2026-05-12
AI Technical Summary
Conventional techniques for controlling object motion in virtual spaces require a large amount of motion data, leading to inefficiencies.
An information processing program that utilizes mesh generation, motion control, and voxel data update mechanisms to generate and control character objects in virtual spaces, reducing the amount of motion data needed by using the same data for both tilted and untitled states, and incorporating center of gravity calculations to achieve natural movements.
Enables natural object movements with a reduced amount of motion data, enhancing the realism and efficiency of virtual object control.
Smart Images

Figure 0007857324000001 
Figure 0007857324000002 
Figure 0007857324000003
Abstract
Description
Technical Field
[0001] The present invention relates to an information processing program, an information processing system, an information processing apparatus, and an information processing method for controlling the operation of an object generated using voxel data.
Background Art
[0002] Conventionally, there is a technique for controlling the operation of an object using different motion data according to the divided state when a part of an object arranged in a virtual space is divided (see, for example, paragraphs 0125-0130 of Patent Document 1).
Prior Art Documents
Patent Documents
[0003]
Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0004] In the above technique, since motion data is prepared for each divided state of the object, there is a possibility that the amount of motion data to be prepared increases.
[0005] Therefore, an object of the present invention is to provide an information processing program, an information processing system, an information processing apparatus, and an information processing method capable of causing an object to perform a natural operation with a small amount of motion data.
Means for Solving the Problems
[0006] In order to solve the above problems, the present invention employs the following configurations (1) to (16).
[0007] (1) An example of the present invention is an information processing program executed in a computer of an information processing device. The information processing program causes the computer to function as a mesh generation means, a motion control means, a voxel data update means, and an image generation means. The mesh generation means generates a mesh of a character object in a virtual space based on voxel data relating to the character object. The motion control means controls the movement of the character object using first motion data. The voxel data update means updates the voxel data relating to the character object when an event occurs with respect to the character object. The image generation means generates an image of the virtual space, including an image of the mesh of the character object drawn on it, for output to a display device. When the voxel data is updated, the mesh generation means generates a mesh of the character object based on the updated voxel data. When an event occurs, the motion control means controls the movement of the character object using first motion data while changing the inclination of at least a part of the character object relative to the virtual space.
[0008] According to the configuration described in (1) above, the character object can be made to move naturally by controlling its movement while changing its tilt. Furthermore, by using the same motion data for both the state with and without tilt, the amount of motion data can be reduced. Therefore, according to the configuration described in (1) above, the character object can move naturally with less motion data.
[0009] (2) The information processing program may further utilize a computer as a center of gravity calculation means. When voxel data is updated, the center of gravity calculation means calculates the center of gravity of the character object with respect to at least the portion of the character object that includes the part generated by the updated voxel data, based on the updated voxel data. The motion control means determines the direction in which to change the tilt of at least a portion of the character object based on the change in the center of gravity before and after the event occurs.
[0010] According to the configuration described in (2) above, the character object can be made to move with a natural tilt in response to changes in the center of gravity.
[0011] (3) When a straight line passing through at least a portion of the character object and parallel to the direction of gravity in the virtual space is used as the reference axis, the motion control means may change the tilt of the character object so that, when an event occurs, it rotates at least a portion of the character object around a reference position set on the character object so that the portion on the side where the center of gravity of the character object after the voxel data update exists approaches the direction of gravity relative to the reference axis.
[0012] According to the configuration described in (3) above, the character object can be made to have a natural tilt.
[0013] (4) When a straight line passing through at least a portion of the character object and parallel to the direction of gravity in the virtual space is used as the reference axis, the motion control means may change the tilt of the character object so that, when an event occurs, it rotates at least a portion of the character object around a reference position set on the character object so that the center of gravity of the character object after the voxel data update approaches the reference axis.
[0014] According to the configuration described in (4) above, the character object can be made to have a natural tilt.
[0015] (5) The reference axis may be a straight line that passes through a position different from the reference position and is parallel to the direction of gravity in the virtual space.
[0016] According to the configuration described in (5) above, even if the reference axis passes through an off-center position of the character object, the reference position can be set so that the tilting motion of the character object is natural.
[0017] (6) The reference axis may be a straight line that passes through the centroid of the character object before the voxel data is updated and is parallel to the direction of gravity in the virtual space.
[0018] According to the configuration described in (6) above, the tilting motion of the character object can be made more natural.
[0019] (7) A character object may have a portion associated with bones set on the character object. Motion control means may cause the character object to perform actions by moving the bones according to first motion data.
[0020] According to the configuration described in (7) above, character objects can be made to move freely by using bones and motion data.
[0021] (8) A character object may have a first part whose shape is defined based on voxel data, and a second part which is different from the first part and is associated with bones. When an event occurs, motion control means may change the inclination of at least a part of the character object, specifically the first part and a part of the second part.
[0022] According to the configuration of (8) above, the posture when the character object is tilted can be made more natural.
[0023] (9) The reference position may be the position of the joint at the waist of the character object among the joints connecting the bones.
[0024] According to the configuration of (9) above, the movement when the character object tilts can be made natural.
[0025] (10) The first motion data may indicate the walking motion of the character object.
[0026] According to the configuration of (10) above, a natural walking motion can be made for the character object.
[0027] (11) The motion control means may set an upper limit on the angle at which the character object is tilted.
[0028] According to the configuration of (11) above, the possibility that the motion of the character object becomes unnatural due to excessive tilt can be reduced.
[0029] (12) When an event occurs, the voxel data update means may update the voxel data so as to reduce the volume of the character object.
[0030] According to the configuration of (12) above, when the volume of the character object decreases, the character object can be made to perform an operation in a state of natural tilt.
[0031] (13) When an event occurs, the voxel data update means may update the voxel data so as to increase the volume of the character object.
[0032] According to the configuration described in (13) above, the character object can be made to perform actions in a way that results in a natural tilt when the volume of the character object increases.
[0033] (14) The motion control means may further control the movement of the character object using second motion data that is different from the first motion data. When an event occurs, the motion control means may set the tilt of the character object when controlling its movement using the first motion data to a different value from the tilt of the character object when controlling its movement using the second motion data.
[0034] According to the configuration described in (14) above, the possibility of unnatural behavior occurring due to the tilting of the character object in relation to a specific action can be reduced.
[0035] (15) The motion control means may, when an event occurs, control the movement of the character object using second motion data, while keeping the tilt of the character object the same as before the event occurred.
[0036] According to the configuration described in (15) above, the possibility of unnatural attack movements occurring due to the tilting of the character object can be reduced.
[0037] (16) A character object is an enemy character object, and may have a core inside a voxel object portion whose shape is defined based on voxel data. An event may be when the enemy character object is attacked. The information processing program may also enable the computer to function as a character elimination means, which eliminates all enemy character objects if the core is under attack.
[0038] According to the configuration described in (16) above, strategic thinking can be added to the approach to defeating enemy character objects, thereby improving the enjoyment of the game.
[0039] Another example of the present invention is an information processing device (for example, a terminal device or server) or information processing system that includes all or part of the means described in (1) to (16) above. Another example of the present invention is an information processing method (specifically, a game processing method) in which the information processing system performs each of the processes described in (1) to (16) above. [Effects of the Invention]
[0040] According to the above-described information processing program, information processing system, information processing device, and information processing method, an object can be made to perform natural movements with a small amount of motion data. [Brief explanation of the drawing]
[0041] [Figure 1] This diagram shows an example of the main unit with the left and right controllers attached. [Figure 2] This diagram shows an example of the left and right controllers being removed from the main unit. [Figure 3] A six-view drawing showing an example of the main unit. [Figure 4] A six-view drawing showing an example of a left controller. [Figure 5] A six-view drawing showing an example of a right controller. [Figure 6] Block diagram showing an example of the internal configuration of the main unit. [Figure 7] Block diagram showing an example of the internal configuration of the main unit, left controller, and right controller. [Figure 8] This diagram shows an example of a terrain object that is a voxel object. [Figure 9] Figure 8 shows an example of what the terrain object looks like before and after a portion of it is deleted. [Figure 10]Figure 8 shows an example of what the terrain object looks like before and after a portion of it is deleted. [Figure 11] A diagram showing an example of the contents of voxel data. [Figure 12] A diagram showing an example of property information that indicates the properties of a material. [Figure 13] A diagram showing an example of texture information that indicates the texture of a material. [Figure 14] A diagram showing an example of a mesh generation method. [Figure 15] A diagram showing an example of a game image that includes terrain objects. [Figure 16] A diagram showing an example of a primary voxel object and a secondary voxel object. [Figure 17] A diagram showing an example of an enemy character. [Figure 18] Figure 17 shows an example of the configuration of enemy characters. [Figure 19] Figure 17 shows an example of a state where part of the voxel portion of the enemy character has been erased. [Figure 20] A diagram showing an example of an enemy character in a tilted position. [Figure 21] Figure 17 shows an example of a state where the volume of the voxel portion of the enemy character has been increased. [Figure 22] This diagram shows an example of the state of an enemy character before and after a change that tilts the voxel portion. [Figure 23] This diagram shows another example of the state of an enemy character before and after a change that tilts the voxel portion. [Figure 24] This figure shows an example of the state before and after the change in tilting the voxel portion of the enemy character in a modified version of this embodiment. [Figure 25] This diagram shows an example of an enemy character performing walking and attacking actions. [Figure 26] This diagram shows an example of various types of data used in information processing within a game system. [Figure 27] A flowchart illustrating an example of the game processing flow executed by the game system. [Figure 28]Figure 27 shows a subflowchart illustrating an example of a detailed flow of enemy character processing in step S7. [Modes for carrying out the invention]
[0042] [1. Game System Configuration] The following describes a game system according to an example of this embodiment. An example of the game system 1 in this embodiment includes a main unit (information processing device; functioning as the game device main unit in this embodiment) 2, a left controller 3, and a right controller 4. The left controller 3 and the right controller 4 are detachable from the main unit 2. In other words, the game system 1 can be used as an integrated device by attaching the left controller 3 and the right controller 4 to the main unit 2. Alternatively, the game system 1 can be used with the main unit 2 and the left controller 3 and right controller 4 as separate components (see Figure 2). The hardware configuration of the game system 1 in this embodiment will be described below, followed by a description of the control of the game system 1 in this embodiment.
[0043] Figure 1 shows an example of the main unit 2 with the left controller 3 and right controller 4 attached. As shown in Figure 1, the left controller 3 and right controller 4 are attached to the main unit 2 and integrated together. The main unit 2 is a device that performs various processes (e.g., game processing) in the game system 1. The main unit 2 is equipped with a display 12. The left controller 3 and right controller 4 are devices equipped with operation parts for user input.
[0044] Figure 2 shows an example of the left controller 3 and right controller 4 being removed from the main unit 2. As shown in Figures 1 and 2, the left controller 3 and right controller 4 are detachable from the main unit 2. In the following, the left controller 3 and right controller 4 will be collectively referred to as "controllers".
[0045] Figure 3 is a six-view drawing showing an example of the main unit 2. As shown in Figure 3, the main unit 2 includes a roughly plate-shaped housing 11. In this embodiment, the main surface of the housing 11 (in other words, the front surface, i.e., the surface on which the display 12 is provided) is roughly rectangular in shape.
[0046] The shape and size of the housing 11 are arbitrary. For example, the housing 11 may be portable. The main unit 2 alone, or the integrated unit in which the left controller 3 and right controller 4 are attached to the main unit 2, may be a portable device. The main unit 2 or the integrated unit may be a handheld device. The main unit 2 or the integrated unit may also be a portable device.
[0047] As shown in Figure 3, the main unit 2 includes a display 12 provided on the main surface of the housing 11. The display 12 displays images generated by the main unit 2. In this embodiment, the display 12 is a liquid crystal display (LCD). However, the display 12 may be any type of display device.
[0048] Furthermore, the main unit 2 is equipped with a touch panel 13 on the screen of the display 12. In this embodiment, the touch panel 13 is of a type that allows multi-touch input (for example, a capacitive touch panel). However, the touch panel 13 may be of any type, for example, a type that allows single-touch input (for example, a resistive touch panel).
[0049] The main unit 2 is equipped with a speaker (i.e., speaker 88 shown in Figure 6) inside the housing 11. As shown in Figure 3, speaker holes 11a and 11b are formed on the main surface of the housing 11. The sound output from speaker 88 is emitted from these speaker holes 11a and 11b, respectively.
[0050] Furthermore, the main unit 2 is equipped with a left terminal 17, which is a terminal for the main unit 2 to communicate with the left controller 3 via wired connection, and a right terminal 21, which is for the main unit 2 to communicate with the right controller 4 via wired connection.
[0051] As shown in Figure 3, the main unit 2 is equipped with a slot 23. The slot 23 is located on the upper side of the housing 11. The slot 23 has a shape that allows a predetermined type of storage medium to be inserted. The predetermined type of storage medium is, for example, a storage medium (e.g., a dedicated memory card) specifically for the game system 1 and similar information processing devices. The predetermined type of storage medium is used, for example, to store data used by the main unit 2 (e.g., application save data, etc.) and / or programs executed by the main unit 2 (e.g., application programs, etc.). The main unit 2 is also equipped with a power button 28.
[0052] The main unit 2 is equipped with a lower terminal 27. The lower terminal 27 is a terminal for the main unit 2 to communicate with the cradle. In this embodiment, the lower terminal 27 is a USB connector (more specifically, a female connector). When the integrated device or the main unit 2 alone is placed on the cradle, the game system 1 can display the images generated and output by the main unit 2 on a stationary monitor. In this embodiment, the cradle also has the function of charging the integrated device or the main unit 2 alone that is placed on it. The cradle also has the function of a hub device (specifically, a USB hub).
[0053] Figure 4 is a six-view drawing showing an example of the left controller 3. As shown in Figure 4, the left controller 3 includes a housing 31. In this embodiment, the housing 31 has a vertically elongated shape, that is, it is long in the vertical direction (i.e., in the y-axis direction as shown in Figures 1 and 4). The left controller 3 can also be held in a vertically elongated orientation when detached from the main device 2. The housing 31 is shaped and sized to be held with one hand, especially the left hand, when held in a vertically elongated orientation. The left controller 3 can also be held in a horizontally elongated orientation. When the left controller 3 is held in a horizontally elongated orientation, it may be held with both hands.
[0054] The left controller 3 is equipped with an analog stick 32. As shown in Figure 4, the analog stick 32 is provided on the main surface of the housing 31. The analog stick 32 can be used as a directional input unit that can input direction. The user can input direction (and magnitude according to the angle of tilt) by tilting the analog stick 32. In addition, the left controller 3 may be equipped with a directional pad or a slide stick that allows slide input instead of the analog stick as the directional input unit. Furthermore, in this embodiment, input by pressing the analog stick 32 is also possible.
[0055] The left controller 3 is equipped with various operation buttons. The left controller 3 has four operation buttons 33-36 (specifically, a right direction button 33, a down direction button 34, an up direction button 35, and a left direction button 36) on the main surface of the housing 31. In addition, the left controller 3 is equipped with a record button 37 and a minus button 47. The left controller 3 has a first L button 38 and a ZL button 39 on the upper left side of the side of the housing 31. Furthermore, the left controller 3 has a second L button 43 and a second R button 44 on the side of the housing 31 that is attached when mounted to the main unit 2. These operation buttons are used to give instructions according to various programs (e.g., OS programs and application programs) executed on the main unit 2.
[0056] Furthermore, the left controller 3 is equipped with a terminal 42 for wired communication between the left controller 3 and the main unit 2.
[0057] Figure 5 is a six-view drawing showing an example of the right controller 4. As shown in Figure 5, the right controller 4 includes a housing 51. In this embodiment, the housing 51 has a vertically elongated shape, that is, a shape that is long in the vertical direction. When the right controller 4 is detached from the main unit 2, it can also be held in a vertically elongated orientation. The housing 51 is shaped and sized to be held with one hand, especially the right hand, when held in a vertically elongated orientation. The right controller 4 can also be held in a horizontally elongated orientation. When the right controller 4 is held in a horizontally elongated orientation, it may be held with both hands.
[0058] The right controller 4, like the left controller 3, is equipped with an analog stick 52 as a directional input unit. In this embodiment, the analog stick 52 has the same configuration as the analog stick 32 of the left controller 3. Alternatively, the right controller 4 may be equipped with a directional pad or a slide stick capable of slide input instead of the analog stick. The right controller 4, like the left controller 3, is equipped with four operation buttons 53-56 (specifically, A button 53, B button 54, X button 55, and Y button 56) on the main surface of the housing 51. Furthermore, the right controller 4 is equipped with a + (plus) button 57 and a home button 58. The right controller 4 is also equipped with a first R button 60 and a ZR button 61 on the upper right side of the housing 51. The right controller 4, like the left controller 3, is also equipped with a second L button 65 and a second R button 66.
[0059] Furthermore, the right controller 4 is equipped with a terminal 64 for wired communication between the right controller 4 and the main unit 2.
[0060] Figure 6 is a block diagram showing an example of the internal configuration of the main unit 2. In addition to the configuration shown in Figure 3, the main unit 2 includes the components 81-91, 97, and 98 shown in Figure 6. Some of these components 81-91, 97, and 98 may be mounted on an electronic circuit board as electronic components and housed within the housing 11.
[0061] The main unit 2 includes a processor 81. The processor 81 is an information processing unit that performs various information processing operations performed in the main unit 2, and may consist of, for example, only a CPU (Central Processing Unit), or it may consist of an SoC (System-on-a-chip) that includes multiple functions such as CPU function and GPU (Graphics Processing Unit) function. The processor 81 performs various information processing operations by executing information processing programs (for example, game programs) stored in a storage unit (specifically, an internal storage medium such as flash memory 84, or an external storage medium installed in slot 23).
[0062] The main unit 2 includes, as an example of an internal storage medium built into itself, a flash memory 84 and a DRAM (Dynamic Random Access Memory) 85. The flash memory 84 and DRAM 85 are connected to the processor 81. The flash memory 84 is a memory mainly used to store various types of data (which may be programs) stored in the main unit 2. The DRAM 85 is a memory used to temporarily store various types of data used in information processing.
[0063] The main unit 2 is equipped with a slot interface (hereinafter abbreviated as "I / F") 91. The slot I / F 91 is connected to the processor 81. The slot I / F 91 is connected to slot 23 and reads and writes data to a predetermined type of storage medium (for example, a dedicated memory card) installed in slot 23, according to instructions from the processor 81.
[0064] The processor 81 performs the above-mentioned information processing by appropriately reading and writing data to and from the flash memory 84 and DRAM 85, as well as to each of the above-mentioned storage media.
[0065] The main unit 2 includes a network communication unit 82. The network communication unit 82 is connected to the processor 81. The network communication unit 82 communicates with external devices via a network (specifically, wirelessly). In this embodiment, the network communication unit 82 communicates with external devices by connecting to a wireless LAN using a method compliant with the Wi-Fi standard as a first communication mode. The network communication unit 82 also performs wireless communication with other main unit 2 of the same type using a predetermined communication method (for example, communication using a proprietary protocol or infrared communication) as a second communication mode. The wireless communication using the second communication mode is possible with other main unit 2 located within a closed local network area, and realizes a function that enables so-called "local communication" in which data is sent and received by communicating directly between multiple main unit 2.
[0066] The main unit 2 includes a controller communication unit 83. The controller communication unit 83 is connected to the processor 81. The controller communication unit 83 communicates wirelessly with the left controller 3 and / or the right controller 4. The communication method between the main unit 2 and the left controller 3 and the right controller 4 is arbitrary, but in this embodiment, the controller communication unit 83 communicates with the left controller 3 and with the right controller 4 in accordance with the Bluetooth® standard.
[0067] The processor 81 is connected to the left terminal 17, right terminal 21, and lower terminal 27 described above. When the processor 81 communicates with the left controller 3 via a wired connection, it transmits data to the left controller 3 via the left terminal 17 and receives operation data from the left controller 3 via the left terminal 17. When the processor 81 communicates with the right controller 4 via a wired connection, it transmits data to the right controller 4 via the right terminal 21 and receives operation data from the right controller 4 via the right terminal 21. When the processor 81 communicates with the cradle, it transmits data to the cradle via the lower terminal 27. Thus, in this embodiment, the main unit 2 can perform both wired and wireless communication with the left controller 3 and the right controller 4, respectively. Furthermore, when the left controller 3 and the right controller 4 are mounted on the main unit 2 as an integrated unit, or when the main unit 2 alone is mounted on the cradle, the main unit 2 can output data (e.g., image data and audio data) to a stationary monitor or the like via the cradle.
[0068] Here, the main unit 2 can communicate simultaneously (in other words, in parallel) with multiple left controllers 3. Furthermore, the main unit 2 can communicate simultaneously (in other words, in parallel) with multiple right controllers 4. Therefore, multiple users can simultaneously input to the main unit 2 using their respective sets of left controllers 3 and right controllers 4. For example, while the first user inputs to the main unit 2 using the first set of left controllers 3 and right controllers 4, the second user can input to the main unit 2 using the second set of left controllers 3 and right controllers 4.
[0069] The display 12 is also connected to the processor 81. The processor 81 displays images generated (for example, by performing the above information processing) and / or images acquired from an external source on the display 12.
[0070] The main unit 2 includes a codec circuit 87 and speakers (specifically, a left speaker and a right speaker) 88. The codec circuit 87 is connected to the speakers 88 and the audio input / output terminals 25, as well as to the processor 81. The codec circuit 87 is a circuit that controls the input and output of audio data to the speakers 88 and the audio input / output terminals 25.
[0071] The main unit 2 comprises a power control unit 97 and a battery 98. The power control unit 97 is connected to the battery 98 and the processor 81. Although not shown in the figures, the power control unit 97 is also connected to various parts of the main unit 2 (specifically, the parts that receive power from the battery 98, the left terminal 17, and the right terminal 21). Based on commands from the processor 81, the power control unit 97 controls the power supply from the battery 98 to the aforementioned parts.
[0072] The battery 98 is also connected to the lower terminal 27. When an external charging device (for example, a cradle) is connected to the lower terminal 27 and power is supplied to the main unit 2 via the lower terminal 27, the supplied power charges the battery 98.
[0073] Figure 7 is a block diagram showing an example of the internal configuration of the main unit 2, the left controller 3, and the right controller 4. Note that the details of the internal configuration of the main unit 2 are shown in Figure 6 and are therefore omitted in Figure 7.
[0074] The left controller 3 includes a communication control unit 101 that communicates with the main unit 2. As shown in Figure 7, the communication control unit 101 is connected to each component, including the terminal 42. In this embodiment, the communication control unit 101 can communicate with the main unit 2 both by wired communication via the terminal 42 and by wireless communication without using the terminal 42. The communication control unit 101 controls the method of communication that the left controller 3 performs with the main unit 2. That is, when the left controller 3 is attached to the main unit 2, the communication control unit 101 communicates with the main unit 2 via the terminal 42. When the left controller 3 is detached from the main unit 2, the communication control unit 101 performs wireless communication with the main unit 2 (specifically, the controller communication unit 83). Wireless communication between the controller communication unit 83 and the communication control unit 101 is performed according to, for example, the Bluetooth® standard.
[0075] The left controller 3 also includes a memory 102, such as flash memory. The communication control unit 101 is composed of, for example, a microcontroller (also called a microprocessor) and performs various processes by executing firmware stored in the memory 102.
[0076] The left controller 3 is equipped with buttons 103 (specifically, buttons 33-39, 43, 44, and 47). The left controller 3 is also equipped with an analog stick (referred to as "stick" in Figure 7) 32. Each button 103 and the analog stick 32 repeatedly output information about the operations performed on them to the communication control unit 101 at appropriate intervals.
[0077] The communication control unit 101 acquires information about the input (specifically, information about the operation or detection results from the sensor) from each input unit (specifically, each button 103 and the analog stick 32). The communication control unit 101 transmits operation data, including the acquired information (or information that has been processed in a predetermined manner), to the main unit 2. The operation data is transmitted repeatedly at a rate of once at predetermined intervals. The interval at which information about the input is transmitted to the main unit 2 may or may not be the same for each input unit.
[0078] When the above operation data is transmitted to the main unit 2, the main unit 2 can obtain the input made to the left controller 3. In other words, the main unit 2 can determine the operation of each button 103 and the analog stick 32 based on the operation data.
[0079] The left controller 3 includes a power supply unit 108. In this embodiment, the power supply unit 108 includes a battery and a power control circuit. Although not shown, the power control circuit is connected to the battery and to each part of the left controller 3 (specifically, each part that receives power from the battery).
[0080] As shown in Figure 7, the right controller 4 includes a communication control unit 111 that communicates with the main unit 2. The right controller 4 also includes a memory 112 connected to the communication control unit 111. The communication control unit 111 is connected to each component, including the terminal 64. The communication control unit 111 and the memory 112 have the same functions as the communication control unit 101 and memory 102 of the left controller 3. Therefore, the communication control unit 111 can communicate with the main unit 2 both by wired communication via the terminal 64 and by wireless communication without the terminal 64 (specifically, communication according to the Bluetooth® standard), and controls the method of communication that the right controller 4 performs with the main unit 2.
[0081] The right controller 4 is equipped with the same inputs as the left controller 3. Specifically, it is equipped with buttons 113 and an analog stick 52. These inputs have the same functions and operate in the same way as the inputs of the left controller 3.
[0082] The right controller 4 is equipped with a power supply unit 118. The power supply unit 118 has the same functions and operates in the same manner as the power supply unit 108 of the left controller 3.
[0083] [2. Overview of processing in the game system] Next, an overview of the processes performed in the game system 1 will be described with reference to Figures 8 to 25. In this embodiment, the game system 1 generates a game image in which terrain objects and characters (for example, player characters controlled by the player) are placed in a game space, which is a three-dimensional virtual space, and displays it on a display device. In this embodiment, the display device on which the game image is displayed may be the display 12 described above, or it may be a stationary monitor.
[0084] [2-1. Voxel] In this embodiment, the shape of some objects in the game space is defined by voxel data. Here, a voxel is a rectangular (more specifically, cubic) region arranged in a grid in the game space, and voxel data is the data set for each voxel. Hereafter, objects whose shape is defined by voxel data will be called "voxel objects". In this embodiment, the game system 1 stores voxel data for each of the multiple voxels set in the game space as data for generating voxel objects in the game space.
[0085] Figure 8 shows an example of a terrain object that is a voxel object. As shown in Figure 8, in this embodiment, terrain objects representing the ground and other terrain are defined by voxel data (i.e., they are voxel objects). Each cube shown in Figure 8 represents a terrain object. Note that in Figure 8, the edges of the terrain objects are shown with thick lines, but these thick lines are added for the purpose of making the drawing easier to read, and in reality, the edges of the terrain objects do not need to be displayed with thick lines.
[0086] Furthermore, the terrain object shown in Figure 8 is generated using a rule such as, "If the parameter included in the voxel data set for a voxel is greater than a predetermined value, a cube is placed at the voxel's position; if it is less than or equal to the predetermined value, nothing is placed at the voxel's position." The terrain object shown in Figure 8 is provided to illustrate the relationship between voxels and voxel objects in an easy-to-understand manner. In this embodiment, in practice, voxel objects are generated (based on voxel data) using a rule that results in a shape more complex than the length of one side of a voxel, such as the terrain object shown in Figure 15, which will be described later. The rule for determining the shape of a voxel object based on voxel data is arbitrary. In other embodiments, the game system 1 may generate voxel objects as shown in Figure 8 or as shown in Figure 15 based on object data.
[0087] For voxel objects, the shape can be changed by modifying the voxel data of each voxel. Figures 9 and 10 show examples of what the terrain object shown in Figure 8 looks like before and after a portion of it is deleted. That is, when the shaded portion of the terrain object shown in Figure 9 is destroyed, the terrain object changes to the shape shown in Figure 10. At this time, the game system 1 can easily delete the terrain object by rewriting the voxel data of the shaded portion voxel to indicate that the terrain object does not exist. Furthermore, when adding a terrain object, the game system 1 can easily change the shape of the terrain object by modifying the voxel data of each voxel, just as when deleting a terrain object.
[0088] In this way, Game System 1 can freely change the shape of voxel objects by rewriting the voxel data. For example, if a terrain object is destroyed in a game for some reason (for example, when a player character hits the terrain object) and the shape of that terrain object changes as a result, Game System 1 can freely change the shape of the terrain object by changing the voxel data used to generate the terrain object, rather than directly changing the data that represents the external shape of the terrain object (i.e., the mesh described later).
[0089] Figure 11 shows an example of the contents of voxel data. In this embodiment, the game space can be divided into a plurality of voxels arranged in a grid. The game system 1 stores voxel data associated with each voxel in the game space. The voxel data indicates the presence or absence of a voxel object in the voxel corresponding to the voxel data.
[0090] As shown in Figure 11, the voxel data includes density data. The density data indicates the density, which is an index used to define the shape of the voxel object in the voxel corresponding to the voxel data (specifically, the shape defined by the mesh described later). As will be described in detail later, the position and shape of the surface of the voxel object (i.e., the mesh described later) are determined based on the above density. In other words, in this embodiment, the above density is used to create a mesh that defines the surface of the voxel object.
[0091] In this embodiment, density can take the form of an integer value within a range from a lower limit (e.g., 0) to an upper limit (e.g., 255). In this embodiment, the game system 1 determines the shape of a voxel object based on density, such that a higher density value for a voxel tends to result in a larger proportion of the volume occupied by voxel objects within that voxel, while a lower density value tends to result in a smaller proportion. Thus, density is an indicator that affects the proportion of the volume occupied by voxel objects within a voxel. Density can also be said to be an indicator that shows the degree to which objects are contained within the area in which each voxel is defined. For example, if the density is 0, there are no voxel objects within that voxel; if the density is 255, the entire voxel is filled with voxel objects; and if the density is between 0 and 255, voxel objects can occupy the voxel in proportion to the value. Based on the above density, the shape of the mesh, i.e., the shape of the voxel object, can be determined. However, the volume of the voxel object generated based on the above density does not need to exactly match the ratio indicated by the density. For example, the volume of the voxel object may differ between the method used to generate the voxel object shown in Figure 8 and the method used to generate the voxel object shown in Figure 15, even if they are based on the same density.
[0092] In other embodiments, density may indicate either a state in which voxel objects occupy the entire region within the voxel, or a state in which no voxel objects are contained within the region within the voxel. For example, density data may only take the values of 0 or 1.
[0093] As shown in Figure 11, voxel data includes material data. Material data indicates the material (in other words, substance) of the voxel object generated by the voxel data. In this embodiment, the voxel object is assigned materials such as sand, rock, and soil. That is, in this embodiment, multiple types of materials are provided as materials that can be assigned to the voxel object, and the voxel object is assigned one of these multiple types of materials.
[0094] As shown in Figure 11, in this embodiment, the material data indicates the material identification information (referred to as the "material ID"). In this embodiment, the game system 1 stores material information indicating the properties and texture of each material provided in the game. In this embodiment, the material information associates the material ID with the properties of the material and the appearance of the material (specifically, the texture). Specifically, the material information is information that associates the material ID with the identification information of the properties of the material (referred to as the "property ID") and the identification information of the texture of the material (referred to as the "texture ID") (see Figure 11).
[0095] Figure 12 shows an example of property information indicating the properties of a material. As shown in Figure 12, the game system 1 stores property information that associates the above property ID with information indicating the content of the property indicated by the property ID. The properties of a material are the properties that the voxel object to which the material is set has in the game, such as weight and slipperiness as shown in Figure 12. The specific content of the properties is arbitrary, and for example, the following information may be set as the properties of the material. ·temperature • Fragility (for example, the number of times a voxel object will break when subjected to an impact) • Whether or not other objects can be attached to a voxel object. • The amount of health the player character recovers when the player character destroys a voxel object. • The amount of in-game currency a player character acquires when they destroy a voxel object. The specific properties set for the material are arbitrary. In other embodiments, different information may be set as information indicating the properties of the material.
[0096] Figure 13 shows an example of texture information indicating the texture of a material. As shown in Figure 13, the game system 1 stores texture information that associates the above-mentioned texture ID with the texture indicated by that texture ID.
[0097] In addition to texture information, optional information regarding color and / or pattern may be set as data that defines the appearance of a voxel object. For example, a crack pattern may be set as information regarding the appearance of a voxel object. By using such a pattern, game system 1 can generate an image of a voxel object that represents a cracked appearance.
[0098] As described above, in this embodiment, the material data defines the properties of the voxel object and the texture used for the voxel object by the material ID. For example, if the material ID indicated by the material data included in the voxel data is "002", the properties indicated by the property ID "001" associated with that material ID in the material information are set as the properties of the voxel object corresponding to that voxel data (see the arrow shown in Figure 11). In the above case, the texture indicated by the texture ID "002" associated with that material ID in the material information is applied to the voxel object corresponding to that voxel data (see the arrow shown in Figure 11).
[0099] As described above, in this embodiment, the game system 1 manages the properties and textures of materials separately. Therefore, in this embodiment, it is possible to easily set up multiple types of materials that have the same properties but different appearances (i.e., textures), or multiple types of materials that have different properties but the same appearance.
[0100] The material data may be any data that can identify the properties and / or texture of the material. For example, in other embodiments, the material data may indicate the property ID and texture ID, or it may have a data structure that actually contains data indicating the properties and texture of the material.
[0101] Furthermore, material data may also include information about the material, which may contain other information different from the properties and textures described above. For example, material data may include effect data that indicates an effect that occurs when the effect conditions set for a voxel object (for example, when a part of the voxel object is destroyed, or when a character steps on the voxel object) are met. Note that effect data may be data that indicates an effect image (for example, an effect image that represents the destruction of the voxel object) or data that indicates an effect sound (the sound of a character walking on the voxel object).
[0102] As shown in Figure 11, voxel data includes state data that indicates the state of the voxel object. The specific content of the state data is arbitrary. For example, the state data may indicate whether the voxel object is wet or not, or it may indicate the amount of damage inflicted on the voxel object. The content of the state data may be updated during gameplay.
[0103] [2-2. Mesh] In this embodiment, the surface of a voxel object is represented by a mesh. A mesh is a collection of multiple faces (specifically, polygons) placed in the game space. In this embodiment, the game system 1 generates a mesh for a voxel object based on the voxel data of each voxel set in the game space. An example of generating a mesh based on voxel data is described below.
[0104] Figure 14 shows an example of a mesh generation method. Note that in Figure 14, voxels and meshes are represented in two dimensions for clarity and ease of explanation; however, in reality, a three-dimensional mesh is generated based on voxels in three-dimensional space.
[0105] As described above, in this embodiment, the density set for a voxel is set within the range of 0 to 255. In this embodiment, voxels with a density equal to or greater than the reference value are considered to be inside the object, and voxels with a density less than the reference value are considered to be outside the object. It is not necessary to define only voxels with a density of 0 as being outside the object (i.e., reference value = 1), and the reference value can be, for example, 128. In the example shown in Figure 14, the density of voxel 201 and the other outer voxels is set to 0, the density of voxel 202 is set to 100 (less than the reference value), and the densities of voxels 203 and 204 are set to 150 and 200 (greater than or equal to the reference value). In this embodiment, the game system 1 generates vertices between voxels with a density equal to or greater than the reference value and voxels with a density less than the reference value. Specifically, for each region spanning eight adjacent voxels (four in the diagram) (the region enclosed by the dotted line in the diagram), a determination is made as to whether or not to generate a vertex. In other words, vertices are generated in regions that span both voxels with a density above a certain threshold and voxels with a density below that threshold. Furthermore, if the boundary between adjacent vertices (the boundary of the region containing each vertex) passes through a range of voxels with a density above a certain threshold and voxels with a density below that threshold, a polygon mesh is generated by connecting those vertices. The coordinates of the vertices are determined by comparing the densities of adjacent voxels along each of the X, Y, and Z axes and interpolating based on the density difference. At this time, coordinate calculations can also be performed based on normal information, but the normal information may be stored in advance for at least some of the voxels, or if it is not stored, the normal information may also be calculated based on the densities of adjacent voxels. Note that in Figure 14, since the density of voxel 202 is below the threshold, voxel 202 is treated as outside the object when determining the presence or absence of a vertex, but the density value of voxel 202 itself is used in the calculation of the coordinates of the generated vertices. If the baseline value is set lower than the density of voxel 202, the result will be an increase in the number of vertices on the upper right and upper left sides of voxel 202 in Figure 14.
[0106] As described above, by generating a polygon mesh, it is possible to generate a shape with a volume that reflects the density of each voxel to some extent. However, depending on the relationship with adjacent voxels, it is possible that voxels with a density of 0 may include some areas within the object, or that voxels with a density of 255 may include some areas outside the object. In addition, in this embodiment, voxels below a certain threshold are treated as being outside the object, so the volume is smaller because there are fewer vertices compared to when they are treated as being inside the object. In other words, it is not necessary to calculate the polygon mesh so that the volume corresponds precisely to the density value.
[0107] Figure 15 shows an example of a game image including terrain objects. In this embodiment, by generating a mesh as described above, the voxel object can be made to have a shape with complex irregularities compared to the length of one side of a voxel.
[0108] The method for generating the mesh based on the voxel data is optional. For example, in another embodiment, if the density of the voxel data is greater than a predetermined value, the mesh may be generated such that cubes are placed in the voxels (see Figure 8).
[0109] Game System 1 determines the appearance (i.e., color and / or pattern) of each face of the mesh generated as described above, according to the material identified by the voxel data. Specifically, Game System 1 determines the texture to be used for rendering each face of the mesh based on the voxel data, and generates an image of the voxel object by mapping the determined texture to each face. The texture mapped to each face of the mesh is determined based on the voxel data of the voxel used to generate that face (referred to as the target voxel) among the voxels in which the voxel object exists. The target voxel is, depending on the mesh generation method, for example, one or more voxels arranged around that face. In other words, the texture mapped to the face of the mesh is determined to be the texture corresponding to the material set for one or more voxels arranged around that face.
[0110] In other embodiments, a single voxel data may contain multiple types (e.g., two types) of material data. In this case, the voxel data includes ratio data relating to the multiple types of material data. The ratio data is used to determine the texture to be used for the voxel object, and indicates the ratio by which each material (specifically, the texture corresponding to the material) represented by the multiple types of material data affects the appearance (specifically, the color and / or pattern) of the voxel object. Furthermore, when determining the texture to be mapped to each face of the mesh, the texture is determined based on the various data (specifically, density data, multiple types of material data, and ratio data) contained in the voxel data of the target voxel. For example, if multiple types of materials are set for a target voxel corresponding to one face, the texture corresponding to the material with the greatest influence (one type) may be used, taking the above ratio into consideration, or each texture corresponding to the multiple types of materials may be used, taking the above ratio into consideration.
[0111] In other embodiments, there may be both voxel objects that use voxel data containing one type of material data and voxel objects that use voxel data containing two types of material data.
[0112] [2-3. Primary voxels and secondary voxels] In this embodiment, in addition to the terrain objects described above, other objects different from terrain objects may also be generated as voxel objects. These other objects include, for example, rock objects and enemy objects, which will be described later.
[0113] In this embodiment, the shape of the other objects is defined by voxel data relating to voxels different from those of the terrain objects. Hereinafter, the voxel space relating to the terrain objects will be referred to as the "primary voxel space," the voxels in the primary voxel space will be referred to as "primary voxels," and the voxel data set for the primary voxels will be referred to as "primary voxel data." On the other hand, the voxel space relating to the other objects will be referred to as the "sub-voxel space," the voxels in the sub-voxel space will be referred to as "sub-voxels," and the voxel data set for the sub-voxels will be referred to as "sub-voxel data." In this embodiment, the shape of the terrain objects is defined by primary voxel data, and the shape of the other objects is defined by sub-voxel data. In this embodiment, a voxel object whose shape is defined by primary voxel data will be referred to as a "primary voxel object," and a voxel object whose shape is defined by sub-voxel data will be referred to as a "sub-voxel object."
[0114] Figure 16 shows an example of a primary voxel object and a secondary voxel object. In Figure 16, for the purpose of clearly illustrating the difference between primary and secondary voxels, voxel objects (i.e., terrain object 211 and rock object 212) are shown whose meshes are generated by the same rules as when the mesh of the terrain object shown in Figure 8 is generated. In other words, the voxel object shown in Figure 16 is assumed to have a mesh generated by the rule that "if the density set for a voxel is greater than a predetermined value, a cube is placed at the location of the voxel, and if it is less than or equal to the predetermined value, nothing is placed at the location of the voxel." In Figure 16, for the purpose of making the drawing easier to read, terrain object 211 is shown with a dotted line, rock object 212 is shown with a solid line, and the region 213 of the secondary voxel space is shown with a dashed line.
[0115] The shape of the terrain object 211 is defined by the main voxel data. In this embodiment, the main voxel space is assumed to be set for the entire game space (therefore, the extent of the main voxel space is not shown in Figure 16).
[0116] On the other hand, the shape of the rock object 212 is defined by sub-voxel data. In this embodiment, the sub-voxel space is set as part of the game space (which can also be said to be part of the main voxel space). In the example shown in Figure 16, the area 213 indicated by the dashed line is the range in which the sub-voxel space is set. The shape of the rock object 212 is defined by the sub-voxel data set for each sub-voxel set within the sub-voxel space. The rock object 212 will be placed within the range of the sub-voxel space.
[0117] The length of one side of a sub-voxel may be set to be different from or the same as the length of one side of a main voxel. For example, as shown in Figure 16, by defining a sub-voxel space in which voxels with shorter side lengths than main voxels are defined as sub-voxels, the shape of a sub-voxel object based on sub-voxel data can be represented in more detail than a terrain object based on main voxel data.
[0118] Furthermore, in this embodiment, the game system 1 sets the direction of the coordinate axes in the sub-voxel space (i.e., the orientation of each edge of the sub-voxel) independently of the direction of the coordinate axes in the main voxel space (i.e., the orientation of each edge of the main voxel). For example, in the example shown in Figure 16, the direction of the coordinate axes in the sub-voxel space is different from the direction of the coordinate axes in the main voxel space. This makes it easier to position sub-voxel objects in a free orientation in the game space. For example, it becomes easy to position sub-voxel objects so that they extend in a direction different from the coordinate axes in the main voxel space. It also becomes easier to move (for example, rotate) sub-voxel objects independently of terrain objects.
[0119] Furthermore, Game System 1 can change the position of sub-voxel objects (more precisely, their position in game space) by changing the position of the sub-voxel space within the game space. Additionally, Game System 1 can change the tilt of sub-voxel objects (more precisely, their tilt in game space) by changing the tilt of the sub-voxel space relative to the game space.
[0120] In this embodiment, when multiple sub-voxel objects are generated, the game system 1 sets a sub-voxel space for each sub-voxel object. This allows the position and inclination of each sub-voxel space in the game space to be set for each sub-voxel space. Furthermore, it becomes easier to generate multiple sub-voxel objects that each have a different shape (for example, multiple sub-voxel objects that have shapes extending in different directions from each other). Note that each sub-voxel space may be arranged so that a part of one sub-voxel space overlaps with a part of another sub-voxel space. In another embodiment, multiple sub-voxel objects may be set in a single sub-voxel space.
[0121] The method for generating the mesh of a sub-voxel object based on sub-voxel data may be the same as, or different from, the method for generating the mesh of a terrain object based on primary voxel data.
[0122] [2-4. Process to change the tilt of enemy character objects] Next, we will explain the process of changing the tilt of an enemy character object (hereinafter simply referred to as "enemy character") which is a voxel object. In this embodiment, a portion of a given enemy character is composed of voxel objects. Therefore, the portion of the enemy character that is a voxel object (referred to as the "voxel portion") deforms during the game (that is, its volume decreases as a portion is deleted, or its volume increases as a new portion is added). At this time, the game system 1 makes the behavior of the enemy character (i.e., its movements and posture) natural by changing the tilt of the enemy character in accordance with the deformation of the voxel portion. The details of the process of changing the tilt of the enemy character will be explained below.
[0123] [2-4-1. Enemy Character Composition] Figure 17 shows an example of an enemy character. As shown in Figure 17, the enemy character 221 has a voxel portion 222 and non-voxel portions 223a to 223e (hereinafter sometimes collectively referred to as "non-voxel portion 223"). The voxel portion 222 is the part that is a voxel object and is composed of a mesh generated based on voxel data. The non-voxel portion 223 is the part that is not a voxel object and is composed of a mesh that is not generated based on voxel data. In the example shown in Figure 17, the torso of the enemy character 221 is the voxel portion 222, and the head and limbs are the non-voxel portions 223. The voxel portion 222 is the sub-voxel object described above. In other embodiments, the enemy character 221 may be at least partially a voxel portion, or the entirety may be a voxel portion.
[0124] Furthermore, the voxel portion 222 of the enemy character 221's torso is assigned a rock material. That is, the material data set in the voxel data of the voxel portion 222 indicates a rock material. In this embodiment, the enemy character 221 is a character with the appearance of a rock with arms and legs attached.
[0125] Figure 18 shows an example of the configuration of the enemy character shown in Figure 17. As shown in Figure 18, the enemy character 221 is configured with multiple bones 225a to 225m (hereinafter sometimes collectively referred to as "bones 225") and multiple joints 226a to 226i (hereinafter sometimes collectively referred to as "joints 226").
[0126] Bone 225 defines the position and orientation of each part of the enemy character 221. Specifically, each non-voxel portion 223 of the enemy character 221 is associated with one of the bones 225. The position and orientation of the non-voxel portion 223 is determined according to the position and orientation of the bone 225 associated with it (specifically, to match the position and orientation of bone 225). As shown in Figure 18, some bones (bones 225b, 225c, 225e, 225g, 225h, 225k in Figure 18) are located inside the voxel portion 222. Although not shown in Figure 17, in addition to the non-voxel portion 223 located outside the voxel portion 222, the enemy character 221 also has non-voxel portions associated with bones located inside the voxel portion 222. These non-voxel portions may be exposed when a part of the voxel portion 222 is erased.
[0127] Joint 226 connects multiple bones together. Joint 226 connects one end of one bone to the other end of another bone. The position and orientation of bone 225 are determined on the condition that it maintains its connection relationship with other bones 225 connected to it by joint 226. Game system 1 controls the movement of enemy character 221 by moving bone 225 under the constraint that it is connected by joint 226.
[0128] The voxel portion 222 is associated with a predetermined reference position on the enemy character 221, and is positioned such that the predetermined position of the voxel portion 222 is located at the reference position. In this embodiment, the reference position is the position of the joint 226e on the waist of the enemy character 221. However, the location of the reference position is arbitrary, and in other embodiments, it may be a location other than the waist. Furthermore, as will be described in detail later, when the game system 1 changes the inclination of the voxel portion 222, it rotates the voxel portion 222 around the reference position.
[0129] In this embodiment, the enemy character 221 has a core 227 as one of its non-voxel portions. As will be described in detail later, the core 227 is a weak point of the enemy character 221. The core 227 is located, for example, at the location of the enemy character 221's heart.
[0130] [2-4-2. Processing to tilt enemy characters] Next, we will explain the process of tilting the enemy character 221 in response to the deformation of the voxel portion 222 of the enemy character 221. Figure 19 shows an example of a state in which a part of the voxel portion of the enemy character shown in Figure 17 has been erased. In this embodiment, in response to an event in which the voxel portion 222 is attacked by the player character, the portion of the voxel portion 222 that has been attacked is erased (see Figure 19). In the example shown in Figure 19, the lower right portion of the voxel portion 222 has been erased.
[0131] As described above, if a portion of the voxel portion 222 is erased, the game system 1 tilts the enemy character 221 to change its posture. Figure 20 shows an example of the enemy character in a tilted state. In the examples shown in Figures 19 and 20, the lower right portion of the voxel portion 222 is erased, so the left portion of the voxel portion 222 becomes relatively heavier than the right portion (it can also be said that the center of gravity has shifted to the left). Therefore, in this embodiment, the game system 1 changes the tilt of the enemy character 221 so that the left portion of the voxel portion 222 is lower than the right portion (see Figure 20). In this way, the game system 1 can make the enemy character 221 assume a natural posture corresponding to the erasure of a portion of the voxel portion 222.
[0132] Furthermore, events that deform the voxel portion 222 are not limited to events that decrease the volume of the voxel portion 222 (for example, events in which the voxel portion 222 is attacked by a player character), but may also be events that increase the volume of the voxel portion 222. Figure 21 is a diagram showing an example of a state in which the volume of the voxel portion of the enemy character shown in Figure 17 has been increased. In this embodiment, in response to an event in which another object that can attach to the voxel portion 222 (referred to as an "attached object") comes into contact with the voxel portion 222, the game system 1 increases the volume of the voxel portion 222. Specifically, the game system 1 changes the shape of the voxel portion 222 so that it takes on a shape as if the attached object is attached to the voxel portion 222 (that is, so that the volume of the voxel portion 222 increases by the amount of the attached object).
[0133] The attached object is, for example, a voxel object that has a material set that has properties that allow it to attach to the material of the voxel portion 222. In other words, if the material of the voxel portion 222 and the material of the other voxel object are a specific combination, the game system 1 will determine that the other voxel object is an attached object.
[0134] As described above, when the volume of the voxel portion 222 is increased, the game system 1 tilts the enemy character 221 to change its posture, just as when the volume is decreased. In the example shown in Figure 21, a new portion is added to the lower left part of the voxel portion 222, so the left side of the voxel portion 222 is relatively heavier than the right side. Therefore, in the example shown in Figure 21, as in the example shown in Figure 20, the game system 1 changes the tilt of the enemy character 221 so that the left side of the voxel portion 222 is lower than the right side. Thus, when the volume of the voxel portion 222 is increased, the game system 1 can make the enemy character 221 assume a natural posture corresponding to the deformation of the voxel portion 222, just as when the volume is decreased.
[0135] As described above, in this embodiment, when an event occurs that deforms the voxel portion of the enemy character, the game system 1 updates the voxel data to decrease (or increase) the volume of the enemy character. Furthermore, when there is an update to the voxel data, the game system 1 generates a mesh of the enemy character based on the updated voxel data and changes the tilt of at least a part of the enemy character relative to the virtual space. This makes it possible to make the enemy character 221 assume a natural posture in response to the increase or decrease in the enemy character's volume.
[0136] Furthermore, the above events are not limited to those that occur when an enemy character is attacked or when another object comes into contact with it, but may occur under any arbitrary conditions. In other embodiments, the volume of the voxel portion of an enemy character may decrease or increase over time depending on whether certain conditions in the game are met. For example, the voxel portion of an enemy character may shrink by collapsing or melting over time, or it may enlarge by expanding over time. In this case, the game system 1 may tilt the enemy character in response to the decrease or increase in volume.
[0137] Figure 22 shows an example of the state of an enemy character before and after a change in the tilt of its voxel portion. In Figure 22, the direction and amount of tilting of the voxel portion 222 are explained using the example of a case where a part of the voxel portion 222 (specifically, the lower right portion) is erased.
[0138] When the voxel portion 222 deforms, the game system 1 calculates the position of the center of gravity 231 of the deformed voxel portion 222. In the example shown in Figure 22, the deformation of the voxel portion 222 causes the center of gravity 231 to move to the left of the reference axis L (see Figure 22(a)). The reference axis L is an axis that passes through the center of gravity of the voxel portion 222 in the reference state and is parallel to the direction of gravity (directly downward in Figure 22). In Figure 22, the position of the center of gravity in the reference state is shown by a dotted line. The reference state may be the initial state when the enemy character appears, but it does not have to be the initial state. For example, if the voxel portion 222 gradually deforms from its shape when the enemy character first appears to a predetermined shape, the reference state may be the state when it reaches that predetermined shape.
[0139] As shown in Figure 22, when the center of gravity 231 moves to the left with respect to the reference axis L, the game system 1 tilts the voxel portion 222 by rotating it so that the portion of the voxel portion 222 to the left of the reference axis L approaches the direction of gravity (i.e., downwards), and the portion on the opposite side, the right side, approaches the opposite direction of the direction of weight (i.e., upwards) (see Figure 22(b)). As described above, the game system 1 rotates the voxel portion 222 around the reference position.
[0140] Figure 23 shows another example of the state of an enemy character before and after a change that tilts the voxel portion. The example shown in Figure 23 is an example of a deformation in which a part of the voxel portion 222 (specifically, the lower right portion) becomes larger. In the example shown in Figure 23, the center of gravity 231 moves to the right with respect to the reference axis L. Therefore, the game system 1 tilts the voxel portion 222 by rotating the voxel portion 222 so that the part of the voxel portion 222 to the right of the reference axis L approaches the direction of gravity (i.e., downwards), and the opposite part on the left approaches the opposite direction of weight (i.e., upwards) (see Figure 23(b)).
[0141] As described above, in this embodiment, when an event occurs, the game system 1 changes the tilt of at least a part of the enemy character so that the part of the enemy character on the side where the center of gravity of the enemy character after the voxel data update is located (left side in Figure 22, right side in Figure 23) approaches the direction of gravity (downward in Figures 22 and 23) relative to the reference axis, thereby rotating the enemy character around the reference axis. As a result, the enemy character tilts toward the side where the center of gravity has moved in response to the occurrence of the event, so the game system 1 can make the enemy character assume a natural posture after the event.
[0142] Furthermore, in this embodiment, the reference axis is a straight line that passes through the center of gravity of the voxel portion 222 in the reference state and is parallel to the direction of gravity in the virtual space (see Figures 22 and 23). This allows the enemy character to be tilted according to the side to which the center of gravity has moved from the reference state, making the tilting motion of the enemy character more natural for the user.
[0143] In other embodiments, the reference axis is not limited to a straight line passing through the centroid of the voxel portion 222 in the reference state. For example, in other embodiments, the reference axis may be any straight line passing through the portion whose inclination is changed (specifically, the voxel portion 222) and parallel to the direction of gravity in the virtual space. Also, as will be described later, in the reference state, the reference axis does not need to pass through the reference position (i.e., it may pass through a position different from the reference position).
[0144] Furthermore, in this embodiment, the above-mentioned reference position is the position of the joint (i.e., the hip joint) of the enemy character. With this, the enemy character tilts around the hip, making the tilting motion of the enemy character appear more natural.
[0145] In this embodiment, when tilting the voxel portion 222, the game system 1 also tilts a portion of the non-voxel portion in the same way as the voxel portion 222 (see Figures 20 and 21). Specifically, the game system 1 rotates the non-voxel portion 223 above the reference position (i.e., the waist) (specifically, the non-voxel portion associated with bones 225a to 225g) in accordance with the rotation of the voxel portion 222. On the other hand, the non-voxel portion below the reference position (specifically, the non-voxel portion associated with bones 225h to 225m) does not rotate even when the voxel portion 222 rotates. This is because if these non-voxel portions were tilted, the enemy character 221 would appear to be standing at an angle to the ground, which could look unnatural. Thus, when an event occurs, game system 1 changes the tilt between the voxel portion 222 and a portion of the bone-associated portion (i.e., the non-voxel portion). This makes the posture of the enemy character 221 more natural when it is tilted.
[0146] Furthermore, "above the reference position" can also be interpreted as the side closer to the enemy character's head, for example. Similarly, "below the reference position" can be interpreted as the side closer to the enemy character's feet (which can also be described as the part in contact with the ground).
[0147] Furthermore, game system 1 tilts the non-voxel portion 223, which is tilted together with the voxel portion 222, so that it rotates around a reference position, just like the voxel portion 222. As a result, the positional relationship between the voxel portion 222 and the non-voxel portion does not change before and after tilting, which reduces the possibility that the enemy character 221 will be in an unnatural posture after tilting.
[0148] In this embodiment, the centroid is the centroid of the voxel portion 222, and the game system 1 calculates the centroid using the voxel data (that is, using the density of each voxel indicated by each voxel data). This allows the centroid position to be calculated using voxel data in a simple calculation. In other embodiments, the centroid may be calculated based on the mesh of the voxel portion 222 instead of the voxel data.
[0149] Furthermore, instead of calculating the center of gravity based solely on the voxel portion 222, the center of gravity may be calculated based on the voxel portion 222 and the portion of the enemy character 221 other than the voxel portion 222. For example, the game system 1 may calculate the center of gravity based on the voxel portion 222 and the non-voxel portion that is rotated together with the voxel portion 222. Also, for example, if the enemy character 221 is holding another object (e.g., a weapon object), the game system 1 may add that other object to the calculation of the center of gravity.
[0150] In this embodiment, the game system 1 determines the amount by which the voxel portion 222 is tilted based on the angle of change of the center of gravity. The angle of change of the center of gravity is the angle θ between the reference axis and the line segment extending from the center of gravity of the voxel portion 222 in the reference state to the center of gravity after deformation (see Figures 22(a) and 23(a)). The game system 1 tilts the voxel portion 222 more as the angle of change θ increases. For example, the game system 1 may use a value obtained by multiplying the angle of change θ by a predetermined coefficient (for example, a coefficient greater than 0 and less than 1) as the rotation angle of the voxel portion 222.
[0151] Furthermore, in this embodiment, the game system 1 sets an upper limit on the angle at which the enemy character is tilted. Specifically, the game system 1 sets an upper limit on the tilt angle of the voxel portion 222 relative to the reference state (i.e., the state in which the voxel portion 222 is not deformed), and ensures that the tilt angle does not exceed this upper limit. The specific value of the above upper limit is arbitrary, but for example, it may be set to 30°. If the tilt angle becomes too large, the posture of the enemy character 221 may become unnatural, or the actions performed by the enemy character 221 may become unnatural (for example, part of the enemy character 221 may be buried in the ground during action). In contrast, in this embodiment, the above possibility can be reduced by setting the above upper limit.
[0152] Furthermore, in this embodiment, the example given was that in the reference state (i.e., the state before deformation), the reference position is located on the reference axis. However, in other embodiments, the reference position does not have to be located on the reference axis in the reference state. In other words, the reference state of an enemy character is not conditional on the reference position being located on the reference axis. According to this, the game system 1 can make the enemy character assume any tilt when the voxel portion 222 is not deformed.
[0153] In this embodiment, the angle of change of the center of gravity is calculated based on the position of the center of gravity in the reference state (i.e., it is calculated as the angle θ between a straight line extending vertically from the center of gravity in the reference state and a line segment extending from the center of gravity in the reference state to the center of gravity after deformation). In contrast, in other embodiments, the angle of change of the center of gravity may be calculated based on the reference position. Specifically, the angle of change of the center of gravity may be calculated as the angle θ' between a line segment extending from the reference position to the center of gravity in the reference state and a line segment extending from the reference position to the center of gravity of the voxel portion 222 after deformation.
[0154] However, in the method of using the above angle θ' as the angle of change of the center of gravity, if the reference position is not located on the reference axis in the reference state, even if the center of gravity moves due to the deformation of the voxel portion 222, the angle θ' may become 0 or close to 0. In this case, contrary to the user's expectations, the tilt of the enemy character may hardly change. For example, consider an enemy character whose center of gravity is located to the upper left of the reference position in the reference state, and the center of gravity moves further to the upper left due to the deformation of the voxel portion 222. In this case, the user expects the enemy character to tilt to the left because the center of gravity moves to the upper left, but since the above angle θ' will be 0 or close to 0, the tilt of the enemy character may actually hardly change.
[0155] In contrast, in this embodiment, the game system 1 can reduce the possibility that the angle of change of the center of gravity will be 0 or close to 0 in the above-mentioned cases by calculating the angle of change of the center of gravity based on the position of the center of gravity in the reference state. This reduces the possibility that the tilt of the enemy character will hardly change, contrary to the user's expectations.
[0156] As described above, in this embodiment, the game system 1 tilted the enemy character 221 such that the side that became heavier relative to the reference axis due to the deformation of the voxel portion 222 (i.e., the side where the center of gravity shifted) was lower (see Figure 22). Here, as a behavior that the enemy character 221 takes when the voxel portion 222 deforms, it can be said that a natural behavior is to change the tilt so that the deformed center of gravity is located on the reference axis in order to maintain balance. Therefore, in other embodiments, the direction in which the voxel portion 222 is tilted when the voxel portion 222 deforms may be determined as follows.
[0157] Figure 24 shows an example of the state before and after tilting the voxel portion of an enemy character in a modified version of this embodiment. In Figure 24, as with Figure 22, an example is shown where the lower right portion of the voxel portion 222 is erased.
[0158] In this modified example, as in the above embodiment, the game system 1 calculates the position of the center of gravity 231 after deformation of the voxel portion 222. In this modified example, the game system 1 tilts the voxel portion 222 so that the center of gravity 231 is located on the reference axis L. Therefore, in the example in Figure 24, the voxel portion 222 rotates in such a direction that the part of the voxel portion 222 on the side where the center of gravity has moved (i.e., the left side) approaches the opposite side of the direction of gravity (i.e., the upper side), and the part on the right side, which is the opposite side of where the center of gravity has moved, approaches the side in the direction of weight (i.e., the lower side) (see Figure 24(b)), thus tilting the voxel portion 222 in the opposite direction to that of the above embodiment.
[0159] In the above modified example, the game system 1 may rotate the voxel portion 222 in a direction that brings the center of gravity after deformation closer to the position on the reference axis L, so that the center of gravity after rotation does not become the position on the reference axis L. In other words, when an event occurs, the game system 1 may rotate the enemy character around the reference position in a direction that brings the center of gravity of the enemy character after the voxel data update closer to the reference axis.
[0160] In the above, we have explained the case where the tilt of the enemy character 221 as viewed from the front (i.e., the tilt with respect to rotation around an axis parallel to the front-to-back direction) changes as an example. However, in reality, the game system 1 changes the tilt as viewed from any horizontal direction (i.e., any direction perpendicular to the direction of gravity). Specifically, when the shape of the voxel portion 222 changes, the game system 1 tilts the voxel portion 222 so that it faces a direction perpendicular to the plane containing the center of gravity and the reference axis after deformation, and rotates around an axis passing through the reference position. This allows the game system 1 to tilt the enemy character 221 in the front, back, left, and right directions, making the posture of the enemy character 221 after deformation of the voxel portion 222 more natural. In other embodiments, the game system 1 may change the tilt of the enemy character only with respect to rotation around a specific axis (for example, around an axis parallel to the front-to-back direction).
[0161] [2-4-3. Operation control in a tilted state] As described above, if the enemy character 221 tilts due to the deformation of the voxel portion 222, the game system 1 causes the enemy character 221 to perform a predetermined action in the tilted state. Figure 25 shows an example of an enemy character performing walking and attacking actions. Note that the axis L' shown in Figure 25 is shown for the purpose of making the tilt of the enemy character easier to understand in the figure, and is the axis that is parallel to the direction of gravity when the enemy character is in the above-mentioned reference state.
[0162] In this embodiment, when the enemy character 221 is made to walk, the game system 1 controls the movement of the enemy character 221 while it remains in a tilted state (i.e., the axis L' is tilted relative to the direction of gravity) (see Figure 25(a)). By keeping the enemy character 221 tilted even during walking, the enemy character 221 can perform walking movements more naturally.
[0163] In this embodiment, the game system 1 uses motion data to make the enemy character 221 perform actions. The game system 1 stores motion data for each type of action that the enemy character 221 performs. Motion data is data that defines the movement of each part (specifically, the non-voxel parts) when the character performs an action. Specifically, motion data shows the movement of each bone (i.e., changes in the position and tilt of the bones) when the action is performed. In this embodiment, motion data shows the changes from the position and tilt of each bone at the start of the action. Therefore, the game system 1 can use a single motion data to make the enemy character perform an action regardless of the tilt of the enemy character in the game space.
[0164] Based on the above, in this embodiment, when an event occurs, the game system 1 controls the movement of the enemy character using motion data while changing the tilt of at least a part of the enemy character. At this time, the game system 1 causes the enemy character to move by moving the bones according to the motion data. This allows the enemy character to move freely. Furthermore, in this embodiment, a single motion data can be used regardless of whether the enemy character is tilted or not, so there is no need to prepare motion data for each state of the enemy character, and the amount of motion data that needs to be prepared can be reduced.
[0165] In this embodiment, the motion data described above represents the walking motion of a character object. In other words, the game system 1 controls the movement of the enemy character while changing the tilt of at least a part of the enemy character for walking motion. This makes it possible to make the enemy character perform natural walking motions.
[0166] Furthermore, in this embodiment, when the enemy character 221 is to perform an attack action, the game system 1 controls the movement of the enemy character 221 while returning its tilt to the reference state (see Figure 25(b)). Specifically, the movement control may be such that the game system 1 returns the tilt of the enemy character 221 to the reference state immediately before starting the attack action and then has the attack action performed, or it may be such that the tilt of the enemy character 221 is gradually returned to the reference state while the attack action is performed after the attack action has started.
[0167] Furthermore, attack actions, like walking actions, are controlled by moving each bone according to motion data. In other words, when an event occurs, game system 1 controls the enemy character's movement using motion data, setting the enemy character's tilt to the same tilt as before the event occurred.
[0168] Here, attack actions include, for example, swinging arms or swinging weapons (not shown). Therefore, if the enemy character 221 were to perform an attack action while tilted, it could result in unnatural movements, such as the arms or weapons sinking into the ground during the action. In this embodiment, the possibility of the above is reduced by returning the tilt of the enemy character 221 to a standard state during the attack action.
[0169] As described above, in this embodiment, the game system 1 makes the tilt of the enemy character different when it makes the character perform two different types of actions. That is, when an event occurs, the game system 1 sets the tilt of the enemy character to a different value when it controls the enemy character's actions using first motion data (for example, motion data for walking) and when it controls the enemy character's actions using second motion data (for example, motion data for attacking). This reduces the possibility of unnatural actions occurring depending on the type of action.
[0170] In this embodiment, the game system 1 returns the tilt of the enemy character 221 to its reference state during attack actions. In other embodiments, instead of returning the tilt of the enemy character 221 to its reference state, the game system 1 may reduce the amount of tilt during attack actions compared to the amount of tilt during walking actions. This also reduces the possibility of unnatural movements, similar to this embodiment.
[0171] [2-4-4. Game Processing] As described above, the player object can erase (or destroy) the voxel portion 222 by attacking the enemy character 221. In this embodiment, even if the voxel portion 222 of the enemy character 221 is destroyed, the enemy character 221 does not take any direct damage. That is, even if the voxel portion 222 is destroyed, the enemy character 221's health value does not decrease, and even if all of the voxel portion 222 is erased, the enemy character 221 is not defeated.
[0172] However, if the voxel portion 222 of the enemy character 221 is deformed by destroying it or by having an attached object come into contact with it, thereby changing the tilt of the enemy character 221, the position of the enemy character 221's weak point (for example, the core 227 set in the head or heart) may be lowered, making it easier to attack. This allows the player to gain an advantage in the game. In other embodiments, if the tilt of the enemy character 221 is changed, the enemy character 221 may drag a part of the voxel portion 222 while walking, thereby slowing down the enemy character 221's movement speed. This also allows the player to gain an advantage in the game by destroying the voxel portion 222, similar to this embodiment.
[0173] In this embodiment, the player object can damage the enemy character 221 by attacking the enemy character 221's core 227, thereby defeating the enemy character 221. Specifically, if an event occurs in which the voxel portion 222 of the enemy character 221 is attacked, the game system 1 will destroy at least a portion of the voxel portion 222, and if the core 227 of the enemy character 221 is attacked, the game system 1 will destroy the entire enemy character. Therefore, in this embodiment, the player will first destroy the voxel portion 222 of the enemy character 221 to expose the core 227, and then defeat the enemy character 221 by attacking the core 227. In this way, in this embodiment, by configuring the enemy character 221 to have a voxel portion 222 and a core 227 inside it, strategic thinking can be added to defeating the enemy character 221, improving the enjoyment of the game.
[0174] [3. Specific examples of processing in game systems] Next, we will explain a specific example of information processing in game system 1 with reference to Figures 26 to 28.
[0175] Figure 26 shows an example of various data used for information processing in Game System 1. As shown in Figure 26, Game System 1 stores the game program, main voxel space data, main voxel object data, main mesh data, sub-voxel space data, sub-voxel object data, sub-mesh data, and enemy character data. The game program, main voxel space data, and a portion of the enemy character data are data that is stored in Game System 1 in advance before the execution of game processing. This data is stored, for example, in a storage medium installed in slot 23 of the main unit 2. The remaining portions of the main voxel object data, main mesh data, sub-voxel space data, sub-voxel object data, sub-mesh data, and enemy character data are data that is generated during the execution of game processing. This data is stored, for example, in the DRAM 85 of the main unit 2.
[0176] The game program is a game program for executing the game processing in this embodiment (specifically, the game processing shown in Figure 27).
[0177] The primary voxel space data defines the primary voxel space set in the game space. Specifically, the primary voxel space data indicates the length of one side of the primary voxel and the direction of each side of the primary voxel in the game space. Furthermore, if the primary voxel space is set in only a portion of the game space, the primary voxel space data may also include data indicating the location and size of the space in which the primary voxels are set (i.e., the primary voxel space) (i.e., data indicating the range in the game space in which the primary voxels are set).
[0178] The main voxel object data is data that represents the main object (in this case, terrain object) placed in the game space. Specifically, the main voxel object data includes the main voxel data for each unit region within a portion or all of the game space.
[0179] The main mesh data is data that indicates the mesh set for the main object placed in the game space (i.e., the mesh of the terrain object). The main mesh data includes, for example, data indicating the position of each vertex in the main mesh.
[0180] Sub-voxel space data is data that defines the sub-voxel space set up in the game space. Specifically, sub-voxel space data indicates the location and size of the space in which the sub-voxels are set up (i.e., the sub-voxel space), the length of one side of the sub-voxel, and the direction of each side of the sub-voxel in the game space.
[0181] Sub-voxel object data is data that indicates sub-objects placed in the game space (specifically, the voxel portion of enemy characters, etc.). Specifically, sub-voxel object data includes sub-voxel data for each unit region within a portion or all of the game space.
[0182] Sub-mesh data is data that indicates the mesh set for a sub-object placed in the game space (i.e., the mesh of the voxel portion of an enemy character, etc.). Sub-mesh data includes, for example, data indicating the position of each vertex in the sub-mesh.
[0183] The enemy character data is data relating to enemy character 221. In this embodiment, the enemy character data includes walking motion data, attack motion data, tilt reference value data, bone data, and tilt data. The walking motion data, attack motion data, and tilt reference value data are data that are stored in the game system 1 in advance before the execution of game processing. The bone data and tilt data are data that are generated during the execution of game processing.
[0184] The walking motion data shows the movement of each bone during the enemy character 221's walking motion. The attack motion data shows the movement of each bone during the enemy character 221's attack motion. The tilt reference value data shows the tilt of the voxel portion 222 in the reference state (specifically, the tilt relative to the game space). The bone data shows the position and orientation of each bone 225 set on the enemy character 221. The tilt data shows the current tilt of the voxel portion 222. In addition to the above data, the enemy character data may also include data related to the joints 226 (for example, data showing the connection relationship between bones) and data showing the enemy character's health value.
[0185] In addition to the data shown in Figure 26, Game System 1 also stores the aforementioned property information and texture information data, as well as data related to various characters appearing in the game, as data that is stored in Game System 1 before the execution of game processing.
[0186] Figure 27 is a flowchart illustrating an example of the game processing flow performed by game system 1. The game processing shown in Figure 27 is initiated, for example, when the player issues an instruction to start the game during the execution of the game program described above.
[0187] In this embodiment, the processor 81 of the main unit 2 executes the game program stored in the game system 1, thereby executing the processing of each step shown in Figure 27. However, in other embodiments, some of the processing of each step may be executed by a processor other than the processor 81 (for example, a dedicated circuit). Also, if the game system 1 can communicate with other information processing devices (for example, a server), some of the processing of each step shown in Figure 27 may be executed by the other information processing device. Furthermore, the processing of each step shown in Figure 27 is merely an example, and the processing order of each step may be changed, or other processing may be performed in addition to (or instead of) the processing of each step, as long as similar results can be obtained.
[0188] Furthermore, the processor 81 executes the processing of each step shown in Figure 27 using memory (for example, DRAM 85). That is, the processor 81 stores the information (in other words, data) obtained by each processing step in memory, and when it is necessary to use that information in subsequent processing steps, it reads the information from memory and uses it.
[0189] In step S1 shown in Figure 27, the processor 81 sets up a voxel space in the game space. Specifically, the processor 81 acquires the voxel space data (specifically, the main voxel space data and the sub-voxel space data) and stores it in the DRAM 85 (in other words, writes it). In subsequent game processing, the processor 81 may refer to the voxel space data when executing processing related to voxel objects (for example, the processing in step S2). In this case, the processor 81 refers to the voxel space data stored in the DRAM 85. The processing in step S2 is executed after step S1.
[0190] In step S2, the processor 81 sets up voxel objects in the game space in the reference state. Specifically, the processor 81 acquires voxel data (specifically, main voxel data and sub-voxel data) indicating the arrangement of voxel objects in the reference state, and stores (in other words, writes) part or all of the acquired voxel data to the DRAM 85 as voxel object data (specifically, main voxel object data and sub-voxel object data). The voxel data indicating the arrangement of voxel objects in the reference state is stored, for example, in a storage medium installed in slot 23 of the main unit 2. The processing in step S3 is executed after step S2.
[0191] The voxel data written to the DRAM 85 as main voxel object data may be a portion of the main voxel data used for generating game images, out of the main voxel data for the entire game space. The processor 81 may, for example, generate an image of an object using main voxel data for only a portion of the game space (for example, a portion within a predetermined distance from the virtual camera's position). In this case, the main voxel object data may include the voxel data within that portion. Furthermore, when main voxel data for a portion of the game space is written, the same processing as in step S2 is executed at an appropriate timing during the execution of the series of processes in steps S4 to S10 described later (for example, when the virtual camera's position moves by a predetermined distance or more).
[0192] In step S3, the processor 81 generates meshes for objects placed in the game space. Meshes for voxel objects are generated according to the method described in "[2-2. Meshes]" above. Here, the processor 81 generates meshes based on the main voxel object data and sub-voxel object data stored in the DRAM 85 and stores them in the DRAM 85 as main mesh data or sub-voxel data. The process in step S3 results in the construction of voxel objects in the game space. For objects that are not voxel objects (for example, the non-voxel parts of the enemy character 221), meshes are generated based on bones, for example. After step S3, the game starts, and the series of processes in steps S4 to S8 are repeatedly executed during the game.
[0193] In step S4, the processor 81 controls the behavior of objects other than the enemy character 221. These "other objects" include, for example, the player object and other enemy characters other than the enemy character 221 (for example, enemy characters that do not have voxel parts). The processor 81 controls the behavior of the player object based on operation data received from each controller 3 or 4, or controls the behavior of the other enemy characters based on an algorithm defined in the game program. The processing in step S5 is executed after step S4.
[0194] In step S5, the processor 81 determines whether or not to deform the voxel object. For example, the processor 81 determines whether or not an event has occurred that deforms the voxel object, such as the voxel portion 222 of the enemy character 221 or the terrain object. If the result of the determination in step S5 is positive, the processing in step S6 is executed. On the other hand, if the result of the determination in step S5 is negative, the processing in step S6 is skipped and the processing in step S7 is executed.
[0195] In step S6, the processor 81 updates the voxel data for the voxel object that has been determined to be deformed. Specifically, the processor 81 changes the density indicated by the voxel data to correspond to the deformed shape of the voxel object. The processor 81 also updates the voxel object data stored in the DRAM 85 to reflect the changed density. The process in step S7 is executed after step S6.
[0196] In step S7, the processor 81 performs enemy character processing to control the behavior of the enemy character 221. The detailed flow of enemy character processing will be explained below with reference to Figure 28.
[0197] Figure 28 is a subflowchart showing an example of a detailed flow of enemy character processing in step S7 shown in Figure 27. In enemy character processing, first in step S11, the processor 81 determines whether or not the voxel portion 222 of the enemy character 221 has been deformed. That is, the processor 81 determines whether or not the voxel data of the voxel portion 222 was updated in step S6. If the result of the determination in step S11 is positive, the processing in step S12 is executed. On the other hand, if the result of the determination in step S11 is negative, the series of processes from steps S12 to S14 are skipped, and the processing in step S15, which will be described later, is executed.
[0198] In step S12, the processor 81 calculates the center of gravity of the deformed voxel portion 222. That is, the processor 81 calculates the position of the new center of gravity according to the method described in "[2-4-2. Process for tilting enemy characters]" above. The process in step S13 is executed after step S12.
[0199] In step S13, the processor 81 determines the direction and amount of tilt for the voxel portion 222 based on the position of the center of gravity calculated in step S12. These tilt directions and amounts are determined according to the method described in "[2-4-2. Process for tilting enemy characters]" above. The process in step S14 is executed after step S13.
[0200] In step S14, the processor 81 changes the tilt of the enemy character 221. Specifically, the processor 81 tilts the enemy character 221 based on the direction and amount of tilt determined in step S13. Specifically, as described in "[2-4-2. Process of tilting the enemy character]" above, the voxel portion 222 and the non-voxel portion above the reference position are tilted in the determined direction and by the determined amount. At this time, the processor 81 stores data indicating the changed tilt of the enemy character 221 as the tilt data in the DRAM 85. The process in step S15 is executed after step S14.
[0201] In step S15, the processor 81 determines whether or not to have the enemy character 221 perform a walking motion. For example, the action that the enemy character 221 should perform is determined based on an algorithm defined in the game program. If the conditions for performing a walking motion are met in the algorithm, it is determined that the enemy character 221 should perform a walking motion. If the result of the determination in step S15 is affirmative, the processing in step S16 is executed. On the other hand, if the result of the determination in step S15 is negative, the processing in step S16 is skipped and the processing in step S17 is executed.
[0202] In step S16, the processor 81 causes the enemy character 221 to perform a walking motion while maintaining the current tilt. Specifically, without changing the current tilt, the processor 81 changes the position and orientation of each bone of the enemy character 221 based on the walking motion data stored in the DRAM 85. In this embodiment, the process in step S16 is executed once per frame. Therefore, in one step S16 process, the processor 81 changes the position and orientation of each bone by the amount of change for one frame. At this time, the processor 81 updates the bone data stored in the DRAM 85 to show the changed position and orientation of each bone.
[0203] Furthermore, in step S16, the processor 81 changes the position and orientation of the voxel portion 222 according to the position and orientation of each bone. For example, the position and orientation of the voxel portion 222 can be changed by changing the position and orientation of the sub-voxel space related to the voxel portion 222. At this time, the processor 81 updates the voxel data of the voxel portion 222 stored in the DRAM 85. The processing in step S17 is executed after step S16.
[0204] In step S17, the processor 81 determines whether or not to have the enemy character 221 perform an attack action. For example, if the conditions for performing an attack action in the above algorithm are met, it is determined that the enemy character 221 should perform an attack action. If the result of the determination in step S17 is affirmative, the processing in step S18 is executed. On the other hand, if the result of the determination in step S17 is negative, the processing in step S18 is skipped and the processing in step S19 is executed.
[0205] In step S18, the processor 81 causes the enemy character 221 to perform an attack action with a reference tilt. Specifically, the processor 81 uses the tilt of the enemy character 221 as the reference tilt and changes the position and orientation of each bone of the enemy character 221 based on the attack motion data stored in the DRAM 85. The reference tilt can be determined by referring to the tilt reference value data stored in the DRAM 85. In step S18, as in step S16, the processor 81 changes the position and orientation of each bone by the amount of change for one frame in a single step S18 process. The processor 81 also changes the position and orientation of the voxel portion 222 according to the position and orientation of each bone. The processor 81 updates the bone data stored in the DRAM 85 to show the changed position and orientation of each bone, and updates the voxel data stored in the DRAM 85 to show the changed position and orientation of the voxel portion 222. The process of step S19 is executed after the process of step S18.
[0206] In step S19, the processor 81 determines whether the core 227 of the enemy character 221 has been attacked. If the result of the determination in step S19 is positive, the processing in step S20 is executed. On the other hand, if the result of the determination in step S19 is negative, the processor 81 terminates the enemy character processing shown in Figure 28.
[0207] In step S20, the processor 81 removes the enemy character 221 from the game space. At this time, the processor 81 deletes the sub-voxel space data and sub-voxel object data related to the enemy character 221 from the DRAM 85. After the completion of the process in step S20, the processor 81 terminates the enemy character processing shown in Figure 28.
[0208] Returning to the explanation of Figure 27, the processing of step S8 is executed after the enemy character processing in step S7. In step S8, the processor 81 updates the mesh for voxel objects whose voxel data was modified in step S6 or S7 (specifically, in step S16 or S18). That is, the processor 81 generates a mesh based on the modified voxel data. This allows the mesh of voxel objects to be dynamically changed during the game. The processor 81 also updates the mesh data (i.e., main mesh data and sub-mesh data) stored in the DRAM 85 to reflect the newly generated mesh. The processing of step S9 is executed after step S8.
[0209] In step S9, the processor 81 generates a game image representing the game space and displays it on the display device. Specifically, the processor 81 generates a game image representing the game space, including voxel objects and other objects (for example, the non-voxel portion of the enemy character 221). The image of the voxel object is generated using the voxel object data and mesh data stored in the DRAM 85, according to the method described in "[2-2. Mesh]" above. The processor 81 displays the generated game image on the display device. During the game, the process in step S9 is repeatedly executed at a rate of once every predetermined time (for example, 1 frame time). The process in step S10 is executed after step S9.
[0210] In step S10, the processor 81 determines whether or not to terminate the game. For example, the processor 81 determines whether or not the user has given an instruction to terminate the game. If the result of the determination in step S10 is negative, the process in step S4 is executed again. Thereafter, the series of processes from steps S4 to S10 are repeatedly executed until it is determined in step S10 that the game should be terminated. On the other hand, if the result of the determination in step S10 is positive, the processor 81 terminates the game process as shown in Figure 27.
[0211] [4. Effects and Modifications of This Embodiment] As described above, in the above embodiment, the information processing system (specifically, the game system 1) is configured to include the following means. • Mesh generation means (steps S3 and S8) that generates a mesh of a character object (e.g., enemy character 221) based on voxel data relating to the character object within the virtual space. • Motion control means (steps S16 and S18) that controls the movement of a character object using first motion data (e.g., walking motion data) - Voxel data update means (step S6) that updates the voxel data related to a character object when an event occurs to the character object (for example, an event that deforms voxel portion 222). Image generation means (step S9) for generating an image of a virtual space, including an image of a character object's mesh, for output to a display device. In the above configuration, when the voxel data is updated, the mesh generation means generates a mesh of the character object based on the updated voxel data (step S8). When an event occurs, the motion control means controls the movement of the character object using the first motion data, with the tilt of at least a part of the character object (for example, the voxel portion 222 and a part of the non-voxel portion 223) changed relative to the virtual space (step S16).
[0212] According to the above configuration, by controlling the movement of the character object while changing its tilt when the voxel data is updated, the character object can be made to move naturally. Furthermore, by using the same motion data for both the state where the tilt is changed and the state where it is not, the amount of motion data can be reduced. Therefore, according to the above embodiment, the object can move naturally with less motion data.
[0213] Furthermore, in the above embodiment, when voxel data is updated, the information processing system calculates the centroid of the character object with respect to at least the portion that includes the part generated by the updated voxel data, based on the updated voxel data (step S12). Then, based on the change in the centroid before and after the event occurs, the information processing system determines the direction in which to change the tilt of at least a part of the character object (step S13, Figures 22 and 24). According to the above, by calculating the centroid based on voxel data, the processing load for calculation can be reduced. Also, by determining the direction of tilt according to the centroid, the object can be made to move in a natural manner.
[0214] Furthermore, the phrase "centroid of the character object with respect to at least the portion that includes the portion generated by voxel data" above refers to the centroid of the character object calculated with respect to the portion that includes the said portion. In other words, the centroid may be the centroid of the said portion, or the centroid of the said portion and the portion whose slope changes together with the said portion (for example, a part of the non-voxel portion 223), or the centroid of the entire character object.
[0215] (Variations of the character object) In the above embodiment, the case of controlling the movement of an enemy character was described as an example of a character object. Here, the type and appearance of the character object are arbitrary and are not limited to enemy characters. For example, the information processing system may perform tilt control and movement control in the above embodiment for a player object operated by the player. Furthermore, although the enemy character was a bipedal character object, the information processing system may, for example, perform tilt control and movement control in the above embodiment for a quadrupedal character object or a flying character object. In the case of a quadrupedal character object, the information processing system may change the tilt of the character object only in the rotation direction around an axis parallel to the front-back direction, and not change the tilt of the character object in the rotation direction around an axis parallel to the left-right direction. Furthermore, in the case of a flying character object, the information processing system may cause the character object to perform a flapping motion while the tilt is changed.
[0216] In other embodiments, the information processing system may not have some of the configurations in the above embodiments, nor may it perform some of the processes executed in the above embodiments. For example, in order to achieve some of the specific effects in the above embodiments, the information processing system may have to have the configurations necessary to achieve those effects and perform the processes necessary to achieve those effects, but it may not have to have other configurations or perform other processes. [Industrial applicability]
[0217] The above embodiment can be used, for example, as a game system or game program, with the aim of enabling objects to perform natural movements with minimal motion data. [Explanation of Symbols]
[0218] 1. Game System 2. Main unit 3 Left controller 4 Right controller 81 processors 221 Enemy Characters 222 Voxel portion 223 Non-voxel portion 225 bones 226 Joint 227 cores 231 Center of gravity
Claims
1. An information processing program executed in a computer of an information processing device, wherein the computer A mesh generation means that generates a mesh of a character object based on voxel data relating to the character object within a virtual space, Motion control means for controlling the movement of the character object using first motion data, A voxel data update means that updates the voxel data relating to the character object when an event occurs with respect to the character object, The image generation means functions to generate an image of the virtual space, including an image of the mesh of the character object drawn, for output to a display device. When the voxel data is updated, the mesh generation means generates the mesh of the character object based on the updated voxel data. The motion control means is an information processing program that, when the event occurs, controls the movement of the character object using the first motion data while changing the inclination of at least a portion of the character object relative to the virtual space.
2. The aforementioned information processing program is If the voxel data is updated, the computer is further configured as a centroid calculation means to calculate the centroid of the portion of the character object that includes at least the portion generated by the voxel data, based on the updated voxel data. The information processing program according to claim 1, wherein the motion control means determines the direction in which to change the tilt of at least a portion of the character object based on the change in the center of gravity before and after the occurrence of the event.
3. The information processing program according to claim 2, wherein, when a straight line passing through at least a portion of the character object and parallel to the direction of gravity in the virtual space is used as the reference axis, the motion control means changes the inclination of the character object so that, when the event occurs, it rotates at least a portion of the character object around a reference position set on the character object so that the portion on the side where the center of gravity of the character object after the voxel data update is located approaches the direction of gravity with respect to the reference axis.
4. The information processing program according to claim 2, wherein, when a straight line passing through at least a portion of the character object and parallel to the direction of gravity in the virtual space is used as the reference axis, the motion control means changes the inclination of the character object so that, when the event occurs, it rotates at least a portion of the character object around a reference position set on the character object so that the center of gravity of the character object after the voxel data update approaches the reference axis.
5. The information processing program according to claim 3, wherein the reference axis is a straight line that passes through a position different from the reference position and is parallel to the direction of gravity in the virtual space.
6. The information processing program according to claim 3, wherein the reference axis is a straight line that passes through the centroid of the character object before the voxel data is updated and is parallel to the direction of gravity in the virtual space.
7. The character object has a portion associated with a bone set on the character object, The information processing program according to claim 3, wherein the motion control means causes the character object to perform an action by moving the bones according to the first motion data.
8. The character object has a first part whose shape is defined based on the voxel data, and a second part which is different from the first part and is associated with the bone. The information processing program according to claim 7, wherein the motion control means changes the inclination of at least a part of the character object, namely the first part and a part of the second part, when the event occurs.
9. The information processing program according to claim 7, wherein the reference position is the position of the joint at the waist of the character object among the joints connecting the bones.
10. The first motion data represents the walking motion of the character object, according to the information processing program according to any one of claims 1 to 9.
11. The motion control means provides an upper limit on the angle at which the character object is tilted, as described in any one of claims 1 to 9.
12. The information processing program according to any one of claims 1 to 9, wherein the voxel data updating means updates the voxel data to reduce the volume of the character object when the event occurs.
13. The information processing program according to any one of claims 1 to 9, wherein the voxel data updating means updates the voxel data to increase the volume of the character object when the event occurs.
14. The motion control means is The movement of the character object is further controlled using second motion data, which is different from the first motion data. The information processing program according to any one of claims 1 to 9, wherein, when the aforementioned event occurs, the tilt of the character object when controlling the movement of the character object using the first motion data and the tilt of the character object when controlling the movement of the character object using the second motion data are set to different values.
15. The information processing program according to claim 14, wherein the motion control means controls the movement of the character object using the second motion data, when the event occurs, by setting the tilt of the character object to the same tilt as before the event occurred.
16. The aforementioned character object is an enemy character object, and has a core inside the voxel object portion whose shape is defined based on the voxel data. The aforementioned event is that the enemy character object is attacked, The information processing program according to any one of claims 1 to 9, wherein the computer further functions as a character elimination means for eliminating the entire enemy character object when the core is under attack.
17. A mesh generation means that generates a mesh of a character object based on voxel data relating to the character object within a virtual space, Motion control means for controlling the movement of the character object using first motion data, A voxel data update means that updates the voxel data relating to the character object when an event occurs with respect to the character object, The system includes an image generation means for generating an image of the virtual space, including an image of the mesh of the character object drawn, for output to a display device. When the voxel data is updated, the mesh generation means generates the mesh of the character object based on the updated voxel data. The motion control means is an information processing system that, when the event occurs, controls the movement of the character object using the first motion data while changing the inclination of at least a portion of the character object relative to the virtual space.
18. A mesh generation means that generates a mesh of a character object based on voxel data relating to the character object within a virtual space, Motion control means for controlling the movement of the character object using first motion data, A voxel data update means that updates the voxel data relating to the character object when an event occurs with respect to the character object, The system includes an image generation means for generating an image of the virtual space, including an image of the mesh of the character object drawn, for output to a display device. When the voxel data is updated, the mesh generation means generates the mesh of the character object based on the updated voxel data. The motion control means is an information processing device that, when the event occurs, controls the movement of the character object using the first motion data while changing the inclination of at least a portion of the character object relative to the virtual space.
19. An information processing method performed by an information processing system, A mesh generation step in which a mesh of a character object is generated based on voxel data relating to the character object within a virtual space, A motion control step that controls the movement of the character object using first motion data, When an event occurs with respect to the character object, a voxel data update step is performed to update the voxel data relating to the character object. The system includes an image generation step of generating an image of the virtual space, which includes an image of the mesh of the character object drawn, for output to a display device. In the mesh generation step, if the voxel data is updated, the mesh of the character object is generated based on the updated voxel data. In the motion control step, when the event occurs, an information processing method is provided which, using the first motion data, controls the movement of the character object while changing the inclination of at least a portion of the character object relative to the virtual space.