WO2022264989A1 - 情報処理装置、データ同期プログラム、データ同期方法、データ同期システム及び端末装置 - Google Patents

情報処理装置、データ同期プログラム、データ同期方法、データ同期システム及び端末装置 Download PDF

Info

Publication number
WO2022264989A1
WO2022264989A1 PCT/JP2022/023717 JP2022023717W WO2022264989A1 WO 2022264989 A1 WO2022264989 A1 WO 2022264989A1 JP 2022023717 W JP2022023717 W JP 2022023717W WO 2022264989 A1 WO2022264989 A1 WO 2022264989A1
Authority
WO
WIPO (PCT)
Prior art keywords
client
target object
synchronization target
ownership
clients
Prior art date
Application number
PCT/JP2022/023717
Other languages
English (en)
French (fr)
Inventor
直樹 宮永
Original Assignee
株式会社ソフトギア
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社ソフトギア filed Critical 株式会社ソフトギア
Priority to EP22809305.0A priority Critical patent/EP4145805A1/en
Priority to CN202280004615.4A priority patent/CN115943619B/zh
Priority to KR1020227043276A priority patent/KR102612811B1/ko
Priority to US18/070,481 priority patent/US11766608B2/en
Publication of WO2022264989A1 publication Critical patent/WO2022264989A1/ja

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/31Communication aspects specific to video games, e.g. between several handheld game devices at close range
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/55Details of game data or player data management
    • A63F2300/5526Game data structure
    • A63F2300/5533Game data structure using program state or machine event data, e.g. server keeps track of the state of multiple players on in a multiple player game
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/55Details of game data or player data management
    • A63F2300/5593Details of game data or player data management involving scheduling aspects
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/80Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game
    • A63F2300/8082Virtual reality

