Information processing system, information processing program, information processing method, and information processing device.

The system combines placement, selection, and bonding means to facilitate the bonding of multiple virtual objects in a game environment, enhancing usability by employing adhesive and bonding object generation, with features like priority bonding areas, collision detection, and projection means to improve usability.

JP2026099944APending Publication Date: 2026-06-18NINTENDO CO LTD

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
NINTENDO CO LTD
Filing Date
2026-04-06
Publication Date
2026-06-18

AI Technical Summary

Technical Problem

Existing systems for combining multiple virtual objects in a game environment lack usability improvements, particularly in how users manipulate and bond these objects effectively.

Method used

An information processing system that includes placement, selection, bonding object generation, and adhesive means to facilitate the bonding of virtual objects, with features like priority bonding areas, collision detection, projection, and shadow generation to enhance user experience and improve usability when manipulating and bonding multiple virtual objects, with features like priority bonding areas, collision detection, and projection, and shadow generation to enhance usability.

Benefits of technology

The system addresses the usability of combining multiple virtual objects in a game environment, enhancing user experience and improving the usability of bonding multiple virtual objects, with features like priority bonding areas, collision detection, and projection means to enhance usability.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026099944000001_ABST
    Figure 2026099944000001_ABST
Patent Text Reader

Abstract

This system provides an information processing system that can improve usability when connecting virtual objects to generate an object consisting of multiple virtual objects. [Solution] An example of an information processing system involves attaching a first object from among a plurality of virtual objects to a second object from among a plurality of virtual objects at their respective attachment points. A priority attachment point set on at least one of the first object and the second object is given priority over other parts and is used as the attachment point.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to an information processing system, an information processing program, an information processing method, and an information processing apparatus capable of combining a plurality of virtual objects by a user's operation.

Background Art

[0002] Conventionally, there has been a game system that forms a plurality of objects integrally by moving an operation target object and bringing it into contact with an object existing in a virtual space (see, for example, Patent Document 1).

Prior Art Documents

Patent Documents

[0003]

Patent Document 1

Summary of the Invention

Problems to be Solved by the Invention

[0004] However, in the case of generating an object composed of a plurality of virtual objects by a user's operation using a plurality of individual virtual objects, there is room for improvement from the viewpoint of improving usability.

[0005] Therefore, an object of the present invention is to provide an information processing system, an information processing program, an information processing method, and an information processing apparatus capable of improving usability when generating an object composed of a plurality of virtual objects using a plurality of individual virtual objects.

Means for Solving the Problems

[0006] In order to solve the above problems, the present invention employs the following configuration.

[0007] An example of the information processing system of this embodiment includes: placement means for arranging a plurality of virtual objects that are movable in the game space and can be bonded to each other in the game space; selection means for selecting a first object from the plurality of virtual objects arranged in the game space by a user selection operation; bonding object generation means for generating bonding objects that indicate the respective positions of the first object selected by the selection operation and the second object from the plurality of virtual objects; and bonding means for bonding the first object and the second object at the respective positions indicated by the bonding objects in response to a bonding instruction from the user. The bonding object generation means changes the respective positions indicated by the bonding objects in response to the selected first object moving or changing its orientation in the game space before the bonding instruction is made. Another example of the information processing system of this embodiment includes object manipulation means for moving or changing the orientation of a first object in a game space in response to user operation, and adhesive means for bonding the first object and a second object placed in the game space to each other at their respective bonding positions, corresponding to the position or orientation of the first object relative to the second object, wherein the adhesive means prioritizes bonding a preferred bonding portion set on at least one of the first object and the second object to the other object as the bonding position, over other parts of the object.

[0008] According to the above, when a user combines multiple virtual objects to form an object consisting of multiple virtual objects, the user experience can be improved.

[0009] Furthermore, the information processing system may further include control means for determining a collision between the first object and the second object when the first object moves, and for controlling the movement of at least one of the first object and the second object if a collision occurs.

[0010] According to the above, collision detection is performed when assembling the first and second objects, and the behavior of each object is controlled. This allows the user to assemble the first and second objects while being aware of the distance between them.

[0011] Furthermore, the information processing system may further include projection means for generating a projected image obtained by projecting the first object onto the surface of the second object.

[0012] According to the above, the positional relationship between the first object and the second object can be easily recognized by the user.

[0013] Furthermore, the projection means may generate a first projection image obtained by projecting the selected first object in a first direction, and a second projection image obtained by projecting the selected first object in a second direction perpendicular to the first direction.

[0014] As described above, since the first object can be projected in two orthogonal directions, the user can more easily recognize the positional relationship between the first and second objects.

[0015] Furthermore, the above-described information processing system may further include shadow generation means that generates a shadow of the first object, separate from the projected image, based on a light source set in the game space.

[0016] According to the above, it is possible to generate the shadow and projected image of the first object.

[0017] Furthermore, the selected first object may be displayed in a predetermined color, and the projected image of the first object may be displayed in the predetermined color.

[0018] As described above, since the first object and its projected image are displayed in the same color, the user can easily recognize that the projected image on the surface of the second object is the projected image of the first object, and can easily recognize the positional relationship between the first and second objects.

[0019] Furthermore, the virtual object may have designated priority bonding areas that are easier to bond than other parts.

[0020] According to the above, multiple virtual objects can be preferentially bonded to the priority bonding area.

[0021] Furthermore, if the preferred adhesive portion of the first object and the preferred adhesive portion of the second object satisfy the first condition, the adhesive object generating means may generate an adhesive object that indicates the preferred adhesive portion of the first object and the preferred adhesive portion of the second object. If the preferred adhesive portion of the first object and the preferred adhesive portion of the second object do not satisfy the first condition, the adhesive object generating means may generate an adhesive object that indicates the respective positions in the first object and the second object that satisfy the second condition.

[0022] According to the above, if the preferred bonding areas of both the first object and the second object satisfy the first condition, the first object and the second object can be bonded together at these preferred bonding areas. If the first condition is not met, the first object and the second object can be bonded together at positions on both objects that satisfy the second condition.

[0023] Also, when the priority adhesion part of the first object and the priority adhesion part of the second object satisfy a first condition, the adhesion object generation means may generate the adhesion object indicating the priority adhesion part of the first object and the priority adhesion part of the second object. When the priority adhesion part is not set in at least one of the first object and the second object, the adhesion object generation means may generate the adhesion object indicating each position satisfying a second condition in the first object and the second object.

[0024] According to the above, when the priority adhesion part of the first object and the priority adhesion part of the second object satisfy the first condition, the priority adhesion parts can be preferentially adhered to each other. Also, when the priority adhesion part is not set in at least one of the first object and the second object, the first object and the second object can be adhered at positions satisfying the second condition in the first object and the second object.

[0025] Further, when the adhesion means adheres the first object and the second object at each of the priority adhesion parts, the posture of at least one of the first object and the second object may be adjusted using a predetermined direction based on each priority adhesion part, and the first object and the second object may be adhered.

[0026] According to the above, when adhering the priority adhesion parts to each other, the posture of the first object or the second object can be adjusted using a predetermined direction based on each priority adhesion part. For example, based on the direction set for each priority adhesion part, the posture of each object can be adjusted and each object can be adhered.

[0027] Further, when the adhesion means adheres the first object and the second object at each of the priority adhesion parts, the first object and the second object may be adhered so that the normal directions of each priority adhesion part are parallel.

[0028] According to the above, the normal directions of each priority bonding area can be aligned, and for example, the orientation of the first and second objects can be adjusted so that one face of the first object and one face of the second object are parallel, allowing the two objects to be bonded together.

[0029] Furthermore, when the adhesive means adheres the first object and the second object at the respective priority adhesive portion, the adhesive means may adhere the first object and the second object such that the tangential direction set at the priority adhesive portion of the first object and the tangential direction set at the priority adhesive portion of the second object are at a predetermined angle.

[0030] According to the above, the orientation of the first and second objects can be adjusted so that the tangential direction set for each priority bonding point is at a predetermined angle, thereby bonding the two objects together.

[0031] Furthermore, the adhesive object may be an object that connects the position of the first object and the position of the second object.

[0032] Based on the above, the user can intuitively understand that the first object and the second object are bonded together at the bonding position indicated by the bonding object.

[0033] Furthermore, the selection means may select either the first object or the second object when the first object and the second object are bonded together. The bonded object generation means may generate bonded objects that indicate the respective positions of the selected virtual object and the third object among the plurality of virtual objects. The bonding means may bond the selected virtual object and the third object at the respective positions indicated by the bonded objects, in response to a bonding instruction from the user.

[0034] According to the above, the user can easily attach a third object to an object consisting of the first and second objects at a desired position.

[0035] Furthermore, a cover object may be displayed that covers the bonding position between the first object and the second object, which are bonded together by the adhesive means.

[0036] As described above, a cover object is displayed at the position where the first object and the second object are bonded, thereby allowing the user to recognize the bonded position.

[0037] Furthermore, after the first object and the second object are bonded together by the adhesive means at the position indicated by the adhesive object, the adhesive object may remain at that position as the cover object.

[0038] According to the above, the adhesive object can remain as a cover object even after the adhesive instruction has been given.

[0039] Furthermore, after the first object and the second object are bonded together by the bonding means at the position indicated by the bonding object, the bonding object may remain in a predetermined range including that position.

[0040] According to the above, even after the first and second objects have been joined together, it is possible to indicate that they were joined together by user action.

[0041] Furthermore, when the adhesive means adheres the first object and the second object, it may also adhere the first object and the second object by moving them closer together.

[0042] According to the above, when attaching the first object and the second object, they can be moved while bringing them closer together.

[0043] Furthermore, each of the multiple virtual objects may be assigned a weight. The adhesive means may move the first object and the second object such that the lighter object travels a longer distance than the heavier object.

[0044] According to the above, users can understand the relationship between the weights of two virtual objects, for example, by observing how the two virtual objects behave when they are joined together.

[0045] Furthermore, the bonding means may generate a combined object by bonding a plurality of the virtual objects in response to the bonding instruction. The information processing system may further include: a detachment means for detaching at least one virtual object from a combined object which includes a plurality of the virtual objects; a combined object information calculation means for calculating and storing combined object information relating to the combined object based on the plurality of virtual objects which constitute the combined object; and an operation control means for controlling the operation of the combined object based on the combined object information. The combined object information calculation means may calculate and store the combined object information each time the virtual objects are bonded by the bonding means, and may calculate and store the combined object information each time the virtual objects are detached from the combined object by the detachment means.

[0046] According to the above, when calculating the behavior of a combined object, it is possible to calculate the behavior of the combined object using the combined object information without having to check the adhesion between the multiple virtual objects included in the combined object each time.

[0047] Furthermore, another invention may be an information processing program that causes the computer of the information processing device to function as each of the above means. Also, another invention may be an information processing method performed in the above information processing system. [Brief explanation of the drawing]

[0048] [Figure 1] This diagram shows an example of the main unit 2 with the left controller 3 and right controller 4 attached. [Figure 2] This diagram shows an example of the state in which the left controller 3 and right controller 4 have been removed from the main unit 2. [Figure 3] A six-view drawing showing an example of the main unit 2. [Figure 4] A six-view drawing showing an example of the left controller 3. [Figure 5] A six-view drawing showing an example of the right controller 4. [Figure 6] Block diagram showing an example of the internal configuration of the main unit 2. [Figure 7] Block diagram showing an example of the internal configuration of the main unit 2, left controller 3, and right controller 4. [Figure 8] This figure shows an example of a game image that will be displayed when the game of this embodiment is run. [Figure 9] This diagram shows an example of a game image illustrating a user selecting engine object 70a. [Figure 10] This figure shows an example of a game image after the user character PC has moved diagonally upwards from the position shown in Figure 9. [Figure 11] This figure shows an example of a game image after the user character PC has moved further in the depth direction from the position shown in Figure 10. [Figure 12] Figure 11 shows an example of a game image after the user has given a bonding instruction in the state shown in Figure 11. [Figure 13] This diagram shows an example of an airplane object 75 as a combined object composed of an engine object 70a and a wing object 70b. [Figure 14] This image shows an example of a game screenshot immediately after selecting wheel object 70c. [Figure 15] This figure shows an example of a game image after selecting wheel object 70c and changing its orientation. [Figure 16] This diagram shows an example of a game image when the selected wheel object 70c is brought close to the plate object 70d. [Figure 17] This diagram shows an example of a game image after the wheel object 70c has been attached to the plate object 70d. [Figure 18] This diagram shows an example of selecting a plate object 70d that makes up the combined object 76 and attaching a wheel object 70c to the plate object 70d. [Figure 19] A diagram showing an example of a four-wheeled vehicle object 76 as a combined object. [Figure 20]This image shows an example of a game screenshot immediately after selecting a rock object weighing 70g. [Figure 21] This diagram shows an example of a game image when the selected rock object 70g is brought close to the box object 70f. [Figure 22] Figure 21 shows an example of a game image when a 70g rock object is moved from its current state. [Figure 23] Figure 22 shows an example of a game image when the bonding instruction is given. [Figure 24] A diagram showing an example of the basic shape of adhesive object 78. [Figure 25] A diagram illustrating how to deform the adhesive object 78. [Figure 26] A diagram illustrating how to deform the adhesive object 78. [Figure 27] A diagram illustrating how to deform the adhesive object 78. [Figure 28] A diagram illustrating how to deform the adhesive object 78. [Figure 29] A diagram illustrating the generation of a bonded object 78 when two virtual objects 70 are bonded at the preferred bonded area BP. [Figure 30] This diagram shows the positional relationship before and after the bonding instruction is given when two virtual objects 70 are bonded at the priority bonding area BP. [Figure 31] A diagram illustrating an example where the orientation of a selected object is controlled according to the tangent vector TL. [Figure 32] This diagram shows an example of what happens when a debonding operation is performed on two virtual objects 70 that are bonded together. [Figure 33] This diagram shows an example of how a selected object moves when the orientation of the virtual camera (VC) is changed to the right. [Figure 34] This diagram shows an example of what happens when an input is made that does not meet the predetermined release conditions while two virtual objects 70 are attached together. [Figure 35]This diagram shows an example of debonding when a debonding operation is performed on four virtual objects 70 that are bonded together. [Figure 36] This diagram shows an example of data stored in the memory of the main unit 2 during game processing. [Figure 37] A flowchart showing an example of game processing performed by the processor 81 of the main unit 2. [Figure 38] A flowchart showing an example of the combined object generation process in step S106. [Figure 39] A flowchart showing an example of the adhesive object generation process in step S152. [Figure 40] A flowchart showing an example of the de-adhesion process in step S108. [Modes for carrying out the invention]

[0049] 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 main unit of the game device 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.

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

[0051] 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".

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

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

[0054] 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 enables multi-touch input (for example, a capacitive touch panel).

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

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

[0057] As shown in Figure 3, the main unit 2 is provided 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 installed.

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

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

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

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

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

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

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

[0065] Furthermore, the right controller 4 is equipped with a terminal 64 for wired communication between the right controller 4 and the main unit 2.

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

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

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

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

[0070] The processor 81 performs the above-mentioned information processing by appropriately reading and writing data to the flash memory 84 and DRAM 85, as well as to each of the above-mentioned storage media.

[0071] The main unit 2 includes a network communication unit 82. The network communication unit 82 is connected to the processor 81. The network communication unit 82 communicates with external devices via a network (specifically, wirelessly). In this embodiment, the network communication unit 82 communicates with external devices by connecting to a wireless LAN using a method compliant with the Wi-Fi standard as a first communication mode. The network communication unit 82 also communicates wirelessly with other main units 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.

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

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

[0074] The main unit 2 includes a touch panel controller 86, which is a circuit that controls the touch panel 13. The touch panel controller 86 is connected between the touch panel 13 and the processor 81. Based on signals from the touch panel 13, the touch panel controller 86 generates data indicating, for example, the position where a touch input occurred, and outputs it to the processor 81.

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

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

[0077] Furthermore, the main unit 2 is equipped with an acceleration sensor 89. In this embodiment, the acceleration sensor 89 detects the magnitude of acceleration along a predetermined three-axis direction (for example, the x, y, and z axes shown in Figure 1). Note that the acceleration sensor 89 may also detect acceleration in one axis direction or two axis directions.

[0078] Furthermore, the main unit 2 is equipped with an angular velocity sensor 90. In this embodiment, the angular velocity sensor 90 detects angular velocity around three predetermined axes (for example, the x, y, and z axes shown in Figure 1). The angular velocity sensor 90 may also detect angular velocity around one axis or two axes.

[0079] The acceleration sensor 89 and the angular velocity sensor 90 are connected to the processor 81, and the detection results from the acceleration sensor 89 and the angular velocity sensor 90 are output to the processor 81. Based on the detection results from the acceleration sensor 89 and the angular velocity sensor 90, the processor 81 can calculate information regarding the movement and / or orientation of the main unit 2.

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

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

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

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

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

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

[0086] The communication control unit 101 acquires information related to input (specifically, information related to operation or detection results from sensors) from each input unit (specifically, each button 103, analog stick 32, and each sensor 104 and 105). The communication control unit 101 transmits operation data, including the acquired information (or information obtained by performing a predetermined processing on the acquired information), to the main unit 2. The operation data is transmitted repeatedly at a rate of once per predetermined time. The interval at which information related to input is transmitted to the main unit 2 may or may not be the same for each input unit.

[0087] When the above operation data is transmitted to the main unit 2, the main unit 2 can obtain the input made to the left controller 3. That is, the main unit 2 can determine the operation of each button 103 and the analog stick 32 based on the operation data. In addition, the main unit 2 can calculate information regarding the movement and / or posture of the left controller 3 based on the operation data (specifically, the detection results of the acceleration sensor 104 and the angular velocity sensor 105).

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

[0089] 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 terminal 64. The communication control unit 111 and memory 112 have the same functions as the communication control unit 101 and memory 102 of the left controller 3.

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

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

[0092] (Game Overview) Next, the game of this embodiment will be described. In the game of this embodiment, a user character PC is placed in a virtual space (game space), and the game progresses as the user character PC moves around in the virtual space, performs predetermined actions, and defeats enemy characters. A virtual camera is placed in the virtual space. The virtual camera is positioned so that the user character PC is included in its imaging range. For example, the virtual camera may be set behind the user character PC. A game image including the user character PC is generated using the virtual camera and displayed on the display 12 or a stationary monitor.

[0093] Figure 8 shows an example of a game image displayed when the game of this embodiment is executed. As shown in Figure 8, the virtual space contains a user character PC and multiple virtual objects 70 (70a to 70g). Although not shown in the illustration, the virtual space also contains objects such as trees and buildings that are fixed to the virtual space.

[0094] The user character PC is a character controlled by the user. The user character PC moves around the virtual space and performs predetermined actions in response to input from the controller (3 or 4). The user character PC also combines multiple virtual objects 70 to create a combined object.

[0095] Multiple virtual objects 70 are objects that can move within the virtual space in response to user operations and can adhere to one another. Multiple virtual objects 70 can combine to form a single object by adhering to one another. For example, multiple virtual objects 70 are pre-placed on the ground of the virtual space. Multiple virtual objects 70 may also appear in the virtual space based on user operations. For example, virtual objects 70 may appear in the virtual space when a user character PC defeats an enemy character or clears a predetermined task. Alternatively, multiple virtual objects 70 may be managed as items owned by the user character PC and are not normally placed in the virtual space, but may be stored as material objects within the user character PC's virtual storage area. When user operations are performed, the virtual objects 70 stored within the storage area may appear in the virtual space.

[0096] Users can create combined objects by combining multiple virtual objects 70. For example, users can create vehicles, tanks, airplanes, etc., as combined objects, and use the created combined objects to progress through the game. For example, users can use the created combined objects to move around in the virtual space or to attack enemy characters.

[0097] For example, the multiple virtual objects 70 include an engine object 70a, a wing object 70b, a wheel object 70c, a plate object 70d, a control stick object 70e, a box object 70f, and a rock object 70g. In addition to these, other virtual objects may be provided to constitute the combined object.

[0098] Engine object 70a is a virtual object that mimics a jet engine and possesses power. When engine object 70a is configured as part of a combined object, it adds velocity, acceleration, and angular velocity to the entire combined object. Wing object 70b is a virtual object for flight and generates lift when moving within the virtual space at a speed above a predetermined level.

[0099] The wheel object 70c is a powered virtual object that can be configured, for example, as a wheel of a vehicle. The wheel object 70c is configured to rotate in one predetermined direction. The plate object 70d is a planar virtual object. The plate object 70d can be used, for example, as the body of a vehicle. Furthermore, by arranging multiple plate objects 70d vertically, a wall can be formed in the virtual space, or a hexahedron can be formed using multiple plate objects 70d.

[0100] The control stick object 70e is a virtual object that controls the movement of a combined object when it is configured as part of the combined object. For example, the control stick object 70e rotates the combined object and controls the direction of movement of the combined object.

[0101] Furthermore, the box object 70f is a virtual object with a cube shape, for example, and can be constructed as part of various combined objects. The rock object 70g is a virtual object with a curved surface shape, and is modeled after a rock.

[0102] As shown in Figure 8, one or more priority bonding areas BP may be set on the surface of the virtual object 70. As will be explained in more detail later, priority bonding areas BP are locations that are given priority over other parts when bonding the virtual objects 70 together.

[0103] In this embodiment, "adhesion" of virtual objects 70 means that the virtual objects 70 behave as a single object in close proximity to each other. For example, when two virtual objects 70 are adhered, the two virtual objects 70 may be in contact with each other. Also, when two virtual objects 70 are adhered, they do not have to be in direct contact; for example, there may be a gap between the two virtual objects 70, or an adhesive object, as described later, may be interposed. Furthermore, "multiple virtual objects 70 behaving as a single object" includes maintaining the relative positional relationship of the multiple virtual objects 70, and moving or changing their orientation within the virtual space as if they were a single object. Note that the relative positional relationship of the adhered multiple virtual objects 70 is not completely fixed; for example, if a force or impact is applied to any of the multiple virtual objects 70, there may be some change in their positional relationship while they remain adhered.

[0104] Priority bonding points (BPs) are pre-set for each virtual object 70 by the game creator. For example, one priority bonding point BP is set for the bottom surface of the engine object 70a. Three priority bonding point BPs are set for the top surface of the wing object 70b. Multiple priority bonding point BPs are set for the top and sides of the plate object 70d. One or more priority bonding point BPs are also pre-set for the wheel object 70c and the control stick object 70e.

[0105] On the other hand, box object 70f and rock object 70g do not have priority adhesive blueprints set.

[0106] The user can select any one of the virtual objects 70 placed in the virtual space and attach it to another virtual object 70 to create a combined object made up of multiple virtual objects 70. Figure 9 shows an example of a game image showing the user selecting an engine object 70a.

[0107] For example, the user can move their character PC within the virtual space using the analog stick 32 of the left controller 3. As the user character PC moves within the virtual space, the virtual camera also moves in accordance with the user character PC. The user can also control the orientation (viewing direction) of the virtual camera using the analog stick 52 of the right controller 4. The virtual camera moves within the virtual space so that the user character PC is included in its imaging range.

[0108] For example, a directional indicator (not shown) for pointing to a virtual object 70 is displayed in the center of the screen, and the user moves the user character PC or changes the orientation of the virtual camera to position the engine object 70a in the center of the screen. When the engine object 70a is indicated by the directional indicator (i.e., when the engine object 70a is positioned in the center of the screen), pressing a predetermined button on the left controller 3 or the right controller 4 selects the engine object 70a, as shown in Figure 9. The selected virtual object 70 is displayed in a different manner from the other virtual objects 70. For example, each virtual object 70 has its own unique color when not selected by the user, but changes to a predetermined color (e.g., yellow) when selected by the user. For example, as shown in Figure 9, the selected engine object 70a is displayed in a predetermined color (e.g., yellow) that is different from the other virtual objects 70. Alternatively, the selected virtual object 70 may be displayed in a different manner from the other virtual objects 70 by displaying an image surrounding the selected virtual object 70 or by displaying an arrow pointing to the selected virtual object 70.

[0109] In the following, a virtual object 70 selected by the user may be referred to as the "selected object." A virtual object 70 not selected by the user may be referred to as the "other virtual object 70."

[0110] Furthermore, if a virtual object 70 is selected, a selection image 77 is displayed to indicate that the virtual object 70 is selected. The selection image 77 is an image that extends from the user character PC to the selected object.

[0111] The selected engine object 70a is displayed as if floating above the ground, either by user action or automatically. When the selected engine object 70a is floating above the ground, an image 71a (projected image) of the engine object 70a is projected onto the ground. Additionally, a point 72a indicating a predetermined position (e.g., center position) of the engine object 70a is also projected onto the ground.

[0112] When the user character PC moves within the virtual space while the engine object 70a is selected, the engine object 70a also moves in accordance with the user character PC's movement. In other words, the selected object moves in accordance with the user character PC's movement.

[0113] Furthermore, as will be explained later, selected objects may move even if the user character PC's position does not change. For example, they will move if the user character PC's orientation changes. Specifically, selected objects will move in accordance with the change in the user character PC's orientation so that they are positioned in front of the user character PC. Also, selected objects may move due to a change in the distance between the user character PC and the selected object. For example, if the user character PC's orientation changes to face upwards in the virtual space, the selected object will also move upwards in the virtual space. When the user character PC faces upwards in the virtual space, the distance between the user character PC and the selected object becomes longer than when the user character PC faces parallel to the ground.

[0114] Figure 10 shows an example of a game image after the user character PC has moved diagonally upward from the position shown in Figure 9. As shown in Figure 10, when the user character PC moves, the selected engine object 70a also moves. Specifically, the user character PC moves according to the input direction of the analog stick 32 of the left controller 3, and the virtual camera also moves in accordance with the movement of the user character PC. The selected object moves in such a way that its positional relationship with the user character PC is maintained. Therefore, when the user character PC moves in a predetermined direction in the virtual space, the selected engine object 70a also moves in that predetermined direction.

[0115] Figure 11 shows an example of a game image after the user character PC has moved further in the depth direction from the position in Figure 10. As shown in Figure 11, when the user character PC moves further in the depth direction from the position in Figure 10, the engine object 70a also moves further in the depth direction. In this case, the engine object 70a is positioned above the wing object 70b which is placed on the ground. At this time, an adhesive object 78 appears that connects the engine object 70a and the wing object 70b.

[0116] Here, the adhesive object 78 is an object for bonding the selected object to the other virtual object 70, and is an object that mimics a viscous adhesive. The adhesive object 78 is an object that indicates the bonding positions of the selected object and the other virtual object 70. Here, the "bonding position" is the position where the selected object and the other virtual object 70 will touch when they are bonded together. The adhesive object 78 connects the bonding positions of the two virtual objects 70 and makes the user aware that these two virtual objects 70 will be bonded at the bonding position when the user gives a bonding instruction. The adhesive object 78 appears before the selected object and the other virtual object 70 are bonded together, when the selected object and the other virtual object 70 satisfy predetermined bonding conditions. The predetermined bonding conditions are the conditions under which the selected object and the other virtual object 70 can be bonded together. For example, the predetermined bonding conditions are determined by the distance between the selected object and the other virtual object 70, the size, shape, and orientation of the selected object and the other virtual object 70, etc. Specifically, when the selected object is moved, other virtual objects 70 that satisfy predetermined adhesion conditions are searched for. If, as a result of the search, other virtual objects 70 that can come into contact with the selected object are found, an adhesion object 78 appears that connects the selected object and the other virtual object 70. The adhesion object 78 allows the user to know which virtual object 70 the selected object will adhere to, and which positions on the selected object will adhere to which positions on the other virtual object 70, before adhesion occurs.

[0117] Furthermore, the adhesive object 78 may appear on the surface of the selected object and other virtual objects 70 in response to the selection of the virtual object 70 (i.e., the virtual object 70 being set as the selected object), and then be formed to connect the selected object and other virtual objects 70 when the selected object and other virtual objects 70 satisfy predetermined bonding conditions.

[0118] When the selected object and the other virtual object 70 satisfy predetermined bonding conditions, and both the selected object and the other virtual object 70 have priority bonding points (BPs), the priority bonding points are preferentially bonded to each other. Specifically, when the priority bonding points set on the selected object and the priority bonding points set on the other virtual object 70 satisfy the first condition (details of which will be described later), these priority bonding points are set as bonding positions. The bonded object 78 is then formed to connect these priority bonding points.

[0119] If the preferred adhesive BP set on the selected object and the preferred adhesive BP set on the other virtual object 70 do not satisfy the first condition, the preferred adhesive BP or another part will be set as the adhesive position (in this case, the preferred adhesive BP may be set as the adhesive position without being particularly distinguished from other parts). Specifically, the positions on the selected object and the other virtual object 70 that satisfy the second condition are set as adhesive positions, and an adhesive object 78 is generated that connects these adhesive positions. For example, the position that satisfies the second condition is the position where the selected object and the other virtual object 70 are closest to each other. Also, if a preferred adhesive BP is not set on at least one of the selected object and the other virtual object 70, the position on the selected object and the other virtual object 70 that satisfies the second condition (the nearest position) will be set as the adhesive position. For example, if the preferred adhesive BP of the selected object and a part of the other virtual object 70 other than the preferred adhesive part satisfy the second condition, the preferred adhesive BP of the selected object and the part of the other virtual object 70 other than the preferred adhesive part will be set as the adhesive position. Details on how to generate the adhesive object 78 will be described later.

[0120] In the example shown in Figure 11, the preferred bonding point BP of the selected engine object 70a and the preferred bonding point BP of the wing object 70b satisfy the first condition, so the bonding object 78 is shown connecting these preferred bonding point BPs.

[0121] Furthermore, as shown in Figure 11, when the engine object 70a is moved above the wing object 70b, the image 71a of the engine object 70a is projected onto the surface of the wing object 70b. By projecting the image 71 of the selected object and the center position 72 of the selected object onto the surface of other virtual objects 70, the user can recognize the positional relationship between the selected object and other virtual objects 70.

[0122] Figure 12 shows an example of a game image after a bonding command has been issued by the user in the state shown in Figure 11. As shown in Figure 12, when the priority bonding BPs are connected by the bonding object 78, if a bonding command is issued by the user (for example, by pressing operation buttons 53-56), the engine object 70a and the wing object 70b are bonded at the priority bonding BP. That is, the engine object 70a and the wing object 70b are bonded so that their priority bonding BPs overlap. When the two virtual objects 70a and 70b are bonded, at least one of them moves so that the two virtual objects 70a and 70b attract each other. After the two virtual objects 70a and 70b are bonded, the selection of the engine object 70a that was selected before the bonding command is deselected, and the display mode of the engine object 70a returns to normal. By bonding the engine object 70a and the wing object 70b, the engine object 70a and the wing object 70b are configured as a combined object, and thereafter these two virtual objects 70 operate as a single unit. In other words, after the two virtual objects 70 are bonded together, the relative positional relationship between these two virtual objects 70 does not change. The bond between the two virtual objects 70 is released when an input that satisfies predetermined release conditions is received. Details on releasing the bond between the two virtual objects 70 will be described later.