Definitions

  • the present invention relates to an information processing device, a data synchronization program, a data synchronization method, a data synchronization system, and a terminal device.
  • Patent Document 1 an information processing device that synchronizes a user object of a user terminal and a simulation target of a simulator has been proposed (see Patent Document 1, for example).
  • the information processing apparatus disclosed in Patent Document 1 is connected to an individual simulator that simulates a predetermined behavior of a simulation target, and a user terminal that determines the behavior of a user object according to an instruction input by a user.
  • the processing device holds a copy of the user object and the simulation target, and the user terminal transmits the information of the simulation target to the individual simulator via the information processing device at each synchronization timing determined based on the predetermined timing determination rule. , and predicts the behavior of the simulated object based on the information of the simulated object that was last obtained outside the synchronization timing, and presents the result of the prediction to the user.
  • Such a configuration reduces the processing load and the communication load.
  • Patent Literature 1 holds a copy of the user object and the simulation target, and transmits the copy of the simulation target included in the visual field range of the user object to the user terminal, thereby reducing processing load and communication load. Although it reduces the impact, the information processing device performs collision determination for the simulation target and notifies the corresponding simulator to perform the interaction. Since copies of user objects and other objects to be simulated are not sent to the simulator, the problem is that it cannot be applied as is to the situation in which data of multiple user terminals are synchronized in a configuration in which multiple user terminals participate. There is
  • an object of the present invention is to provide an information processing apparatus, a data synchronization program, a data synchronization program, and a data synchronization program that suppress an increase in processing load and communication load in a situation in which a plurality of user terminals participate in data synchronization.
  • a synchronization method, a data synchronization system and a terminal device are provided.
  • One aspect of the present invention provides the following information processing device, data synchronization program, data synchronization method, data synchronization system, and terminal device in order to achieve the above object.
  • An information processing device connected by a network to a plurality of clients for synchronizing objects with each other, Receiving means for receiving change content information of a synchronization target object from the plurality of clients;
  • the management information managed for each synchronization target object defines a client having ownership of the synchronization target object, and the management information defines a client that is the transmission source of the synchronization target object.
  • An information processing device connected by a network to a plurality of clients for synchronizing objects with each other, Receiving means for receiving change content information of a synchronization target object from the plurality of clients; updating means for updating a duplicate object obtained by duplicating the synchronization target object according to the change content information;
  • the management information managed for each synchronization target object defines a client having ownership of the synchronization target object, and the management information defines a client that is the transmission source of the synchronization target object. and transmitting means for transmitting the change content information to a client other than the client having the ownership among the plurality of clients when defined as a client having the ownership.
  • the receiving means receives a synchronization target object owned by the client and stores it in the recording medium as the duplicate object. 1] or the information processing device according to [2].
  • the receiving means duplicates the newly generated object as a synchronization target object and stores the duplicated object in the recording medium according to [1] or [2]. ].
  • the transmission means transmits the duplicate object or the synchronization target object stored in the recording medium to the The information processing apparatus according to [3] or [4], which transmits to a client other than a client having ownership.
  • the information processing apparatus according to any one of [1] to [5], which does not transmit to the client. [9] The above [1] to [8], wherein the receiving means receives a difference from the synchronization target object before change as change content information of the synchronization target object, and updates the replication object.
  • the information processing device according to any one of . [10] When the client exits from the virtual space in which the plurality of clients participate, the ownership of the replicated object corresponding to the synchronization target object that the client has owned is replaced by the ownership.
  • the information processing apparatus according to any one of [1] to [9], further functioning as management means for transferring to a client other than the client based on a predetermined rule when transfer is permitted.
  • the management information managed for each synchronization target object defines a client having ownership of the synchronization target object, and the management information defines a client that is the transmission source of the synchronization target object.
  • a computer networked with multiple clients that synchronize objects with each other Receiving means for receiving change content information of a synchronization target object from the plurality of clients; updating means for updating a duplicate object obtained by duplicating the synchronization target object according to the change content information;
  • the management information managed for each synchronization target object defines a client having ownership of the synchronization target object, and the management information defines a client that is the transmission source of the synchronization target object.
  • an information processing device connected by a network to a plurality of clients that synchronize objects with each other, receiving change content information of a synchronization target object from the plurality of clients;
  • the management information managed for each synchronization target object defines a client having ownership of the synchronization target object, and the management information defines a client that is the transmission source of the synchronization target object. updating a replicated object that replicates the object to be synchronized with the change information, if defined as a client having ownership; and sending the change content information to one of the plurality of clients other than the proprietary client.
  • an information processing device connected by a network to a plurality of clients that synchronize objects with each other, receiving change content information of a synchronization target object from the plurality of clients; a step of updating a replicated object, which is a replica of the synchronization target object, with the change content information;
  • the management information managed for each synchronization target object defines a client having ownership of the synchronization target object, and the management information defines a client that is the transmission source of the synchronization target object. and if defined as a proprietary client, sending the change information to a client of the plurality of clients other than the proprietary client.
  • a plurality of clients synchronizing objects with each other;
  • An information processing device connected to the plurality of clients via a network,
  • Receiving means for receiving change content information of a synchronization target object from the plurality of clients;
  • the management information managed for each synchronization target object defines a client having ownership of the synchronization target object, and the management information defines a client that is the transmission source of the synchronization target object.
  • updating means for updating a replicated object, which is a replica of the synchronization target object, according to the change content information when defined as a client having ownership;
  • a data synchronization system comprising an information processing apparatus having a transmitting means for transmitting the change content information to a client other than the client having the ownership among the plurality of clients.
  • An information processing device connected to the plurality of clients via a network,
  • Receiving means for receiving change content information of a synchronization target object from the plurality of clients; updating means for updating a duplicate object obtained by duplicating the synchronization target object according to the change content information;
  • the management information managed for each synchronization target object defines a client having ownership of the synchronization target object, and the management information defines a client that is the transmission source of the synchronization target object.
  • a data synchronization system comprising: an information processing apparatus having transmission means for transmitting the change content information to a client other than the client having the ownership among the plurality of clients when the client is defined as the client having the ownership.
  • the plurality of clients according to any one of [16] to [18], wherein the plurality of clients transmits a difference from the synchronization target object before change as change content information of the synchronization target object to the information processing device.
  • Data synchronization system [19] A terminal device as a client for synchronizing objects with other clients via an information processing device, The management information managed for each synchronization target object defines a client having ownership of the synchronization target object, and the management information defines a client that is the transmission source of the synchronization target object.
  • receiving means for receiving, via the information processing apparatus, change content information of the synchronization target object from the client having the ownership of the synchronization target object when the client is defined as a client having ownership; updating means for updating a duplicate object obtained by duplicating the synchronization target object according to the change content information;
  • a terminal device as a client for synchronizing objects with other clients via an information processing device If the replication object that replicated the synchronization target object is updated in the self client, Management information managed for each synchronization target object, wherein the management information defining a client having ownership of the synchronization target object is referred to, and in the management information, the self-client owns the synchronization target object.
  • the duplicate object generated by the client having ownership is selected among the plurality of clients. Can be sent to non-clients.
  • the updated replication object is You can choose not to send it to an authorized client.
  • the ninth aspect of the invention it is possible to receive the difference from the synchronization target object before change as the change content information of the synchronization target object, and update the duplicate object.
  • the transfer of the ownership of the replicated object corresponding to the synchronization target object that the client had the ownership of is permitted. In this case, it is possible to delegate to other clients other than the client based on predetermined rules.
  • the replication Objects can be deleted and other clients can be instructed to delete objects corresponding to replicated objects held by other clients.
  • the difference from the synchronization target object before change can be transmitted to the information processing apparatus as change content information of the synchronization target object.
  • FIG. 1 is a schematic diagram showing an example of the configuration of a synchronization system according to an embodiment.
  • FIG. 2 is a block diagram illustrating a configuration example of a server device according to the embodiment;
  • FIG. 3 is a diagram showing the configuration of participant management information.
  • FIG. 4 is a diagram showing the structure of replica management information.
  • FIG. 5 is a flowchart for explaining an example of synchronous operation.
  • FIG. 6 is a flow chart for explaining an example of a synchronization operation based on ownership.
  • FIG. 7 is a flow chart for explaining an example of a synchronous operation in halfway participation.
  • FIG. 8 is a flow chart for explaining an example of a synchronous operation for leaving halfway.
  • FIG. 9 is a flow chart for explaining another example of the synchronous operation when leaving halfway.
  • MMOG Massively Multiplayer Online Game
  • the activities of the participants are related to each other as time passes in the virtual space.
  • Multiple virtual characters controlled by multiple participants interact, fight, or perform activities such as collecting items over time. This activity increases or decreases the character's experience points for items, battle-related numbers, and actions.
  • a shared virtual space (room) is divided, or a plurality of identical virtual spaces (rooms) are prepared by setting a limit on the number of participants.
  • this method does not allow participants in different rooms to share their gaming experiences. Therefore, it is desirable to join the same room in order to fully share the gaming experience.
  • FIG. 1 is a schematic diagram showing an example of the configuration of a synchronization system according to an embodiment.
  • This synchronization system is configured by connecting a server device 1 as an information processing device and terminal devices 2a, 2b, and 2c as clients so that they can communicate with each other via a network.
  • the device or network may be a cloud, a personal computer, a game terminal, a LAN, the Internet, a virtual machine, a virtual network, or the like.
  • the server device 1 is a server-type information processing device that operates in response to requests from terminal devices 2a, 2b, and 2c operated by an operator, and has a function for processing information within its main body. Equipped with electronic components such as CPU (Central Processing Unit), HDD (Hard Disk Drive) or flash memory, volatile memory, LAN board (wireless/wired).
  • the server device 1 communicates with the terminal devices 2a, 2b, and 2c to transmit and receive data, thereby synchronizing data handled on the terminal devices 2a, 2b, and 2c, and is, for example, a game server. .
  • the server device 1 may be configured by a plurality of clusters, and may be configured to execute distributed processing. Alternatively, it may be configured as a virtual machine in a cloud environment.
  • the terminal devices 2a, 2b, and 2c are terminal-type information processing devices that operate based on programs, and have electronic devices such as CPUs, HDDs, or flash memories that have functions for processing information in their main bodies. Have parts.
  • the terminal devices 2a, 2b, and 2c operate, for example, based on a program such as MMOG, and sequentially output data as a result of the operation to the server device 1, and also output data from the server device 1 as a result of the operation of other terminals. data are received and the game objects are synchronized frequently among the terminal devices 2a, 2b, and 2c.
  • the terminal device 2 is depicted as three devices, it may be a single device or two devices, or may be configured with four or more devices. To provide a configuration capable of communication even when connected.
  • the network 4 is a communication network capable of high-speed communication, for example, a wired or wireless communication network such as an intranet or a LAN (Local Area Network).
  • a wired or wireless communication network such as an intranet or a LAN (Local Area Network).
  • the server device 1 and the terminal devices 2a, 2b, and 2c operate to synchronize information (synchronized objects) held as objects in each device as the game progresses, A copy of an object in each device is held as a replica (replicated object), and transmission and reception (relay) of the replica is performed in order to copy and hold the replica (as a tertiary copy) in each device while managing the ownership of the replica.
  • the synchronous operation is assisted.
  • the server device 1 does not actually perform a synchronous operation, but rather performs a relay. ”.
  • the content of the replica of the server device 1 is updated only by updating the object in the terminal device of the user who has the ownership, and the object (tertiary copy) in the terminal device of the other user who does not have the ownership is updated. ) are not updated.
  • the server device 1 functions as a relay server and synchronizes objects among the terminal devices 2a, 2b, and 2c will be specifically described in the embodiment.
  • classes and instantiated classes may be collectively referred to as "objects.”
  • object is a collection of processes for executing a program, and the class includes methods for executing the processes and fields as variables used by the methods when executing the processes.
  • An object has zero or more fields, and each field has one or more field names and field values.
  • FIG. 2 is a block diagram showing a configuration example of the server device 1 according to the embodiment.
  • the server device 1 is composed of a CPU (Central Processing Unit) and the like, controls each part, and also includes a control unit 10 that executes various programs, and a storage unit 11 that is composed of a storage medium such as a flash memory and stores information. , a memory 12 configured from a volatile recording medium for temporarily storing information, and a communication section 13 for communicating with the outside via a network.
  • a CPU Central Processing Unit
  • the server device 1 is composed of a CPU (Central Processing Unit) and the like, controls each part, and also includes a control unit 10 that executes various programs, and a storage unit 11 that is composed of a storage medium such as a flash memory and stores information. , a memory 12 configured from a volatile recording medium for temporarily storing information, and a communication section 13 for communicating with the outside via a network.
  • a CPU Central Processing Unit
  • control unit 10 By executing a data processing program 110 as a data synchronization program, the control unit 10 functions as participant management means 100, data reception means 101, data transmission means 102, replica management means 103, data update means 104, and the like.
  • the participant management means 100 records the user ID of the participant, the socket ID of the terminal device of the participant, etc. for the participant who participates in the common virtual space called the room to which the room ID is assigned, and manages the room. is stored in the storage unit 11 as the participant management information 111 of the above.
  • a system that provides only a single virtual space does not need to distinguish between rooms, so room IDs may not be necessary.
  • the data receiving means 101 receives and replicates any number of zero or more objects as data to be synchronized from the terminal devices 2a, 2b, and 2c via the communication unit 13, and replicates replicas 120a and 120a as replicated objects.
  • the replica 120b and the replica 120c are stored in the memory 12.
  • the data transmission means 102 transmits the replicas 120a, 120b, and 120c via the communication unit 13 to terminals determined as transmission destinations based on the transmission rules of the participant management information 111 and the replica management information 112.
  • the replica management means 103 stores the replica ID of the replica 120a, the replica 120b, and the replica 120c, the user ID of the owner who owns the replica of the replica ID, A transmission rule indicating users to be synchronized and a policy such as permission/prohibition of transfer are recorded and stored in the storage unit 11 as the replica management information 112 .
  • the data update means 104 receives the difference from the terminal device of the user having the ownership based on the replica management information 112 by the data reception means 101 when the object corresponding to the replica 120a, the replica 120b, and the replica 120c is updated. and update. Receiving the difference is preferable from the viewpoint of suppressing the information amount of the network, but the updated object itself may be received. Furthermore, data transmission means 102 transmits the difference to a terminal determined as a transmission destination based on participant management information 111 and replica management information 112 . It should be noted that transmitting the difference is preferable from the viewpoint of suppressing the amount of network information, but the updated object itself may be transmitted.
  • the storage unit 11 stores a data processing program 110 that causes the control unit 10 to operate as each means 100 to 104 described above, participant management information 111, replica management information 112, and the like.
  • the storage unit uses a relational database, file system, or the like. For speeding up, an in-memory database such as Redis may be used or used together.
  • the memory 12 temporarily stores the replicas 120a, 120b, 120c... and other information.
  • terminal devices 2a, 2b, and 2c have the same configuration as the server device 1, and also include an operation unit and a display unit. A description of the parts that have the same configuration as the server device 1 will be omitted.
  • FIG. 3 is a diagram showing the configuration of the participant management information 111. As shown in FIG. 3
  • the participant management information 111 is created for each room, which is a virtual space, and includes a user ID for identifying a participant, the user name of the participant, the IP address of the terminal device operated by the participant and the server device 1, It has a socket ID of a socket (TCP socket or UDP socket) including information necessary for transmission and reception, such as a port number, and a participation date and time indicating the date and time of participation in the room.
  • a socket TCP socket or UDP socket
  • the role of the participant in the room, the group to which they belong, the transmission when updating the shared object, the selection rule of the synchronization target object to be received (close distance, within sight), the reception format or its preference (default) may be described.
  • FIG. 4 is a diagram showing the configuration of the replica management information 112. As shown in FIG.
  • the replica management information 112 is created for each room, which is a virtual space, and transmits the replica for synchronizing with the replica ID for identifying the replica and the owner indicating the participant ID having ownership of the replica. and a transfer rule that indicates whether ownership of the replica can be transferred. Furthermore, if transfer is possible, rules for the transfer method, transmission and reception data formats when updating objects, or their preferences may be described.
  • the transmission rule may be defined by the performance of the client terminal, the role of the user who owns the network status of the client terminal, and the group to which it belongs (“group ⁇ ” in FIG. 3). The definition may be based on criteria such as being close or being in sight (“within 50 distance” in FIG. 3). Alternatively, it may be defined by the performance of the client terminal or the network status of the client terminal.
  • the terminal devices 2a, 2b, and 2c execute, for example, a program for a network battle-type game, and send a room participation request to the server device 1 in order to play the game in a common virtual space. do.
  • the progress of the game is performed by the respective terminal devices 2a, 2b, and 2c, and the server device 1 does not proceed with the game, but performs only the synchronous operation of objects, which will be described later.
  • the participant management means 100 of the server device 1 Upon receiving a room participation request, the participant management means 100 of the server device 1 sends the participant a user ID, user name, socket ID, date and time of participation, and the participant associated with the room ID in the storage unit 11. Recorded in the management information 111 .
  • any user who joins joins the default room.
  • the game provides multiple rooms, participating users enter a special room called a lobby (there may be multiple lobbies if the number of people is limited), and then move to the desired room.
  • the game provides multiple rooms, there is also a form in which the user returns to the room he or she previously participated in.
  • the game may be started by a single player, or the game may be started at an appropriate timing after several participants gather.
  • the method of joining a room is not particularly limited in the present invention.
  • a room management table is prepared and managed.
  • the terminal devices 2a, 2b, and 2c sequentially generate, update, and delete multiple objects (characters, weapons, items, etc.) as the program is executed.
  • the server device 1 performs a relay operation for synchronizing objects in the terminal devices 2a, 2b, and 2c.
  • a synchronization operation will be described below, for example, when a new object to be synchronized is generated in the terminal device 2a after all the objects in the terminal devices 2a, 2b, and 2c have been synchronized during game play.
  • FIG. 5 is a flowchart for explaining an example of a synchronous operation.
  • the terminal device 2a generates an object A0 as a new object to be synchronized as the game progresses ( S120a ).
  • the terminal device 2 a generates a primary copy A 0 of the object A 0 (S 121 a ) and transmits it to the server device 1 .
  • the reason for generating the primary copy is that the object A0 changes over time. is generated and treated as information for synchronization.
  • Another reason for generating a primary copy is that in subsequent synchronizations, the information used in the immediately preceding synchronization may be necessary in order to confirm differences due to changes over time.
  • the object A0 may be treated as information for direct synchronization and sent to the server device 1 without creating a primary copy. Alternatively, it may be a combination of both, especially in a composite object composed of multiple objects. In the following discussion, we do not strictly distinguish between primary copies and synchronized objects.
  • the data receiving means 101 of the server device 1 receives and replicates the primary copy of the object as data to be synchronized from the terminal device 2a via the communication unit 13, and stores the replica A0 in the memory 12 as a secondary copy (S110). ).
  • the replica management means 103 of the server device 1 determines that the owner of the replica A0 is "U001" (the user of the terminal device 2a), and the transmission destination rule is that of a user other than the user of the terminal device 2a. ”, whether or not to permit transfer “OK”, etc. are recorded, and the replica management information 112 is updated and stored in the storage unit 11 .
  • the policy may be fixedly defined for each type of object (for example, as a default, the destination is all room participants other than the owner, transfer is not allowed, etc.), or when the terminal device 2a creates an object
  • the terminal device 2a which has the ownership right, may specify or change the designation at any time according to the progress of the game, or the terminal device 2b of the transmission destination may be different from the terminal device 2a in the virtual space. You may specify not to receive it temporarily for reasons such as distance.
  • the data transmission means 102 of the server device 1 transmits data to the terminal devices 2b and 2c of the users determined as destinations based on the replica management information 112 (referring to the participant management information 111 and the like as necessary).
  • Replica A 0 is transmitted via communication unit 14 .
  • the terminal devices 2b and 2c receive and duplicate the replica A0 from the server device 1 , and store the tertiary A0 as a tertiary copy in the memory ( S120b , S120c).
  • the terminal devices 2b and 2c proceed with the game based on the objects synchronized by the tertiary A0 . It should be noted that in the case where the tertiary difference is updated in a later step, it is necessary to devise a way to prevent the tertiary from being directly changed as the game progresses. If you want to change the contents of the tertiary to predict interactions or reduce lag as the game progresses, use a copy of the tertiary for game progress in advance and operate as the game progresses.
  • the terminal device 2a further changes the field values and the like of the object A0 to make it an object A1 ( S122a ).
  • the terminal device 2a updates the primary copy (primary copy A 1 ) in correspondence with the object A 1 and generates a difference A 01 with the primary primary copy A 0 corresponding to the object A 0 (S123a ), the update information of the changed field is transmitted to the server device 1 as the difference A01.
  • the difference from the previous transmission of the synchronization information is sufficiently large to exceed a predetermined threshold according to the game content, and the update is required to maintain the synchronization state.
  • the data receiving means 101 of the server device 1 receives the difference A01 from the terminal device 2a via the communication unit 13 (S111), and the data updating means 104 updates the replica A0 in the memory 12 to the replica A1 ( S112 ). ).
  • the data transmission means 102 of the server device 1 transmits the difference A 01 of the replica A 0 to the terminal devices 2b and 2c determined as transmission destinations based on the replica management information 112 via the communication unit 14 .
  • the terminal devices 2b and 2c receive the difference A01 from the server device 1 ( S121b , S121c), update the tertiary A0 in the memory to the tertiary A1 ( S122b , S122c ), and update the object synchronized by the tertiary A1.
  • the game progresses based on Each of the terminal devices 2a, 2b, and 2c assumes that the locally-stored primary copy and tertiary copy are the latest state of the object to be synchronized, and each independently executes the game while processing user operations and physics simulation. proceed. As a result, when each primary copy is changed, the processing corresponding to S422a and S423a is performed, and the transmission of the difference to the server device 1 is repeated.
  • the terminal device 2a suppresses the amount of communication by not notifying the server device 1 when there is no change in the object, but it may be designed to notify even when there is no change.
  • the terminal device 2a transmits difference information to suppress the amount of communication.
  • the specification may be such that the entire object including unchanged fields is notified. Alternatively, these specifications may be changed statically or dynamically for each object to be synchronized and notified.
  • FIG. 6 is a flowchart for explaining an example of a synchronization operation based on ownership.
  • Object A 0 of terminal device 2a (S220a, S221a) is replicated as replica A 0 in server device 1 (S210), and replicated from server device 1 to terminal devices 2b and 2c as tertiary A 0 (S220b, S220c).
  • the terminal device 2b updates the tertiary A 0 with the progress of the game and changes it to the tertiary A 0 ' (S221b)
  • the ownership of the object A 0 which is the original of the tertiary A 0 ' is Since it is defined for the user of the terminal device 2a, the difference A 00′ (S222b) between the tertiary A 0 ′ updated by the terminal device 2b and the tertiary A 0 updates the replica A 0 of the server device 1 and the other terminal device 2a.
  • the tertiary A 0 of the terminal device 2c are not updated.
  • prohibition of synchronization by tertiary A 0 ' means that the terminal device 2 b does not transmit the difference A 00 ' between the tertiary A 0 and the tertiary A 0 ' to the server device 1 (a), and the server device 1 00′ (S211) is received, synchronization processing is not performed (no update processing is performed on the replica, nor is update information transmission processing performed) (ignoring or discarding) (a), the server apparatus 1 Do not apply A 00' to its own replica A 0 and do not update it, and do not send it to the terminal device 2a (and the terminal device 2c) (c), or even if the terminal device 2a receives the difference A 00' This is achieved by (d) not performing synchronization processing (not updating either the primary copy or the object).
  • Prohibition of synchronization based on object updates other than the terminal device of the user who has ownership may be realized by any of the methods a to d, or any combination of one or more of them.
  • the amount of information sent and received via network communication is the smallest, and the amount of information sent and received via network communication increases in the order of (a), (c), and (d). be.
  • server verification is usually performed in many cases to prevent cheating of the game, the combination of A and B is the preferred minimum configuration.
  • the terminal device 2b has generated the object B0
  • the user of the terminal device 2b has ownership of the object B0
  • the terminal device 2c has generated the object C0
  • the user of the terminal device 2c has the object B0 Assumes ownership of C0 .
  • FIG. 7 is a flowchart for explaining an example of a synchronous operation in mid-participation.
  • the terminal device 2a joins the room.
  • the server device 1 adds information on the user U001 associated with the terminal device 2a to the participant management information 111.
  • the terminal device 2a creates, for example, a new character as a new object A0 along with the midway participation ( S320a ).
  • the terminal device 2a generates a primary copy of the object A0 ( S321a ) and transmits it to the server device 1.
  • the data receiving means 101 of the server device 1 receives and replicates the primary copy of the object as data to be synchronized from the terminal device 2a via the communication unit 13, and stores the replica A0 in the memory 12 as a secondary copy (S310). ).
  • the replica management means 103 of the server device 1 determines that the owner of the replica A0 is "U001" (the user of the terminal device 2a), the destination rule is "other than the user of the terminal device 2a), A policy such as “OK” for permission to transfer is recorded, and the replica management information 112 is updated and stored in the storage unit 11 .
  • the data transmission means 102 of the server device 1 transmits the replica A0 via the communication unit 14 to the terminal devices 2b and 2c determined as destinations based on the replica management information 112.
  • FIG. 1 the replica management information 112.
  • the terminal devices 2b and 2c receive the replica A0 from the server device 1 , duplicate it, and store the tertiary A0 in the memory as a tertiary copy ( S320b , S320c).
  • the data transmission means 102 of the server device 1 manages in advance the replicas of the objects owned by the users of the other terminal devices 2b and 2c (S311), based on the replica management information 112,
  • the replicas B 0 and C 0 are transmitted to the determined terminal device 2 a via the communication unit 14 . Note that the transmission may be performed prior to the synchronous operation of the object A0 .
  • the terminal device 2a receives and duplicates the replicas B 0 and C 0 from the server device 1, and stores the tertiary B 0 and C 0 in the memory as tertiary copies (S322a).
  • the terminal device 2a communicates only with the server device 1 without communicating with the terminal devices 2b and 2c, and the joining operation is completed.
  • two terminals have already participated, but even if 1,000 terminals have already participated, the terminal device 2a can complete the participation by communicating only with the server device 1, and the participation has already been completed.
  • the 1,000 terminals do not need to notify the terminal device 2a of the objects to be synchronized that they own, and the load on the network and each terminal device due to the terminal device 2a joining in the middle is small.
  • FIG. 8 is a flowchart for explaining an example of a synchronous operation when leaving halfway.
  • the terminal device 2a generates object A 0 (S420a), updates it to object A 1 (S422a), and synchronizes tertiary A 0 and A 1 with terminal devices 2b and 2c (S422b and S422c). It is assumed that the user exits (S424a).
  • object A 0 S420a
  • S422a updates it to object A 1
  • S422b and S422c terminal devices 2b and 2c
  • the terminal device 2a requests the server device 1 to leave.
  • the participant management means 100 of the server device 1 deletes the user information associated with the terminal device 2a from the participant management information 111.
  • FIG. Further, the replica management means 103 of the server device 1 confirms the transfer item of the replica management information 112, and if the transfer item is "OK", changes the next owner to the user of the terminal device 2b and transfers the replica management information. 112 (S413), and notifies the terminal device 2b that the ownership has been changed.
  • the terminal device 2b When the terminal device 2b receives the notification that the ownership has been changed to the terminal device 2b from the server device 1 , the terminal device 2b changes the stored tertiary A1 to the object A1 of which the terminal device 2b owns the ownership ( S423b ). to complete the exit operation.
  • the terminal device 2a explicitly notifies the server device 1 of leaving (S424a), but there are cases where the leaving cannot be notified due to sudden line disconnection or the like. Even in this case, when the server device 1 detects that the terminal device 2a is disconnected (socket is closed, etc.), the server device 1 can complete the leaving and ownership change processing in the same way as when the leaving notification is explicitly received.
  • the transfer item When the transfer item is [OK], it may be determined in advance to which user the transfer is made, it may be determined at the time of leaving, it may be transferred in order of participation date and time, or it may be randomly assigned. Alternatively, it may be assigned to a user with a terminal with high processing capability, or a terminal with a good network environment (large bandwidth, low latency/RTT (round-trip time), stable communication (RTT is stable). It may be assigned to users who are small).
  • FIG. 9 is a flow chart for explaining another example of the synchronous operation when leaving halfway.
  • the terminal device 2a requests the server device 1 to leave (S524a).
  • the server device 1 confirms the transfer item of the replica management information 112, and if the transfer item is "NG", deletes the information about the replica A1 and updates the contents of the participant management information 111 and the replica management information 112. (Deletion of the user information associated with the terminal device 2a, deletion of the synchronization target object owned by the user associated with the terminal device 2a) ( S513 ). to notify you.
  • the terminal devices 2b and 2c Upon receiving the notification that the replica A 1 has been deleted from the server device 1, the terminal devices 2b and 2c delete the stored tertiary A 1 (S523b, S523c), thereby completing the leaving operation.
  • the server device 1 stores replicas of objects generated by all the terminal devices without the terminal device 2a receiving objects to be synchronized from all the other terminal devices 2b and 2c.
  • the terminal device 2a receives objects to be synchronized from the server device 1, in a configuration in which a plurality of terminal devices participate and in a situation in which data of a plurality of terminal devices are synchronized with each other, communication load increases. can be suppressed.
  • the server device 1 does not progress the game, the processing load can be reduced. As a result, it becomes possible to synchronize objects in a game with a scale of 1000 users.
  • halfway participation only needs to receive a replica from the server and create a tertiary, so there is no need to receive objects from other clients, and an increase in communication load and processing load can be suppressed.
  • the object updated by the user who has ownership updates the replica of the server device 1, and furthermore, the updated information is propagated to the remaining clients in the same room.
  • the resolution is a contradiction resolution that gives priority to the owner client, but equality can be achieved if the avatar in the game is a game design owned by each client.
  • Conflicts between owner clients shall be resolved in game design. For example, designing a design that does not have a direct mutual relationship, or making it have a mutual relationship via another mechanism such as RPC (Remote Procedure Call) or another object, so that the objects to be directly synchronized It should be designed so that there is no mutual relationship.
  • RPC Remote Procedure Call
  • the details of the method of progressing the game while synchronizing between clients are omitted because existing technology can be applied.
  • a virtual environment in which a large number of people from all over the world participate there is a possibility that delays or loss may occur in the transmission of information regarding objects to be synchronized. Therefore, in addition to the method proposed by the present invention, it is necessary to use various general techniques in order to transmit information according to the type of virtual space (genre of game) and the type of object to be synchronized.
  • each client In order to handle network delays, each client often synchronizes the virtual space time within the participating virtual space and attaches the virtual space time to the communication information related to the object to be synchronized.
  • a synchronization method is widely used in which the individual clients participating in the virtual space create discrepancies in the progress of the game.
  • the terminal devices 2a, 2b, and 2c progress independently in the virtual space, the times in the virtual space during which they are progressing are slightly different from each other. If the terminal device 2a and the terminal device 2b could be seen side by side, it would appear that the virtual space time of the terminal device 2a is slightly ahead of that of the terminal device 2b. after that, it also occurs in the terminal device 2a).
  • terminal device 2a and the terminal device 2b are geographically separated from each other, and when there is a large difference in the distance between the terminal device 2a and the terminal device 2b and the server device 1 (for example, server device 1, virtual device 2a, and terminal device 2b are located in Tokyo, Osaka, and New York, respectively).
  • retransmissions may be performed by communication protocols to handle network losses.
  • a retransmission further delays the communication of information about the synchronized object.
  • the primary copy is updated at the frame rate (eg 20 times per second). It may be combined with update control by threshold.
  • Frame management is to synchronize each terminal device at each frame time common to the virtual space. More specifically, each client updates the primary copy at each specific common virtual space time in the virtual space (considering conditions such as thresholds as necessary), and at the timing of the update, the frame of the frame in question is updated.
  • each terminal device receives the update information of the primary copy of the other terminal together with the frame time of each update.
  • the frame time attached to the update information of the other terminal received by the terminal device matches the frame time of the latest primary copy when there is no delay.
  • the frame time attached to the update information received by the terminal device differs depending on the terminal device that owns it, due to various reasons such as the location of the terminal device, the network environment, or temporary changes in the communication state. , generally older than the frame time of the terminal's own primary copy.
  • the difference in synchronization between terminals may become large.
  • first measure the difference in the frame time received from each terminal in advance, and proceed with the game according to the frame time of the terminal that sends the slowest frame time on average. can also In that case, update information for several frames is buffered in the terminal device, and the same frame times are combined to strictly progress the game.
  • the lag is 0.1 seconds or more (2 frames or more delay at 20 frames per second), depending on the game genre, the user experience will be poor. I won't go into any further details, but various tricks and compromises are used to match the game genre. In mobile terminals, etc., frame delays change greatly dynamically, so other measures are necessary.
  • the virtual space time information in the virtual space may be attached.
  • a reliable communication protocol such as TCP/IP or RUDP (Reliable UDP)
  • the virtual space-time order of received shared object update information does not change.
  • the entire object to be synchronized is sent every time and the entire object to be synchronized is transmitted as update information using a protocol such as UDP that does not guarantee reliability, assuming communication loss, update
  • UDP reliable UDP
  • the terminal device replaces the received information using the virtual space time attached to the update information, or discards unnecessary old information when old update information is received. to synchronize the objects and progress the game.
  • the participant management information 111 may manage links to participant objects as a list in order of participation.
  • the server device 1 may communicate with the terminal devices 2a, 2b, and 2c by acquiring information necessary for corresponding communication from the participant information of each link.
  • each means 100 to 104 of the control unit 10 are realized by programs, but all or part of each means may be realized by hardware such as ASIC.
  • the program used in the above embodiment can be stored in a recording medium such as a CD-ROM and provided.
  • replacement, deletion, addition, etc., of the steps described in the above embodiment are possible without changing the gist of the present invention.
  • the function of each means may be appropriately combined with other means, or may be separated into a plurality of means.
  • An information processing device a data synchronization program, a data synchronization method, a data synchronization system, and a configuration in which a plurality of user terminals participate and suppresses an increase in processing load and communication load in a situation where data of a plurality of user terminals are synchronized Provide a terminal device.
  • Another aspect of the present invention provides the following information processing device, data synchronization program, data synchronization method, data synchronization system, and terminal device in order to achieve the above object.
  • An information processing device connected by a network to a plurality of clients for synchronizing objects with each other, receiving means for receiving change content information of a synchronization target object from a client having ownership of the synchronization target object; updating means for updating a duplicate object obtained by duplicating the synchronization target object according to the change content information; and transmitting means for transmitting the change content information to one of the plurality of clients other than the client having the ownership.
  • the reception means receives a synchronization target object owned by the client and stores the same in a recording medium as the duplicate object.
  • the receiving means duplicates the newly generated object as a synchronization target object and stores the duplicated object in a recording medium.
  • Information processing equipment When a client participates or when a client newly generates an object, the transmitting means transmits the duplicate object or the synchronization target object stored in the recording medium to the The information processing apparatus according to [2] or [3], which transmits to a client other than a client having ownership.
  • the receiving means does not receive change content information of the synchronization target object from a client other than a client having ownership of the synchronization target object. .
  • the updating means does not update the replication object when the receiving means receives the change content information of the synchronization target object from a client other than the client having ownership of the synchronization target object.
  • the information processing device according to any one of [4].
  • the transmission means transmits the change content information to the client having the ownership of the synchronization target object.
  • the information processing apparatus according to any one of [1] to [4], which does not transmit to the client.
  • the transmitting means instructs another client to delete an object corresponding to the duplicated object held by the client other than the client.
  • processing equipment [11] a computer networked with multiple clients that synchronize objects with each other; receiving means for receiving change content information of a synchronization target object from a client having ownership of the synchronization target object; updating means for updating a duplicate object obtained by duplicating the synchronization target object according to the change content information; A data synchronization program for functioning as transmission means for transmitting the change content information to a client other than the client having the ownership among the plurality of clients.
  • a plurality of clients synchronizing objects with each other;
  • An information processing device connected to the plurality of clients via a network, receiving means for receiving change content information of a synchronization target object from a client having ownership of the synchronization target object; updating means for updating a duplicate object obtained by duplicating the synchronization target object according to the change content information;
  • a data synchronization system comprising an information processing apparatus having a transmitting means for transmitting the change content information to a client other than the client having the ownership among the plurality of clients.
  • the terminal device as a client according to [16] above which, when receiving a duplicate object of a synchronization target object owned by itself from the information processing device, refuses to receive the duplicate object.
  • the terminal device as a client according to [16] or [17] which transmits a difference from the synchronization target object before change as change content information of the synchronization target object to the information processing device.
  • server device 2 terminal device 4: network 10: control unit 11: storage unit 12: memory 13: communication unit 100: participant management means 101: data reception means 102: data transmission means 103: replica management means 104: data Update Means 110: Data Processing Program 111: Participant Management Information 112: Replica Management Information

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Communication Control (AREA)