[0123] Even after the selected object and the other virtual object 70 are bonded together, the bonded object 78 remains between the selected object and the other virtual object 70. Specifically, the bonded object 78 remains along the surface surrounding the bonded position of the selected object and the surface surrounding the bonded position of the other virtual object 70. In this case, the shape of the bonded object 78 changes before the selected object and the other virtual object 70 are bonded together and after the bond is made. The change in the shape of the bonded object 78 will be described later.

[0124] Figure 13 shows an example of an airplane object 75 as a combined object composed of an engine object 70a and a wing object 70b. Figure 13 shows a user character PC flying through the air on the airplane object 75.

[0125] The behavior of the aircraft object 75 as a whole is determined by the individual components that make up the aircraft object 75 (engine object 70a and wing object 70b) and objects that do not make up the aircraft object 75 (e.g., the user character PC). Specifically, the engine object 70a has power and applies a predetermined speed (or acceleration) to the entire aircraft object 75. The wing object 70b applies a lift to the entire aircraft object 75 according to its speed. The engine object 70a, wing object 70b, and user character PC each have predetermined weights. The aircraft object 75 is also affected by the wind in the virtual space. The behavior of the aircraft object 75 as a whole can be determined by performing physical calculations based on the speed provided by the engine object 70a, the lift provided by the wing object 70b, the weight of each object, the force of the wind, etc. For example, if sufficient speed is applied by the engine object 70a and sufficient lift is provided by the wing object 70b, the aircraft object 75 will fly in the virtual space.

[0126] Furthermore, in addition to the aircraft object 75 composed of the engine object 70a and wing object 70b shown in Figure 13, other virtual objects 70 can also be attached. For example, two or more engine objects 70a can be attached to the wing object 70b. In this case, the speed of the aircraft object 75 having two or more engine objects 70a will be greater. Also, by attaching another wing object 70b next to one wing object 70b, a large wing can be formed by combining two wing objects 70b. The aircraft object 75 having two wing objects 70b can obtain greater lift and can fly even with heavier objects on board.

[0127] Next, with reference to Figures 14 to 19, we will explain how to generate a four-wheeled vehicle object as a combined object using multiple virtual objects 70. Figure 14 shows an example of a game image immediately after selecting a wheel object 70c. Figure 15 shows an example of a game image after changing the posture of the wheel object 70c after selecting it. Figure 16 shows an example of a game image when the selected wheel object 70c is brought close to the plate object 70d. Figure 17 shows an example of a game image after the wheel object 70c has been attached to the plate object 70d. Figure 18 shows an example of selecting a plate object 70d that constitutes a combined object 76 and attaching the wheel object 70c to the plate object 70d. Figure 19 shows an example of a four-wheeled vehicle object 76 as a combined object.

[0128] As shown in Figure 14, when a user makes a selection operation while the wheel object 70c, which is placed on the ground, is displayed near the center of the screen, the wheel object 70c is selected. When the selected wheel object 70c is lifted, an image 71c of the wheel object 70c is projected onto the ground. The image 71c projected onto the ground has the same shape as when the wheel object 70 is viewed from directly above in the virtual space. In addition, a point 72c indicating the center position of the wheel object 70c is projected onto the ground.

[0129] When the user performs a rotation operation in the state shown in Figure 14, the orientation of the selected wheel object 70c in the virtual space changes (Figure 15). Specifically, the orientation of the wheel object 70c is changed so that its axis of rotation (the axis on which the wheel rotates) becomes parallel to the ground. In this case, the image 71c of the wheel object 70c projected onto the ground also changes.

[0130] In the state shown in Figure 15, the user character PC is moved towards the plate object 70d. Note that Figure 15 shows an example where two wheel objects 70c are already attached to the plate object 70d.

[0131] When the user character PC moves (moves the wheel object 70c), and the wheel object 70c and the plate object 70d satisfy predetermined bonding conditions, a bonding object 78 appears that connects the wheel object 70c and the plate object 70d (Figure 16). Specifically, the bonding object 78 is generated to connect the priority bonding BP of the selected wheel object 70c with the priority bonding BP set on the side of the plate object 70d. In addition, an image 71cx of the wheel object 70c is projected onto the side of the plate object 70d.

[0132] Here, the image 71c of the selected wheel object 70c is projected onto both the ground and the side of the plate object 70d. The image 71 of the selected object is not simply a shadow cast by a light source in the virtual space, but is intended to make it easier for the user to recognize the positional relationship between the selected object and other virtual objects 70. The image 71 of the selected object is formed in the vertical, horizontal, and depth directions of the virtual space. Specifically, by projecting the selected object based on a straight line parallel to the vertical direction of the virtual space, an image 71y of the selected object in the vertical direction is formed on the ground. Also, by projecting the selected object based on a straight line parallel to the horizontal direction of the virtual camera, an image 71x of the selected object in the horizontal direction is formed on the surface of other virtual objects 70 located to the left and right of the selected object. Furthermore, by projecting the selected object based on a straight line parallel to the depth direction of the virtual space as seen from the virtual camera, an image 71z of the selected object in the depth direction is formed on the surface of other virtual objects 70 located in the depth direction of the selected object. Depending on the presence and position of a light source in the virtual space, the shadow of the virtual object 70 is also displayed separately from the image 71.

[0133] In the example shown in Figure 16, since the plate object 70d is located to the left of the selected wheel object 70c, a portion of the left-right image 71cx of the wheel object 70c is formed on the side of the plate object 70d. Additionally, point 72cx, indicating the center position of the selected wheel object 70c, is also displayed on the side of the plate object 70d.

[0134] In this way, since the selected object is projected in three directions—up and down, left and right, and depth—if other virtual objects 70 exist near the selected object, an image 71 of the selected object and a point 72 indicating its center position are displayed on the surface of those other virtual objects 70. This allows the user to easily recognize the positional relationship between the selected object and the other virtual objects 70. For example, the left and right image 71x of the selected object allows the user to recognize whether the selected object is located directly beside the other virtual object 70 or at an angle. Furthermore, the shape of the image 71 of the selected object formed on the surface of the other virtual object 70 allows the user to recognize the orientation of the selected object.

[0135] When the wheel object 70c and the plate object 70d are connected by an adhesive object 78, and the user issues an adhesive instruction, the wheel object 70c and the plate object 70d are bonded together at the priority adhesive section BP (Figure 17). This forms a combined object 76 containing three wheel objects 70c and one plate object 70d.

[0136] The user can further attach a virtual object 70 to a combined object 76 using a similar procedure. For example, the user can select another wheel object 70c placed in the virtual space and attach the selected wheel object 70c to the left side of the plate object 70d shown in Figure 17. Alternatively, as shown in Figure 18, the user can select a plate object 70d that makes up the combined object 76 and move the entire combined object 76, including the plate object 70d, closer to the wheel object 70c placed in the virtual space. Then, an adhesive object 78 will appear connecting the priority adhesive point BP of the plate object 70d and the priority adhesive point BP of the wheel object 70c. The user can then attach the wheel object 70c to the selected plate object 70d using the adhesive command.

[0137] This generates a combined object 76 having four wheel objects 70c. Furthermore, when a control stick object 70h is attached to the plate object 70d, a four-wheeled vehicle object 76, as shown in Figure 19, is generated as a combined object.

[0138] As shown in Figure 19, the four-wheeled vehicle object 76 includes a plate object 70d that constitutes the vehicle body, four wheel objects 70c that constitute the wheels, and a steering stick object 70h. Each of the four wheel objects 70d applies velocity (speed and direction of movement) to the entire four-wheeled vehicle object 76. The steering stick object 70 applies rotation to the entire four-wheeled vehicle object 76, changing the direction of travel of the entire four-wheeled vehicle object 76. The user can place the user character PC on the four-wheeled vehicle object 76 and move the four-wheeled vehicle object 76 in a direction corresponding to the input direction of the analog stick 32, for example, by operating the analog stick 32. This allows the user character PC to move within the virtual space.

[0139] Next, referring to Figures 20 to 23, we will explain the case of bonding virtual objects 70 that do not have a priority bonding BP set. Figure 20 is an example of a game image immediately after selecting a rock object 70g. Figure 21 is an example of a game image when the selected rock object 70g is brought close to a box object 70f. Figure 22 is an example of a game image when the rock object 70g is moved from the state in Figure 21. Figure 23 is an example of a game image when a bonding instruction is given in the state in Figure 22.

[0140] As shown in Figures 20 and 21, when a rock object 70g placed on the ground is selected and brought close to a box object 70f, an adhesive object 78 appears connecting the selected rock object 70g and the box object 70f. Here, neither the rock object 70g nor the box object 70f has a preferred adhesive BP set. In this case, the position on the surface of the rock object 70g closest to the box object 70f is set as the adhesive position. Similarly, the position on the surface of the box object 70f closest to the rock object 70g is set as the adhesive position. The adhesive object 78 is displayed to connect these two adhesive positions. For example, in Figure 21, point P1 on the rock object 70g and the corner of the box object 70f are nearest neighbors, so these positions are connected by the adhesive object 78.

[0141] When the rock object 70g is moved from the state shown in Figure 21, the bonding position indicated by the adhesive object 78 changes (Figure 22). For example, in Figure 21, the adhesive object 78 indicates that point P1 on the rock object 70g and the corner of the box object 70f are the bonding positions. In contrast, in Figure 22, the adhesive object 78 indicates that point P2 on the rock object 70g and the central part of the side surface of the box object 70f are the nearest neighbors, and therefore these positions are indicated as the bonding positions.

[0142] Furthermore, as described above, the selected object is projected in the vertical, horizontal, and depth directions of the virtual space. Therefore, if a projection plane exists in those directions, the image 71 of the selected object will be generated on the projection plane. In Figure 21, since the box object 70f is not directly next to the rock object 70g, the image 71gx of the rock object 70g is not displayed on the side of the box object 70f. On the other hand, in Figure 22, since the box object 70f is located almost directly next to the rock object 70g, the image 71gx of the rock object 70g is displayed on the side of the box object 70f. Although not shown in the illustration, point 72gx, which indicates the center position of the rock object 70g, is also displayed on the side of the box object 70f. In addition, in Figures 21 and 22, the image 71gy of the rock object 70g is projected onto the ground.

[0143] When the bonding instruction is given in the state shown in Figure 22, the rock object 70g and the box object 70f are bonded together (Figure 23). Specifically, point P2 on the rock object 70g and the central part of the side surface of the box object 70f are bonded together. That is, at least one of the rock object 70g and the box object 70f moves so that point P2 on the rock object 70g and the central part of the side surface of the box object 70f overlap. The bonded object 78 remains even after the rock object 70g and the box object 70f are bonded together.

[0144] (Details on how to generate adhesive object 78) Next, we will describe in detail how to generate the bonded object 78. Referring to Figures 24 to 28, we will explain the case in which two virtual objects 70 are bonded in a portion other than the preferred bonding area BP.

[0145] Figure 24 shows an example of the basic shape of the adhesive object 78. As shown in Figure 24, the adhesive object 78 includes two first parts 782 that constitute the bottom or top surface, and a second part 783 that connects the two first parts 782. The first parts 782 are bonded to the adhesive position of the virtual object 70. The first parts 782 and the second parts 783 include a plurality of bones 781. The bones 781 form the framework for defining the shape of the adhesive object 78. A surface is formed to surround the plurality of bones 781. By deforming each of the plurality of bones 781, the entire adhesive object 78 is deformed. The method for generating the adhesive object 78 between two virtual objects 70 will be described below.

[0146] Figures 25 to 28 illustrate how to deform the adhesive object 78.

[0147] As described above, if the two virtual objects 70 do not adhere to each other at the priority bonding BP, the position where the two virtual objects 70 are closest to each other is set as the bonding position. Specifically, first, it is determined whether the selected object and the other virtual object 70 satisfy the predetermined bonding conditions.

[0148] As shown in Figure 25, if the selected object 70A and the other virtual object 70B satisfy predetermined adhesion conditions, the nearest proximity position between the selected object 70A and the other virtual object 70B is calculated. The method for calculating the nearest proximity position is arbitrary, but for example, starting from the center of the selected object 70A, the position where the selected object 70A and the other virtual object 70B are closest is recursively determined. As a result, for example, point MPA on the selected object 70A and point MPB on the other virtual object 70B are calculated as the nearest proximity position.

[0149] Next, the normal vector at point MPA of the selected object 70A and the normal vector at point MPB of the other virtual object 70B are calculated, and a plane perpendicular to each normal vector is calculated. Then, a cut plane 74 is calculated by averaging the two calculated planes. Specifically, the cut plane 74 is a plane that passes through the midpoint of point MPA and point MPB, and whose normal is the vector obtained by averaging the normal vectors at point MPA and point MPB.

[0150] Next, as shown in Figure 26, the bounding box 73A of the selected object 70A and the bounding box 73B of the other virtual object 70B are cut using the calculated cut plane 74. Here, the bounding box is a solid that surrounds each virtual object 70 and is set for each virtual object 70. The bounding box is a solid with a simpler shape than the corresponding virtual object 70, or the same shape. Specifically, the calculated cut plane 74 is placed at a predetermined distance from the midpoint MPC of point MPA and point MPB towards point MPA in the normal direction of the cut plane 74, and the bounding box 73A is cut using the cut plane 74A placed at that position. Also, the calculated cut plane 74 is placed at a predetermined distance from the midpoint MPC towards point MPB in the normal direction of the cut plane 74, and the bounding box 73B is cut using the cut plane 74B placed at that position.

[0151] Figure 27 shows the cross section SA, which is obtained by cutting the bounding box 73A of the selected object 70A with the cut plane 74A, and the cross section SB, which is obtained by cutting the bounding box 73B of another virtual object 70B with the cut plane 74B. A surface SAB is calculated by superimposing these two cross sections SA and SB. This surface SAB is obtained by projecting cross section SA onto cross section SB (or cross section SB onto cross section SA). Based on the size of this surface SAB, the size of each bone 781 of the glued object 78 is determined. For example, the size of each bone 781 of the first part 782 of the glued object 78 is determined so that the first part 782 of the glued object 78 matches the shape of surface SAB. Then, the first part 782 of the glued object 78 is placed on surface SAB. That is, one first part 782 of the glued object 78 is placed in the part of cross section SA that corresponds to surface SAB, and the other first part 782 of the glued object 78 is placed in the part of cross section SB that corresponds to surface SAB.

[0152] Then, as shown in Figure 28, each bone 781 of the adhesive object 78 is deformed to conform to the surface of each virtual object 70. For example, the bone 781 shown by the dashed line in the first part 782 of the adhesive object 78 is deformed to conform to the surface of the selected object 70A. In Figure 28, the bone 781 before deformation is shown by a dashed line, and the bone 781 after deformation is shown by a solid line. By deforming each bone 781 in this way, the adhesive object 78 is deformed to conform to the surfaces of the selected object 70A and the other virtual object 70B. Specifically, one first part 782 of the adhesive object 78 conforms to the surface of a predetermined range including point MPA of the selected object 70A, and the other first part 782 of the adhesive object 78 conforms to the surface of a predetermined range including point MPB of the other virtual object 70B. In addition, the second part 783 of the adhesive object 78 is deformed according to the distance between points MPA and MPB. Therefore, if the distance between the selected object 70A and the other virtual object 70B is short, the adhesive object 78 will be shorter, and if the distance is long, the adhesive object 78 will be longer.

[0153] As described above, if two virtual objects 70 are not bonded at the priority bonding BP, first, the nearest positions MPA and MPB of the two virtual objects 70 are set as the bonding positions. Then, a bonding object 78 is generated between the two virtual objects 70 so as to connect the bonding positions. If the two virtual objects 70 are not yet bonded (i.e., if a bonding instruction has not yet been given since the bonding object 78 appeared between the two virtual objects 70), the bonding positions will change as the relative positions of the two virtual objects 70 change. For example, if the selected object 70A is moved away from or closer to the other virtual object 70B, the nearest positions MPA and MPB will change. Also, if the orientation of the selected object 70A is changed, the nearest positions MPA and MPB will change. The bonding object 78 will always change to connect the nearest positions MPA and MPB. In other words, the bonding positions of the two virtual objects 70 indicated by the bonding object 78 will change in accordance with the change in the relative positions of the two virtual objects 70 (in accordance with the movement of the selected object 70A). Furthermore, the overall shape of the bonded object 78 also changes in accordance with the change in the relative positions of the two virtual objects 70 (in accordance with the movement of the selected object 70A).

[0154] The creation of the bonded object 78 in this way allows the user to easily recognize the positions where the two virtual objects 70 are bonded. This makes it easier to assemble the two virtual objects 70.

[0155] In the state shown in Figure 28, when a bonding command is issued by the user, the selected object 70A and the other virtual object 70B are bonded to each other at their nearest neighbor positions MPA and MPB. Specifically, the positions of the selected object 70A and the other virtual object 70B are changed so that the distance between the two nearest neighbor positions MPA and MPB becomes 0 over a predetermined time (multiple frame times). During this time, the relative orientation of the other virtual object 70B with respect to the selected object 70A does not change. Also, during this time, the shape of the bonded object 78 is determined as described above, and the shape of the bonded object 78 changes according to the distance between the nearest neighbor positions MPA and MPB. When the two nearest neighbor positions MPA and MPB coincide, the bonding of the two virtual objects 70 is completed. Even after the two virtual objects 70 are bonded, the bonded object 78 remains around the bonding position. The shape of the bonded object 78 after the two virtual objects 70 are bonded is also determined by the method described above. After the two virtual objects 70 are bonded together, their relative positions do not change, and therefore the shape of the bonded object 78 does not change.

[0156] Here, "remaining" of an adhesive object means that, strictly speaking, the same adhesive object as the one before adhesion remains in terms of data, or that the data is different from the adhesive object before adhesion, but remains in a manner that makes it appear as if an adhesive object exists. For example, as described above, an adhesive object contains multiple bones (data for defining the 3D shape of the adhesive object), and the adhesive object that remains after the two virtual objects 70 are adhered may contain multiple bones, just like the adhesive object before adhesion. Alternatively, the adhesive object that remains after the two virtual objects 70 are adhered may appear as the same as the above adhesive object containing multiple bones, but may be displayed between the two virtual objects 70 as an object that does not contain multiple bones, or has a reduced number of bones. Furthermore, the adhesive object that remains after the two virtual objects 70 are adhered may be displayed between the two virtual objects 70 as a simple image that appears as the same as the above adhesive object.

[0157] Furthermore, a cover object may be displayed that covers the bonding position of the two bonded virtual objects 70. The bond object that was displayed before bonding may remain at the bonding position as the cover object after bonding. The cover object may be the same object as the bond object in terms of data, or it may be an object that can be considered as the bond object in terms of appearance (including a simple image), or it may be an object that is different from the bond object in terms of appearance.

[0158] In this way, after the two virtual objects 70 are bonded together, the presence of a cover object (the bonded object, an object that can be visually considered as a bonded object, or an object that is visually different from a bonded object) that covers the bonded position allows the user to recognize the bonded position. Furthermore, for example, if two large virtual objects 70 make point contact to form a combined object, and there is no cover object at the point of contact, the two virtual objects 70 may appear to be joined at point contact, which could cause the user to feel uneasy. In this embodiment, since there is a cover object with volume that covers the contact area where the two virtual objects 70 are in contact, the two virtual objects 70 appear to be bonded together by such a cover object (for example, a bond-like adhesive object), thus reducing such uneasiness.

[0159] Next, we will describe the case where two virtual objects 70 are bonded at the priority bonding area BP. Figure 29 is a diagram illustrating the generation of a bonded object 78 when two virtual objects 70 are bonded at the priority bonding area BP.

[0160] When the selected object 70A and the other virtual object 70B satisfy predetermined bonding conditions, and the preferred bonding portion BPa of the selected object 70A and the preferred bonding portion BPb of the other virtual object 70B satisfy the first condition, the two preferred bonding portions BP are set as bonding positions. Then, an adhesive object 78 is generated that connects these two preferred bonding portions BP. For example, when the preferred bonding portion BPa1 of the selected object 70A and the preferred bonding portion BPb1 of the other virtual object 70B satisfy the first condition, an adhesive object 78 is generated that connects the preferred bonding portion BPa1 and the preferred bonding portion BPb1.

[0161] Here, the first condition is the following three conditions A to C. (Condition A) The distance between the preferred bonding area BPa of the selected object 70A and the preferred bonding area BPb of the other virtual object 70B is within a predetermined threshold. (Condition B) The angle between the normal vector NVa set for the priority bonding area BPa and the inverse vector of the normal vector NVb set for the priority bonding area BPb is less than or equal to a predetermined threshold. (Condition C) (C-1) The preferred bonding area BPa is located on the side indicated by the normal vector NVb than the plane Sb that passes through the preferred bonding area BPb and is perpendicular to the normal vector NVb, and (C-2) the preferred bonding area BPb is located on the side indicated by the normal vector NVa than the plane Sa that passes through the preferred bonding area BPa and is perpendicular to the normal vector NVa.

[0162] For example, in the example shown in Figure 29, the distance between priority bonding sections BPa1 and BPb1 is within a predetermined threshold, so these two priority bonding sections BPa1 and BPb1 satisfy condition A. Also, in Figure 29, the normal vectors NVa1 and NVb1 point in opposite directions. That is, the angle between the normal vector NVa1 and its inverse vector is 0 degrees. Therefore, in the example shown in Figure 29, the two priority bonding sections BPa1 and BPb1 satisfy condition B. A normal vector NV representing the normal at that point is set in advance for each priority bonding section BP. Note that the normal vector NV for priority bonding sections BP may not be set in advance and may be calculated each time.

[0163] Furthermore, condition C above means that the two priority adhesive parts BPa1 and BPb1 in Figure 29 are in a relationship where they face each other. That is, priority adhesive part BPa1 is located on the side indicated by the normal vector NVb1 (right side in Figure 29) rather than the plane Sb1 that passes through priority adhesive part BPb1 and is perpendicular to the normal vector NVb1 (satisfies C-1 above). Also, priority adhesive part BPb1 is located on the side indicated by the normal vector NVa1 (left side in Figure 29) rather than the plane Sa1 that passes through priority adhesive part BPa1 and is perpendicular to the normal vector NVa1 (satisfies C-2 above). Therefore, in the example shown in Figure 29, priority adhesive parts BPa1 and BPb1 satisfy condition C.

[0164] Furthermore, the preferred bonding area BPb2 does not satisfy condition C in relation to the preferred bonding area BPb1. That is, the preferred bonding area BPa1 is not located on the side indicated by the normal vector NVb2 (the left side in Figure 29) of the plane Sb2 that passes through the preferred bonding area BPb2 and is perpendicular to the normal vector NVb2. In other words, the preferred bonding area BPa1 is located on the opposite side of the plane Sb2 from the normal vector NVb2.

[0165] Therefore, only the priority bonding portion BPb1 satisfies the above three conditions A to C in relation to the priority bonding portion BPa1. For this reason, priority bonding portions BPa1 and BPb1 are set as bonding positions. Then, as shown in Figure 29, a bonding object 78 is generated so as to connect priority bonding portions BPa1 and BPb1.

[0166] The adhesive object 78 is generated in the same manner as described above. That is, in Figures 25 to 28, the nearest position between the selected object 70A and the other virtual object 70B was set as the adhesive position, but instead of the nearest position, the preferred adhesive portions BPa1 and BPb1 are set as the adhesive position. Then, the adhesive object 78 is generated so as to connect these two adhesive positions. Specifically, the adhesive object 78 is generated so as to adhere closely to a predetermined range of the surface of the selected object 70A including the preferred adhesive portion BPa1, and to adhere closely to a predetermined range of the surface of the other virtual object 70B including the preferred adhesive portion BPb1.

[0167] Furthermore, for a given priority adhesive portion BPa in the selected object 70A, there may be multiple priority adhesive portions BPb of other virtual objects 70B that satisfy the first condition. In this case, one of the multiple priority adhesive portions BPb that satisfy the first condition in relation to the priority adhesive portion BPa is selected as the priority adhesive portion BPb that pairs with the priority adhesive portion BPa. For example, among the multiple priority adhesive portions BPb, the priority adhesive portion BPb closest to the priority adhesive portion BPa may be selected. Alternatively, among the multiple priority adhesive portions BPb, the priority adhesive portion BPb having a normal vector NVb that is closest in orientation to the normal vector NVa set for the priority adhesive portion BPa (the angle with the normal vector NVa is close to 180 degrees) may be selected. Then, these two paired priority adhesive portions BPa and BPb are set as adhesive positions, and an adhesive object 78 is generated that connects these two priority adhesive portions BPa and BPb.

[0168] Furthermore, there may be multiple pairs of priority adhesive parts BPa and BPb that satisfy the first condition. In this case, the pair with the shortest distance among the multiple pairs of priority adhesive parts BPa and BPb may be selected, and an adhesive object 78 connecting the two priority adhesive parts BPa and BPb of the selected pair may be generated. If there are multiple pairs with the shortest distance, multiple adhesive objects 78 connecting each pair will be generated.

[0169] When two priority bonding parts, BPa1 and BPb1, are connected by an adhesive object 78, and the user issues a bonding instruction, the two priority bonding parts BP are bonded together. In this case, the relative positions of the two virtual objects 70 are changed so that the positions of priority bonding parts BPa1 and BPb1 coincide, and the angle between the normal vector NVa1 and the inverse vector of the normal vector NVb1 becomes 0 degrees.

[0170] Figure 30 shows the positional relationship before and after the bonding instruction is given when two virtual objects 70 are bonded at the priority bonding area BP.

[0171] As shown in the upper part of Figure 30, before the bonding instruction is given, the preferred bonding portion BPa1 of the selected object 70A and the preferred bonding portion BPb1 of the other virtual object 70B are not at the closest proximity of the two virtual objects 70, but the first condition is satisfied. That is, (Condition A) The distance between the preferred bonding portion BPa1 and the preferred bonding portion BPb1 is within a predetermined threshold. Also, (Condition B) The normal vector NVa1 of the preferred bonding portion BPa1 and the inverse vector of the normal vector NVb1 of the preferred bonding portion BPb1 have an angle greater than 0 degrees, but are below a predetermined threshold. Also, from the figure, the preferred bonding portions BPa1 and BPb1 satisfy condition C. Therefore, the preferred bonding portions BPa1 and BPb1 satisfy the first condition. For this reason, the preferred bonding portions BPa1 and BPb1 are set as bonding positions, and a bonding object 78 connecting the preferred bonding portions BPa1 and BPb1 is generated.

[0172] If the user issues a bonding command in this state, the priority bonding parts BPa1 and BPb1 will be bonded together as shown in the lower diagram of Figure 30. Specifically, the positions of priority bonding parts BPa1 and BPb1 will be aligned. In addition, the orientations of the two virtual objects 70 will be adjusted so that the angle between the normal vector NVa1 and the inverse vector of the normal vector NVb1 is 0 degrees. In other words, the orientation of at least one of the selected object 70A and the other virtual object 70B will be adjusted so that the normal direction of priority bonding part BPa1 and the normal direction of priority bonding part BPb1 are parallel.

[0173] Furthermore, each priority bonding area BP is assigned a tangent vector TL perpendicular to the normal vector NV, in addition to the normal vector NV. The tangent vector TL is a vector indicating the tangent at the priority bonding area BP. When two virtual objects 70 are bonded at the priority bonding area BP, the relative orientation of the two virtual objects 70 is controlled according to this tangent vector TL.

[0174] Figure 31 illustrates an example where the orientation of a selected object is controlled according to the tangent vector TL.

[0175] In the upper diagram of Figure 31, the plate object 70d and the control stick object 70h are not yet bonded together, and the priority bonding point BPd of the plate object 70d and the priority bonding point BPh of the control stick object 70h are connected by a bonding object 78. For example, the priority bonding point BPd set on the upper surface of the plate object 70d has a tangent vector TLd that is parallel to the upper surface of the plate object 70d and points forward of the plate object 70d. Similarly, the priority bonding point BPh set on the lower surface of the control stick object 70h has a tangent vector TLh that is parallel to the lower surface of the control stick object 70h and points forward of the control stick object 70h. In the upper diagram of Figure 31, the angle between the tangent vector TLd and the tangent vector TLh is not 0 degrees, but has a certain angle.

[0176] If a bonding instruction is given in this state, the orientation of the control stick object 70h is controlled so that the angle between the tangent vector TLd and the tangent vector TLh becomes one of a predetermined angle, as shown in the lower diagram of Figure 31, and the control stick object 70h and the plate object 70d are bonded together. The predetermined angle may be, for example, 0 degrees, 45 degrees, 90 degrees, 135 degrees, or 180 degrees. For example, if the angle between the tangent vector TLd and the tangent vector TLh immediately before the bonding instruction is given is in the range of 0 to 30 degrees, the orientation of the control stick object 70h is adjusted so that the angle between the tangent vector TLd and the tangent vector TLh becomes 0 degrees when the bonding instruction is given. Also, if the angle between the tangent vector TLd and the tangent vector TLh immediately before the bonding instruction is given is in the range of 31 to 74 degrees, the orientation of the control stick object 70h is adjusted so that the angle between the tangent vector TLd and the tangent vector TLh becomes 45 degrees when the bonding instruction is given. In other words, if the angle between the tangent vector TLd and the tangent vector TLh is within a first range, the angle between TLd and TLh is adjusted to be within the first range; if the angle between TLd and TLh is within a second range, the angle between TLd and TLh is adjusted to be within the second range.

[0177] In the example shown in Figure 31, the orientation of the control stick object 70h is controlled such that the angle between the tangent vector TLh of the control stick object 70h and the tangent vector TLd of the plate object 70d is 0 degrees. This makes it easy to attach the control stick object 70h in the same direction as the direction of travel of the four-wheeled vehicle object 76.

[0178] As described above, the selected object 70A and the other virtual object 70B are preferentially bonded between their preferred bonding points. The preferred bonding points are pre-set for each virtual object 70 and are set to the center or symmetrical positions within each virtual object 70. Since the preferred bonding point BPa of the selected object 70A and the preferred bonding point BPb of the other virtual object 70B are bonded so that they overlap, the user can bond the selected object 70A and the other virtual object 70B at the appropriate position without having to precisely control the position of the selected object 70A.