Abstract

【課題】複数のユーザ端末が参加する構成であって、複数のユーザ端末のデータを同期する状況において、処理負担や通信負担の増加を抑制する情報処理装置、データ同期プログラム、データ同期方法、データ同期システム及び端末装置を提供する。 【解決手段】サーバ装置1は、オブジェクトを互いに同期する複数のクライアントとネットワークで接続され、オブジェクトの所有権を有するクライアントから当該同期対象オブジェクトの差分を受信するデータ受信手段101と、差分により、同期対象オブジェクトを複製したレプリカ120a、120b、120c…を更新するデータ更新手段104と、差分を複数のクライアントのうち所有権を有するクライアント以外へ送信するデータ送信手段102とを有する。 

Description

情報処理装置、データ同期プログラム、データ同期方法、データ同期システム及び端末装置
 本発明は、情報処理装置、データ同期プログラム、データ同期方法、データ同期システム及び端末装置に関する。
 従来の技術として、ユーザ端末のユーザオブジェクトとシミュレータのシミュレート対象とを同期する情報処理装置が提案されている(例えば、特許文献1参照)。
 特許文献1に開示された情報処理装置は、予め定められたシミュレート対象の挙動をシミュレートする個別シミュレータと、ユーザから入力される指示に従ってユーザオブジェクトの挙動を決定するユーザ端末と接続され、情報処理装置はユーザオブジェクト及びシミュレート対象のコピーを保持し、ユーザ端末は、予め定めたタイミング決定ルールに基づいて定められる同期タイミングごとに、シミュレート対象の情報を、情報処理装置を介して個別シミュレータから取得し、同期タイミング外の時点で、最後に取得したシミュレート対象の情報に基づいて、シミュレート対象の挙動を予測し、その予測の結果をユーザに提示する。このような構成において、処理負担や通信負担を軽減する。