[0179] Furthermore, each priority bonding BP has a pre-set normal vector NV, and when two priority bonding BPs are bonded, the two normal vectors NV are controlled to be in opposite directions. As a result, the user can bond the selected object 70A to other virtual objects 70B in the appropriate orientation without having to finely control the orientation of the selected object 70A.

[0180] Furthermore, each priority bonding point BP has a pre-set tangent vector TL, and when two priority bonding points BP are bonded, the two tangent vectors TL are controlled to be one of several predetermined angles. This allows the user to bond the selected object 70A to the other virtual object 70B in the appropriate orientation.

[0181] Furthermore, this adjustment of the orientation of the selected object 70A and other virtual objects 70B based on the normal vector NV or tangent vector TL is performed only when the selected object 70A and other virtual objects 70B are bonded together at the preferred bonding area BP.

[0182] (Details on de-adhesion) Next, a method for releasing the adhesion of multiple virtual objects 70 when multiple virtual objects 70 are bonded together will be described. After a combined object is formed by bonding multiple virtual objects 70 as described above, if an input that satisfies predetermined release conditions (hereinafter referred to as the "adhesion release operation") is performed, the adhesion of the virtual objects 70 will be released.

[0183] Figure 32 shows an example of what happens when a debonding operation is performed on two virtual objects 70 that are bonded together.

[0184] When a box object 70f and a rock object 70g are bonded together by an adhesive object 78, a selection operation is performed, and one of the two virtual objects 70f and 70g is selected. For example, if the rock object 70g is selected from the box object 70f and rock object 70g that constitute the combined object, and a selection operation is performed, the rock object 70g is selected as the selected object, as shown in Figure 32. When the rock object 70g is selected, the display mode of the rock object 70g changes. Also, when the rock object 70g is selected, images 71f and 71g of the box object 70f and rock object 70g that constitute the combined object are projected onto the ground. In addition, a point 72g indicating the center position of the selected rock object 70g is projected onto the ground. When the rock object 70g is selected, a release operation is performed, and the bond between the box object 70f and the rock object 70g is released.

[0185] Here, the debonding operation involves, for example, performing an operation to reverse the orientation of the user character PC (the orientation of the virtual camera) a predetermined number of times within a predetermined time. If a selected object is set (i.e., if virtual object 70 is selected), the selected object, the user character PC, and the virtual camera maintain a predetermined positional relationship. Specifically, the orientation of the user character PC and the orientation of the virtual camera are roughly aligned, and the selected object is controlled to be positioned roughly in front of the user character (in front of the virtual camera). Therefore, when the orientation of the user character PC (the orientation of the virtual camera) changes, the position of the selected object in the virtual space also changes.

[0186] For example, the orientation of the user character PC (the orientation of the virtual camera) changes according to the input direction of the analog stick 52. If the analog stick 52 is used to input a predetermined number of directions in the opposite direction within a predetermined time, a release operation is detected, and the adhesion between the box object 70f and the rock object 70g is released. Here, the input operation in the opposite direction means that after an input in the first direction is made, an input in the second direction having an angle greater than a predetermined threshold (e.g., 150 degrees) from the first direction is made.

[0187] Furthermore, the orientation of the user character PC (the orientation of the virtual camera) may change according to the posture of, for example, the right controller 4 (which may be the left controller 3 or the main unit 2). For example, the posture of the right controller 4 is calculated based on the output of the angular velocity sensor 115 (and the acceleration sensor 114). For example, based on the output of the angular velocity sensor 115, a swing operation of the right controller 4 may be detected, and the adhesion between the box object 70f and the rock object 70g may be released according to the detection result of the swing operation. Specifically, as an adhesion release operation, if a predetermined number of swing operations in the opposite direction using the right controller 4 are performed within a predetermined time, the adhesion between the box object 70f and the rock object 70g may be released. A swing operation in the opposite direction using the right controller 4 may be a swing operation in a second direction having an angle greater than a predetermined threshold (e.g., 90 degrees) from the first direction after a swing operation in the first direction has been performed.

[0188] Figure 33 shows an example of the movement of a selected object when the orientation of the user character PC (the orientation of the virtual camera VC) is changed to the right. In Figure 33, the virtual camera VC, the user character PC, and the selected object 70 are shown as viewed from above in the virtual space. As shown in Figure 33, when the virtual object 70 is set as the selected object, the user character PC and the virtual camera VC face the same direction. For example, when the left or right direction is input on the analog stick 52, the orientation of the user character PC changes to the left or right, and the virtual camera VC rotates in the yaw direction around the user character PC, while the orientation of the virtual camera VC also changes to the left or right. In addition, the selected object 70 is moved so that it is positioned in front of the user character PC (in front of the virtual camera VC). For example, when the right direction is input on the analog stick 52, the orientation of the user character PC (virtual camera VC) changes to the right, and the selected object 70 also moves to the right. On the other hand, even if the right direction is input on the analog stick 52, the user character PC does not move. For example, if a predetermined number of leftward and rightward inputs are performed using the analog stick 52 within a predetermined time (e.g., 1 second), the orientation of the user character PC and the virtual camera VC changes to the left and right, and the selected object 70 moves to the left and right within the virtual space. In this case, the selected object is displayed as if it is swaying from side to side around the user character PC. Then, the attachment between the selected object and other virtual objects attached to it is released, and the other virtual objects detach from the selected object.

[0189] The same applies when the up or down direction is input to the analog stick 52. That is, when the up or down direction is input to the analog stick 52, the orientation of the user character PC changes vertically, and the virtual camera VC rotates in the pitch direction around the user character PC, while the orientation of the virtual camera VC also changes vertically. As a release operation, if the up or down direction of the analog stick 52 is input a predetermined number of times within a predetermined time (for example, 1 second), the selected object is displayed as if it is shaking vertically around the user character PC, and the adhesion between the selected object and other virtual objects is released.

[0190] In this way, when the user character PC is shaken in a predetermined direction, the selected object also moves in that direction, releasing the adhesion between the selected object and other virtual objects, and causing the other virtual objects to detach from the selected object. This creates the behavior where the user object PC shakes the selected object, causing other virtual objects attached to it to be shaken off. Therefore, the adhesion between the selected object and other virtual objects can be released with an operation that is in line with the user's intuition.

[0191] Furthermore, in this embodiment, the selected object moves in conjunction not only with the orientation of the user character PC, but also with the orientation of the virtual camera VC. In other words, by shaking the orientation of the virtual camera VC in a predetermined direction, the selected object also moves in that predetermined direction, and the adhesion between the selected object and other virtual objects is released. As a result, the selected object remains displayed near the center of the screen, while the entire screen moves as if shaking in the predetermined direction, causing other virtual objects attached to the selected object to be shaken off. Therefore, the adhesion between the selected object and other virtual objects can be released with an operation that is in line with the user's intuition.

[0192] Furthermore, different controls may be applied to the orientation of the user character PC, the virtual camera settings, and the movement of the selected object in the left-right and up-down directions. For example, in response to left-right input using the analog stick 52, the orientation of the user character PC and the virtual camera will change left-right according to the amount of input (degree of tilt), and the selected object will also move left-right. On the other hand, when up-down input is made using the analog stick 52, the orientation of the user character PC will change up-down, and the selected object will also move up-down, although the amount of change in the up-down orientation of the user character PC may be smaller than the amount of up-down movement of the selected object. The same may apply to the amount of change in the orientation of the virtual camera. In addition, when up-down input is made using the analog stick 52, the virtual camera may zoom in / zoom out. For example, in response to upward input using the analog stick 52, the user character PC will face upward, and the selected object will move upward, increasing the distance between the user character PC and the selected object. At this time, the virtual camera will zoom out to include the user character PC and the selected object in its imaging range. Furthermore, if a downward input is made using analog stick 52, the selected object will not move downwards due to the ground, the user character PC's orientation will not be downwards but will remain almost horizontal, and the virtual camera may zoom in. The same applies when an upward or downward input is made using the orientation of the right controller 4 (or left controller 3 or main unit 2).

[0193] Furthermore, while left-right input is detected as the above-mentioned release operation, up-down input does not necessarily have to be detected as such. That is, the selected object moves up and down in response to up-down input, but the adhesion between the selected object and other virtual objects 70 does not necessarily have to be released in response to up-down input. In addition, while up-down input using the analog stick 52 is not detected as a release operation, up-down input using the posture of the controller (3 or 4; the main unit 2 may also be used) (an operation of shaking the controller or main unit 2 up and down) may be detected as a release operation.

[0194] Returning to Figure 32, if the de-adhesion operation is performed while the rock object 70g is selected, the adhesion between the rock object 70g and the box object 70f is released. As shown in Figure 32, when the adhesion between the rock object 70g and the box object 70f is released, the box object 70f separates from the rock object 70g and the box object 70f falls to the ground. The adhesive object 78 that was adhering the box object 70f and the rock object 70g is deleted. Even after the adhesion between the rock object 70g and the box object 70f is released, the rock object 70g remains selected and remains floating in mid-air.

[0195] Figure 34 shows an example of what happens when an input is made that does not satisfy the predetermined release conditions while two virtual objects 70 are attached together.

[0196] As shown in Figure 34, if input is made to the analog stick 52 while the rock object 70g is selected, and the input does not satisfy the predetermined release conditions, the rock object 70g moves in accordance with the change in orientation of the user character PC (virtual camera). In this case, the adhesion between the rock object 70g and the box object 70f is not released, and the combined object (rock object 70g and box object 70f) moves in the virtual space in accordance with the change in orientation of the user character PC (virtual camera). For example, if the right direction is input to the analog stick 52 while the rock object 70g is selected, the orientation of the user character PC (virtual camera) changes to the right, and the virtual space to the right of the upper part of Figure 34 becomes visible (lower part of Figure 34). In this case, the rock object 70g and the box object 70f also move to the right.

[0197] Furthermore, if input is made to the analog stick 32 of the left controller 3 while the rock object 70g is selected, the user character PC will move within the virtual space, and the virtual camera will also move within the virtual space. Along with the movement of the user character PC and the virtual camera, the combined objects (rock object 70g and box object 70f) will also move. In other words, when input is made to the analog stick 32, the relative positional relationship between the user character PC and the selected object does not change, and the user character PC and the selected object move in accordance with the input to the analog stick 32. The above release condition is not met by inputs that involve the movement of the user character PC (inputs to the analog stick 32). For example, if the analog stick 32 used to move the user character PC is used to input in the opposite direction a predetermined number of times within a predetermined time, the adhesion between the rock object 70g and the box object 70f will not be released. In this case, the combined objects (rock object 70g and box object 70f) will move within the virtual space in accordance with the input using the analog stick 32. Meanwhile, in response to input to the analog stick 52, the orientation of the user character PC and the virtual camera changes, and the selected object moves as if being shaken by the user character PC. This shaking motion of the selected object releases the attachment between the selected object and other virtual objects 70.

[0198] Even when three or more virtual objects 70 are bonded together to form a combined object, the bonded state can be released using the same release operation. Figure 35 shows an example of release when the release operation is performed on four virtual objects 70 that are bonded together.

[0199] As shown in the upper diagram of Figure 35, the box object 70f has the rock object 70g1 and the rock object 70g2 attached to it. Furthermore, the rock object 70g2 has the rock object 70g3 attached to it. This forms a combined object consisting of four virtual objects 70. In this state, the user can select one of the four virtual objects 70 that make up the combined object. For example, the box object 70f is selected as the selected object from among the four virtual objects 70.

[0200] When a selected object is selected, if the user performs a de-adhesion operation, the selected object is de-adhered to all virtual objects 70 attached to that selected object (see the lower diagram in Figure 35). Specifically, the adhesion between the box object 70f and the rock object 70g1 is undone, and the adhesive object 78 that was adhering the box object 70f and the rock object 70g1 is deleted. Similarly, the adhesion between the box object 70f and the rock object 70g2 is undone, and the adhesive object 78 that was adhering the box object 70f and the rock object 70g2 is deleted. On the other hand, even if the adhesion between the box object 70f and the rock object 70g2 is undone, the adhesion between the rock object 70g2 and the rock object 70g3 is not undone.

[0201] In other words, when a debonding operation is performed while multiple virtual objects 70 are attached to a selected object, the bond between the selected object and the virtual objects 70 attached to that selected object is released, but the bond to virtual objects 70 other than the selected object is maintained. To put it another way, the debonding operation deletes all attached objects 78 attached to the selected object, while attached objects 78 attached to virtual objects 70 other than the selected object remain.

[0202] In this embodiment, after a combined object is generated by bonding multiple virtual objects 70 together, if one of the multiple virtual objects 70 constituting the combined object is selected and an input that satisfies predetermined release conditions is made, the bond between the selected virtual object 70 and the other virtual objects to which it is bonded is released. If one of the multiple virtual objects 70 constituting the combined object is selected and an input that does not satisfy the predetermined release conditions is made, the entire combined object moves. Furthermore, if one of the multiple virtual objects 70 constituting the combined object is selected, another virtual object 70 can be bonded to the selected virtual object. For example, one of the multiple virtual objects 70 constituting the combined object is selected, and the user character PC is moved to move the entire combined object. When the selected object approaches another virtual object 70 placed in the virtual space, a bonding object 78 appears that connects the selected object and the other virtual object 70. Then, in response to the user's bonding instruction, the selected object and the other virtual object 70 are bonded together.

[0203] This allows the user to create a combined object by joining multiple virtual objects 70 together, and then to release the bonds between the virtual objects 70. The combined object can be reconstructed by detaching some of the virtual objects 70 included in the created combined object and joining other virtual objects.

[0204] By selecting one virtual object that makes up a combined object, it is possible to detach only the virtual objects attached to the selected object from the combined object, thereby improving user convenience. For example, when detaching a combined object, it is conceivable to detach all attachments between all virtual objects 70 included in the combined object. However, if all attachments are detached, the user would have to start the assembly process from scratch. In contrast, in this embodiment, the user can select some of the virtual objects that make up the combined object and detach only the attachments of the selected virtual objects, thereby allowing the combined object to be reconstructed while maintaining some of the attachments.

[0205] Furthermore, in this embodiment, the selected object is fixed in front of the user character PC (virtual camera), and the selected object moves within the virtual space by changing the orientation of the user character PC (virtual camera). For example, if the orientation of the user character PC (virtual camera) is shaken left or right or up or down, the selected object will also shake left or right or up or down. The attachment of the virtual object can be released through such an intuitive and easy-to-understand operation for the user. In other words, the attachment of the selected object can be released by an operation that shakes off the virtual object attached to the selected object.

[0206] (Explanation of data used in game processing) Next, we will explain the data used in the game processing described above. Figure 36 shows an example of data stored in the memory of the main unit 2 during the execution of the game processing.

[0207] As shown in Figure 36, the memory of the main unit 2 (DRAM 85, flash memory 84, or external storage medium) stores the game program, user character data, virtual object data, selected object data, attached object data, virtual camera data, and data for multiple combined objects.

[0208] The game program is a program for executing the game processing described above. The game program is pre-stored in an external storage medium or flash memory 84 installed in slot 23 and is loaded into DRAM 85 when the game is executed. The game program may also be obtained from another device via a network (e.g., the Internet).

[0209] User character data is data relating to the user character PC, including information about the user character PC's position and orientation in the virtual space. User character data may also include information indicating the items and abilities owned by the user character PC.