特開2007-185446号公報
 しかし、特許文献1の情報処理装置は、ユーザオブジェクト及びシミュレート対象のコピーを保持し、ユーザオブジェクトの視野範囲に含まれるシミュレート対象のコピーをユーザ端末に送信するため、処理負担や通信負担を軽減するものの、情報処理装置においてシミュレート対象の衝突判定を行い、相互作用を実施するように対応するシミュレータに通知するものであるため、当該判定のために情報処理装置の処理負担があるし、シミュレータに対してはユーザオブジェクト及び他のシミュレート対象のコピーを送信しないものであるため、複数のユーザ端末が参加する構成において複数のユーザ端末のデータを同期する状況にはそのまま適用できない、という問題がある。
 従って本発明の目的は、複数のユーザ端末が参加する構成であって、複数のユーザ端末のデータを同期する状況において、処理負担や通信負担の増加を抑制する情報処理装置、データ同期プログラム、データ同期方法、データ同期システム及び端末装置を提供することにある。
 本発明の一態様は、上記目的を達成するため、以下の情報処理装置、データ同期プログラム、データ同期方法、データ同期システム及び端末装置を提供する。
[1]オブジェクトを互いに同期する複数のクライアントとネットワークで接続された情報処理装置であって、
 前記複数のクライアントから同期対象オブジェクトの変更内容情報を受信する受信手段と、
 前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
 前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段とを有する情報処理装置。
[2]オブジェクトを互いに同期する複数のクライアントとネットワークで接続された情報処理装置であって、
 前記複数のクライアントから同期対象オブジェクトの変更内容情報を受信する受信手段と、
 前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
 前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段とを有する情報処理装置。
[3]前記受信手段は、前記複数のクライアントが参加する仮想空間にクライアントが参加した際に、当該クライアントが所有権を有する同期対象オブジェクトを受信して前記複製オブジェクトとして記録媒体に格納する前記[1]又は[2]に記載の情報処理装置。
[4]前記受信手段は、前記クライアントが新たにオブジェクトを生成した際に、当該新たに生成したオブジェクトを同期対象オブジェクトとして複製して前記複製オブジェクトを記録媒体に格納する前記[1]又は[2]に記載の情報処理装置。
[5]前記送信手段は、クライアントが参加した際、又は前記クライアントが新たにオブジェクトを生成した際に、記録媒体に格納した前記複製オブジェクト、又は前記同期対象オブジェクトを、前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する前記[3]又は[4]に記載の情報処理装置。
[6]前記受信手段は、前記同期対象オブジェクトの所有権を有するクライアント以外のクライアントから当該同期対象オブジェクトの変更内容情報を受信しない前記[1]~[5]のいずれかに記載の情報処理装置。
[7]前記更新手段は、前記受信手段が前記同期対象オブジェクトの所有権を有するクライアント以外のクライアントから当該同期対象オブジェクトの変更内容情報を受信した場合、前記複製オブジェクトを更新しない前記[1]~[5]のいずれかに記載の情報処理装置。
[8]前記送信手段は、前記受信手段が前記同期対象オブジェクトの所有権を有するクライアント以外のクライアントから当該同期対象オブジェクトの変更内容情報を受信した場合、当該変更内容情報を、前記所有権を有するクライアントへ送信しない前記[1]~[5]のいずれかに記載の情報処理装置。
[9]前記更新手段は、前記受信手段が前記同期対象オブジェクトの変更内容情報として変更前の前記同期対象オブジェクトとの差分を受信して、前記複製オブジェクトを更新する前記[1]~[8]のいずれかに記載の情報処理装置。
[10]前記クライアントが、前記複数のクライアントが参加する仮想空間から退出した際に、当該クライアントが所有権を有していた前記同期対象オブジェクトに対応する複製オブジェクトの所有権を、当該所有権の移譲が許可されている場合に、予め定めたルールに基づいて当該クライアント以外の他のクライアントに移譲する管理手段としてさらに機能させる前記[1]~[9]のいずれかに記載の情報処理装置。
[11]前記クライアントが、当該クライアントが参加する仮想空間から退出した際に、当該クライアントが所有権を有していた前記同期対象オブジェクトに対応する複製オブジェクトの所有権の移譲が許可されていない場合に、当該複製オブジェクトを削除する管理手段としてさらに機能させ、
 前記送信手段は、当該クライアント以外の他のクライアントに保持されている前記複製オブジェクトに対応するオブジェクトを削除するよう当該他のクライアントに指示する前記[1]~[8]のいずれかに記載の情報処理装置。
[12]オブジェクトを互いに同期する複数のクライアントとネットワークで接続されたコンピュータを、
 前記複数のクライアントから同期対象オブジェクトの変更内容情報を受信する受信手段と、
 前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
 前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段として機能させるためのデータ同期プログラム。
[13]オブジェクトを互いに同期する複数のクライアントとネットワークで接続されたコンピュータを、
 前記複数のクライアントから同期対象オブジェクトの変更内容情報を受信する受信手段と、
 前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
 前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段として機能させるためのデータ同期プログラム。
[14]オブジェクトを互いに同期する複数のクライアントとネットワークで接続された情報処理装置において、
 前記複数のクライアントから同期対象オブジェクトの変更内容情報を受信するステップと、
 前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新するステップと、
 前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信するステップとを有するデータ同期方法。
[15]オブジェクトを互いに同期する複数のクライアントとネットワークで接続された情報処理装置において、
 前記複数のクライアントから同期対象オブジェクトの変更内容情報を受信するステップと、
 前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新するステップと、
 前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信するステップとを有するデータ同期方法。
[16]オブジェクトを互いに同期する複数のクライアントと、
 前記複数のクライアントとネットワークで接続された情報処理装置であって、
 前記複数のクライアントから同期対象オブジェクトの変更内容情報を受信する受信手段と、
 前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
 前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段とを有する情報処理装置とを備えたデータ同期システム。
[17]オブジェクトを互いに同期する複数のクライアントと、
 前記複数のクライアントとネットワークで接続された情報処理装置であって、
 前記複数のクライアントから同期対象オブジェクトの変更内容情報を受信する受信手段と、
 前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
 前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段とを有する情報処理装置とを備えたデータ同期システム。
[18]前記複数のクライアントは、前記同期対象オブジェクトの変更内容情報として変更前の前記同期対象オブジェクトとの差分を前記情報処理装置に送信する前記[16]~[18]のいずれかに記載のデータ同期システム。
[19]情報処理装置を介して他のクライアントとオブジェクトを互いに同期するクライアントとしての端末装置であって、
 前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、当該同期対象オブジェクトの所有権を有するクライアントからの当該同期対象オブジェクトの変更内容情報を、前記情報処理装置を介して受信する受信手段と、
 前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
 前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段とを有する前記情報処理装置と通信可能に接続されるクライアントとしての端末装置。
[20]情報処理装置を介して他のクライアントとオブジェクトを互いに同期するクライアントとしての端末装置であって、
 同期対象オブジェクトを複製した複製オブジェクトが自己クライアントにおいて更新された場合、
 前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において当該自己クライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、当該前記変更内容情報を前記情報処理装置へ送信する送信手段とを有する前記情報処理装置と通信可能に接続されるクライアントとしての端末装置。
[21]前記同期対象オブジェクトの変更内容情報として変更前の前記同期対象オブジェクトとの差分を前記情報処理装置に送信する前記[19]又は[20]に記載のクライアントとしての端末装置。
 請求項1、2、12、13、14、15、16、17、19、20に係る発明によれば、複数のユーザ端末が参加する構成であって、複数のユーザ端末のデータを同期する状況において、処理負担や通信負担の増加を抑制することができる。
 請求項3に係る発明によれば、同期対象オブジェクトの所有権を有するクライアントが参加した際に、当該同期対象オブジェクトを複製して複製オブジェクトを生成することができる。
 請求項4に係る発明によれば、同期対象オブジェクトの所有権を有するクライアントが新たにオブジェクトを生成した際に、当該新たに生成したオブジェクトを同期対象オブジェクトとして複製して複製オブジェクトを生成することができる。
 請求項5に係る発明によれば、所有権を有するクライアントが参加した際、又は所有権を有するクライアントが新たにオブジェクトを生成した際に生成した複製オブジェクトを、複数のクライアントのうち所有権を有するクライアント以外へ送信することができる。
 請求項6に係る発明によれば、同期対象オブジェクトの所有権を有するクライアント以外のクライアントから当該同期対象オブジェクトの変更内容情報を受信しないようにすることができる。
 請求項7に係る発明によれば、同期対象オブジェクトの所有権を有するクライアント以外のクライアントから当該同期対象オブジェクトの変更内容情報を受信した場合、複製オブジェクトを更新しないようにすることができる。
 請求項8に係る発明によれば、同期対象オブジェクトの所有権を有するクライアント以外のクライアントから当該同期対象オブジェクトの変更内容情報を受信し、複製オブジェクトを更新した場合、当該更新した複製オブジェクトを、所有権を有するクライアントへ送信しないようにすることができる。
 請求項9に係る発明によれば、同期対象オブジェクトの変更内容情報として変更前の同期対象オブジェクトとの差分を受信して、複製オブジェクトを更新するようにすることができる。
 請求項10に係る発明によれば、クライアントが退出した際に、当該クライアントが所有権を有していた同期対象オブジェクトに対応する複製オブジェクトの所有権を、当該所有権の委譲が許可されている場合に、予め定めたルールに基づいて当該クライアント以外の他のクライアントに委譲することができる。
 請求項11に係る発明によれば、クライアントが退出した際に、当該クライアントが所有権を有していた同期対象オブジェクトに対応する複製オブジェクトの所有権の委譲が許可されていない場合に、当該複製オブジェクトを削除し、当該クライアント以外の他のクライアントに保持されている複製オブジェクトに対応するオブジェクトを削除するよう当該他のクライアントに指示することができる。
 請求項18に係る発明によれば、複数のクライアントは、情報処理装置から自己が所有権を有する同期対象オブジェクトの複製オブジェクトを受信した場合、当該複製オブジェクトを受信拒否するようにすることができる。
 請求項21に係る発明によれば、同期対象オブジェクトの変更内容情報として変更前の前記同期対象オブジェクトとの差分を前記情報処理装置に送信するようにすることができる。
図1は、実施の形態に係る同期システムの構成の一例を示す概略図である。 図2は、実施の形態に係るサーバ装置の構成例を示すブロック図である。 図3は、参加者管理情報の構成を示す図である。 図4は、レプリカ管理情報の構成を示す図である。 図5は、同期動作の一例を説明するためのフローチャートである。 図6は、所有権に基づく同期動作の一例を説明するためのフローチャートである。 図7は、途中参加における同期動作の一例を説明するためのフローチャートである。 図8は、途中退出における同期動作の一例を説明するためのフローチャートである。 図9は、途中退出における同期動作の他の例を説明するためのフローチャートである。
[実施の形態]
 本実施の形態における同期システムにおいて、複数の参加者が共通の仮想空間における活動、例えばゲームを行う多人数参加型ゲーム(MMOG:Massively Multiplayer Online Game)が実行される。
 多人数参加型ゲームでは仮想空間において時間の経過とともに、参加者の活動が互いに関連する。複数の参加者によって操作される複数の仮想のキャラクターは、時間の経過に従って対話し、戦闘し、あるいはアイテムを集める等の活動を行う。そしてこの活動によってキャラクターは所有するアイテム、戦闘に関する数値や行動についての経験値を増減する。
 このような仮想空間で、クライアント端末では、仮想のキャラクターやアイテムによる、活動の時間経過による変化の状況が同期して表示され、参加者は同じ仮想空間を体験することができる。言い換えれば、各クライアント間で、仮想のキャラクターやアイテムといった、ゲーム上に存在するオブジェクトを同期させる必要がある。
 つまり、上記したような多人数参加型ゲームとしてのオンラインゲームや、その他会議システムなどのネットワークアプリケーションにおいては、参加者の端末間で、ドキュメントや動画などのコンテンツ情報を同期させる技術が用いられる。ここで、参加者人数や同期対象のコンテンツ(同期対象オブジェクト)の数が大きくなると同期に必要なデータ量が増加し、同期の遅れ(ラグ、あるいは、レイテンシ)が増大し、ネットワークアプリケーションとして使用に耐えなくなる。
 MMOGやFPS(First-Person Shooter)などゲームの世界では、同期の遅れは致命的であり、ゲームとして成立しなくなる。そのため、同期対象オブジェクトの数や参加者人数を減らす工夫がなされている。
 同期対象オブジェクトの数を減らすためには、ゲーム設計に工夫が必要である。参加人数を減らすために、共有する仮想空間(ルーム)を分割したり、あるいは、人数制限を設定して同じ仮想空間(ルーム)を複数用意したりする。ただ、この方法では、参加しているルームが異なる参加者はゲーム体験を共有できない。そのため、ゲーム体験を完全に共有するためには、同一のルームに参加することが望ましい。
 単一ルームに収容可能な共有オブジェクトや参加者の数の制限を大きくできれば、ゲーム設計の自由度や参加者のゲーム体験を大きく改善できる。以降、単一ルームに収容可能な共有オブジェクトや参加者の数を大きくするとともに、同期の遅延を抑制するための同期システムの構成について説明する。
(同期システムの構成)
 図1は、実施の形態に係る同期システムの構成の一例を示す概略図である。
 この同期システムは、情報処理装置としてのサーバ装置1と、クライアントとしての端末装置2a、2b、2cとをネットワークによって互いに通信可能に接続することで構成される。装置やネットワークは、クラウドやパソコンやゲーム端末やLANやインターネットであってもよいし、仮想マシンや仮想ネットワークなどであってもよい。
 サーバ装置1は、サーバ型の情報処理装置であり、操作者の操作する端末装置2a、2b、2cの要求に応じて動作するものであって、本体内に情報を処理するための機能を有するCPU(Central Processing Unit)やHDD(Hard Disk Drive)又はフラッシュメモリ、揮発性メモリ、LANボード(無線/有線)等の電子部品を備える。サーバ装置1は、端末装置2a、2b、2cと通信し、データの送受信を行うことで端末装置2a、2b、2c上で扱うデータの同期を行うものであって、例えば、ゲームサーバ等である。なお、サーバ装置1は、複数のクラスターによって構成してもよく、分散処理を実行するよう構成してもよい。あるいは、クラウド環境において仮想マシンとして構成してもよい。
 端末装置2a、2b、2cは、端末型の情報処理装置であり、プログラムに基づいて動作するものであって、本体内に情報を処理するための機能を有するCPUやHDD又はフラッシュメモリ等の電子部品を備える。端末装置2a、2b、2cは、例えば、MMOG等のプログラムに基づいて動作し、動作の結果としてデータをサーバ装置1に対して逐次出力するとともに、サーバ装置1から他の端末の動作の結果としてのデータを受信して各端末装置2a、2b、2c間で高頻度にゲームオブジェクトを同期するものである。なお、端末装置2は3つの装置で描かれているが単一あるいは2個の装置であってもよいし、4以上の装置で構成してもよく、好ましくは、1000台オーダーの端末装置が接続されるような場合であっても通信可能な構成を提供する。
 ネットワーク4は、高速通信が可能な通信ネットワークであり、例えば、イントラネットやLAN(Local Area Network)等の有線又は無線の通信網である。
 一例として、サーバ装置1及び端末装置2a、2b、2cは、ゲームの進行に伴い各装置内でオブジェクトとして保持している情報(同期対象オブジェクト)を、各装置間で同期するために動作し、各装置内のオブジェクトのコピーをレプリカ(複製オブジェクト)として保持し、当該レプリカの所有権を管理しながらレプリカを各装置でコピーして(ターシャリコピーとして)保持するためにレプリカの送受信(リレー)をすることで同期動作の補助を行う。なお、サーバ装置1は実際には同期動作を行っているわけではなく、リレーを行うものであるが、同期のためのリレーのことをより広義に「同期」、この動作のことを「同期動作」と言う場合がある。また、より具体的には、所有権を有するユーザの端末装置におけるオブジェクトの更新によってのみサーバ装置1のレプリカの内容が更新され、所有権を有しない他のユーザの端末装置におけるオブジェクト(ターシャリーコピー)の更新は行われない。以降、サーバ装置1がリレーサーバとなって端末装置2a、2b、2cの間でオブジェクトの同期を行う際の構成、動作の詳細について、実施の形態において具体的に説明する。
 また、本実施の形態において使用する「オブジェクト」、「クラス」、「フィールド」、「インスタンス」等の語句は、例えば、Java(登録商標)、C++、C#、Python、JavaScript(登録商標)、Ruby等で用いられる同語句と同義で用いられるが、以降、クラス、及びインスタンス化されたクラス(インスタンス)のことを総称して「オブジェクト」と言う場合がある。「クラス」は、プログラムを実行するための処理をまとめたものであり、クラス中には処理を実行するメソッド、メソッドが処理を実行する際に用いる変数としてフィールドが含まれる。オブジェクトは0個以降のフィールドを有し、各フィールドは、単数又は複数のフィールド名、フィールド値を有する。
(サーバ装置の構成)
 図2は、実施の形態に係るサーバ装置1の構成例を示すブロック図である。
 サーバ装置1は、CPU(Central Processing Unit)等から構成され、各部を制御するとともに、各種のプログラムを実行する制御部10と、フラッシュメモリ等の記憶媒体から構成され情報を記憶する記憶部11と、揮発性記録媒体から構成され一時的に情報を記憶するメモリ12と、ネットワークを介して外部と通信する通信部13とを備える。
 制御部10は、データ同期プログラムとしてのデータ処理プログラム110を実行することで、参加者管理手段100、データ受信手段101、データ送信手段102、レプリカ管理手段103、データ更新手段104等として機能する。
 参加者管理手段100は、通常ルームIDが付与されたルームと呼ばれる共通の仮想空間に参加する参加者に当該参加者のユーザID、当該参加者の端末装置のソケットID等を記録して当該ルームの参加者管理情報111として記憶部11に格納する。単一の仮想空間しか提供しないシステムでは、ルームを区別する必要がないので、ルームIDが不要な場合もある。
 データ受信手段101は、通信部13を介して端末装置2a、2b、2cからそれぞれが所有する同期対象のデータとして、ゼロ個以上任意個のオブジェクトを受信して複製し、複製オブジェクトとしてレプリカ120a、レプリカ120b、レプリカ120cをメモリ12に格納する。
 データ送信手段102は、参加者管理情報111とレプリカ管理情報112の送信ルールに基づいて送信先として定められた端末にレプリカ120a、レプリカ120b、レプリカ120cを、通信部13を介して送信する。
 レプリカ管理手段103は、レプリカ120a、レプリカ120b、レプリカ120cが生成された際に当該レプリカ120a、レプリカ120b、レプリカ120cのレプリカIDと、当該レプリカIDのレプリカの所有権を有する所有者のユーザID、同期する利用者を示す送信ルール、移譲の可否等のポリシーを記録してレプリカ管理情報112として記憶部11に格納する。
 データ更新手段104は、レプリカ120a、レプリカ120b、レプリカ120cに対応するオブジェクトが更新された場合に、データ受信手段101によってレプリカ管理情報112に基づいて所有権を有するユーザの端末装置からその差分を受信し、更新する。なお、差分を受信することがネットワークの情報量を抑制する観点で好ましいが、更新されたオブジェクトそのものを受信してもよい。さらに、データ送信手段102は、参加者管理情報111とレプリカ管理情報112に基づいて送信先として定められた端末に、差分を送る。なお、差分を送信することがネットワークの情報量を抑制する観点で好ましいが、更新されたオブジェクトそのものを送信してもよい。
 記憶部11は、制御部10を上述した各手段100-104として動作させるデータ処理プログラム110、参加者管理情報111、レプリカ管理情報112等を記憶する。記憶部は、リレーショナル・データベースやファイルシステムなどを用いる。なお、高速化のために、Redisなどインメモリデータベースを利用、あるいは、併用してもよい。
 メモリ12は、レプリカ120a、120b、120c…及びその他の情報を一時的に記憶する。
 なお、端末装置2a、2b、2cは、サーバ装置1と同様の構成に加え、操作部及び表示部を備える。サーバ装置1と構成が共通する部分については説明を省略する。
 図3は、参加者管理情報111の構成を示す図である。
 参加者管理情報111は、仮想空間であるルームごとに作成され、参加者を識別するためのユーザIDと、参加者のユーザ名と、参加者の操作する端末装置及びサーバ装置1のIPアドレス、ポート番号等の送受信に必要な情報を含むソケット(TCPソケットあるいはUDPソケット)のソケットIDと、当該ルームに参加した日時を示す参加日時とを有する。さらに参加者のルーム内での役割、所属グループ、共有オブジェクト更新時の送信、受信する同期対象オブジェクトの選定ルール(距離が近い、視界に入っている)、受信の形式あるいはそのプリファランス(デフォルト)を記述してもよい。
 図4は、レプリカ管理情報112の構成を示す図である。
 レプリカ管理情報112は、仮想空間であるルームごとに作成され、レプリカを識別するためのレプリカIDと、当該レプリカの所有権を有する参加者IDを示す所有者と、同期するために当該レプリカを送信すべき送信のルールと、当該レプリカの所有権が移転可能か否かを示す移譲とを有する。さらに、移譲できる場合は移転方法のルールや、オブジェクト更新時の送信、受信のデータ形式あるいはそのプリファランスを記述してもよい。なお、送信のルールは、クライアント端末の性能、クライアント端末のネットワーク状況所有権を有するユーザの役割、所属グループによって定義してもよいし(図3内の「グループα」)、当該オブジェクトに対する距離が近い、視界に入っている等の基準によって定義してもよい(図3内の「距離50以内」)。あるいは、クライアント端末の性能、クライアント端末のネットワーク状況で定義してもよい。
(情報処理装置の動作)
 次に、本実施の形態の作用を、(1)基本動作、(2)同期動作、(3)途中参加・退出動作に分けて説明する。
(1)基本動作
 複数のユーザが、複数のゲームオブジェクトを同期させて同一の仮想空間(ルーム)での体験(ゲームプレイ)を共有するために、同じ仮想空間に参加する。説明では簡単のため、単一の仮想空間のみを提供するゲームの例を説明する。ユーザはゲームに参加するためにサーバに接続すると、参加ユーザの有無・多寡にかかわらず、常に存在し続ける唯一のルームに参加するものとする。ゲームが複数のルームを使用する場合は、ルーム情報管理機能でルームごとに対応する参加者管理情報111とレプリカ管理情報112へのリンク情報(ルームに対応付けられた参加者管理情報ID及びレプリカ管理情報ID)を維持管理する。まず、端末装置2a、2b、2cは、例えば、ネットワーク対戦型ゲームのプログラムを実行するものであり、共通の仮想空間でゲームをプレイするためにサーバ装置1に対してルームへの参加要求を送信する。なお、ゲームの進行は各端末装置2a、2b、2cで行い、サーバ装置1は、ゲームの進行は行わず、後述するオブジェクトの同期動作のみを行う。
 サーバ装置1の参加者管理手段100は、ルームへの参加要求を受信すると、参加者に対してユーザID、ユーザ名、ソケットID、参加日時とともに記憶部11の当該ルームIDに関連付けられた参加者管理情報111に記録する。
 ルームへの参加はゲームデザインによって様々な形態が考えられる。ゲームが単一のルームしか提供しない場合は、参加した(ログインなど)ユーザはすべてデフォルトのルームに参加する。ゲームが複数のルームを提供する場合は、参加したユーザは待機所にあたるロビーという特殊なルーム(人数制限があれば複数ロビーが存在する場合もある)に入場した後、目的のルームに移動する形態もある。また、ゲームが複数のルームを提供する場合には、ユーザが以前参加していたルームに復帰する形態もある。ルームが新規に作成された場合は、一人でゲームが開始されてもよいし、参加者が数人集まってから適当なタイミングでゲームが開始されてもよい。また、既にルーム内でゲームが開始されている場合は、参加するユーザは、途中参加として扱われる(後述する「(3)途中参加・退出動作」参照。)。本発明ではルームへの参加方法は特に限定しない。なお、複数のルームが用意される場合は、ルーム管理テーブルを用意して管理する。
 端末装置2a、2b、2cは、ゲームのプレイ中は、プログラムの実行に伴い複数のオブジェクト(キャラクター、武器、アイテム等)を逐次生成、更新、削除して処理する。サーバ装置1は、端末装置2a、2b、2cにおけるオブジェクトの同期のためのリレー動作を行う。以下、例えば、ゲームのプレイ中において、端末装置2a、2b、2cのすべてのオブジェクトが同期された後、端末装置2aにおいて新たな同期対象オブジェクトが生成された場合について、同期動作を説明する。