[0210] The virtual object data pertains to virtual objects 70 that are placed in virtual space and are not part of a combined object. The virtual object data includes information indicating the type, weight, position in virtual space, and orientation of each virtual object 70 (70a to 70g). The virtual object data also includes information regarding the position, normal vector NV, and tangent vector TL of the preferred bonding area BP set for each virtual object 70.

[0211] The selected object data is data about the selected object chosen by the user.

[0212] The adhesive object data includes information regarding the position and shape of the adhesive object 78 described above. The adhesive object data also includes information indicating the adhesive position of the virtual object 70.

[0213] Virtual camera data includes information about the position and orientation of the virtual camera.

[0214] The combined object data is data relating to a single combined object consisting of multiple virtual objects 70, created by the user. If multiple combined objects are placed in the virtual space, combined object data is stored for each combined object.

[0215] Specifically, the combined object data includes virtual object data relating to multiple virtual objects 70 that constitute the combined object, and adhesive object data relating to adhesive objects 78 that connect the virtual objects 70. The combined object data also includes combined object information.

[0216] Combined object information is information used when calculating the behavior of a combined object, and includes, for example, the weight and center of gravity of the combined object. The center of gravity of a combined object is calculated based on the weights, positions, and orientations of the multiple virtual objects 70 that make up the combined object. Combined object information may also include information about the velocity of the combined object. If the combined object includes one or more virtual objects 70 that have power, the velocity of the combined object may be calculated based on the positions and orientations of the powered virtual objects 70 within the combined object. The velocity of the combined object calculated in this way is stored as combined object information. Combined object information is recalculated each time there is a change in the virtual objects 70 that make up the combined object. For example, if there is a combined object consisting of two virtual objects 70A and 70B, the combined object information (e.g., center of gravity, velocity, etc.) is calculated and stored based on the respective positions, orientations, types, weights, etc. of the virtual objects 70A and 70B. If another virtual object 70C is attached to this combined object, the combined object information is recalculated and stored based on the position, orientation, type, weight, etc., of each of the three virtual objects 70A to 70C.

[0217] (Details of game processing in main unit 2) Next, we will describe the details of the game processing performed in the main unit 2. Figure 37 is a flowchart showing an example of game processing performed by the processor 81 of the main unit 2.

[0218] As shown in Figure 37, the processor 81 first performs initial processing (step S100). Specifically, the processor 81 sets up a virtual space and places the user character PC, a virtual camera, and multiple virtual objects 70, etc., in the virtual space. In addition to these, various other objects (for example, an object representing the ground of the virtual space, and objects such as trees and buildings fixed in the virtual space) are also placed in the virtual space.

[0219] Next, the processor 81 acquires operation data from the controllers (step S101). The operation data includes data from each button 103, analog stick 32, accelerometer 104, and angular velocity sensor 105 of the left controller 3, and data from each button 113, analog stick 52, accelerometer 114, and angular velocity sensor 115 of the right controller 4. The main unit 2 receives operation data from each controller at predetermined time intervals (for example, 1 / 200 second intervals) and stores the operation data in memory. In step S101, the processor 81 acquires the operation data transmitted from each controller and stored in memory. The processor 81 also acquires data from the accelerometer 89, angular velocity sensor 90, and touch panel 13 of the main unit 2 as operation data.

[0220] Next, the processor 81 performs an object selection process (step S102). The object selection process is the process of setting one virtual object 70 as the selected object. Specifically, the processor 81 determines, based on the operation data, whether or not a selection operation of a virtual object 70 has been performed, and if a selection operation has been performed, it sets the indicated virtual object 70 as the selected object. For example, if a virtual object 70 that does not constitute a combined object is indicated, and a predetermined button on the left controller 3 is pressed, the virtual object 70 that does not constitute a combined object is set as the selected object. Also, if a virtual object 70 that constitutes a combined object is indicated, and a predetermined button on the left controller 3 is pressed, the virtual object 70 that constitutes a combined object is set as the selected object. Furthermore, when the processor 81 sets a selected object, it changes the display mode of the selected object to a display mode different from the normal one (e.g., yellow). Also, when the processor 81 sets one virtual object 70 that constitutes a combined object as the selected object, it changes the display mode of the entire combined object, including the selected object, to a display mode different from the normal one (e.g., yellow). In this case, the selected object in the combined object and the other virtual objects 70 in the combined object may be displayed in different display modes.

[0221] Next, the processor 81 performs character movement processing (step S103). Specifically, the processor 81 determines, based on the operation data, whether or not a movement operation has been performed on the user character PC, and if a movement operation has been performed, it moves the user character PC in the virtual space. For example, if a directional input is made to the analog stick 32 of the left controller 3, the processor 81 moves the user character PC in the virtual space according to the input direction of the analog stick 32. The processor 81 also moves the virtual camera in the virtual space in accordance with the movement of the user character PC. The virtual camera moves in accordance with the movement of the user character PC so that the user character PC is included in its imaging range. In addition, if a selected object is set, the processor 81 moves the selected object in accordance with the movement of the user character PC. If the selected object is a virtual object 70 that constitutes a combined object, the entire combined object including the selected object is moved.

[0222] Next, the processor 81 performs orientation control processing (step S104). Specifically, the processor 81 determines, based on the operation data, whether or not an operation to change the orientation of the virtual camera has been performed, and if so, changes the orientation of the virtual camera. More specifically, if a selected object is set, and a directional input is made to the analog stick 52 of the right controller 4, the processor 81 changes the orientation of the user character PC and the virtual camera according to the input direction of the analog stick 52. Also, if a selected object is set, the processor 81 may calculate the attitude of the right controller 4 based on data from the angular velocity sensor of the right controller 4, for example, and change the orientation of the user character PC and the virtual camera based on the calculated attitude. Furthermore, if a selected object is set, the processor 81 moves the selected object in accordance with the change in the orientation of the user character PC and the virtual camera. The selected object is controlled to be positioned in the front direction of the user character PC and the virtual camera. If the selected object is one virtual object 70 that constitutes a combined object, the entire combined object including the selected object is moved. Note that the user character PC is not moved in this step S104.

[0223] Next, the processor 81 performs a process to generate an image 71 of the selected object (step S105). Specifically, if a selected object is set, the processor 81 performs a process to project the selected object in the vertical direction, the horizontal direction as viewed from the virtual camera, and the depth direction of the virtual space. As a result, an image 71 (projected image) of the selected object is generated on the surfaces of the selected object that exist in the vertical, horizontal, and depth directions. For example, the image 71 of the selected object 71 is projected onto the surface of another virtual object 70 to the left of the selected object, and the image 71 of the selected object 71 is projected onto the surface of another virtual object 70 to the right of the selected object.

[0224] Following step S105, the processor 81 performs a combined object generation process (step S106). The combined object generation process is a process for creating a combined object by joining the selected object with other virtual objects 70. For example, when the selected object and other virtual objects 70 are joined in response to a user's joining instruction, the selected object and other virtual objects 70 move in a manner that attracts each other, and finally the selected object and other virtual objects 70 are joined together. Details of the combined object generation process will be described later.

[0225] Next, the processor 81 performs object control processing (step S107). In step S107, calculations are performed according to the laws of physics for all objects in the virtual space, based on their position, size, weight, velocity, rotational speed, applied force, friction, etc., and the movement of each object is controlled. When the virtual objects 70 or combined objects in the virtual space move, collision detection with other objects is performed, and the behavior of each object is calculated according to the result of the collision detection.

[0226] For example, even when a selected object is being moved to attach it to another virtual object 70, collision detection between the selected object and the other virtual object 70 is performed. Collision detection is performed based on the position, orientation, size, and shape of each object. If the collision detection results in a collision between the selected object and the other virtual object 70, the behavior of each object is calculated based on the weight of each object and the velocity at the time of the collision. For example, a collision between the selected object and the other virtual object 70 may cause the other virtual object 70 to move, hinder the movement of the selected object, or change the direction of movement of the selected object.

[0227] Furthermore, the processor 81 does not perform the above collision detection on the adhesive object 78. For example, if an adhesive object 78 is generated to connect the selected object and another virtual object 70, and another object is interposed between the selected object and the other virtual object 70, contact detection between the adhesive object 78 and the other object is not performed. Therefore, even if the adhesive object 78 collides with another object, it does not affect the movement of the other object. In other words, the adhesive object 78 is not an object that hinders the movement of the virtual object 70, the user character PC, or other objects, but rather an intangible display object. Also, the adhesive object 78 remains even after the selected object and the other virtual object 70 are bonded, but collision detection is not performed on the remaining adhesive object 78. However, collision detection may be performed on the adhesive object 78 as well. That is, collision detection may be performed on the adhesive object 78 before the selected object and the other virtual object 70 are bonded, and on the adhesive object 78 after the selected object and the other virtual object 70 are bonded. Furthermore, if the adhesive object 78 collides with another object, the motion of that other object may be affected.

[0228] Furthermore, in the object control process, when a selected object is bonded to another virtual object 70 by a bonding instruction, the two virtual objects 70 move in a manner that attracts each other. In this case, the relatively heavier virtual object 70 is controlled to move a shorter distance, while the relatively lighter virtual object 70 moves a longer distance. Also, if the weight difference or weight ratio of the two virtual objects 70 is greater than or equal to a predetermined value, only the lighter virtual object 70 may move.

[0229] Furthermore, in object control processing, the processor 81 controls the movement of the combined object based on the combined object information and operation data. For example, the processor 81 moves a four-wheeled vehicle object 76 having a control stick object 70h as shown in Figure 19 as the combined object. In this case, the processor 81 moves the four-wheeled vehicle object 76 based on the velocity and center of gravity position included in the combined object information, and also changes the direction of movement of the four-wheeled vehicle object 76 based on the operation data.

[0230] Next, the processor 81 performs a de-adhesion process (step S108). The de-adhesion process is a process that releases the adhesion between the bonded virtual objects 70, and detaches one or more virtual objects 70 from the combined object. Details of the de-adhesion process will be described later.

[0231] Next, the processor 81 performs output processing (step S109). Specifically, the processor 81 generates a game image based on the virtual camera and displays the game image on the display 12 or a stationary monitor. The processor 81 also outputs audio from the speaker according to the result of the game processing.

[0232] Next, the processor 81 determines whether or not to terminate the game processing (step S110). For example, if the user instructs the game to end, the processor 81 determines YES in step S110 and terminates the game processing shown in Figure 37. If NO is determined in step S110, the processor 81 executes the process in step S101 again. The processor 81 repeatedly executes the processes in steps S101 to S110 at predetermined frame time intervals (for example, 1 / 60 second intervals). This concludes the explanation of Figure 37.

[0233] (Combined object generation process) Next, the details of the combined object generation process in step S106 will be described. Figure 38 is a flowchart showing an example of the combined object generation process in step S106.

[0234] The processor 81 determines whether or not a selection object is set (step S150). If no selection object is set (step S150: NO), the processor 81 terminates the process shown in Figure 38.

[0235] If a selected object is set (step S150: YES), the processor 81 determines whether the selected object and other virtual objects 70 satisfy predetermined adhesion conditions (step S151). Specifically, the processor 81 searches for other virtual objects 70 that satisfy the predetermined adhesion conditions based on the position and direction of movement of the selected object. If, as a result of the search, other virtual objects 70 that satisfy the predetermined adhesion conditions are found, the processor 81 determines YES in step S151. On the other hand, if no other virtual objects 70 that satisfy the predetermined adhesion conditions are found, the processor 81 determines NO in step S151.

[0236] If the result in step S151 is YES, the processor 81 performs the adhesive object generation process (step S152). Details of the adhesive object generation process will be described later.

[0237] Next, the processor 81 determines, based on the operation data, whether or not a bonding instruction has been given by the user (step S153).

[0238] If a bonding instruction is given (step S153: YES), the processor 81 performs bonding operations to bond the selected object to the other virtual object 70 (step S154). Here, the selected object and the other virtual object 70 are bonded at the bonding position set in step S152. This generates a combined object consisting of multiple virtual objects 70. If two priority bonding BPs are set as bonding positions, the two priority bonding BPs are bonded so that their normal directions are parallel.

[0239] Furthermore, in the bonding process of step S154, the processor 81 calculates the combined object information. Specifically, the processor 81 calculates the combined object information based on the type, weight, bonding position, etc., of each virtual object 70 that constitutes the combined object, and stores it in memory. Each time a virtual object 70 is bonded, the combined object information is calculated and stored in memory.

[0240] If the process in step S154 is performed, or if the result in step S150 is NO, or if the result in step S151 is NO, or if the result in step S153 is NO, the processor 81 terminates the process shown in Figure 38.

[0241] (Adhesive object generation process) Next, the details of the adhesive object generation process in step S152 will be described. Figure 39 is a flowchart showing an example of the adhesive object generation process in step S152.

[0242] As shown in Figure 39, the processor 81 determines whether the priority adhesive parts can be bonded together (step S200). Specifically, the processor 81 determines whether each priority adhesive part BP of the selected object and each priority adhesive part BP of the other virtual object 70 that was determined to satisfy the predetermined bonding conditions in step S151 satisfy the first conditions (all of conditions A to C). If there is a pair of priority adhesive part BPs that satisfy the first conditions, the processor 81 determines YES in step S200. If there is no pair of priority adhesive part BPs that satisfy the first conditions, the processor 81 determines NO in step S200.

[0243] If the result in step S200 is YES, the processor 81 sets two preferred adhesive parts BP that satisfy the first condition as the bonding location (step S201). If there are multiple pairs that satisfy the condition of two preferred adhesive parts BP that satisfy the first condition, the processor 81 sets the one with the closest distance between the two preferred adhesive parts BP as the bonding location.

[0244] On the other hand, if NO is determined in step S200, the processor 81 calculates the nearest proximity position between the selected object and the other virtual object 70 and sets it as the bonding position (step S202). In step S202, if the nearest proximity position is between the preferred bonding section BP of one of the selected object and the part of the other virtual object 70 other than the preferred bonding section, these are set as the bonding positions.

[0245] If the process in step S201 or step S202 is executed, the processor 81 determines the size of each bone 781 of the adhesive object 78 (step S203). The method for determining the size of each bone 781 of the adhesive object 78 is as described with reference to Figures 26 and 27.

[0246] Next, the processor 81 positions the adhesive object 78 based on the adhesive position set in step S201 or step S202 (step S204). Specifically, it positions one first part 782 of the adhesive object 78 at the adhesive position of the selected object, and positions the other first part 782 of the adhesive object 78 at the adhesive position of the other virtual object 70.

[0247] Next, the processor 81 determines the orientation of each bone 781 of the adhesive object 78 so that each bone 781 aligns with the surface of the virtual object 70 (step S205). Here, the shape of each bone 781 is maintained while the orientation of each bone 781 is changed. This generates an adhesive object 78 that connects the contact points of the selected object with the contact points of the other virtual object 70. One first part 782 of the adhesive object 78 aligns with the surface containing the adhesive points of the selected object, and the other first part 782 of the adhesive object 78 aligns with the surface containing the adhesive points of the other virtual object 70. The shape of each bone 781 may also be changed to align with the surface of the virtual object 70.

[0248] If the process in step S205 is executed, the processor 81 terminates the adhesive object generation process shown in Figure 39.

[0249] (Adhesion release process) Next, the details of the de-adhesion process in step S108 will be described. Figure 40 is a flowchart showing an example of the de-adhesion process in step S108.

[0250] As shown in Figure 40, the processor 81 determines whether or not one virtual object 70 constituting the combined object has been selected (step S300).

[0251] If the result in step S300 is YES, the processor 81 determines whether or not an adhesive release operation has been performed based on the operation data (step S301). Specifically, the processor 81 determines whether or not an operation to reverse the orientation of the user character PC (virtual camera) has been performed a predetermined number of times within a predetermined time (for example, 1 second). For example, if a predetermined number of directional input operations in the opposite direction are performed using the analog stick 52 within the predetermined time, the processor 81 determines that an adhesive release operation has been performed. The processor 81 also calculates the posture of the right controller 4 based on the output of the angular velocity sensor 115 and detects the swing operation of the right controller 4. If a predetermined number of swing operations in the opposite direction using the right controller 4 are detected within the predetermined time, the processor 81 determines that an adhesive release operation has been performed. If both directional input operations in the opposite direction using the analog stick 52 and swing operations in the opposite direction using the right controller 4 are detected within the predetermined time, the number of each operation is added together. Then, if the total number of operations reaches a predetermined number within the predetermined time, it is determined that an adhesive release operation has been performed. For example, if the predetermined number of operations is set to 4, and within the predetermined time, two directional input operations in the opposite direction using the analog stick 52 and two swing operations in the opposite direction using the right controller 4 are performed, the processor 81 determines that the adhesion release operation has been performed. Note that the directional input operations using the analog stick 52 and the swing operations using the right controller 4 may not be added together and may be counted as separate operations.

[0252] If a debonding operation is performed (step S301: YES), the processor 81 debonds the selected object from all virtual objects 70 that are bonded to the selected object (step S302). The processor 81 also deletes the bonded objects 78 that are bonded to the selected object.

[0253] Next, the processor 81 recalculates the combined object information (step S303). Here, the combined object information of the combined object formed by the processing in step S302 is recalculated and stored in memory. For example, if a combined object consisting of three virtual objects 70 becomes a combined object consisting of two virtual objects 70 by the processing in step S302, the combined object information of the combined object consisting of those two virtual objects 70 is recalculated.

[0254] If the process in step S303 is performed, or if NO is determined in step S300, or if NO is determined in step S301, the processor 81 terminates the de-adhesion process shown in Figure 40.

[0255] The process shown in the flowchart above is merely an example, and the order and content of the process may be changed as appropriate.

[0256] As described above, in this embodiment, the user selects a first object from among a plurality of virtual objects 70 that are movable in the virtual space and can be bonded to each other by a selection operation (step S102). If the selected first object (selected object) and the unselected second object (other virtual object 70) satisfy predetermined bonding conditions (step S151: YES), a bonding object 78 appears indicating the bonding positions of the first and second objects, respectively (step S152). In response to the user's bonding instruction, the first object and the second object are bonded at the bonding positions indicated by the bonding object (step S154). If the first object is moved or its orientation changes due to the user's operation, the bonding positions of the first and second objects indicated by the bonding object 78 change (steps S201, S202).

[0257] The display of adhesive objects allows users to easily recognize that the first and second objects are being bonded together when assembling a combined object by bonding multiple virtual objects, and they can also recognize where the bonding is taking place. As the bonding position indicated by the adhesive object changes in response to the movement and posture changes of the first object, users can bond the first and second objects while adjusting the bonding position.

[0258] Furthermore, in this embodiment, when the user moves the first object in order to attach the first object to the second object, a collision detection is performed between the first object and the second object (step S106). In other words, a collision detection is also performed when the user assembles multiple virtual objects. If the first object and the second object collide, the movement of at least one of the first object and the second object is controlled. For example, in response to the collision, the second object may move, the direction of movement of the first object may change, or the movement speed of the first object may decrease.

[0259] Even when assembling multiple virtual objects, collision detection is performed and the behavior of each virtual object is controlled, allowing the user to perceive the distance between the first and second objects. Furthermore, if two virtual objects are separated to avoid a collision, the bonding object displays the bonding position of the two virtual objects, allowing the user to recognize which virtual object the first object is bonded to and at what position.

[0260] In this embodiment, an image 71 of the first object (selected object) is generated on the surface of the second object (another virtual object 70) (step S105). Specifically, the first object is projected in three orthogonal directions (up / down, left / right, and front / back), and an image 71 (projected image) is generated in these three directions. The image 71 is generated separately from the shadow of the first object generated by the light source in the virtual space. The first object selected by the user is displayed in a predetermined color (e.g., yellow) that is different from the color it was in before selection, and the image 71 of the first object is also displayed in the same predetermined color. Therefore, the user can easily recognize the positional relationship between the first object and the second object. Also, since the first object and its image 71 are displayed in the same display manner, the user can easily recognize that the image 71 projected onto the surface of the second object is an image of the first object, and can easily recognize the positional relationship between the first object and the second object. Furthermore, the color of the selected first object and the color of its image 71 do not necessarily have to be exactly the same color; for example, both may be colors of the same color family, with one being darker than the other.

[0261] Furthermore, in this embodiment, the virtual object 70 is configured with priority bonding areas that are easier to bond than other parts. If priority bonding areas are configured on both the first object and the second object, these priority bonding areas are set as bonding positions. Specifically, if the priority bonding areas of the first object and the second object satisfy the first conditions (conditions A to C), the priority bonding areas of the first object and the second object are set as bonding positions. When a bonding command is issued in this state, the priority bonding areas of the first object and the second object are bonded together. On the other hand, if the priority bonding areas of the first object and the second object do not satisfy the first conditions, or if priority bonding areas are not configured on at least one of the first object and the second object, the positions (nearest positions) that satisfy the second conditions on the first object and the second object are set as bonding positions.

[0262] Also, when the priority adhesion part of the first object and the priority adhesion part of the second object are adhered, based on a predetermined direction (e.g., normal direction, tangential direction) for each priority adhesion part, the posture of at least one of the first object and the second object is adjusted so that the first object and the second object are adhered. Thereby, the user can adhere the first object and the second object in an appropriate posture without finely adjusting the posture of the first object with respect to the second object.

[0263] Specifically, a normal direction is set for each priority adhesion part, and the first object and the second object are adhered so that the normal directions of each priority adhesion part are parallel (e.g., so that the normal vectors are in opposite directions). Thereby, for example, the first object and the second object can be adhered so that a certain surface of the first object and a certain surface of the second object are parallel.

[0264] Also, a tangential direction is set for each priority adhesion part. The first object and the second object are adhered so that the tangential direction set for the priority adhesion part of the first object and the tangential direction set for the priority adhesion part of the second object form a predetermined angle. Thereby, the first object and the second object can be adhered so that the orientation of the first object and the orientation of the second object form a predetermined angle. For example, two virtual objects can be adhered in the same orientation or adhered so that the orientations are perpendicular.

[0265] Also, in this embodiment, the adhesive object connects the adhesive position of the first object and the adhesive position of the second object. When the positional relationship between the adhesive position of the first object and the adhesive position of the second object changes due to the movement or posture change of the first object, the shape of the adhesive object changes. Therefore, the user can intuitively recognize that the two objects are adhered. Also, since the shape of the adhesive object changes due to the movement or posture change of the first object, the user can recognize the change in the positional relationship between the first object and the second object.

[0266] Also, in this embodiment, in the state where the first object and the second object are adhered, one of the first object and the second object is selected, and an adhesive object that connects the adhesive positions of the selected one object and the third object is generated. Then, in response to the user's adhesion instruction, the selected one object and the third object are adhered. Thereby, it is possible to easily adhere a new object to a desired position with respect to a combined object composed of a plurality of virtual objects. If the entire combined object including a plurality of virtual objects is selected and the entire combined object becomes the adhesion range of the new object, it may be difficult to specify the adhesion position. However, in this embodiment, since the user selects any one of the plurality of virtual objects constituting the combined object and adheres a new object to the selected virtual object, it is easy to specify the adhesion position.

[0267] Furthermore, in this embodiment, after the first object and the second object are bonded at the bonding position indicated by the adhesive object, the adhesive object remains in a predetermined range including the bonding position. This makes it possible to indicate that the first object and the second object have been bonded by user operation. Note that since the first object and the second object are in contact at the bonding position, strictly speaking, the adhesive object does not remain at the bonding position (bonding point) of the two objects, but rather remains around the bonding position. The phrase "the adhesive object remains in a predetermined range including the bonding position" includes cases where, strictly speaking, the adhesive object does not remain at the bonding position but remains around the bonding position.

[0268] Furthermore, in this embodiment, each of the multiple virtual objects is assigned a weight, and when the first object and the second object are joined together, the lighter object moves a longer distance than the heavier object. This allows us to understand the weight relationship between the two virtual objects by observing their behavior when they are joined together, and to estimate the center of gravity of the combined object after joining. It also allows us to represent how objects of different weights move as if attracting each other, and how the two objects are joined together.

[0269] In this embodiment, virtual objects are bonded together in response to a bonding instruction to form a combined object, and combined object information is calculated and stored each time a virtual object is bonded. Also, virtual objects are detached from the combined object in response to a release operation, and combined object information is calculated and stored each time a virtual object is detached. The combined object information (for example, the center of gravity of the combined object) is information calculated based on the multiple virtual objects that constitute the combined object. The operation of the combined object is controlled based on the combined object information. As a result, when calculating the behavior of the combined object, it is possible to calculate the behavior of the combined object using the combined object information without having to check the bonding between the multiple virtual objects included in the combined object each time, thereby reducing the computational load.

[0270] Furthermore, in this embodiment, after generating a combined object by bonding multiple virtual objects, one of the multiple virtual objects constituting the combined object is set as a selected object, and based on input to the input means, the combined object including the selected object is moved, and another virtual object can be bonded to the combined object. Also, if a selected object is set, the combined object including the selected object is moved in response to movement input using the input means (e.g., analog stick 52 or controller angular velocity sensor) (step S104). If a selected object is set, when the movement input using the input means satisfies the release condition, the bonding between the selected object and other virtual objects among the virtual objects constituting the combined object that are bonded to the selected object is released (step S302), while the bonding of other virtual objects not bonded to the selected object is maintained. This makes it possible to select individual virtual objects included in the combined object and release only some of the bonding, improving user convenience when assembling multiple virtual objects to construct a combined object through user operation. In other words, if all the bonding of virtual objects included in the combined object is released, the user has to start the assembly again from the beginning, but in this embodiment, since some bonding can be released, it is not necessary to start the assembly again from the beginning. Furthermore, since the input method for moving the combined object is also used for detaching the virtual object, the detachment of the virtual object and the movement of the combined object can be performed with intuitive operation.

[0271] Furthermore, in this embodiment, if the selected object is released from its attachment to another virtual object, the selected object remains selected (the selected object remains set). This allows the user to immediately move on to attaching another virtual object to the selected object after detaching another virtual object from it.

[0272] In this embodiment, the user character is moved based on movement input using the first input means (analog stick 32), and the combined object including the selected object is also moved (step S103). Furthermore, the combined object including the selected object is moved based on movement input using the second input means (analog stick 52) without moving the user character, and when the movement input using the second input means satisfies the release condition, the adhesion between the selected object and other virtual objects is released. Because the adhesion between the selected object and other virtual objects is released by moving the selected object without moving the user character, other virtual objects can be detached with intuitive and easy-to-understand operation.

[0273] Furthermore, in this embodiment, it is also possible to attach another virtual object to the selected object. This allows other virtual objects to be detached from the selected object or attached to it based on input to the input means.

[0274] Furthermore, in this embodiment, if the number of times the combined object changes direction within a predetermined time reaches a predetermined number, the adhesion between the selected object and other virtual objects is released. "Change in the direction of movement of the combined object" means that the combined object changes from a state where it is moving in a first direction to a state where it is moving in a second direction different from the first direction. Also, for example, if the number of times the combined object moves in the opposite direction within a predetermined time reaches a predetermined number, the adhesion between the selected object and other virtual objects is released. Here, "movement of the combined object in the opposite direction" may mean that the combined object changes from a state where it is moving in a first direction to a state where it is moving in a second direction having a predetermined angle (for example, 150 degrees to 180 degrees) with respect to the first direction. This allows other virtual objects to be detached with intuitive operation. For example, if movement in the opposite direction is performed a predetermined number of times within a predetermined time, the combined object will move in a swaying manner. Therefore, other virtual objects attached to the selected object can be detached with an intuitive operation, such as shaking them off the combined object.

[0275] Furthermore, the release condition may be one that is more easily satisfied the more times the movement input changes using the input means within a predetermined time. That is, the more times the movement input changes using the input means within a predetermined time, the more easily it is determined that the release condition has been met, and if it is determined that the release condition has been met, the adhesion between the selected object and other virtual objects may be released. Here, "change in movement input using the input means" means a change in the input for moving the selected object, and for example, it may be a change from input in a first direction using the analog stick 52 to input in a second direction. Also, "change in movement input using the input means" may be, for example, a change from a state where the first button for movement is pressed to a state where the second button for movement is pressed. Furthermore, "the more times the movement input changes using the input means within a predetermined time, the more easily the release condition has been met" may include, for example, the release condition being met when the number of changes in movement input using the input means within a predetermined time reaches a predetermined number. In other words, the number of changes in movement input using the input means within a predetermined time is counted, and when the counted number reaches a "predetermined number," the attachment between the selected object and other virtual objects may be released. The "predetermined number" may be a fixed value set in advance by the game developer, a value that changes during the game, or a value set by the user.

[0276] Furthermore, the determination of whether the release condition has been met may be made by methods other than counting the number of changes in movement input using the input means within a predetermined time. For example, the release condition may be met when the accumulated values ​​(e.g., the angle indicating the input direction) related to movement input using the input means within a predetermined time are accumulated and the accumulated values ​​reach a predetermined value. Even in such a case, the more changes in movement input using the input means within the predetermined time, the easier it is to satisfy the release condition.

[0277] Furthermore, in this embodiment, the more times the movement input changes using the third input means (analog stick 52) within a predetermined time, the easier it may be to determine that the release condition has been met. Also, the more times the movement input changes using the fourth input means (angular velocity sensor) within a predetermined time, the easier it may be to determine that the release condition has been met. If movement input is performed on both the third input means and the fourth input means within a predetermined time, it may be easier to determine that the release condition has been met than if movement input is performed on only one of the third input means or the fourth input means. For example, the release condition may be determined to be met when the number of movement input changes using the third input means reaches a predetermined number, and the release condition may be determined to be met when the number of movement input changes using the fourth input means reaches a predetermined number. In this case, the release condition may be determined to be met when the sum of the number of movement input changes using the third input means and the number of movement input changes using the fourth input means reaches a predetermined number, and the adhesion between the selected object and other virtual objects may be released. This allows the selected object to be detached from other virtual objects using two input methods, and if input is made to both input methods simultaneously, the detachment can be performed quickly.

[0278] (modified version) Although this embodiment has been described above, the above embodiment is merely an example, and modifications such as the following may be made.

[0279] For example, in the above embodiment, a combined object was constructed by bonding virtual objects 70 that were previously placed in the virtual space, but in other embodiments, the virtual objects 70 do not need to be placed in the virtual space beforehand. For example, the virtual objects 70 may be contained in a storage area of ​​a user character PC, and the user may select a virtual object 70 in the storage area through user operation, and the selected virtual object 70 may appear in the virtual space.

[0280] Furthermore, a separate virtual space may be provided for generating a combined object using multiple virtual objects 70, in addition to the virtual space in which user character PCs and enemy characters appear. In this case, multiple virtual objects 70 are placed in this separate virtual space to generate the combined object. Once the combined object is generated, it may appear in the virtual space in which user character PCs and enemy characters appear.