(2)同期動作
 図5は、同期動作の一例を説明するためのフローチャートである。
 まず、端末装置2aは、ゲームの進行に伴い新たな同期対象オブジェクトとしてのオブジェクトAを生成する(S120a)。次に、端末装置2aは、当該オブジェクトAのプライマリコピーAを生成し(S121a)、サーバ装置1に送信する。なお、プライマリコピーを生成する理由は、オブジェクトAが経時的に変化するものであるため、あるタイミング(予め定めた同期タイミング又は変化が生じたタイミング等)におけるオブジェクトの状態を表すデータとしてプライマリコピーを生成して同期用の情報として扱う。また、プライマリコピーを生成する別の理由は、以後の同期において、経時変化による差分を確認するためにも、直前の同期に使用した情報は必要となる場合がある。一方で、実装によっては、プライマリコピーを作らずに、オブジェクトAを直接同期用の情報として扱い、サーバ装置1に送信してもよい。あるいは、特に複数のオブジェクトから構成される複合オブジェクトにおいては、両者の組み合わせでもよい。以下の説明では、プライマリコピーと同期対象オブジェクトは厳密に区別しない。
 サーバ装置1のデータ受信手段101は、通信部13を介して端末装置2aから同期対象のデータとしてオブジェクトのプライマリコピーを受信して複製し、セカンダリコピーとしてレプリカAをメモリ12に格納する(S110)。
 サーバ装置1のレプリカ管理手段103は、レプリカAが生成された際に、例えば、当該レプリカAの所有者「U001」(端末装置2aのユーザ)、送信先ルールとして端末装置2aのユーザ以外」、移譲の可否「OK」等のポリシーを記録してレプリカ管理情報112を更新して記憶部11に格納する。ポリシーは、オブジェクトの種類ごとに固定で定義(例えば、デフォルトとして、送信先は所有者以外のルーム参加者全員、移譲は不可など)されていてもよいし、端末装置2aがオブジェクトを作成する時に指定したりしてもよいし、所有権を持つ端末装置2aがゲーム進行に応じて随時指定や変更をしてもよいし、送信先の端末装置2bが端末装置2aとは仮想空間上での距離がはなれるなどの理由で一時的に受け取らない指定をしてもよい。
 次に、サーバ装置1のデータ送信手段102は、レプリカ管理情報112に基づいて送信先として定められたユーザの端末装置2b、2c(必要に応じて参加者管理情報111などを参照して)にレプリカAを、通信部14を介して送信する。
 端末装置2b、2cは、サーバ装置1からレプリカAを受信して複製し、ターシャリコピーとしてのターシャリAをメモリに格納する(S120b、S120c)。端末装置2b、2cは、当該ターシャリAにより同期されたオブジェクトに基づいてゲームを進行する。なお、後のステップでターシャリの差分更新を行う場合では、ゲームの進行によって、ターシャリを直接変更しないような工夫が必要である。もし、ゲームの進行に応じた相互作用やラグを低減させるための動き予測で、ターシャリの内容を変更するような場合は、あらかじめゲーム進行用にターシャリのコピーを用いてゲームの進行にともなう操作し、後にサーバ装置1から差分更新情報が送られてきた場合は、ターシャリに差分を適用・更新したターシャリで、ゲーム進行用のターシャリのコピーを置き換えて同期させる。瞬時に置き換えると、差分が大きい、あるいは、動きがスムースでない場合は、ターシャリのコピーのフィールド値は、更新後のターシャリのフィールド値に時間をかけてなめらかに一致させるなどして、ユーザ体験を向上してもよい。
 次に、端末装置2aは、ゲームの進行とともにさらにオブジェクトAのフィールド値等を変更してオブジェクトAとする(S122a)。次に、端末装置2aは、当該オブジェクトAに対応させてプライマリコピーを更新(プライマリコピーA)するともに、オブジェクトAに対応するプライマリライマリコピーAとの差分A01を生成し(S123a)、差分A01として変更されたフィールドの更新情報をサーバ装置1に送信する。好ましくは、同期対象オブジェクトのすべてのフィールドのうち、前回同期情報を送信してからの差分がゲームコンテンツに応じて予め定めているスレッシュホールドを超えて十分大きく、同期状態を維持するのには更新が必要なフィールドについてのみ、フィールド名とフィールド値のペアとして、更新が必要なフィールドの個数だけをリスト情報としてまとめて送信する。ゼロ個の場合、送信しない、あるいは、0個の更新として送信する。また、フィールド名が長い場合などは、フィールド名は番号などにコーディングして、データサイズを圧縮するようなデータシリアライゼーション技法を用いても良い。
 サーバ装置1のデータ受信手段101は、通信部13を介して端末装置2aから差分A01を受信し(S111)、データ更新手段104によりメモリ12のレプリカAをレプリカAに更新する(S112)。
 次に、サーバ装置1のデータ送信手段102は、レプリカ管理情報112に基づいて送信先として定められた端末装置2b、2cにレプリカAの差分A01を、通信部14を介して送信する。
 端末装置2b、2cは、サーバ装置1から差分A01を受信し(S121b、S121c)、メモリのターシャリAをターシャリAに更新し(S122b、S122c)、当該ターシャリAにより同期されたオブジェクトに基づいてゲームを進行する。端末装置2a、2b、2cはそれぞれがローカルに保存しているプライマリコピーとターシャルコピーを同期対象オブジェクトの最新状態だと仮定して、それぞれ独立にユーザ操作の処理や物理シミュレーションを行いながらゲームを進行する。その結果、それぞれのプライマリコピーに変更が生じた場合は、S422aおよびS423aに相当する処理を行い、差分をサーバ装置1に送信することを繰り返す。
 なお、上記動作は、所有権を有するユーザID「U001」の端末装置2aがオブジェクトAの生成、変更を行う場合について説明したが、削除も行うことができ、削除された場合は、サーバ装置1に削除した旨を通知して、サーバ装置1が他の端末装置2b、2cに対して削除した旨を通知する。また、上記動作は、所有権を有するユーザID「U001」の端末装置2aがオブジェクトAを1個だけ生成する場合について説明したが、端末装置2a、2b、2cそれぞれが生成するオブジェクトの個数に制限はなく、オブジェクトはそれぞれが2個以上生成してもよいし、1個も生成しなくてもよい。
 また、端末装置2aは、オブジェクトに変更がない場合はサーバ装置1に通知しないことで通信量を抑制するが、変更がない場合も通知する仕様にしてもよい。また、端末装置2aは、オブジェクトに変更があった場合、差分情報を送信して通信量を抑制するが、フィールドの一部でも変更があった場合、あるいは、変更があってもなくても定期的に、変更のないフィールドも含めてオブジェクト全体を通知する仕様にしてもよい。また、これらの仕様を静的、動的に、同期対象オブジェクトごとに切り替えて通知する仕様にしてもよい。
 次に、オブジェクトが更新された場合の同期のルールについて説明する。
 図6は、所有権に基づく同期動作の一例を説明するためのフローチャートである。
 端末装置2aのオブジェクトA(S220a、S221a)がレプリカAとしてサーバ装置1で複製され(S210)、サーバ装置1から端末装置2b、2cにターシャリAとして複製された状態(S220b、S220c)を前提とし、その後、端末装置2bにおいてゲームの進行に伴いターシャリAが更新されてターシャリA‘に変化した場合(S221b)、当該ターシャリA0’のオリジナルであるオブジェクトAの所有権は端末装置2aのユーザに定義されているため、端末装置2bによって更新されたターシャリA0’とターシャリAとの差分A00‘(S222b)によってサーバ装置1のレプリカA、他の端末装置2aのオブジェクトA、端末装置2cのターシャリAは更新されない。
 このようにターシャリA0’による同期の禁止は、ターシャリAとターシャリA‘との差分A00’を端末装置2bがサーバ装置1に送信しないこと(ア)、サーバ装置1が当該差分A00‘(S211)を受信しても同期処理をしない(レプリカに対して更新処理をしないし、更新情報の送信処理もしない)(無視、破棄する)こと(イ)、サーバ装置1が当該差分A00’を自身のレプリカAに適用せずに更新しないで、端末装置2a(及び端末装置2c)に送信しないこと(ウ)、又は端末装置2aが当該差分A00‘を受信しても同期処理をしない(プライマリコピー、オブジェクトのいずれに対しても更新処理をしない)こと(エ)のいずれかにより実現される。所有権を有するユーザの端末装置以外でのオブジェクト更新に基づく同期の禁止はア~エのいずれの方法、あるいはそれら1個以上の任意の組み合わせで実現してもよいが、ア~エのうちアを採用することで最もネットワーク通信で送受信される情報量が少なくなり、イ、ウ、エの順で、ネットワーク通信で送受信される情報量が増えていくため、ア~エの順で好ましい構成である。また、ゲームの不正(チート)を防ぐために、サーバ検証は通常行われることが多いので、アおよびイの組み合わせが好適な最小構成である。
(3)途中参加・退出動作
 次に、端末装置2aが途中参加する場合について説明する。端末装置2bがオブジェクトBを生成しているとともに端末装置2bのユーザが当該オブジェクトBの所有権を有し、端末装置2cがオブジェクトCを生成しているとともに端末装置2cのユーザがオブジェクトCの所有権を有していることを前提とする。
 図7は、途中参加における同期動作の一例を説明するためのフローチャートである。
 まず、端末装置2aは、まずルームに参加する。サーバ装置1は参加者管理情報111に端末装置2aに関連付けられたユーザU001の情報を追加する。また、端末装置2aは、途中参加とともに新たなオブジェクトAとして、例えば、新たなキャラクターを生成する(S320a)。次に、端末装置2aは、当該オブジェクトAのプライマリコピーを生成し(S321a)、サーバ装置1に送信する。
 サーバ装置1のデータ受信手段101は、通信部13を介して端末装置2aから同期対象のデータとしてオブジェクトのプライマリコピーを受信して複製し、セカンダリコピーとしてレプリカAをメモリ12に格納する(S310)。
 サーバ装置1のレプリカ管理手段103は、レプリカAが生成された際に当該レプリカAの所有者「U001」(端末装置2aのユーザ)、送信先ルールとして「端末装置2aのユーザ以外)、移譲の可否「OK」等のポリシーを記録してレプリカ管理情報112を更新して記憶部11に格納する。
 次に、サーバ装置1のデータ送信手段102は、レプリカ管理情報112に基づいて送信先として定められた端末装置2b、2cにレプリカAを、通信部14を介して送信する。
 端末装置2b、2cは、サーバ装置1からレプリカAを受信して複製し、ターシャリコピーとしてターシャリAをメモリに格納する(S320b、S320c)。
 また、サーバ装置1のデータ送信手段102は、他の端末装置2b、2cのユーザが所有権を有するオブジェクトのレプリカを予め管理しているため(S311)、レプリカ管理情報112に基づいて送信先として定められた端末装置2aにレプリカB、Cを、通信部14を介して送信する。なお、当該送信は、オブジェクトAの同期動作より先に行われるものであってもよい。
 端末装置2aは、サーバ装置1からレプリカB、Cを受信して複製し、ターシャリコピーとしてターシャリB、Cをメモリに格納する(S322a)。これら一連の動作により、端末装置2aは、端末装置2b、2cと通信することなくサーバ装置1とのみ通信して参加動作が完了する。ここでは、すでに参加していた端末は2台であるが、すでに千台の端末が参加している場合でも、端末装置2aはサーバ装置1とのみ通信することで参加が完了でき、すでに参加済の千台の端末は、それぞれが所有する同期対象オブジェクトを、端末装置2aに通知する必要がなく、端末装置2aが途中参加することによるネットワークおよび各端末装置の負荷は小さい。
 次に、端末装置2aが途中退出する場合について説明する。
 図8は、途中退出における同期動作の一例を説明するためのフローチャートである。
 端末装置2aはオブジェクトAを生成するとともに(S420a)、更新してオブジェクトAとし(S422a)、端末装置2b、2cにターシャリA、Aがそれぞれ同期された後(S422b、S422c)に退出する(S424a)ものとする。まず、図4に示すように、レプリカ管理情報112のレプリカID「A」の移譲項目が「OK」の場合について説明する。ここで、移譲項目が「OK」であるオブジェクトの例としては、ゲーム中で使用されるアイテム等が挙げられるがキャラクター(NPC: Non Playing Character)や敵であってもよい。
 端末装置2aは、退出をサーバ装置1に要求する。サーバ装置1の参加者管理手段100は、参加者管理情報111から端末装置2aに関連付けられたユーザ情報を削除する。さらに、サーバ装置1のレプリカ管理手段103は、レプリカ管理情報112の移譲項目を確認し、移譲項目が「OK」であれば、次の所有者を端末装置2bのユーザに変更してレプリカ管理情報112の内容を更新するとともに(S413)、端末装置2bに所有権が変更された旨を通知する。
 端末装置2bは、所有権が端末装置2bに変更された旨の通知をサーバ装置1から受け付けると、記憶していたターシャリAを自己に所有権があるオブジェクトAに変更する(S423b)ことで退出動作が完了する。なお、ここで、退出(S424a)は端末装置2aが明示的にサーバ装置1に通知したが、突然の回線断などで、退出を通知できない場合もある。その場合でも、サーバ装置1が、端末装置2aが切断(ソケットがクローズしたなど)を検出した場合、退出通知を明示的に受信した場合と同様に退出および所有権の変更処理を完了できる。
 なお、移譲項目が[OK]の場合、どのユーザに移譲するか予め定めておいてもよいし、退出の際に定めてもよいし、参加の日時順に移譲してもよいし、ランダムの割り当ててもよいし、処理能力の高い端末のユーザに割り当ててもよいし、ネットワーク環境のよい端末(帯域が大きい、レイテンシ/RTT(round-trip time)が小さい、通信が安定(RTTが安定して小さい)している)のユーザに割り当ててもよい。
 次に、レプリカ管理情報112のレプリカID「A」の移譲項目が「NG」の場合について説明する。ここで、移譲項目が「NG」であるオブジェクトの例としては、ゲーム中でプレイされるキャラクター(ユーザ自身のアバタ)や敵であるが、ゲーム中で使用されるアイテム等であってもよい。
 図9は、途中退出における同期動作の他の例を説明するためのフローチャートである。
 端末装置2aは、退出(S524a)をサーバ装置1に要求する。サーバ装置1は、レプリカ管理情報112の移譲項目を確認し、移譲項目が「NG」であれば、当該レプリカAに関する情報を削除して参加者管理情報111およびレプリカ管理情報112の内容を更新(端末装置2aに関連付けられたユーザ情報の削除、端末装置2aに関連付けられたユーザが所有する同期対象オブジェクトの削除)するとともに(S513)、端末装置2b、2cにレプリカAが削除された旨を通知する。
 端末装置2b、2cは、サーバ装置1からレプリカAが削除された旨の通知を受け付けると、記憶していたターシャリAを削除する(S523b、S523c)ことで退出動作が完了する。
(実施の形態の効果)
 上記した実施の形態によれば、端末装置2aが他の全ての端末装置2b、2cから同期対象のオブジェクトを受信せずに、サーバ装置1が全ての端末装置で生成されたオブジェクトのレプリカを保存し、端末装置2aがサーバ装置1から同期対象のオブジェクトを受信するようにしたため、複数の端末装置が参加する構成であって、複数の端末装置のデータを互いに同期する状況において、通信負担の増加を抑制することができる。また、サーバ装置1はゲームを進行しないため、処理負担を軽減することができる。その結果、1000ユーザ規模のゲームのオブジェクト同期が可能となる。
 また、途中参加は、サーバからレプリカを受信してターシャリを作成するのみでよいため、他のクライアントからオブジェクトを受信する必要がなく、通信負担及び処理負担の増加を抑制することができる。