[0281] Furthermore, in the above embodiment, an adhesive object 78 indicating the bonding position is generated, and the two virtual objects 70 are bonded together so that the bonding positions indicated by the adhesive object 78 coincide. In other embodiments, for example, when the two virtual objects 70 are in a relatively close position, an adhesive command (for example, the same or different operation as the adhesive instruction above) can be used, and in response to the execution of the adhesive command, the two virtual objects 70 may be bonded together without attracting each other, by fixing (maintaining) their relative positions. That is, the adhesive command becomes effective when the two virtual objects 70 approach each other to a predetermined distance, and in response to the execution of the adhesive command, the relative positions (distance and orientation) at the time of command execution are fixed, and the two virtual objects 70 are bonded together. The adhesive object may or may not be interposed between these two virtual objects 70. Note that the relative positions of the two virtual objects 70 when the adhesive command is executed may be corrected (for example, by adjusting their orientation), and the corrected relative positions may be fixed.

[0282] Furthermore, in the above embodiment, each priority adhesive BP was bonded such that the normal vector of the priority adhesive BP of the selected object and the normal vector of the priority adhesive BP of the other virtual object 70 were in opposite directions. In other embodiments, each priority adhesive BP may be bonded such that the normal vector of the priority adhesive BP of the selected object and the normal vector of the priority adhesive BP of the other virtual object 70 were in the same direction.

[0283] Also, in the above-described embodiment, when the priority adhesion part BP of the selection object and the priority adhesion part BP of another virtual object 70 satisfy the first condition, these priority adhesion parts BP are adhered. The first condition is not limited to those described above, and may be other conditions. For example, the first condition may be any one of conditions A to C, or may be another condition. For example, any condition may be used as long as the user does not feel discomfort with respect to the adhesion of the priority adhesion parts to each other.

[0284] Also, when the priority adhesion part BP of the selection object and the priority adhesion part BP of another virtual object 70 do not satisfy the first condition, the two objects are adhered at positions (closest positions) that satisfy the second condition in the selection object and the other virtual object 70. In other embodiments, the position that satisfies the second condition is not limited to the closest position.

[0285] Also, in other embodiments, when priority adhesion parts are set for both the selection object and another virtual object 70, the two priority adhesion parts are preferentially adhered. In other embodiments, when a priority adhesion part is set for either the selection object or another virtual object 70, either one of the priority adhesion parts may be set as the preferential adhesion position, and for the other, a portion other than the priority adhesion part may be set as the adhesion position.

[0286] Also, in the above-described embodiment, a virtual object constituting the combined object is selected, and a new virtual object is further adhered to the selection object. In other embodiments, a virtual object constituting the combined object may be selected, and a new virtual object may be adhered to a virtual object other than the selection object constituting the combined object.

[0287] Furthermore, in the above embodiment, the selected object is projected in three orthogonal directions in the virtual space, and if other virtual objects 70 exist in those directions, an image 71 of the selected object is generated on the surface of the other virtual objects 70. In another embodiment, the selected object may be projected in a direction toward the other virtual objects 70, and an image 71 of the selected object may be generated on the surface of the other virtual objects 70. In this case, for example, even if there are no other virtual objects 70 directly beside the selected object, but other virtual objects 70 exist diagonally toward the selected object, the image 71 of the selected object will still be generated on the surface of the other virtual objects 70.

[0288] Furthermore, in the above embodiment, when the first virtual object is moved and attached to the second virtual object, collision detection between the two virtual objects is performed. However, if an attached object is generated between the two virtual objects before the attachment instruction is given, collision detection between the two virtual objects is not required.

[0289] Furthermore, in the above embodiment, when the first virtual object is moved and attached to the second virtual object, an image of the first virtual object is projected onto the surface of the second virtual object, but such an image does not necessarily have to be projected. Also, in the above embodiment, an image of the first virtual object is projected in the vertical direction and in the left-right direction perpendicular to it, but the projection directions are not limited to these. Also, it is not necessarily the case that an image of the first virtual object is projected in two directions. Furthermore, when the first virtual object is moved, a shadow of the first virtual object is not necessarily generated.

[0290] Furthermore, in the above embodiment, when the first virtual object is selected and attached to the second virtual object, the first virtual object is displayed in a predetermined color, and the image of the first virtual object is also displayed in the predetermined color. In other embodiments, even if the first virtual object is selected, the first virtual object may be displayed in its original color. Also, the image of the first virtual object may be displayed in a color corresponding to its original color, or it may not be displayed at all.

[0291] Furthermore, in the above embodiment, it was assumed that there are virtual objects for which a priority adhesive portion is set and virtual objects for which a priority adhesive portion is not set. In other embodiments, there may be only virtual objects for which a priority adhesive portion is not set, or there may be only virtual objects for which a priority adhesive portion is set.

[0292] Furthermore, in the above embodiment, the orientation of at least one of the first virtual object and the second virtual object was adjusted using a predetermined direction (normal direction or tangential direction) based on the priority bonding portion. In other embodiments, such orientation adjustment may be performed based on any direction, not limited to the normal direction or tangential direction, and any method of orientation adjustment is acceptable. Moreover, such orientation adjustment may not be performed at all.

[0293] Furthermore, in the above embodiment, the adhesive object was defined as an object that connects the bonding positions of two virtual objects. In other embodiments, the adhesive object may be an object that indicates the bonding positions of two virtual objects but does not connect the bonding positions themselves.

[0294] Furthermore, in the above embodiment, in response to the bonding instruction, the two virtual objects 70 were pulled against each other, and the lighter object was moved such that it traveled a longer distance than the heavier object. In other embodiments, the movement is not limited to this mode, and for example, they may be moved by the same distance regardless of their weight.

[0295] Furthermore, in the above embodiment, when a selected object is selected, if the user character PC's orientation (the orientation of the virtual camera) is changed using the analog stick 52 a predetermined number of times as a release operation, the objects attached to the selected object are released, while the adhesion between objects other than the selected object is maintained. In other embodiments, when a selected object is selected (set) and the above release operation is performed, the objects attached to the selected object are released, and some or all of the objects other than the selected object may also be released from adhesion. That is, when a release operation (an operation that causes the screen to shake around the selected object) is performed, if the objects attached to the selected object are released, the adhesion between objects other than the selected object may be released or maintained.

[0296] Furthermore, other operations besides the deselection operation described above may cause objects attached to the selected object to detach, while maintaining attachment to objects other than the selected object.

[0297] For example, adhesion may be released when a specific button is pressed or a predetermined touch operation is performed on a touch panel. For example, if a specific button is pressed while a selected object is selected, objects attached to the selected object may be released, while adhesion between objects not attached to the selected object may be maintained. Also, for example, if a specific button is pressed while a selected object is selected, objects attached to the selected object may be released, and adhesion between objects not attached to the selected object may be partially or completely released.

[0298] Furthermore, in the above embodiment, one virtual object included in the combined object was selected as the selected object, but in other embodiments, multiple virtual objects included in the combined object may be selected as the selected object. When multiple virtual objects included in the combined object are selected as the selected object and an operation for debonding is performed, other virtual objects that are bonded to the multiple selected objects may be detached. In this case, the bond between the selected multiple selected objects may be maintained, or the bond between the selected multiple selected objects may be released. Also, when the entire combined object is selected and an operation for debonding is performed, the bond between the entire or a part of the combined object may be released.

[0299] Alternatively, the entire combined object may be selected as a selected object, and other virtual objects placed in the virtual space may be further attached to the combined object using the glue command. In this case, the other virtual objects may be attached to any of the multiple virtual objects included in the combined object.

[0300] Furthermore, in the above embodiment, it was possible to detach the multiple virtual objects 70 that were bonded together by the adhesive object, but in other embodiments, the configuration may be such that detachment is not possible.

[0301] In the above embodiment, a virtual object included in the combined object was selected as a selected object, the selected object was moved, and other virtual objects were further attached to the combined object by an adhesion command. In the above embodiment, a virtual object included in the combined object was selected as a selected object, and objects attached to the selected object were detached in response to an adhesion release operation. In other embodiments, in addition to (or instead of) such methods for generating and releasing combined objects, the generation and release of combined objects may be performed by other methods.

[0302] For example, as another method of generating a combined object, if a combine command is first entered by the user, then a selection object is selected, and then a glue instruction is given, other virtual objects may be glued to the selection object. The order of entering the combine command, selecting the selection object, and giving the glue instruction is not limited to this. Also, if a selection object is selected while the combine command is entered, other virtual objects may be glued to the selection object even without a glue instruction. Furthermore, if the entire combined object is selected and a combine command is entered, other virtual objects may be further glued to the combined object even if the virtual objects included in the combined object are not selected.

[0303] Alternatively, as another method of unbonding, if the user first inputs an unbonding command, then selects the selected objects, and then issues a separation instruction, the bond between the virtual objects included in the combined object may be unbonded. In this case, the above unbonding operation may be performed as the separation instruction. Note that the order of inputting the unbonding command, selecting the selected objects, and issuing the separation instruction is not limited to this. Also, if the selected objects are selected while the unbonding command is input, the bond may be unbonded even without a separation instruction. Furthermore, if the entire combined object is selected and the unbonding command is input, the bond between all or part of the combined object may be unbonded even without selecting the virtual objects included in the combined object.

[0304] Furthermore, the user character PC may have a virtual storage area capable of accommodating items (for example, a virtual bag, pouch, item box, etc. owned by the user character PC), and the storage area may be capable of accommodating material objects that may be included in the combined object. The storage area may be carried and displayed by the user character PC, or it may not be displayed normally and may be displayed in response to user operations. If the combined object includes virtual objects (material objects) that can be accommodated in the storage area, then when a specific operation (for example, pressing a specific button) is performed near the combined object, the material objects may be accommodated in the storage area. In this case, when the specific button is pressed, the adhesion of the material objects included in the combined object may be released, and the material objects may be accommodated in the storage area. For example, suppose a combined object is created that includes virtual object 70X, virtual object 70Y, and virtual object 70Z. When virtual objects 70X and 70Y are bonded together by a first bonding object, and virtual objects 70Y and 70Z are bonded together by a second bonding object, when a specific button is pressed and virtual object 70X is stored in the storage area as a material object, the bond between virtual object 70X and virtual object 70Y is released, and the first bonding object is deleted. Then, virtual object 70X is stored in the storage area as a material object. On the other hand, since virtual objects 70Y and 70Z are not virtual objects that can be stored in the storage area, the bond between virtual object 70Y and virtual object 70Z is not released, and the second bonding object is not deleted. Therefore, virtual objects 70Y and 70Z remain in the virtual space as a combined object. The material object (virtual object 70X) stored in the storage area may be used to create another combined object.

[0305] Furthermore, in the above embodiment, adhesion is released in response to an adhesion release operation, but adhesion may be released without an adhesion release operation. For example, if a large force (a force exceeding a predetermined threshold) is applied in a direction that separates the virtual objects constituting the combined object, the adhesion between those virtual objects may be released.

[0306] Furthermore, the hardware configuration described above for running the game is merely an example, and the game processing may be performed on any other hardware. For example, the game processing may be executed on any information processing system, such as a personal computer, tablet device, smartphone, or server on the internet. Additionally, the game processing may be distributed and executed across multiple devices.

[0307] Furthermore, the configurations of the above embodiments and their modified forms can be combined in any way, as long as they do not contradict each other. Moreover, the above is merely an example of the present invention, and various other improvements and modifications may be made. [Explanation of symbols]

[0308] 1. Game System 2. Main unit 3 Left controller 4 Right controller 32, 52 Analog Sticks 81 processors 70 Virtual Objects 71 Image of a virtual object 78 Adhesive Objects

Claims

1. Computers, A means for generating an adhesion object indicating the adhesion position of two virtual objects between a first virtual object and a second virtual object, which are among a plurality of virtual objects arranged in a virtual space, A game program that functions as a means for bonding the first virtual object and the second virtual object at the bonding position to generate a combined object, The generation of the aforementioned adhesive object is The process involves deforming a plurality of bones, which constitute the framework of the adhesive object, in accordance with the change in the relative positional relationship between the first virtual object and the second virtual object. This includes deforming the appearance of the adhesive object that covers a plurality of the bones in accordance with the deformation of the bones, Game program.

2. The adhesive object includes a first portion that runs along the surface of the first virtual object and the surface of the second virtual object, and a second portion that connects the two first portions. The game program according to claim 1.

3. The bones included in the first part are deformed to conform to the surface of the first virtual object and the surface of the second virtual object, respectively. The game program according to claim 2.

4. The first virtual object and the second virtual object are bonded together at their respective nearest neighbor positions. The bone included in the first part is deformed such that the first part includes the nearest neighbor positions of the first virtual object and the second virtual object, The game program according to claim 3

5. The deformation of the bone includes changing the size of the bone. A game program according to any one of claims 1 to 4.

6. The size of the bone is determined based on the shape of the plane obtained by superimposing the cross-section obtained when the bounding box of the first virtual object is cut in the first plane and the cross-section obtained when the bounding box of the second virtual object is cut in the second plane. The game program according to claim 5.

7. The generation of the combined object includes bringing the first virtual object and the second virtual object closer together and bonding them in response to a bonding instruction from the user. The bonded object is generated even while the two virtual objects are being brought closer together in accordance with the bonding instruction. The game L according to any one of claims 1 to 6.

8. The aforementioned computer is further configured to function as a means for determining collisions between objects. The collision determination described above is: This is performed between the first virtual object and the second virtual object and other virtual objects. The following is not performed between the adhesive object and the other virtual object: The game program according to any one of claims 1 to 7.

9. The aforementioned computer further, After the generation of the combined object, the adhesive object is made to function as a means to remain as a cover object covering the adhesive position. The game program according to any one of claims 1 to 8.

10. The cover object is an object in which the number of bones has been reduced compared to the glued object before the generation of the combined object. The game program according to claim 9.

11. The cover object does not include the bones. The game program according to claim 10.

12. The aforementioned computer further, After the generation of the combined object, the adhesive object is made to function as a means to remain as a cover object covering the adhesive position. The collision determination described above is: This is performed between the merged object and other virtual objects. The following actions are not performed between the cover object and the other virtual object: The game program according to claim 8.

13. It is a game system, A means for generating an adhesion object indicating the adhesion position of two virtual objects between a first virtual object and a second virtual object, which are among a plurality of virtual objects arranged in a virtual space, The system includes means for bonding the first virtual object and the second virtual object at the bonding position to generate a combined object, The generation of the aforementioned adhesive object is The process involves deforming a plurality of bones, which constitute the framework of the adhesive object, in accordance with the change in the relative positional relationship between the first virtual object and the second virtual object. This includes deforming the appearance of the adhesive object that covers a plurality of the bones in accordance with the deformation of the bones, Game system.

14. A game processing method, The steps include generating an adhesion object between a first virtual object and a second virtual object, which are among a group of virtual objects placed in a virtual space, indicating the adhesion position of both virtual objects, The process includes the step of bonding the first virtual object and the second virtual object at the bonding position to generate a combined object, The step of generating the aforementioned adhesive object is: The steps include: deforming a plurality of bones that constitute the framework of the adhesive object in accordance with the change in the relative positional relationship between the first virtual object and the second virtual object; The step includes deforming the appearance of the adhesive object covering a plurality of bones in accordance with the deformation of the bones, Game processing method.