[他の実施の形態]
 なお、本発明は、上記実施の形態に限定されず、本発明の趣旨を逸脱しない範囲で種々な変形が可能である。
 なお、上記した実施の形態では、所有権を有するユーザが更新したオブジェクトがサーバ装置1のレプリカを更新し、さらに、同じルームの残りのクライアントへ更新情報を伝搬する構成としたため、ゲーム進行における矛盾解決は所有者クライアント優先の矛盾解決となるが、ゲームでのアバタは各クライアント自身で所有するゲームデザインであれば、平等を実現できる。所有者クライアント同士の競合はゲームのデザインで解決するものとする。例えば、直接相互関係をもたないようなデザインにするとか、RPC(Remote Procedure Call)のような別のメカニズム、別のオブジェクトを介して、相互関係を持つようにして、直接同期対象オブジェクト同士が相互関係を持たないようにデザインすればよい。
 また、上記した実施の形態では、クライアント間で同期しながらゲームを進行する手法については、既存技術が適用できるため詳細を省いた。特に世界各地から大人数が参加するような仮想環境では、同期対象オブジェクトに関する情報の伝達に遅延や欠損が生じる可能性がある。そのため情報の伝達には仮想空間の種類(ゲームのジャンル)や同期対象オブジェクトの種類に応じて、本発明が提案する手法に加えて、さまざまな一般的な工夫を併用する必要がある。
 まず、ネットワークの遅延を扱うためには、各クライアントは参加している仮想空間内の仮想空間時刻を同期させて、仮想空間時刻を同期対象オブジェクトに関する通信情報に添付することが多い。
 ネットワークの遅延を処理するためには、仮想空間内に参加するクライアント個々でゲーム進行にずれを生じさせる同期方法が広く用いられる。つまり、端末装置2a、2b、2cはそれぞれ独立に仮想空間を進行するが、それぞれが進行中の仮想空間内の時刻はわずかに一致しなくなる。もし、端末装置2aと端末装置2bを並べて見ることができたとすると、端末装置2aが端末装置2bに比べて少し仮想空間時刻が進んでいるようなことが起こる(ある事象が端末装置2bで発生した後で、端末装置2aでも発生する)。特に端末装置2aと端末装置2bが地理的に離れて設置されている時、さらに、端末装置2a及び端末装置2bとサーバ装置1とのそれぞれの距離に大きな違いがある時に顕著になる(例えば、サーバ装置1,仮想装置2a、および、端末装置2bが、それぞれ東京、大阪、および、ニューヨークに存在する場合)。
 さらに、ネットワークの損失を処理するために、通信プロトコルにより再送が行われることがある。再送により、さらに同期対象オブジェクトに関する情報の伝達が遅延する。
 また、同期対象オブジェクトに関する情報の送信頻度を減らすために、前述したスレッシュホールドによる処理だけでなく、送信頻度を制限することも広く行われる。仮想空間の進行をフレーム(適当な時間間隔でゲームの状態をサンプリングし、そのサンプリングの頻度で、同期をとる)で管理する場合は、フレームレート(毎秒20回など)によりプライマリコピーを更新する。スレッシュホールドによる更新制御と組み合わせることもある。フレーム管理は、仮想空間共通の各フレーム時刻で、各端末装置が同期をとることである。より具体的には、仮想空間内の特定の共通仮想空間時刻ごとに各クライアントでプライマリコピーが更新(スレッシュホールドなどの条件も必要に応じて考慮する)され、その更新のタイミングで当該フレームのフレーム時刻(仮想空間時刻あるいはフレームの通し番号)を添付して更新情報(差分あるいは全部)として情報処理装置1に送付する。一方で、各端末装置は、他端末のプライマリコピーの更新情報をそれぞれの更新時のフレーム時刻とともに受信する。端末装置が受信する他端末の更新情報に添付されているフレーム時刻は、遅延がない状態では、最新のプライマリコピーのフレーム時刻と一致する。遅延がある状態では、端末装置の存在場所、ネットワーク環境、あるいは、通信状態の一時的変化などさまざま理由により、端末装置が受信する更新情報に添付されるフレーム時刻はそれぞれを所有する端末装置により異なり、一般的には、端末自身のプライマリコピーのフレーム時刻より古いものとなる。異なるフレーム時刻のプライマリコピーとターシャリコピーに基づいて、ゲームを単純に進行すると、端末間での同期の乖離が大きくなる場合がある。そのような場合は、例えば、まず、各端末から受信するフレーム時刻のずれをあらかじめ測定しておき、平均的に一番遅いフレーム時刻を送ってくる端末のフレーム時刻にあわせてゲームを進行するようこともできる。その場合は、数フレーム分の更新情報を端末装置でバッファリングして、同一フレーム時刻のものを組み合わせて、ゲームを厳密に進行する。しかし、ラグが0.1秒以上(毎秒20フレームの場合だと2フレーム以上の遅れ)になると、ゲームジャンルにもよるが、ユーザ体験が悪くなる。これ以上の詳細は省くが、さまざまな工夫、折衷案を用いて、ゲームジャンルに合わせた手法がとられる。モバイル端末などでは、フレームの遅延が動的に大きく変化するので、別の対応も必要でとなる。
 あるいは、通信路の特質から、仮想空間内の仮想空間時刻情報を添付する場合もある。TCP/IPやRUDP(Reliable UDP)など信頼性のある通信プロトコルを用いている場合は受信する共有オブジェクトの更新情報の仮想空間時間順序の入れ替わりは起こらない。一方で、毎回、同期対象オブジェクト全体を送信して、信頼性を保証しないUDPなどのプロトコルを用いて、通信の欠損を想定し、同期対象オブジェクト全体を更新情報として伝達している場合は、更新情報の到達が一部欠損したり、更新情報の到着がプライマリコピーに添付されていた仮想空間時刻の順にならず、前後したりする場合がある。そのような場合、端末装置は、更新情報に添付されている仮想空間時刻を用いて、受信した情報を入れ替えたり、あるいは、古い更新情報を受信した場合は不要な古い情報は破棄したりなどして、オブジェクトを同期させて、ゲームの進行を行う。
 また、参加者管理情報111は、参加者オブジェクトへのリンクを参加順にリストとして管理するものであってもよい。各リンクの参加者情報から対応する通信に必要な情報を取得してサーバ装置1が端末装置2a、2b、2cと通信を行うものであってもよい。
 上記実施の形態では制御部10の各手段100~104の機能をプログラムで実現したが、各手段の全て又は一部をASIC等のハードウエアによって実現してもよい。また、上記実施の形態で用いたプログラムをCD-ROM等の記録媒体に記憶して提供することもできる。また、上記実施の形態で説明した上記ステップの入れ替え、削除、追加等は本発明の要旨を変更しない範囲内で可能である。また、各手段の機能は適宜他の手段に結合してもよいし、複数の手段に分離してもよい。
複数のユーザ端末が参加する構成であって、複数のユーザ端末のデータを同期する状況において、処理負担や通信負担の増加を抑制する情報処理装置、データ同期プログラム、データ同期方法、データ同期システム及び端末装置を提供する。
 また、本発明の他の態様は、上記目的を達成するため、以下の情報処理装置、データ同期プログラム、データ同期方法、データ同期システム及び端末装置を提供する。
[1]オブジェクトを互いに同期する複数のクライアントとネットワークで接続された情報処理装置であって、
 同期対象オブジェクトの所有権を有するクライアントから当該同期対象オブジェクトの変更内容情報を受信する受信手段と、
 前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
 前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段とを有する情報処理装置。
[2]前記受信手段は、クライアントが参加した際に、当該クライアントが所有権を有する同期対象オブジェクトを受信して前記複製オブジェクトとして記録媒体に格納する前記[1]に記載の情報処理装置。
[3]前記受信手段は、前記クライアントが新たにオブジェクトを生成した際に、当該新たに生成したオブジェクトを同期対象オブジェクトとして複製して前記複製オブジェクトを記録媒体に格納する前記[1]に記載の情報処理装置。
[4]前記送信手段は、クライアントが参加した際、又は前記クライアントが新たにオブジェクトを生成した際に、記録媒体に格納した前記複製オブジェクト、又は前記同期対象オブジェクトを、前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する前記[2]又は[3]に記載の情報処理装置。
[5]前記受信手段は、前記同期対象オブジェクトの所有権を有するクライアント以外のクライアントから当該同期対象オブジェクトの変更内容情報を受信しない前記[1]~[4]のいずれかに記載の情報処理装置。
[6]前記更新手段は、前記受信手段が前記同期対象オブジェクトの所有権を有するクライアント以外のクライアントから当該同期対象オブジェクトの変更内容情報を受信した場合、前記複製オブジェクトを更新しない前記[1]~[4]のいずれかに記載の情報処理装置。
[7]前記送信手段は、前記受信手段が前記同期対象オブジェクトの所有権を有するクライアント以外のクライアントから当該同期対象オブジェクトの変更内容情報を受信した場合、当該変更内容情報を、前記所有権を有するクライアントへ送信しない前記[1]~[4]のいずれかに記載の情報処理装置。
[8]前記更新手段は、前記受信手段が前記同期対象オブジェクトの変更内容情報として変更前の前記同期対象オブジェクトとの差分を受信して、前記複製オブジェクトを更新する前記[1]~[7]のいずれかに記載の情報処理装置。
[9]前記クライアントが退出した際に、当該クライアントが所有権を有していた前記同期対象オブジェクトに対応する複製オブジェクトの所有権を、当該所有権の移譲が許可されている場合に、予め定めたルールに基づいて当該クライアント以外の他のクライアントに移譲する管理手段としてさらに機能させる前記[1]~[8]のいずれかに記載の情報処理装置。
[10]前記クライアントが退出した際に、当該クライアントが所有権を有していた前記同期対象オブジェクトに対応する複製オブジェクトの所有権の移譲が許可されていない場合に、当該複製オブジェクトを削除する管理手段としてさらに機能させ、
 前記送信手段は、当該クライアント以外の他のクライアントに保持されている前記複製オブジェクトに対応するオブジェクトを削除するよう当該他のクライアントに指示する前記[1]~[8]のいずれかに記載の情報処理装置。
[11]オブジェクトを互いに同期する複数のクライアントとネットワークで接続されたコンピュータを、
 同期対象オブジェクトの所有権を有するクライアントから当該同期対象オブジェクトの変更内容情報を受信する受信手段と、
 前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
 前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段として機能させるためのデータ同期プログラム。
[12]オブジェクトを互いに同期する複数のクライアントとネットワークで接続された情報処理装置において、
 同期対象オブジェクトの所有権を有するクライアントから当該同期対象オブジェクトの変更内容情報を受信するステップと、
 前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新するステップと、
 前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信するステップとを有するデータ同期方法。
[13]オブジェクトを互いに同期する複数のクライアントと、
 前記複数のクライアントとネットワークで接続された情報処理装置であって、
 同期対象オブジェクトの所有権を有するクライアントから当該同期対象オブジェクトの変更内容情報を受信する受信手段と、
 前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
 前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段とを有する情報処理装置
とを備えたデータ同期システム。
[14]前記複数のクライアントは、前記情報処理装置から自己が所有権を有する同期対象オブジェクトの複製オブジェクトを受信した場合、当該複製オブジェクトを受信拒否する前記[13]に記載のデータ同期システム。
[15]前記複数のクライアントは、前記同期対象オブジェクトの変更内容情報として変更前の前記同期対象オブジェクトとの差分を前記情報処理装置に送信する前記[13]又は[14]に記載のデータ同期システム。
[16]他のクライアントとオブジェクトを互いに同期するクライアントとしての端末装置であって、
 同期対象オブジェクトの所有権を有するクライアントから当該同期対象オブジェクトの変更内容情報を受信する受信手段と、
 前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
 前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段とを有する情報処理装置
と通信可能に接続されるクライアントとしての端末装置。
[17]前記情報処理装置から自己が所有権を有する同期対象オブジェクトの複製オブジェクトを受信した場合、当該複製オブジェクトを受信拒否する前記[16]に記載のクライアントとしての端末装置。
[18]前記同期対象オブジェクトの変更内容情報として変更前の前記同期対象オブジェクトとの差分を前記情報処理装置に送信する前記[16]又は[17]に記載のクライアントとしての端末装置。
1    :サーバ装置
2    :端末装置
4    :ネットワーク
10   :制御部
11   :記憶部
12   :メモリ
13   :通信部
100  :参加者管理手段
101  :データ受信手段
102  :データ送信手段
103  :レプリカ管理手段
104  :データ更新手段
110  :データ処理プログラム
111  :参加者管理情報
112  :レプリカ管理情報

Claims (21)

  1.  オブジェクトを互いに同期する複数のクライアントとネットワークで接続された情報処理装置であって、
     前記複数のクライアントから同期対象オブジェクトの変更内容情報を受信する受信手段と、
     前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
     前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段とを有する情報処理装置。
  2.  オブジェクトを互いに同期する複数のクライアントとネットワークで接続された情報処理装置であって、
     前記複数のクライアントから同期対象オブジェクトの変更内容情報を受信する受信手段と、
     前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
     前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段とを有する情報処理装置。
  3.  前記受信手段は、前記複数のクライアントが参加する仮想空間にクライアントが参加した際に、当該クライアントが所有権を有する同期対象オブジェクトを受信して前記複製オブジェクトとして記録媒体に格納する請求項1又は2に記載の情報処理装置。
  4.  前記受信手段は、前記クライアントが新たにオブジェクトを生成した際に、当該新たに生成したオブジェクトを同期対象オブジェクトとして複製して前記複製オブジェクトを記録媒体に格納する請求項1又は2に記載の情報処理装置。
  5.  前記送信手段は、クライアントが参加した際、又は前記クライアントが新たにオブジェクトを生成した際に、記録媒体に格納した前記複製オブジェクト、又は前記同期対象オブジェクトを、前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する請求項3又は4に記載の情報処理装置。
  6.  前記受信手段は、前記同期対象オブジェクトの所有権を有するクライアント以外のクライアントから当該同期対象オブジェクトの変更内容情報を受信しない請求項1~5のいずれか1項に記載の情報処理装置。
  7.  前記更新手段は、前記受信手段が前記同期対象オブジェクトの所有権を有するクライアント以外のクライアントから当該同期対象オブジェクトの変更内容情報を受信した場合、前記複製オブジェクトを更新しない請求項1~5のいずれか1項に記載の情報処理装置。
  8.  前記送信手段は、前記受信手段が前記同期対象オブジェクトの所有権を有するクライアント以外のクライアントから当該同期対象オブジェクトの変更内容情報を受信した場合、当該変更内容情報を、前記所有権を有するクライアントへ送信しない請求項1~5のいずれか1項に記載の情報処理装置。
  9.  前記更新手段は、前記受信手段が前記同期対象オブジェクトの変更内容情報として変更前の前記同期対象オブジェクトとの差分を受信して、前記複製オブジェクトを更新する請求項1~8のいずれか1項に記載の情報処理装置。
  10.  前記クライアントが、前記複数のクライアントが参加する仮想空間から退出した際に、当該クライアントが所有権を有していた前記同期対象オブジェクトに対応する複製オブジェクトの所有権を、当該所有権の移譲が許可されている場合に、予め定めたルールに基づいて当該クライアント以外の他のクライアントに移譲する管理手段としてさらに機能させる請求項1~9のいずれか1項に記載の情報処理装置。
  11.  前記クライアントが、当該クライアントが参加する仮想空間から退出した際に、当該クライアントが所有権を有していた前記同期対象オブジェクトに対応する複製オブジェクトの所有権の移譲が許可されていない場合に、当該複製オブジェクトを削除する管理手段としてさらに機能させ、
     前記送信手段は、当該クライアント以外の他のクライアントに保持されている前記複製オブジェクトに対応するオブジェクトを削除するよう当該他のクライアントに指示する請求項1~8のいずれか1項に記載の情報処理装置。
  12.  オブジェクトを互いに同期する複数のクライアントとネットワークで接続されたコンピュータを、
     前記複数のクライアントから同期対象オブジェクトの変更内容情報を受信する受信手段と、
     前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
     前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段として機能させるためのデータ同期プログラム。
  13.  オブジェクトを互いに同期する複数のクライアントとネットワークで接続されたコンピュータを、
     前記複数のクライアントから同期対象オブジェクトの変更内容情報を受信する受信手段と、
     前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
     前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段として機能させるためのデータ同期プログラム。
  14.  オブジェクトを互いに同期する複数のクライアントとネットワークで接続された情報処理装置において、
     前記複数のクライアントから同期対象オブジェクトの変更内容情報を受信するステップと、
     前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新するステップと、
     前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信するステップとを有するデータ同期方法。
  15.  オブジェクトを互いに同期する複数のクライアントとネットワークで接続された情報処理装置において、
     前記複数のクライアントから同期対象オブジェクトの変更内容情報を受信するステップと、
     前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新するステップと、
     前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信するステップとを有するデータ同期方法。
  16.  オブジェクトを互いに同期する複数のクライアントと、
     前記複数のクライアントとネットワークで接続された情報処理装置であって、
     前記複数のクライアントから同期対象オブジェクトの変更内容情報を受信する受信手段と、
     前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
     前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段とを有する情報処理装置とを備えたデータ同期システム。
  17.  オブジェクトを互いに同期する複数のクライアントと、
     前記複数のクライアントとネットワークで接続された情報処理装置であって、
     前記複数のクライアントから同期対象オブジェクトの変更内容情報を受信する受信手段と、
     前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
     前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段とを有する情報処理装置とを備えたデータ同期システム。
  18.  前記複数のクライアントは、前記同期対象オブジェクトの変更内容情報として変更前の前記同期対象オブジェクトとの差分を前記情報処理装置に送信する請求項16、17又は18に記載のデータ同期システム。
  19.  情報処理装置を介して他のクライアントとオブジェクトを互いに同期するクライアントとしての端末装置であって、
     前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において送信元のクライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、当該同期対象オブジェクトの所有権を有するクライアントからの当該同期対象オブジェクトの変更内容情報を、前記情報処理装置を介して受信する受信手段と、
     前記変更内容情報により、前記同期対象オブジェクトを複製した複製オブジェクトを更新する更新手段と、
     前記変更内容情報を前記複数のクライアントのうち前記所有権を有するクライアント以外へ送信する送信手段とを有する前記情報処理装置と通信可能に接続されるクライアントとしての端末装置。
  20.  情報処理装置を介して他のクライアントとオブジェクトを互いに同期するクライアントとしての端末装置であって、
     同期対象オブジェクトを複製した複製オブジェクトが自己クライアントにおいて更新された場合、
     前記同期対象オブジェクト毎に管理される管理情報であって、当該同期対象オブジェクトの所有権を有するクライアントを定義する前記管理情報を参照し、当該管理情報において当該自己クライアントが、当該同期対象オブジェクトの所有権を有するクライアントとして定義されている場合、当該前記変更内容情報を前記情報処理装置へ送信する送信手段とを有する前記情報処理装置と通信可能に接続されるクライアントとしての端末装置。
  21.  前記同期対象オブジェクトの変更内容情報として変更前の前記同期対象オブジェクトとの差分を前記情報処理装置に送信する請求項19又は20に記載のクライアントとしての端末装置。

     
PCT/JP2022/023717 2021-06-14 2022-06-14 情報処理装置、データ同期プログラム、データ同期方法、データ同期システム及び端末装置 WO2022264989A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP22809305.0A EP4145805A1 (en) 2021-06-14 2022-06-14 Information processing device, data synchronization program, data synchronization method, data synchronization system, and terminal device
CN202280004615.4A CN115943619B (zh) 2021-06-14 2022-06-14 信息处理装置、记录介质、数据同步方法、数据同步系统以及终端装置
KR1020227043276A KR102612811B1 (ko) 2021-06-14 2022-06-14 정보 처리 장치, 데이터 동기 프로그램, 데이터 동기 방법, 데이터 동기 시스템 및 단말 장치
US18/070,481 US11766608B2 (en) 2021-06-14 2022-11-29 Information processing device, data synchronization program, data synchronization method, data synchronization system, and terminal device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2021098419 2021-06-14
JP2021-098419 2021-06-14

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US18/070,481 Continuation US11766608B2 (en) 2021-06-14 2022-11-29 Information processing device, data synchronization program, data synchronization method, data synchronization system, and terminal device

Publications (1)

Publication Number Publication Date
WO2022264989A1 true WO2022264989A1 (ja) 2022-12-22

Family

ID=84526508

Family Applications (2)

Application Number Title Priority Date Filing Date
PCT/JP2022/023717 WO2022264989A1 (ja) 2021-06-14 2022-06-14 情報処理装置、データ同期プログラム、データ同期方法、データ同期システム及び端末装置
PCT/JP2022/023718 WO2022264990A1 (ja) 2021-06-14 2022-06-14 情報処理装置、データ同期プログラム、データ同期方法、データ同期システム及び端末装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
PCT/JP2022/023718 WO2022264990A1 (ja) 2021-06-14 2022-06-14 情報処理装置、データ同期プログラム、データ同期方法、データ同期システム及び端末装置

Country Status (7)

Country Link
US (1) US11766608B2 (ja)
EP (2) EP4145805A1 (ja)
JP (2) JP7274161B1 (ja)
KR (3) KR20240023706A (ja)
CN (1) CN116583328A (ja)
AU (1) AU2022293125B2 (ja)
WO (2) WO2022264989A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117009146B (zh) * 2023-09-28 2024-03-08 金篆信科有限责任公司 数据同步方法、装置、计算机设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007125250A (ja) * 2005-11-04 2007-05-24 Nintendo Co Ltd ゲームプログラムおよびゲーム機
JP2007185446A (ja) 2006-01-16 2007-07-26 Sony Computer Entertainment Inc シミュレータシステム
JP2008022573A (ja) * 1999-05-10 2008-01-31 Telefon Ab L M Ericsson 通信ネットワークにおける方法及び装置
JP2014056546A (ja) * 2012-09-14 2014-03-27 Konica Minolta Inc 情報共有システム及び共有端末並びに共有制御プログラム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000157724A (ja) 1998-11-24 2000-06-13 Sega Enterp Ltd ネットワークを利用したゲームシステム、ネットワークに接続可能なゲーム機及びこのゲーム機のためのプログラムが記録された媒体
US6763371B1 (en) * 1999-05-10 2004-07-13 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for collaborative communication in a communication network
JP2004135051A (ja) 2002-10-10 2004-04-30 Sony Corp 情報処理システム、サービス提供装置および方法、情報処理装置および方法、記録媒体、並びにプログラム
KR20050023495A (ko) * 2003-08-28 2005-03-10 (주)트라이헤드론 다자간 네트웍 게임에서의 데이타 동기화 방법
WO2006025255A1 (ja) * 2004-08-30 2006-03-09 Matsushita Electric Industrial Co., Ltd. 多人数参加型アプリケーションを実行するクライアント端末装置、グループ形成方法及びグループ形成プログラム
US8142289B2 (en) * 2006-06-30 2012-03-27 Sony Computer Entertainment America Llc Dead reckoning in a gaming environment
JP4950978B2 (ja) * 2008-10-08 2012-06-13 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および情報処理方法
US10484249B1 (en) * 2015-09-18 2019-11-19 Amazon Technologies, Inc. Dynamic distribution of simulation load
CN105468358B (zh) 2015-11-17 2019-11-05 腾讯科技(深圳)有限公司 一种移动游戏的数据处理方法以及装置
CN110088757A (zh) * 2016-11-22 2019-08-02 考科斯汽车有限公司 多代理分布式分类账体系结构
JP6523378B2 (ja) 2017-07-20 2019-05-29 株式会社コロプラ ゲームプログラム、ゲームプログラムを実行する方法、および情報処理装置
US11020660B2 (en) * 2019-02-21 2021-06-01 Sony Interactive Entertainment LLC Transactional memory synchronization between multiple sessions of a video game
CN110694266B (zh) * 2019-10-23 2023-07-18 网易(杭州)网络有限公司 一种游戏状态的同步方法、展示方法及装置
CN112642143B (zh) * 2020-12-30 2022-11-15 明日世界(上海)网络科技有限公司 一种实现信息同步的方法、装置、存储介质和电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008022573A (ja) * 1999-05-10 2008-01-31 Telefon Ab L M Ericsson 通信ネットワークにおける方法及び装置
JP2007125250A (ja) * 2005-11-04 2007-05-24 Nintendo Co Ltd ゲームプログラムおよびゲーム機
JP2007185446A (ja) 2006-01-16 2007-07-26 Sony Computer Entertainment Inc シミュレータシステム
JP2014056546A (ja) * 2012-09-14 2014-03-27 Konica Minolta Inc 情報共有システム及び共有端末並びに共有制御プログラム

Also Published As

Publication number Publication date
CN115943619A (zh) 2023-04-07
KR20240023706A (ko) 2024-02-22
US20230088340A1 (en) 2023-03-23
KR20230003311A (ko) 2023-01-05
KR20230074619A (ko) 2023-05-30
JP7274161B1 (ja) 2023-05-16
WO2022264990A1 (ja) 2022-12-22
US20230394759A1 (en) 2023-12-07
CN116583328A (zh) 2023-08-11
KR102612811B1 (ko) 2023-12-11
KR102638092B1 (ko) 2024-02-16
JP7462197B2 (ja) 2024-04-05
EP4145805A1 (en) 2023-03-08
EP4239980A1 (en) 2023-09-06
EP4239980A4 (en) 2024-01-24
AU2022293125B2 (en) 2023-10-05
JPWO2022264990A1 (ja) 2022-12-22
JP2023103259A (ja) 2023-07-26
US11766608B2 (en) 2023-09-26
AU2022293125A1 (en) 2023-08-03

Similar Documents

Publication Publication Date Title
JP2000511667A (ja) ネットワークを介してマルチユーザデータベースへのアクセスを同期させる場合の待ち時間の減少
JP2008022573A (ja) 通信ネットワークにおける方法及び装置
WO2022264989A1 (ja) 情報処理装置、データ同期プログラム、データ同期方法、データ同期システム及び端末装置
Saldana et al. QoE and latency issues in networked games
US20140115144A1 (en) Online game system, method, and computer-readable medium
JP7148941B1 (ja) 情報処理装置、データ同期プログラム、データ同期方法、データ同期システム及び端末装置
CN115943619B (zh) 信息处理装置、记录介质、数据同步方法、数据同步系统以及终端装置
WO2003053531A1 (en) Massive multiplayer real-time persistant network game engine
US11992753B2 (en) Information processing device, data synchronization program, data synchronization method, data synchronization system, and terminal device
Ferretti Interactivity maintenance for event synchronization in massive multiplayer online games.
JP3998466B2 (ja) ネットワークゲームシステムおよびネットワークゲーム処理方法
Müller et al. A proxy server-network for real-time computer games
Ferretti et al. An optimistic obsolescence-based approach to event synchronization for massively multiplayer online games
KR100775132B1 (ko) 서버 미러링 시스템 및 방법
Behnke Increasing the supported number of participants in distributed virtual environments
KR100810757B1 (ko) 서버 미러링을 이용한 게임 중계 시스템 및 방법
Yusen et al. Fairness-aware update schedules for improving consistency in multi-server distributed virtual environments
Jamin Networking Multiplayer Games
Chan et al. Strifeshadow Fantasy: a massive multi-player online game
Pathirana et al. Consistency in Multiplayer Online Game in Continuous Domain
Calhau MULTIPLAYER MODULE FOR SCIENCE4PANDEMICS’
da Silva Rocha Distributed Game
JP2024062819A (ja) プログラム、および仮想空間制御装置
Moraal Massive multiplayer online game architectures
KR100834090B1 (ko) 게임 유저의 행동 반영 시스템 및 그 방법

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 20227043276

Country of ref document: KR

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2022809305

Country of ref document: EP

Effective date: 20221130

NENP Non-entry into the national phase

Ref country code: DE