FR3003717A1 - COMPUTER ENVIRONMENT FOR SHARED EXECUTION ON CLIENT POSITIONS OF CONTENT APPLICATIONS AND SYNCHRONIZED ACTIONS - Google Patents

COMPUTER ENVIRONMENT FOR SHARED EXECUTION ON CLIENT POSITIONS OF CONTENT APPLICATIONS AND SYNCHRONIZED ACTIONS Download PDF

Info

Publication number
FR3003717A1
FR3003717A1 FR1300633A FR1300633A FR3003717A1 FR 3003717 A1 FR3003717 A1 FR 3003717A1 FR 1300633 A FR1300633 A FR 1300633A FR 1300633 A FR1300633 A FR 1300633A FR 3003717 A1 FR3003717 A1 FR 3003717A1
Authority
FR
France
Prior art keywords
client
objects
application
server
behaviors
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
FR1300633A
Other languages
French (fr)
Other versions
FR3003717B1 (en
Inventor
Pierre Salinas
Mathieu Serrurier
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TAMAPLACE
Original Assignee
TAMAPLACE
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 TAMAPLACE filed Critical TAMAPLACE
Priority to FR1300633A priority Critical patent/FR3003717B1/en
Publication of FR3003717A1 publication Critical patent/FR3003717A1/en
Application granted granted Critical
Publication of FR3003717B1 publication Critical patent/FR3003717B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/101Collaborative creation, e.g. joint development of products or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1813Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
    • H04L12/1822Conducting the conference, e.g. admission, detection, selection or grouping of participants, correlating users to one or more conference sessions, prioritising transmission
    • 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
    • A63F13/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • 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

Abstract

L'invention concerne un environnement informatique, comprenant un ensemble de postes clients reliés en réseau à des moyens serveurs, ledit environnement étant apte à exécuter de façon partagée sur les postes clients des applications mettant en jeu des objets et des ressources, caractérisé en ce qu'il comprend : - des moyens de synchronisation de comportements aptes à synchroniser en temps réel ou quasi-réel les comportements d'objets restitués dans une application donnée au niveau des différents postes clients, - des moyens de gestion d'objets aptes à organiser la création, la modification et la suppression d'objets à l'initiative de postes clients, et - un système de messagerie de bas niveau commun apte à véhiculer l'ensemble des informations entre les postes clients et les moyens serveurs, relatives à la synchronisation des comportements et à la gestion des objets. Application aux environnement partagés (jeux, travail...) multi-plateformes .The invention relates to a computing environment, comprising a set of client stations networked to server means, said environment being able to execute shared applications on the client computers using objects and resources, characterized in that it comprises: means for synchronizing behaviors capable of synchronizing in real time or near real-time the behaviors of objects restored in a given application at the level of the various client stations; means for managing objects capable of organizing the creation, modification and deletion of objects on the initiative of client computers, and - a common low-level messaging system capable of conveying all the information between the client computers and the server means, relating to the synchronization of behaviors and the management of objects. Application to shared environments (games, work ...) multi-platform.

Description

Domaine de l'invention La présente invention concerne d'une façon générale les environnements informatiques permettant à une pluralité d'utilisateurs de partager des espaces (de travail collaboratif, de jeu, etc.) de façon virtuelle et 5 synchronisée. Etat de la technique On connaît déjà dans l'état de la technique un certain nombre d'initiatives et de solutions permettant de travailler de façon collaborative sur 10 un document, de jouer eu réseau, etc. Ces solutions sont toutefois le plus souvent mono-plateforme et mono-environnement. En outre, elles exigent généralement des ressources dédiées et spécialisées en fonction du type d'application visée. Ainsi on ne connaît aucun environnement qui permette de partager 15 des activités numériques de types variés, de supporter des variétés d'équipements numériques et de systèmes d'exploitation, et également de créer de nouvelles activités numériques à partager, tout en gardant des couches de communication simples et faciles à gérer. 20 Résumé de l'invention La présente invention vise à pallier tout ou partie des limitations des plateformes existantes. Elle propose à cet effet un environnement informatique, comprenant un ensemble de postes clients reliés en réseau à des moyens serveurs, ledit 25 environnement étant apte à exécuter de façon partagée sur les postes clients des applications mettant en jeu des objets et des ressources, caractérisé en ce qu'il comprend : - des moyens de synchronisation de comportements aptes à synchroniser en temps réel ou quasi-réel les comportements d'objets 30 restitués dans une application donnée au niveau des différents postes clients, - des moyens de gestion d'objets aptes à organiser la création, la modification et la suppression d'objets à l'initiative de postes clients, et - un système de messagerie de bas niveau commun apte à véhiculer l'ensemble des informations entre les postes clients et les moyens serveurs, relatives à la synchronisation des comportements et à la gestion des objets. L'invention propose également de façon préférentielle mais facultative les caractéristiques additionnelles suivantes, prises isolément ou en toutes combinaison techniquement compatibles : * les moyens de synchronisation sont aptes à mettre en oeuvre un mécanisme de verrouillage/déverrouillage des objets. les moyens de synchronisation comprennent un mécanisme d'arbitrage entre requêtes de verrouillage d'objets à partir de postes clients différents. * le mécanisme d'arbitrage comprend des moyens d'ordonnancement temporel des requêtes par rapport à une échelle de temps serveur propagée aux postes clients en prenant en compte le temps de propagation des messages du système de messagerie des moyens serveurs vers les postes clients. * l'un des objets consiste en un gestionnaire d'objets, et le mécanisme de verrouillage/déverrouillage des objets est apte à verrouiller le gestionnaire d'objet en vue de la création et de la modification d'objets. * les moyens de synchronisation sont aptes à véhiculer des commandes d'entrée standard, et il est prévu au niveau des postes clients des moyens pour convertir lesdites commandes standard en commandes 25 adaptées aux systèmes d'exploitation des postes clients. * l'environnement comprend en outre des moyens de gestion de session aptes à gérer l'entrée de postes clients dans un partage d'application et la sortie desdits postes clients dudit partage d'application, les informations mises en jeu par lesdits moyens de gestion de session étant également 30 véhiculées par le serveur de messagerie de bas niveau. * lequel l'entrée d'un poste client dans un partage d'application est mise en oeuvre par transfert des objets non verrouillés vers ledit poste client, puis transfert des objets qui étaient verrouillés vers ledit poste client après leur déverrouillage. * l'environnement comprend en outre des moyens pour propager des moyens serveurs vers les postes clients des paquets applicatifs à partager, un paquet applicatif comprenant un fichier de description d'application, un ou plusieurs fichiers de description de comportements, de préférence en langage interprété, et des fichiers de ressources. * l'environnement comprend en outre des moyens de partage d'applications exécutées localement sur un poste client donné, aptes à recopier une représentation graphique d'une application exécutée localement sur un poste client vers d'autres postes clients participant au partage, et des moyens pour contrôler les commandes d'entrée sur ladite application exécutée localement de façon à y appliquer sélectivement des commandes d'entrée générées sur ledit poste client et des commandes d'entrée générées par d'autres postes clients participant au partage et véhiculées via ledit système de messagerie de bas niveau. 2 0 Brève description des dessins D'autres aspects, buts et avantages de la présente invention apparaîtront mieux à la lecture de la description détaillée suivante d'une forme de réalisation préférée de celle-ci, donnée à titre d'exemple non limitatif et faite en référence aux dessins annexés, sur lesquels : 25 La Figure 1 est un schéma de l'architecture globale de l'environnement de partage selon l'invention, La Figure 2 illustre les fonctionnalités d'un poste client en liaison avec l'environnement, de façon organisée en couches de différents niveaux logiques, La Figure 3 illustre les fonctionnalités de moyens serveurs en liaison avec l'environnement, de façon organisée en couches de différents niveaux logiques, La Figure 4 illustre un processus de synchronisation de certaines 5 commandes par trames de messagerie entre des clients et les moyens serveurs selon l'invention, Les Figures 5 et 6 sont des organigrammes illustrant la gestion d'une demande de verrouillage et d'une demande de déverrouillage ou relâchement d'un objet par un client, 10 La Figure 7 est un organigramme illustrant un processus d'entrée d'un client dans une session partagée, et La Figure 8 illustre un processus de prise/relâchement de verrou pour la création ou la modification d'objet par un client. 15 Description détaillée d'une forme de réalisation préférée 1) Définitions Espace Virtuel : Espace logique pouvant représenter n'importe quelle espace réel autour duquel se rassemblent plusieurs personnes (participants) par le 20 biais d'équipements ou terminaux intelligents (ordinateur individuel, tablette, assistant numérique personnel, téléviseur intelligent, etc.). Monde Virtuel : Espace graphique virtuel prédéfini (par exemple un plateau d'échecs comportant le plateau, les pièces, une horloge et deux participants, ou bien une salle de classe avec un tableau, des « post-it » (marque 25 déposée), une application informatique partagée, un professeur et plusieurs élèves, etc.). Plateforme : Ensemble des outils (applications, machines clientes et serveurs, base de données,..) agissant de façon communicante et synchronisée dans un espace virtuel. 30 Synchronisation temps réel : Communication en temps réel de toutes les interactions des participants dans l'espace virtuel. Représentation commune de l'espace virtuel pour tous les participants en temps réel ou quasi-réel (c'est-à-dire aux latences de traitement et de réseau près). Client: Application sur l'équipement ou terminal d'un participant, permettant la représentation de l'espace virtuel et les actions dans cet espace, soit automatiques (typiquement par des scripts), soit en réponse à des commandes de participant au niveau de dispositifs d'entrée (clavier, souris, capteurs, etc.). Serveur: Application hébergée sur une machine distante qui permet la connexion et la communication de tous les clients entre eux. Il contrôle les 10 actions des clients quand nécessaire et assure leur synchronisation. Objet: Entité virtuelle dans l'espace virtuel. Ressource: Donnée permettant la représentation d'un objet (Image, texte, flux vidéo, son, etc.). 15 2) La plateforme La plateforme se compose d'application clients (multi-environnements) et de différents types de serveurs. Elle permet de mettre en oeuvre simplement des applications dans lesquels différents utilisateurs peuvent communiquer dans un espace virtuel 20 (Webcam, voix, messagerie, ...), interagir avec cet espace virtuel, partager des fichiers numériques ou partager des applications exécutées sur leur poste de travail. La Figure 1 des dessins illustre l'architecture globale de la plateforme. Elle comprend : 25 - un serveur de session SS : il gère l'authentification et les droits des différents utilisateurs et permet de créer et rejoindre des sessions de communication. C'est le point d'entrée de tout client et il permet la régulation des autres serveurs en démarrant les sessions sur les servers les moins chargés. Il communique avec une base de données d'utilisateurs DB, locale 30 ou distante. - un serveur logique SL : c'est un serveur temps réel qui gère la synchronisation de tous les objets virtuels. - un serveur de partage d'applications SPA : c'est un serveur temps réel, qui gère les flux visuels des applications partagées. - un serveur de flux SF (« streaming » en terminologie anglo- saxonne) : il s'agit d'un serveur temps réel qui diffuse des flux vidéo et audio. - un serveur de transfert de fichiers STF : ce serveur permet aux utilisateurs de s'échanger des fichiers. L'une des fonctions de la plateforme est de pouvoir diffuser de façon simple et rapide, puis partager, des applications de types variés vers des clients de différents types (ordinateurs, tablettes, assistants numériques personnels, etc.), ayant des caractéristiques matérielles différentes et des systèmes d'exploitation différents. 3) Le client La configuration d'un poste client est illustrée sur la Figure 2. Dans une description en couches, partant de la couche de plus haut niveau et allant vers la couche de plus bas niveau, on trouve : - Couche 1 : couche « Monde », incluant tous les éléments d'un « monde virtuel », à savoir principalement les utilisateurs et la description de chaque monde et de son comportement (application). Cette couche ne fait pas partie de la plateforme mais l'utilise en étant interfacée avec elle. L'application est codée dans le langage de script offert par la plateforme et est indépendante de l'environnement d'exécution (type de machine, de système d'exploitation, etc.) - Couche 2 : couche d'interaction. Elle comprend notamment des moteurs de rendu (visuel, sonore, etc.), en fonction des capacités de restitution du la plateforme matérielle. Il comprend également les interfaces avec les dispositifs d'entrée (et le cas échéant sortie) à disposition de l'utilisateur (clavier, souris, « trackpad », manette de jeu, écran tactile, etc.) pour la plateforme matérielle.Field of the Invention The present invention generally relates to computing environments enabling a plurality of users to share spaces (collaborative work, game, etc.) in a virtual and synchronized manner. State of the art There are already known in the state of the art a number of initiatives and solutions for working collaboratively on a document, playing a network, etc. These solutions are, however, most often mono-platform and mono-environment. In addition, they typically require dedicated and specialized resources depending on the type of application targeted. Thus we know no environment that allows to share digital activities of various types, to support varieties of digital equipment and operating systems, and also to create new digital activities to share, while keeping layers of communication simple and easy to manage. SUMMARY OF THE INVENTION The present invention aims at overcoming all or part of the limitations of existing platforms. To this end, it proposes a computing environment, comprising a set of client stations networked to server means, said environment being able to execute shared applications on the client computers using objects and resources, characterized in that what it comprises: means for synchronizing behaviors capable of synchronizing in real time or near real-time the behaviors of objects returned in a given application at the level of the various client stations; means for managing apt objects to organize the creation, the modification and the deletion of objects on the initiative of client computers, and - a common low level messaging system able to convey all the information between the client computers and the server means, relating to behavior synchronization and object management. The invention also proposes preferentially but optionally the following additional characteristics, taken individually or in any combination technically compatible: * the synchronization means are able to implement a mechanism for locking / unlocking objects. the synchronization means comprise an arbitration mechanism between object locking requests from different client stations. the arbitration mechanism comprises means for temporally scheduling the requests with respect to a server time scale propagated to the client stations, taking into account the propagation time of the messaging system messages from the server means to the client stations. * One of the objects consists of an object manager, and the locking / unlocking mechanism of objects is able to lock the object manager for the creation and modification of objects. the synchronization means are capable of conveying standard input commands, and there is provided at the level of the client computers means for converting said standard commands into commands adapted to the operating systems of the client stations. the environment furthermore comprises session management means able to manage the entry of client stations into an application sharing and the output of said client stations from said application sharing, the information put into play by said management means session also being conveyed by the low level mail server. * The entry of a client station into an application share is implemented by transferring unlocked objects to said client station, and transfer objects that were locked to said client station after unlocking. the environment further comprises means for propagating server means to the client stations of the application packets to be shared, an application packet comprising an application description file, one or more behavior description files, preferably in interpreted language. , and resource files. the environment further comprises means for sharing applications executed locally on a given client station, able to copy a graphical representation of an application executed locally on a client station to other client stations participating in the sharing, and means for controlling the input commands on said application executed locally so as to selectively apply input commands generated on said client station and input commands generated by other client stations participating in the share and conveyed via said system low level email. BRIEF DESCRIPTION OF THE DRAWINGS Other aspects, objects and advantages of the present invention will become more apparent upon reading the following detailed description of a preferred embodiment thereof, given by way of non-limiting example and made by way of example. with reference to the accompanying drawings, in which: FIG. 1 is a diagram of the overall architecture of the sharing environment according to the invention, FIG. 2 illustrates the functionalities of a client station in connection with the environment, in an organized manner in layers of different logical levels, Figure 3 illustrates the functions of server means in connection with the environment, organized in layers of different logical levels, Figure 4 illustrates a process of synchronization of certain frame controls Messaging between clients and the server means according to the invention, Figures 5 and 6 are flowcharts illustrating the management of a lock request Figure 7 is a flowchart illustrating a process for inputting a client into a shared session, and Figure 8 illustrates a process of taking / releasing an object from a client. Release of lock for creation or modification of object by a client. DETAILED DESCRIPTION OF PREFERRED EMBODIMENT 1) Definitions Virtual Space: Logical space that can represent any real space around which several people (participants) gather through intelligent equipment or terminals (personal computer, tablet , personal digital assistant, smart TV, etc.). Virtual World: predefined virtual graphic space (for example a chess board with the board, the pieces, a clock and two participants, or a classroom with a board, "post-it" (registered trademark), a shared computer application, a teacher and several students, etc.). Platform: Set of tools (applications, client machines and servers, database, ..) acting in a communicating and synchronized way in a virtual space. Real-Time Synchronization: Real-time communication of all participant interactions in the virtual space. Common representation of the virtual space for all participants in real-time or near real-time (ie, near processing and network latencies). Client: Application on the equipment or terminal of a participant, allowing representation of the virtual space and actions in this space, either automatic (typically by scripts), or in response to participant commands at the device level input (keyboard, mouse, sensors, etc.). Server: Application hosted on a remote machine that allows the connection and communication of all clients to each other. It controls the 10 actions of customers when necessary and ensures their synchronization. Object: Virtual entity in the virtual space. Resource: Data allowing the representation of an object (Image, text, video stream, sound, etc.). 15 2) The platform The platform consists of client applications (multi-environments) and different types of servers. It makes it possible to simply implement applications in which different users can communicate in a virtual space 20 (webcam, voice, messaging, ...), interact with this virtual space, share digital files or share applications executed on their computer. working. Figure 1 of the drawings illustrates the overall architecture of the platform. It includes: - an SS session server: it manages the authentication and the rights of the different users and makes it possible to create and join communication sessions. This is the entry point of any client and it allows the regulation of other servers by starting sessions on the least loaded servers. It communicates with a database of users DB, local 30 or remote. a logical server SL: it is a real-time server that manages the synchronization of all the virtual objects. - a SPA application sharing server: it is a real-time server, which manages the visual flows of shared applications. - A stream server SF ("streaming" in English terminology): it is a real-time server that broadcasts video and audio streams. - an STF file transfer server: this server allows users to exchange files. One of the functions of the platform is to be able to quickly and easily broadcast applications of various types to different types of clients (computers, tablets, personal digital assistants, etc.) with different hardware characteristics. and different operating systems. 3) The client The configuration of a client station is shown in Figure 2. In a layered description, starting from the layer of the highest level and going to the lowest layer, we find: - Layer 1: layer "World", including all the elements of a "virtual world", namely mainly the users and the description of each world and its behavior (application). This layer is not part of the platform but uses it interfacing with it. The application is coded in the scripting language offered by the platform and is independent of the runtime environment (type of machine, operating system, etc.) - Layer 2: interaction layer. It includes rendering engines (visual, sound, etc.), depending on the rendering capabilities of the hardware platform. It also includes the interfaces with the input devices (and possibly output) available to the user (keyboard, mouse, trackpad, joystick, touch screen, etc.) for the hardware platform.

Couche 3 : interpréteur de monde virtuel. C'est le module qui permet l'interprétation de l'application et offre le système de développement. Couche 4 : couche logique. Elle est composée d'un certain nombre de modules logiques pour la gestion des objets, des applications et de leur partage, et des ressources. Couche 5 : couche de communication. Elle contient notamment un module de messagerie temps réel, un module de distribution de contenus en flux, et un module de gestion du transfert de fichiers. Ces modules interagissent avec l'extérieur selon des protocoles spécifiques adaptés à la synchronisation d'un espace virtuel. - Couche 6 : couche réseaux. Couche de plus bas niveau dans l'architecture présentée, elle implémente les différents protocoles de communications nécessaires au transfert des données par le réseau Internet. (Socket TCP, HTTP, FTP, etc.). 4) Les serveurs La figure 3 illustre l'architecture générale d'un serveur logique utilisé dans la présente invention. On y retrouve les même couches 4, 5 et 6 du que celles du client. La plus grande différence réside dans le fait que la couche logique (couche 4) du serveur est en charge de la synchronisation des objets et des ressources. La couche de communication ne comprend quand à elle que le module de messagerie, les flux et transferts de fichiers étant gérés séparément. Ainsi l'environnement de l'invention comprend également un certain 25 nombre d'autres autres serveurs, avec là encore cette architecture en trois couches, et des modules propres dédiés à la fonction ou aux fonctions qu'ils implémentent (streaming, transfert de fichiers, etc.). 5) Espace virtuel 30 5.1) Description générale Chaque poste client, doté d'un dispositif d'affichage, est apte à afficher sur celui-ci une vue d'un l'espace virtuel partagé entre une pluralité de postes clients. Cet espace virtuel est composé de différents types d'objets obéissant à des règles de synchronisation différentes : - des objets locaux : ils sont propres à un client et ne nécessitent aucune synchronisation. En règle générale, le serveur de les connaît même pas. - des objets globaux : les participants peuvent agir sur ces objets 10 (par exemple les déplacer, changer leur état), ces actions sont synchronisées entre les différents clients. - des objets système : ils possèdent chacun leurs propres règles de synchronisation. Les divers objets peuvent être des objets parents ou enfants d'autres 15 objets. 5.2) Objets locaux Comme on l'a indiqué, aucune synchronisation de ces objets n'est nécessaire. Ils sont initialisés par le client, et aucune information concernant 20 ces objets n'est à communiquer aux autres clients. Seul le client hébergeant un tel objet peut interagir avec lui. Il peut s'agir par exemple de menus d'interface, de ressources locales de différents types, etc. 25 5.3) Objets globaux Ces objets peuvent être modifiés par les différents clients. Chaque changement d'état d'un objet global doit être synchronisé entre les différents clients. C'est le serveur qui est maître de ces objets et connait leur propriétés à un instant t, et les clients possèdent une copie de l'objet. 30 Des exemples d'objets globaux sont : - dans des environnements de jeu en réseau, un pion déplaçable sur un plateau de jeu, une carte d'un jeu de cartes, un dé, etc. ; - dans un environnement collaboratif, un élément de type « PostIt » virtuel, etc. ; - une conversation de messagerie écrite instantanée, - un fichier d'un environnement de bureautique (fichier texte, tableur, présentation, etc. - tous autres objets susceptibles d'avoir des propriétés ou états que les différents participants, au niveau de leur client, doivent pouvoir 10 modifier. 5.4) Objets système L'environnement selon l'invention inclut différents types d'objets système. On trouve en particulier les objets système suivants : 15 - Objet MAIN: un objet système de type « Main » (curseur en forme de main) est prévu au niveau de chaque client. Chaque utilisateur peut ainsi contrôler son objet Main pour agir sur les objets représentés sur son dispositif d'affichage ; la main permet d'agir sur les objets, chaque client contrôle sa main et ne peut interagir avec les autres mains. Les positions 20 des mains et leurs états sont synchronisés en permanence. - Objet PARTICIPANT : un tel objet rassemble toutes les informations relatives à un participant. Certaines de ces informations peuvent avoir à être synchronisées, mais définies par le système (pseudo, id, propriétaire, etc.), tandis que d'autres informations peuvent être rajoutées et 25 modifiées par les participants (nom d'un personnage, d'une équipe, etc.) - Objet CONTROLEUR D'OBJETS : cet objet gère la création et la suppression de tous les autres objets. Cet objet est synchronisé et donc connu du serveur. Il est dupliqué vers un client qui souhaite en prendre le contrôle.Layer 3: virtual world interpreter. This is the module that allows the interpretation of the application and offers the development system. Layer 4: logical layer. It consists of a number of logical modules for managing objects, applications and their sharing, and resources. Layer 5: Communication layer. It contains in particular a real-time messaging module, a streaming content distribution module, and a file transfer management module. These modules interact with the outside according to specific protocols adapted to the synchronization of a virtual space. - Layer 6: network layer. As a layer of the lowest level in the presented architecture, it implements the various communication protocols necessary for the transfer of data over the Internet. (Socket TCP, HTTP, FTP, etc.). 4) Servers Figure 3 illustrates the general architecture of a logical server used in the present invention. We find the same layers 4, 5 and 6 as those of the client. The biggest difference is that the logical layer (layer 4) of the server is in charge of synchronizing objects and resources. The communication layer only understands the mail module, the streams and file transfers being managed separately. Thus, the environment of the invention also comprises a number of other other servers, with again this three-layer architecture, and specific modules dedicated to the function or functions they implement (streaming, file transfer). , etc.). 5) Virtual Space 30 5.1) General Description Each client station, equipped with a display device, is able to display on it a view of a shared virtual space between a plurality of client stations. This virtual space is composed of different types of objects obeying different synchronization rules: - local objects: they are specific to a client and do not require any synchronization. As a rule, the server does not even know them. global objects: the participants can act on these objects (for example move them, change their state), these actions are synchronized between the different clients. - system objects: they each have their own synchronization rules. The various objects can be parent objects or children of other objects. 5.2) Local objects As indicated, no synchronization of these objects is necessary. They are initiated by the client, and no information regarding these objects is to be communicated to other clients. Only the client hosting such an object can interact with it. This may be for example interface menus, local resources of different types, and so on. 5.3) Global objects These objects can be modified by the different clients. Each state change of a global object must be synchronized between the different clients. The server is the master of these objects and knows their properties at a time t, and the clients have a copy of the object. Examples of global objects are: in networked gaming environments, a movable pawn on a game board, a map of a deck of cards, a die, and so on. ; - in a collaborative environment, a virtual "PostIt" element, etc. ; - an instant written messaging conversation, - a file of an office environment (text file, spreadsheet, presentation, etc. - all other objects that may have properties or states that the different participants, at the level of their client, 5.4) System objects The environment according to the invention includes different types of system objects. In particular, the following system objects are found: MAIN object: a "Main" system object (hand cursor) is provided at each client. Each user can thus control his Main object to act on the objects represented on his display device; the hand acts on objects, each client controls his hand and can not interact with other hands. The positions of the hands and their states are continuously synchronized. PARTICIPANT object: such an object gathers all the information relating to a participant. Some of this information may have to be synchronized, but defined by the system (pseudo, id, owner, etc.), while other information may be added and modified by the participants (name of a character, a team, etc.) - OBJECT CONTROLLER object: this object manages the creation and deletion of all other objects. This object is synchronized and therefore known to the server. It is duplicated to a customer who wants to take control.

Objet CONTROLEUR DE RESSOURCES : il gère la création et la suppression des ressources. Cet objet est synchronisé et donc connu du serveur. 5.5) Attributs des objets Un objet comprend notamment les différents attributs suivants : Portée (local, global ou système) : cet attribut est unique et fixe. Type (dé, bouton, carte, pion, etc.) : unique et invariable. ID : identifiant de l'objet dans l'environnement, par exemple nombre entier, unique et invariable. - Parent : identifiant ID de l'objet parent, unique mais variable. - Propriétaire : identifiant du participant maître de l'objet, unique et variable. - Ressource graphique : ID d'une ressource visuelle, unique et 15 variable. - Ressource sonore : ID d'une ressource audio, qui peut être multiple et variable. - Valeur déterministe : un objet peut avoir n'importe quelle fnombre de ces propriétés, elles sont de type simple (entier, flottant, booléen, 20 chaine caractère de taille maximum définie) et sont modifiables par un client. (Exemple : coordonnées X/Y, face d'une carte, dernières phrases d'une conversation, etc.). - Valeur aléatoire : de type simple mais générée aléatoirement ; le client ne peux pas calculer/définir cette valeur (exemple : face d'un dé lors 25 d'un tirage de dé virtuel) ; c'est le serveur qui la génère. - Valeur temporelle : une durée, date, etc. ; à nouveau, cette propriété ne peut pas être définie par le client et est définie uniquement par le serveur. - Local : Propriété pouvant être de n'importe quel type, qui n'est 30 jamais synchronisée avec les autres clients. - A un instant t, le client doit pouvoir déterminer tout ce qui est nécessaire pour représenter l'objet localement à partir de ses propriétés. 5.6) Ressources Les ressources sont aptes à être être créées à l'aide de l'objet CONTROLEUR DE RESSOURCES. Il peut s'agir : d'un fichier local intégré à l'application, présent sur tous les clients ; - d'un flux audio ; - d'un flux vidéo ; - d'un flux d'application partagée (voir plus loin) ; - d'un fichier local sur un poste client, à partager avec les autres clients. Les flux audio et vidéo transitent par les serveurs de flux.RESOURCE CONTROLLER object: It manages the creation and deletion of resources. This object is synchronized and therefore known to the server. 5.5) Attributes of the objects An object notably includes the following different attributes: Scope (local, global or system): this attribute is unique and fixed. Type (die, button, card, pawn, etc.): unique and invariable. ID: identifier of the object in the environment, for example integer, unique and invariable. - Parent: identifier ID of the parent object, unique but variable. - Owner: identifier of the master participant of the object, unique and variable. - Graphic resource: ID of a visual resource, unique and variable. - Sound resource: ID of an audio resource, which can be multiple and variable. Deterministic value: An object can have any number of these properties, they are of simple type (integer, float, boolean, character string of maximum size defined) and can be modified by a client. (Example: X / Y coordinates, face of a map, last sentences of a conversation, etc.). - Random value: simple type but generated randomly; the client can not calculate / set this value (example: face of a die during a virtual die draw); it is the server that generates it. - Time value: a duration, date, etc. ; again, this property can not be set by the client and is set only by the server. - Local: Property that can be of any type, which is never synchronized with other clients. - At a time t, the client must be able to determine all that is necessary to represent the object locally from its properties. 5.6) Resources Resources can be created using the RESOURCE CONTROLLER object. It can be: a local file integrated into the application, present on all the clients; - an audio stream; a video stream; - a shared application flow (see below); - a local file on a client workstation, to share with other clients. The audio and video streams pass through the feed servers.

Le flux d'application partagée transite via le serveur dédié de partage d'application. Les fichiers transitent par le serveur de transfert de fichiers. 5.7) Paquets Les applications sont définies dans des « paquets » (« package » en terminologie anglo-saxonne), un paquet étant un répertoire de données indépendant contenant toutes les ressources nécessaires à l'exécution de la plateforme sur un poste client. Un paquet contient : - un fichier de description de l'application ; - un ou plusieurs fichiers de description de comportements, de préférence en langage interprété ; - des fichiers de ressources multimédia (sons, vidéos, images, notamment images graphiques d'objets déplaçables et image graphique 30 d'une « table » ou environnement graphique de la plateforme - par exemple un échiquier, etc.).The shared application flow passes through the dedicated application sharing server. The files go through the file transfer server. 5.7) Packages The applications are defined in "packages" ("package" in English terminology), a package being an independent data directory containing all the resources necessary to run the platform on a client station. A package contains: - a description file of the application; one or more behavior description files, preferably in interpreted language; multimedia resource files (sounds, videos, images, in particular graphic images of movable objects and graphic image of a "table" or graphic environment of the platform - for example a chessboard, etc.).

La plateforme définit le formalisme : - du fichier de description ; - de l'interfaçage des comportements avec la plateforme ; - des formats compatibles pour les ressources.The platform defines the formalism: - of the description file; - interfacing behaviors with the platform; - compatible formats for resources.

Le lancement d'une application met en jeu trois fonctions principales qui sont définies dans le paquet : - Tlnit() pour initialiser les données et objets présents sur la table ; - TFrameUpdate() pour mettre a jour de façon cyclique, ou 10 déclenchée par des évènements, les objets, selon des comportements programmés ; - TShut() pour détruire les objets créés et mis à jour par les fonctions Tin«) et TFramelUpdate() respectivement. Les interactions entre les moyens serveurs et les clients sont 15 matérialisées par des trames, comme on le décrira dans la suite. 6) Représentation et interaction 6.1) Rendu Avantageusement, la plateforme peut proposer des interfaces de 20 programmation d'applications (API) de bas niveau dont les rendus sonores et visuels sont identiques quel que soit le système d'exploitation. 6.1.1) Rendu visuel La représentation graphique d'un monde virtuel est fondée sur le 25 rendu des objets en fonction de leurs propriétés et de leurs ressources. La plateforme possède son propre moteur de rendu, indépendant du type de machine et de système d'exploitation, exécutable en s'appuyant sur une couche logicielle intermédiaire d'adaptation, l'ensemble étant contenu dans le paquet. 30 Le moteur de rendu choisi est capable s'adapter aux résolutions d'écran des différentes machines et intègre, pour toutes les tailles ou définitions d'écran ne permettant pas l'affichage global lisible de l'ensemble du monde virtuel, des fonctionnalités de zoom et de déplacement (scroli) dans le monde virtuel. De préférence, ces fonctionnalités opèrent selon les règles suivantes : - lorsque l'écran est trop petit pour afficher la table, on peut appliquer un facteur de zoom < 1 pour réduire l'image et afficher la totalité de la table sur l'écran. La plateforme calcule, selon les positions et dimensions des objets et selon les dimensions de l'écran, le facteur de zoom permettant un affichage complet ; - lorsque le pas des pixels est trop petit pour un rendu visuel agréable à l'utilisateur, on peut appliquer un facteur de zoom > 1 pour agrandir l'image et afficher les objets dans une taille satisfaisante pour l'utilisateur. - lorsque la table affichée n'est pas représentée en intégralité, l'utilisateur peut faire défiler la partie affichée sur l'écran dans la direction souhaitée et ainsi visualiser n'importe quelle partie de la table. 6.1.2) Autres rendus Les objets peuvent être composés de différents types de ressources qui seront rendus par différent moteurs selon ce que permettent les 20 équipements matériels des différentes machines (sons, vibrations, etc.) Ainsi une application n'a pas à se préoccuper de savoir quel type de matériel est présent, la plateforme gérant tous les rendus d'un objet en fonction des possibilités de la machine. 25 6.2) Interaction Chaque participant peut interagir avec l'environnement partagé en disposant de sa propre « main » virtuelle (un objet système MAIN) pour contrôler tout objet. Un clavier (physique ou virtuel) permet de saisir du texte notamment pour un service de messagerie texte instantanée entre 30 utilisateurs.Launching an application involves three main functions that are defined in the package: - Tlnit () to initialize the data and objects present on the table; TFrameUpdate () for cyclically updating, or event-triggered, objects, according to programmed behaviors; - TShut () to destroy objects created and updated by Tin ") and TFramelUpdate () functions respectively. The interactions between the server means and the clients are materialized by frames, as will be described later. 6) Representation and Interaction 6.1) Advantageously, the platform can provide low-level application programming interfaces (APIs) whose sound and visual renderings are identical regardless of the operating system. 6.1.1) Visual rendering The graphic representation of a virtual world is based on the rendering of objects according to their properties and their resources. The platform has its own rendering engine, independent of the type of machine and operating system, executable based on an intermediate software adaptation layer, the whole being contained in the package. The chosen rendering engine is able to adapt to the screen resolutions of the different machines and integrates, for all sizes or screen definitions that do not allow the global readable display of the entire virtual world, functionalities of zoom and move (scroli) in the virtual world. Preferably, these features operate according to the following rules: - when the screen is too small to display the table, you can apply a zoom factor <1 to reduce the image and display the entire table on the screen. The platform calculates, according to the positions and dimensions of the objects and according to the dimensions of the screen, the zoom factor allowing a complete display; when the pitch of the pixels is too small for a user-friendly visual rendering, a zoom factor of> 1 can be applied to enlarge the image and to display the objects in a size that is satisfactory for the user. - When the displayed table is not shown in full, the user can scroll the part displayed on the screen in the desired direction and thus view any part of the table. 6.1.2) Other renditions The objects can be composed of different types of resources that will be rendered by different engines as allowed by the 20 hardware devices of the different machines (sounds, vibrations, etc.). Thus an application does not have to worry about what kind of hardware is present, the platform managing all renderings of an object according to the possibilities of the machine. 6.2) Interaction Each participant can interact with the shared environment by having his own virtual "hand" (a MAIN system object) to control any object. A keyboard (physical or virtual) can enter text including an instant messaging service between 30 users.

La plateforme convertit les entrées (clavier, souris, écran tactile, etc.) du matériel du poste client pour en faire des actions génériques permettant de contrôler les objets. Un premier type d'entrée permet de sélectionner un objet pour le déplacer (type « click and drag » en terminologie anglo-saxonne). Des actions des objets respectifs peuvent également être sélectionnées, avec des actions primaires opérables par des gestes simples (double-click, etc.) et des actions secondaires opérables par sélection dans une liste apparaissant par exemple dans un menu surgissant (pop-up).The platform converts the inputs (keyboard, mouse, touch screen, etc.) of the hardware of the client workstation into generic actions to control the objects. A first type of entry makes it possible to select an object to move it (type "click and drag" in English terminology). Actions of the respective objects can also be selected, with primary actions operable by simple gestures (double-click, etc.) and secondary actions operable by selection in a list appearing for example in a pop-up menu.

Plus précisément, la plateforme définit des codes d'action correspondant respectivement à ces actions, et des correspondances entre les pilotes du système d'exploitation, qui permettent de récupérer l'état des entrées de la machine, et ces codes d'action. Ces correspondances permettent : - d'intégrer tout type de périphérique de saisie (clavier, souris, écran tactile, webcam avec reconnaissance de mouvement, gant équipé de capteurs, etc.), - de disposer des mêmes capacités d'interaction quels que soient le matériel et le système d'exploitation du poste client, sous réserve des équipements matériels disponibles, - de retranscrire a distance une action d'un utilisateur sur un type de machine, pour action identique sur un autre type de machine (fonction utilisable notamment dans le partage d'applications, décrit plus loin). 7) Description et interprétation du monde virtuel La couche 3 de chaque client offre des interfaces de programmation dans un langage de script défini pour pouvoir écrire les différentes applications correspondant à différents espaces virtuels. Elle comprend un interpréteur de scripts (ainsi que d'autres interpréteurs le cas échéant) et des fonctionnalités permettant d'accéder aux objets du monde virtuel (lecture et écriture de leurs propriétés notamment).More specifically, the platform defines action codes corresponding respectively to these actions, and correspondences between the operating system drivers, which make it possible to recover the state of the entries of the machine, and these action codes. These correspondences allow: - to integrate any type of input device (keyboard, mouse, touch screen, webcam with motion recognition, glove equipped with sensors, etc.), - to have the same interaction capabilities regardless of the hardware and the operating system of the client station, subject to available hardware, - remotely transcribe an action of a user on a type of machine, for identical action on another type of machine (function usable in particular in the application sharing, described later). 7) Description and interpretation of the virtual world Layer 3 of each client offers programming interfaces in a defined scripting language to be able to write the different applications corresponding to different virtual spaces. It includes an interpreter of scripts (as well as other interpreters if necessary) and functionalities allowing to access objects of the virtual world (reading and writing of their properties in particular).

Il est ainsi possible de créer simplement différents espaces virtuels à l'aide d'un fichier de scripts et des ressources locales nécessaires, soit préexistantes, soit à créer pour les besoins (fichiers graphiques, etc.). 8) Messages 8.1.) Généralités Chaque message est composé : - d'un identifiant du message (par exemple entier sur 16 bits), - d'un identifiant d'émetteur (par exemple entier sur 32 bits), - d'une information de taille du message (par exemple entier sur 32 bits), et - de l'information spécifique au message. Avantageusement, les messages font l'objet d'une sérialisation binaire pour diminuer leur taille. Un message peut contenir des objets. Dans ce cas, le message est complété par la structure suivante : - identifiant de l'objet (entier sur 16 bits), - identifiant du propriétaire (entier sur 32 bits), correspondant à un identifiant d'émetteur, - liste de propriétés : bloc binaire contenant les informations de propriétés, destinées à être interprétées par les différents par les clients. Ce bloc est sérialisé de la façon suivante : - nombre de propriétés (16 bits), - identifiant de la propriété No. 1 (16 bits), - Taille de propriété No. 1 (16 bits), - Valeur de la propriété No. 1 (bloc de données de la taille indiquée précédemment), - identifiant de la propriété No. 2 (16 bits), - Taille de propriété No. 2 (16 bits), - Valeur de la propriété No. 2 (bloc de données de la taille indiquée précédemment), - et ainsi de suite pour les propriétés suivantes. Pour les messages contenant des objets, il est également avantageux de leur appliquer une sérialisation binaire pour réduire leur taille. 8.2) Types de messages Dans la présente implémentation, le protocole se compose des messages suivants : 10 8.2.1) messages de session ASK CONNECT_SESSION Information de session et d'utilisateur SESSION CONNECTED Connexion accepté/refusé 15 INFORMATION SESSION Information sur la session (participant, durée,..) UPDATE SESSION Modification sur la session (pseudo d'un user, configuration, etc.) 20 8.2.2) messages de synchronisation des objets ASK ACQUIRE Liste d'identifiants d'objets pour demande de verrou, marqueur de temps de la demande 25 RET ACQUIRE Verrou accepté/refusé, objets verrouillés sérialisés ASK RELEASE Identifiant d'objet à relâcher RET_RELEASE 30 Identifiant d'objet relâché, objet sérialisé relâché. ADD ITEM Objet sérialisé à ajouter ITEM_ADDED Objet sérialisé ajouté U PDATE ITEM Propriétés de l'objet à modifier ITEM UPDATED Propriétés de l'objet modifiées REMOVE ITEM Identifiant d'objet à supprimer ITEM_REMOVED Identifiant d'objet supprimé ASK_INIT_TABLE Demande d'initialisation du monde TABLE_ALL_OBJECT Sérialisation du monde (tous les objets et leurs propriétés) ACK TABLE_ALL_OBJECT Valide la fin d'initialisation du monde LOGICAL_FRAME Trame contenant l'identifiant de trame, le temps serveur et un ensemble de messages ACK LOGICAL_FRAME Accusé de réception de trame 8.2.3) Messages de son SOUND_BUFFER Information d'encodage, contenu sonore 8.2.4) Messages de vidéo VIDEO_BUFFER Information d'encodage, contenu vidéo 8.2.5) Messages de fichiers FILE BUFFER Identifiant de fichier, offset, bloc de donné du fichier à l'offset spécifié ASK FILE_BUFFER Identifiant de fichier, offset 8.2.6) Messages de textures dynamiques TEXTURE BUFFER Identifiant de texture, offset, encodage, bloc de données de la texture à l'offset spécifié ASK TEXTURE_BUFFER Identifiant de texture, offset 8.2.7) Messages pour le partage d'applications TEXTURE_BLOCK Identifiant de texture, Identifiant de bloc, encodage, bloc de texture APPLICATION INPUT Identifiant d'application, type entrée, valeur entrée. 8.3) Envoi des messages Un client et le serveur sont connectés en permanence via un connecteur logiciel (socket) TCP et communiquent par l'envoi et la réception 25 de messages, ceci étant géré par les modules de messagerie respectifs dans la couche 5 (voir Figures 2 et 3). Le serveur envoie tous ces messages à chaque client par trames LOGICAL_FRAME numérotées chronologiquement à une fréquence régulière. A chaque réception de trame, un client répond au serveur par un 30 accusé de réception ACK LOGICAL_FRAME lui signalant que la trame a été prise en compte.It is thus possible to simply create different virtual spaces using a script file and local resources needed, either pre-existing or to create for the needs (graphic files, etc.). 8) Messages 8.1.) General Each message is composed of: - an identifier of the message (for example 16-bit integer), - a sender identifier (for example 32-bit integer), - an information message size (eg 32-bit integer), and - message-specific information. Advantageously, the messages are the subject of a binary serialization to reduce their size. A message can contain objects. In this case, the message is completed by the following structure: - identifier of the object (integer on 16 bits), - identifier of the owner (integer on 32 bits), corresponding to an issuer identifier, - list of properties: Binary block containing the property information, intended to be interpreted by the different by the customers. This block is serialized in the following way: - number of properties (16 bits), - identifier of property No. 1 (16 bits), - property size No. 1 (16 bits), - value of property No. 1 (data block of the size indicated previously), - identifier of the property No. 2 (16 bits), - Size of property No. 2 (16 bits), - Value of the property No. 2 (block of data of the size indicated above), - and so on for the following properties. For messages containing objects, it is also advantageous to apply a binary serialization to reduce their size. 8.2) Message Types In this implementation, the protocol consists of the following messages: 8.2.1) ASK session messages CONNECT_SESSION Session and user information SESSION CONNECTED Connection accepted / denied 15 INFORMATION SESSION Session information (participant , duration, ..) UPDATE SESSION Modification on the session (pseudo of a user, configuration, etc.) 8.2.2) synchronization messages of ASK objects ACQUIRE List of object identifiers for lock request, marker of request time 25 RET ACQUIRE Accepted / Denied lock, Serialized Locked Objects ASK RELEASE Object Identifier to Release RET_RELEASE 30 Object Identifier Released, Serialized Object Released. ADD ITEM Serialized object to add ITEM_ADDED Serialized object added U PDATE ITEM Object properties to modify ITEM UPDATED Modified object properties REMOVE ITEM Object ID to delete ITEM_REMOVED Object ID deleted ASK_INIT_TABLE Request to initialize the world TABLE_ALL_OBJECT Serialization of the world (all objects and their properties) ACK TABLE_ALL_OBJECT Validates the end of the initialization of the world LOGICAL_FRAME Frame containing the frame identifier, the server time and a set of messages ACK LOGICAL_FRAME Frame acknowledgment 8.2.3) Messages SOUND_BUFFER Encoding information, sound content 8.2.4) Video messages VIDEO_BUFFER Encoding information, video content 8.2.5) File messages FILE BUFFER File identifier, offset, data block of the file at the specified offset ASK FILE_BUFFER File ID, offset 8.2.6) Dynamic texture messages TEXTURE BUFFER Texture ID, off set, encoding, texture data block at the specified offset ASK TEXTURE_BUFFER Texture identifier, offset 8.2.7) Messages for application sharing TEXTURE_BLOCK Texture identifier, block identifier, encoding, texture block APPLICATION INPUT Identifier of application, type input, value entered. 8.3) Sending messages A client and the server are permanently connected via a TCP socket and communicate by sending and receiving messages, this being handled by the respective messaging modules in layer 5 (see FIG. Figures 2 and 3). The server sends all these messages to each client by LOGICAL_FRAME frames chronologically numbered at a regular frequency. At each frame reception, a client responds to the server by acknowledging ACK LOGICAL_FRAME that the frame has been taken into account.

Ce système de trames permet de : - synchroniser le temps serveur (seul le message LOGICAL_FRAME contient le temps du serveur), à des fins notamment expliquées dans la suite ; - stocker les messages non envoyés à un client (lors de la phase d'initialisation ou si un client ne répond pas à une trame) et les renvoyer si besoin ; - optimiser les écritures du serveur ; - connaître la charge du serveur : si la période d'écriture dépasse celle 10 fixée, le serveur est identifié comme surchargé et les demandes de sessions peuvent être dirigées sur un autre serveur. Les messages de flux (audio, vidéo, etc.) sont transmis directement aux clients via des messages spécifiques sans être stockés dans les trames ; ce sont des messages qui n'ont pas besoin d'être renvoyés. 15 De plus chaque message de flux est aiguillé par le serveur seulement au client nécessaire. Par exemple : - SOUND BUFFER est envoyé seulement aux clients différents de l'émetteur ayant une caractéristique de son active (par exemple un drapeau mémorisé dans le serveur) ; 20 - TABLE_ALL_OBJECT est envoyé seulement à l'utilisateur qui en a fait la requête ; - ADD ITEM est envoyé à tous les utilisateurs différents de l'émetteur. 9) Règles de synchronisation 25 9.1) Cohérence Le serveur est en charge de déterminer et de maintenir l'état global de du monde virtuel perçu par les différents participants au niveau de leurs clients respectifs.This system of frames makes it possible to: - synchronize the server time (only the LOGICAL_FRAME message contains the time of the server), for purposes notably explained in the following; - store unsent messages to a client (during the initialization phase or if a client does not respond to a frame) and send them back if necessary; - optimize the writes of the server; - know the load of the server: if the writing period exceeds that fixed, the server is identified as overloaded and the requests for sessions can be directed to another server. Stream messages (audio, video, etc.) are transmitted directly to clients via specific messages without being stored in the frames; these are messages that do not need to be returned. In addition, each stream message is redirected by the server only to the required client. For example: - SOUND BUFFER is sent only to different clients of the transmitter having an active sound feature (eg a flag stored in the server); 20 - TABLE_ALL_OBJECT is sent only to the user who requested it; - ADD ITEM is sent to all different users of the sender. 9) Synchronization rules 25 9.1) Coherence The server is in charge of determining and maintaining the global state of the virtual world perceived by the different participants at the level of their respective customers.

Pour garantir la cohérence des données entre les différents clients, l'environnement de la présente invention se fonde sur un système de verrous logiques opérant selon les principes suivants : - un objet global ne peut être modifié que par un seul participant à la fois, pour pouvoir modifier un objet l'objet est verrouillé (opération effectuée par le serveur), le participant devient alors le propriétaire de cet objet et il peut ensuite modifier ses propriétés. - lors d'un changement de propriétaire toutes les propriétés sont synchronisées.To guarantee the coherence of the data between the different clients, the environment of the present invention is based on a system of logical locks operating according to the following principles: a global object can only be modified by one participant at a time, for to be able to modify an object the object is locked (operation carried out by the server), the participant then becomes the owner of this object and he can then modify his properties. - when a change of ownership all the properties are synchronized.

La cohérence à l'entrée est obtenue par la mise à jour de la copie d'un objet lors de la prise de verrou par un client, et la cohérence au relâchement est assurée par la mise à jour de toutes les copies d'un objet lors de la libération de verrou. 9.1) Arbitrage pour le verrouillage d'un objet Le serveur doit être à même de déterminer quel client a verrouillé un objet en premier, lorsque plusieurs requêtes de verrouillage lui parviennent. A cet effet, chaque trame contient un indicateur temporel qui permet à chaque client d'utiliser le même temps de référence : le temps t sur un client est déterminé par : t = ts + dt où ts est le temps de référence serveur de la dernière trame et dt est le temps écoulé depuis que le client l'a reçue.Consistency at the input is obtained by updating the copy of an object when a lock is taken by a client, and consistency when releasing is ensured by updating all the copies of an object when releasing lock. 9.1) Arbitration for Locking an Object The server must be able to determine which client has locked an object first, when more than one lock request arrives. For this purpose, each frame contains a time indicator which allows each client to use the same reference time: the time t on a client is determined by: t = ts + dt where ts is the server reference time of the last frame and dt is the time elapsed since the client received it.

Les clients envoient leurs messages au serveur avec l'indicateur temporel calculé comme ci-dessus. La latence des communications client/serveur n'est pas prise en compte dans le calcul du temps, pour que tous les participants puissent agir équitablement quel que soit le débit de leur connexion réseau.Clients send their messages to the server with the time indicator calculated as above. The latency of client / server communications is not taken into account in the calculation of time, so that all participants can act fairly regardless of the speed of their network connection.

Un exemple de cas de synchronisation est illustré sur la Figure 4 des dessins, dans l'hypothèse d'un jeu en réseau où il faut déterminer quel participant a demandé un verrou en premier (message ASK_ACQUIRE) sur un objet Oi avec son objet MAIN. Le serveur envoie les trames T1, T2 aux temps respectifs t1 et t2 (temps serveur), avec des durées de propagation différentes vers les clients 5 CLIENT1 et CLIENT2. Le client CLIENT1 saisit l'objet à tc1 = t2 + 6 (avec t2 côté client CLIENT1), ce qui correspond au temps serveur t2 + 7, tandis que le client CLIENT2 saisit l'objet à tc2 = t2 + 5 (t2 côté CLIENT2), ce qui correspond ici aux temps serveur t2 + 8. C'est toutefois le client CLIENT2 qui dans ce cas 10 prend possession de l'objet (même si en temps réel il a saisit l'objet en second), car par rapport à la réception de la trame t2 au niveau de son poste, c'est lui qui a été le plus rapide à saisir l'objet. Pour réaliser cette fonctionnalité, le serveur attend la fin d'un délai, dont la durée dépend de la fréquence des trames, avant de traiter les 15 messages de saisie d'objet renvoyés par les clients et effectuer les arbitrages, et effectue l'arbitrage à partir de l'indicateur temporel contenu dans la trame. Le délai en question dépend de la fréquence d'envoi de trames ; préférentiellement, un message reçu après la trame Tn est traité lors de 20 l'envoi de la trame Tn+2. Le délai minimum est ainsi d'une période, et si la période de trame est supérieure à la latence maximum de tous les clients, l'équité entre les clients est garantie. 9.3) Verrouillage et modifications 25 Une copie d'un objet global peut être modifiée localement (généralement de façon automatique par un script, par exemple pour animer un objet). Toute modification locale ne peut avoir lieu que si l'objet n'a pas de verrou, le script vérifiant avant son exécution le statut verrouillé ou relâché de l'objet. 30 Ces modifications locales ne sont pas à proprement parler synchronisées. Il est toutefois important que ces modifications soit les mêmes sur tous les clients. Toute modification automatique doit donc être déterminée en fonction du temps synchronisé délivré par le serveur avec les trames. La Figure 5 illustre la logique de prise de verrou plus en détail, avec tout d'abord la vérification générale d'une demande de prise de verrou non traitée (boîte 502), puis dans l'affirmative la vérification du fait que cette demande précédente non traitée concerne ou non le même objet (boîte 503). Ensuite, le processus vérifie (boîte 504) si l'objet n'est pas déjà verrouillé.An example of a synchronization case is illustrated in Figure 4 of the drawings, assuming a network game where it is necessary to determine which participant requested a lock first (message ASK_ACQUIRE) on an object Oi with its object MAIN. The server sends the frames T1, T2 at the respective times t1 and t2 (server time), with different propagation times to the clients 5 CLIENT1 and CLIENT2. The CLIENT1 client enters the object at tc1 = t2 + 6 (with client side t2 CLIENT1), which corresponds to the server time t2 + 7, while the client CLIENT2 enters the object at tc2 = t2 + 5 (t2 CLIENT2 side ), which corresponds here to server times t2 + 8. However, it is the client CLIENT2 which in this case 10 takes possession of the object (even if in real time it has seized the object second), because compared when he received the t2 frame at his post, he was the quickest to grasp the object. To achieve this functionality, the server waits for the end of a delay, the duration of which depends on the frequency of the frames, before processing the object input messages returned by the clients and performing the arbitrations, and performs the arbitration from the time indicator contained in the frame. The delay in question depends on the frequency of sending frames; preferentially, a message received after the frame Tn is processed when the frame Tn + 2 is sent. The minimum delay is thus one period, and if the frame period is greater than the maximum latency of all clients, the equity between the clients is guaranteed. 9.3) Locking and modifications 25 A copy of a global object can be modified locally (usually automatically by a script, for example to animate an object). Any local modification can take place only if the object does not have a lock, the script checking before its execution the locked or released status of the object. These local modifications are not properly synchronized. It is important, however, that these changes be the same for all clients. Any automatic modification must therefore be determined according to the synchronized time delivered by the server with the frames. Figure 5 illustrates the lock taking logic in more detail, first with the general check of an untreated lock take request (box 502), and if so, with the verification that this previous request untreated concerns or not the same object (box 503). Then, the process checks (box 504) if the object is not already locked.

Exemple - temps serveur tn (temps réception trame Tn) : réception d'une Trame Tn par les clients. - tn+10 : demande de verrou sur objets a, b, c par un client Cx, - la demande est insérée par le serveur dans une liste triée temporellement - temps serveur tn+1 (temps réception trame Tn+1) : traitement des demandes de verrous reçus à tn-1 (temps réception de la trame Tn-1) - tn+9 : demande de verrou sur un objet c par un client Cy - Insertion de la demande dans la liste précitée, avant celle sur a,b,c car tn+9 < tn+10 - tn+3 (temps réception trame Tn+3) : traitement des verrous reçus à tn : c refusé (demande plus récente) - verrou sur a ,b, c refusé - tn+4 (temps réception trame Tn+4) : traitement des verrous reçu a tn+2 - verrou sur c accepté. Le relâchement d'un verrou, ou déverrouillage, d'un objet est quant à lui illustré sur la figure 6. S'il existe une demande de verrou précédente, non traitée, sur le même objet (boîte 601), cette demande est annulée (boîte 602). Dans la négative, le processus vérifie si l'objet était déjà verrouillé par le même utilisateur (boîte 603). Dans l'affirmative seulement, le verrou est relâché. Exemple - tn : demande de verrou sur objet a par client Cx - tn+2 : verrou sur a accepté - Tn+3 : demande de relâchement sur objet a par client Cx - objet a relâché - tn : demande de verrou sur objets a, b par client Cy - tn+1 : demande de relâchement sur objet a - annulation de la demande de verrou sur objet a (une 15 annulation correspond au cas où une demande de relâchement de verrou est émise alors que le verrou n'a pas encore été accepté) - tn+2 : verrou sur b accepté 9.4) Initialisation 20 L'initialisation du système va être décrite en référence à la Figure 7. Lorsqu'un participant (user x) souhaite rejoindre un environnement de jeu en réseau ou « table », le client de ce participant adresse au serveur une requête (boîte 701) pour obtenir l'ensemble de la table, à savoir tous les objets qui la composent. 25 Si le participant participe pour la première fois au jeu (test 702), l'ensemble des objets de la table (message TABLE_ALL_OBJECT) est envoyé (boite 703) au client (boîte 704). Une fois tous les objets chargés correctement dans le client, un message ACK_TABLE_ALL_OBJECT est renvoyé par ce dernier au serveur pour lui signaler que toute la table a été 30 initialisée. Le serveur renvoie alors toutes les informations potentiellement manquées par le client (boîte 705) durant cette phase d'initialisation (typiquement tous les relâchements de verrous intervenus et mémorisés par le serveur depuis la demande de l'ensemble de la table). En revanche, dans le cas où l'utilisateur user x a déjà initialisé la table dans le passé (boîte 702), le gestionnaire d'objets est à l'écoute des demandes de reconnexion. Lorsque c'est le cas, un verrou est placé par l'utilisateur user x sur tous les objets (boîte 706). Si l'utilisateur (boîte 707) souhaite ajouter un objet, celui ci-est ajouté (boîte 708). Dans la négative, le déverrouillage est effectué (boîte 709). Au niveau détaillé des échanges de messages, on va donner ci- dessous un exemple où un utilisateur U1 s'est connecté à une session et a ajouté un objet, puis U2 effectue une première connexion sur cette même session et, au cours de cette connexion, l'utilisateur U1 déjà connecté modifie un objet. Cette séquence illustre en particulier la façon dont la modification est répercutée sur l'utilisateur U2 après l'initialisation. S désigne le serveur. U1 : ASK CONNECT_SESSION -> S S : SESSION CONNECTED->U1 S: INFORMATION SESSION->U1 S: RET_ACQUIRE(itemManager)->U1 U1: ADDITEM(Item X)->S Ul:ASK RELEASE(itemManager)->S S: ITEM_ADDED(Item X)->U1 S: RET_RELEASE(ItemManager)-> U1 U2 : ASK CONNECT_SESSION -> S S : SESSION CONNECTED->U2 S: INFORMATION_SESSION->U1,U2 U2 :ASK_INIT_TABLE->S U1:ASK_ACQUIRE(item X) S: TABLEALL_OBJECT->U2 S:RET_ACQUIRE(Item X)->U1 envoyé à U2 durant son envoyé à U2 durant son U1 :UPDATE _ITEM(Item X)->S S:UPDATE ITEM(Item X)->U1 U2:ACK_TABLE_ALL_OBJECT->S U1:ASKRELEASE(Item X)->S S:RET_ACQUIRE(Item X)->U2 (message non initialisation) S: UPDATE ITEM(Item X)->U2 (message non initialisation) S:RET_RELEASE(Item X)->U1,U2 9.5) Création d'éléments Pour la création d'un élément (objet ou ressource) au niveau d'un client, ce dernier doit acquérir le contrôleur nécessaire. Il en va de même pour la suppression d'un élément.Example - server time tn (frame reception time Tn): reception of a Tn frame by the clients. - tn + 10: lock request on objects a, b, c by a client Cx, - the request is inserted by the server in a list sorted temporally - server time tn + 1 (reception time frame Tn + 1): processing of requests for locks received at tn-1 (reception time of the Tn-1 frame) - tn + 9: request for a lock on an object c by a customer Cy - Insertion of the request in the list above, before that on a, b , c because tn + 9 <tn + 10 - tn + 3 (frame reception time Tn + 3): processing of latches received at tn: c refused (more recent request) - lock on a, b, c refused - tn + 4 (reception time frame Tn + 4): processing of locks received at tn + 2 - lock on c accepted. The release of a lock, or unlocking, of an object is shown in FIG. 6. If there is a previous unprocessed lock request on the same object (box 601), this request is canceled. (box 602). If not, the process checks if the object was already locked by the same user (box 603). If yes, the lock is released. Example - tn: lock request on object a by client Cx - tn + 2: lock on accepted - Tn + 3: release request on object a by client Cx - object released - tn: lock request on objects a, b per client Cy-tn + 1: request for release on object a - cancellation of lock request on object a (a cancellation corresponds to the case where a request for release of lock is issued while the lock has not yet was accepted) - tn + 2: lock on b accepted 9.4) Initialization 20 The initialization of the system will be described with reference to Figure 7. When a participant (user x) wishes to join a networked gaming environment or "table The client of this participant sends the server a request (box 701) to obtain the entire table, namely all the objects that compose it. If the participant participates for the first time in the game (test 702), all the objects of the table (message TABLE_ALL_OBJECT) are sent (box 703) to the client (box 704). Once all the objects are correctly loaded into the client, an ACK_TABLE_ALL_OBJECT message is returned by the client to the server to signal that the entire table has been initialized. The server then returns all the information potentially missed by the client (box 705) during this initialization phase (typically all latches released and stored by the server since the request of the entire table). On the other hand, in the case where the user user x has already initialized the table in the past (box 702), the object manager is listening for reconnection requests. When this is the case, a lock is placed by user user x on all objects (box 706). If the user (box 707) wishes to add an object, it is added (box 708). If not, the unlocking is done (box 709). At the detailed level of the message exchanges, we will give below an example where a user U1 has connected to a session and added an object, then U2 makes a first connection on this same session and, during this connection , the user U1 already connected modifies an object. This sequence illustrates in particular how the modification is passed on to the user U2 after initialization. S is the server. U1: ASK CONNECT_SESSION -> SS: SESSION CONNECTED-> U1 S: INFORMATION SESSION-> U1 S: RET_ACQUIRE (itemManager) -> U1 U1: ADDITEM (Item X) -> S U: ASK RELEASE (itemManager) -> SS: ITEM_ADDED (Item X) -> U1 S: RET_RELEASE (ItemManager) -> U1 U2: ASK CONNECT_SESSION -> SS: SESSION CONNECTED-> U2 S: INFORMATION_SESSION-> U1, U2 U2: ASK_INIT_TABLE-> S U1: ASK_ACQUIRE (item X S: TABLEALL_OBJECT-> U2 S: RET_ACQUIRE (Item X) -> U1 sent to U2 when sent to U2 during U1: UPDATE _ITEM (Item X) -> SS: UPDATE ITEM (Item X) -> U1 U2: ACK_TABLE_ALL_OBJECT-> S U1: ASKRELEASE (Item X) -> SS: RET_ACQUIRE (Item X) -> U2 (uninitialized message) S: UPDATE ITEM (Item X) -> U2 (uninitialized message) S: RET_RELEASE (Item X) ) -> U1, U2 9.5) Creation of elements For the creation of an element (object or resource) at the level of a client, the latter must acquire the necessary controller. The same goes for deleting an item.

Un exemple de processus associé est illustré sur la Figure 8. IM désigne le contrôleur d'objets (Item Manager en terminologie anglo-saxonne). Oi(x) désigne l'objet d'identifiant i, ayant un attribut de valeur x. ASK ACQUIRE(...) désigne la demande de prise de verrou sur le contrôleur d'objets (IM) ou sur un objet (Oi(x)). ASK_RELEASE(...) désigne le relâchement d'un tel verrou. p désigne la propagation d'un objet modifié après relâchement. p' désigne une nouvelle propagation de l'objet modifié après relâchement.An example of an associated process is shown in Figure 8. IM designates the object manager (Item Manager in English terminology). Oi (x) denotes the identifier object i, having an attribute of value x. ASK ACQUIRE (...) designates the request to take a lock on the object controller (IM) or on an object (Oi (x)). ASK_RELEASE (...) denotes the release of such a lock. p designates the propagation of a modified object after release. p 'denotes a new propagation of the modified object after release.

Dans une première phase, le client CLIENT1 prend un verrou sur le contrôleur d'objets IM (qui est un objet système) au niveau du serveur, en vue de l'ajout d'un objet global 01(x) (commande ADD_ITEM(O1(x))) au niveau du client CLIENT1, objet qui est envoyé alors au serveur. Le contrôleur d'objets est ensuite relâché.In a first phase, client CLIENT1 takes a lock on the IM object controller (which is a system object) at the server level, for the purpose of adding a global object 01 (x) (command ADD_ITEM (O1 (x))) at the client CLIENT1, which is then sent to the server. The object controller is then released.

Ultérieurement, le client CLIENT1 prend un verrou sur l'objet 01 au niveau du serveur (commande ASK ACQUIRE(01)) pour le modifier. La modification est transférée au serveur (on notera qu'il est possible soit de recopier l'objet dans CLIENT1 pour le modifier localement et le renvoyer ensuite au serveur, soit d'envoyer directement au serveur des ordres de modification de l'objet 01, ordres appliqués sur l'objet 01 tel que mémorisé dans le serveur). L'objet 01 est ensuite relâché (commande ASK_RELEASE(01)). Si pendant la phase de modification de 01, un client CLIENT2 envoie une requête d'initialisation ASK INIT_TABLE pour participer à l'environnement (autrement dit accéder au monde, à la table, etc.), la lecture de l'objet 01 faisant partie de cet environnement par le client CLIENT2 (une commande qu'on désigne par READ(01(x))) ne peut s'effectuer que sur la version de 01 avant modification. Vers la fin de la lecture de 01 par CLIENT2, le serveur propage (p) la nouvelle valeur de 01 vers les clients (dont CLIENT2) lors du relâchement du verrou sur 01 qui avait été demandé par CLIENT1 (relâchement intervenant après que CLIENTI ait achevé la modification de 01(x) pour le transformer en 01(y)). Or CLIENT2 accusant réception du monde (ACK_TABLE_ALL_OBJECT) seulement après la propagation p de l'objet modifié 01(y), le serveur prend alors l'initiative de propager à nouveau (en p') l'objet modifié 01(y).Subsequently, the client CLIENT1 takes a lock on the object 01 at the server (command ASK ACQUIRE (01)) to modify it. The modification is transferred to the server (note that it is possible either to copy the object in CLIENT1 to modify it locally and then send it back to the server, or to send directly to the server modification orders of the object 01, orders applied to the object 01 as stored in the server). The object 01 is then released (command ASK_RELEASE (01)). If during the change phase of 01, a client CLIENT2 sends an initialization request ASK INIT_TABLE to participate in the environment (ie access the world, the table, etc.), the reading of the object 01 being part of this environment by the customer CLIENT2 (a command that is designated by READ (01 (x))) can only be done on the version of 01 before modification. Towards the end of the reading of 01 by CLIENT2, the server propagates (p) the new value of 01 to the clients (including CLIENT2) when releasing the lock on 01 that was requested by CLIENT1 (relaxation occurring after CLIENTI has completed changing 01 (x) to 01 (y). Now CLIENT2 acknowledging the world (ACK_TABLE_ALL_OBJECT) only after the propagation p of the modified object 01 (y), the server then takes the initiative to propagate again (in p ') the modified object 01 (y).

Ensuite, dès qu'un client (ici à nouveau CLIENTI) modifie l'objet 01 selon le même processus, ici pour le transformer de 01(y) en 01(z), l'objet modifié, après réception par le serveur, est automatiquement propagé aux postes clients concernés, à savoir ceux participant à la session dont CLIENT2. 9.6) Tolérance aux erreurs 9.6.1) Message non reçu par un client Le serveur de messagerie conserve en mémoire toutes les trames envoyés aux clients, jusqu'à recevoir la confirmation des clients de la bonne 30 prise en compte des trames. Lors de l'envoi d'une trame, le serveur de messagerie renvoie également toutes les trames depuis la dernière confirmation reçue. Au bout d'un certain nombre de trames sans réponse de la part d'un client (mise en oeuvre d'une routine de comptage), l'information est passée du serveur de messagerie au serveur de session, pour que le client en question soit déclaré déconnecté. Il devra alors repasser par une phase d'initialisation pour accéder à l'environnement. 9.6.2) Message non reçu par le serveur Si une demande de verrou n'est pas reçue par le serveur de messagerie, le client n'obtient pas le verrou et ne peut agir sur l'objet ou le gestionnaire considéré. Si un relâchement de verrou n'est pas reçu par le serveur de messagerie, alors : - soit le client est toujours en attente de relâchement et réitère son message ; - soit le client à été déconnecté (voir plus haut), auquel cas tous ses verrous pris par ce client sont relâchés. 10) Partage d'une application La plateforme offre la possibilité de partager une application (de bureautique notamment) exécutée localement sur un poste client. Le poste client qui exécute l'application est appelé client hôte. L'application partagée peut être non seulement visualisée, par d'autres clients, mais également contrôlée par d'autres clients, pour ainsi réaliser un environnement collaboratif sur la base d'une application exécutée localement. On notera également que l'invention permet à plusieurs applications d'être partagées simultanément. L'application partagée devient un objet de l'environnement partagé sur tous les clients n'exécutant pas eux mêmes l'application. Toutefois le client hôte interagit directement avec celle-ci et aucun objet n'est créé dans la copie du monde virtuel de ce client (le code de l'application, ou les fichiers ouverts, ne sont pas transférés). Le partage peut s'effectuer entre différents environnements matériels et logiciels, et pour des applications très diverses. 10.1) Capture de l'application Pour rendre visible aux autres utilisateurs l'environnement visuel de l'application, celle-ci est capturée de la façon suivante : - choix de la fenêtre de document à partager ; - détermination de toutes les fenêtre filles de l'application (notamment palettes d'outils, etc.) ; - création d'un masque de capture déterminé par les positions des fenêtres ci-dessus - Capture de toutes les fenêtres considérées avec le masque de 15 capture. Chaque image capturée est ensuite utilisée pour crée un flux visuel d'application à destination des autres postes clients. La mise à jour de la capture s'effectue à une cadence choisie notamment en fonction de la taille de la zone capturée et du débit de 20 communication disponible dans l'environnement client/serveur. 10.2) Diffusion du flux De manière à limiter le volume d'informations à diffuser vers chaque client partageant l'application, chaque image capturée est découpée en 25 blocs. Chaque bloc est comparé au bloc précédemment envoyé, avec les règles suivantes : - Si aucun bloc précédent n'a été envoyé ou si le bloc précédent était différent : le bloc est envoyé dans un format de qualité réduite. - Si le bloc précédent est identique mais de qualité réduite : le 30 bloc envoyé est envoyé sans perte. - Si le bloc précédent est identique est envoyé sans perte : le bloc n'est pas envoyé. L'historique des envois de blocs peut être effacé pour renvoyer l'ensemble des blocs de la capture, notamment lors de l'initialisation du poste client d'un participant lors de son arrivée. Au niveau des autres clients (clients « récepteurs »), ceux-ci reconstituent Les clients récepteur du flux reconstitue l'image bloc par bloc. Le flux transite par le serveur de partage d'applications qui effectue la distribution en fonction des utilisateurs inscrits au partage. 10.3) Contrôle de l'application Lorsqu'un participant contrôle une application partagée, ce sont les dispositifs d'entrée du client hôte qui commandent l'application, de la façon normale.Then, as soon as a client (here again CLIENTI) modifies the object 01 according to the same process, here to transform it from 01 (y) to 01 (z), the modified object, after reception by the server, is automatically propagated to the client stations concerned, namely those participating in the session including CLIENT2. 9.6) Error tolerance 9.6.1) Message not received by a client The mail server stores all the frames sent to the clients in memory, until the confirmation of the clients that the frames have been taken into account. When sending a frame, the messaging server also returns all frames since the last received confirmation. After a certain number of unanswered frames from a client (implementation of a counting routine), the information is passed from the mail server to the session server, so that the client in question be declared disconnected. It will then have to go through an initialization phase to access the environment. 9.6.2) Message not received by the server If a lock request is not received by the mail server, the client does not obtain the lock and can not act on the object or manager considered. If a lock release is not received by the mail server, then: - either the client is still waiting for release and reiterates its message; - the client has been disconnected (see above), in which case all locks taken by this client are released. 10) Sharing an application The platform offers the possibility of sharing an application (particularly of office automation) run locally on a client computer. The client node that runs the application is called the client client. The shared application can be not only viewed by other clients, but also controlled by other clients, to achieve a collaborative environment based on a locally executed application. It will also be noted that the invention allows several applications to be shared simultaneously. The shared application becomes an object in the shared environment on all clients that are not running the application themselves. However, the host client interacts directly with it and no object is created in the copy of the virtual world of this client (the code of the application, or open files, are not transferred). Sharing can occur between different hardware and software environments, and for a variety of applications. 10.1) Capture of the application To make visible to the other users the visual environment of the application, this one is captured in the following way: - choice of the window of document to be shared; - determination of all the application's child windows (especially tool palettes, etc.); - Creation of a capture mask determined by the positions of the windows above. Capture of all the windows considered with the capture mask. Each captured image is then used to create a visual application flow to other client computers. The updating of the capture is carried out at a rate chosen in particular according to the size of the captured area and the communication rate available in the client / server environment. 10.2) Broadcasting the Stream In order to limit the amount of information to be broadcast to each client sharing the application, each captured image is divided into 25 blocks. Each block is compared to the block previously sent, with the following rules: - If no previous block was sent or if the previous block was different: the block is sent in a reduced quality format. If the previous block is identical but of reduced quality: the sent block is sent without loss. - If the previous block is identical is sent without loss: the block is not sent. The history of block uploads can be cleared to return all the blocks of the capture, especially during the initialization of a client's client station when it arrives. At the level of the other clients ("receiver" clients), these reconstitute the clients receiving the flow reconstitutes the block image by block. The flow passes through the application-sharing server that performs the distribution based on the users registered in the share. 10.3) Application Control When a participant controls a shared application, it is the host client input devices that control the application, in the normal way.

Dans le cas où un autre client souhaite prendre le contrôle de l'application, une requête est envoyée par celui-ci au serveur de partage d'applications. Après éventuel processus d'habilitation et/ou d'autorisation, toutes les actions dudit autre client (souris, clavier, écran tactile, etc.), encodées dans des messages d'actions dédiés, sont envoyés au client hôte via le serveur de messagerie de l'environnement (utilisation du système de messagerie en couche 5). Avantageusement, toutes les actions d'entrée sont converties en un format générique, et reconverties dans le format de la machine hôte, soit au niveau des moyens serveurs, soit au niveau du client. Dans le présent exemple, c'est le client hôte qui reconvertit les actions au format d'entrés de sa machine, les positions étant recalculées par rapport aux fenêtres de l'application sur le client hôte. Puis les entrées sont simulées sur la machine hôte via les routines disponibles dans les systèmes d'exploitation du marché. De préférence, on prévoit qu'à tout moment le client hôte peut interrompre le partage de son application. On peut prévoir au niveau du client hôte soit un forçage de l'application active sur l'application en cours de partage (l'utilisateur du client hôte perdant la main, il est nécessaire de circonscrire les actions possibles de l'utilisateur tiers sur le client hôte), soit un filtrage des entrées simulées reçues, qui ne seront actives que lorsque c'est l'application partagée qui est active.In the case where another client wishes to take control of the application, a request is sent by the latter to the application sharing server. After any authorization and / or authorization process, all the actions of said other client (mouse, keyboard, touch screen, etc.), encoded in dedicated action messages, are sent to the host client via the mail server. the environment (use of the layer 5 messaging system). Advantageously, all the input actions are converted into a generic format and converted back to the format of the host machine, either at the server means level or at the client level. In this example, it is the host client that converts the actions to the input format of its machine, the positions being recalculated relative to the windows of the application on the client host. Then the inputs are simulated on the host machine via the routines available in the operating systems of the market. Preferably, it is expected that at any time the host client can interrupt the sharing of its application. It can be provided at the host client level or forcing the active application on the application being shared (the user of the host client losing the hand, it is necessary to circumscribe the possible actions of the third-party user on the host client), which is a filtering of the received simulated inputs, which will be active only when the shared application is active.

Par ailleurs on prévoit avantageusement que dès que l'hôte utilise un de ses dispositifs d'entrée, il reprend automatiquement la main et les entrées externes sont neutralisées. 10.4) Implémentation Dans un exemple d'implémentation, le partage d'application s'effectue de la façon suivante : - Choix par l'utilisateur de l'application à partager, réalisé au niveau du client par un système de sélection des applications partageables en cours d'exécution ; - création d'un objet logique de par application partage et du flux visuel de l'application (texture) par le processus suivant : - verrouillage du gestionnaire d'objets (message ASK ACQUIRE) ; - ajout d'un objet application et d'un objet texture d'application 20 (messages ADD_ITEM) ; - déverrouillage du gestionnaire d'objets ; - envoi par le client hôte (celui qui héberge l'application) de la texture de l'application, avec une compression forte (par n messages de type TEXTURE_BLOCK) ; 25 - mise à jour périodique de la texture par le client hôte : - avec des messages de type TEXTURE_BLOCK avec contenu graphique de bonne qualité/faible compression pour un bloc graphique non modifié) ; - avec des messages TEXTURE_BLOCK avec contenu 30 graphique plus fortement compressé pour un bloc graphique modifié) ; - puis un client (le client hôte ou un autre client) choisit de prendre le contrôle de l'application par un message de type ASK ACQUIRE (objet logique d'application) ; - ce client agit sur l'application par ses dispositifs d'entrée : - s'il s'agit du client hôte, il agit localement sur son application et la texture continue de se mettre à jour ; - s'il s'agit d'un autre client, il envoie ses actions sur l'application par des messages de type APPLICATION_INPUT, par exemple : APPLICATION_INPUT, Déplacement (x,y) APPLICATION_INPUT, clic (x,y) APPLICATION_INPUT clavier (touche) etc. ; - le client hôte reçoit des messages APPLICATION_INPUT et les transmet à l'application. 11) Partage de fichiers La plateforme peut offrir un service de partage de fichiers entre les utilisateurs.Furthermore, it is advantageously provided that as soon as the host uses one of its input devices, it automatically resumes the hand and the external inputs are neutralized. 10.4) Implementation In an implementation example, the application sharing is carried out as follows: - Choice by the user of the application to be shared, realized at the client level by a system for selecting the applications that can be shared in running; - Creation of a logical object by shared application and the visual flow of the application (texture) by the following process: - Locking the object manager (ASK ACQUIRE message); adding an application object and an application texture object 20 (ADD_ITEM messages); - unlock the object manager; - sending by the host client (the one that hosts the application) the texture of the application, with a strong compression (by n messages TEXTURE_BLOCK type); 25 - periodic updating of the texture by the host client: - with messages of TEXTURE_BLOCK type with graphic content of good quality / low compression for an unmodified graphic block); with TEXTURE_BLOCK messages with more compressed graphic content for a modified graphic block); - then a client (the host client or another client) chooses to take control of the application by an ASK message ACQUIRE (logical object of application); - this client acts on the application by its input devices: - if it is the host client, it acts locally on its application and the texture continues to update; - if it is another client, it sends its actions on the application by messages of the type APPLICATION_INPUT, for example: APPLICATION_INPUT, Displacement (x, y) APPLICATION_INPUT, clic (x, y) APPLICATION_INPUT keyboard ( key) etc. ; - The host client receives APPLICATION_INPUT messages and passes them to the application. 11) File Sharing The platform can offer a file sharing service between users.

Lorsqu'un utilisateur souhaite partager un fichier mémorisé localement dans son client (ou sur un support accessible par le client), une action sur son interface d'entrée (par exemple à l'aide d'un menu) convertit le fichier en un « fichier partagé » exploitable dans le monde virtuel. Ce fichier est transféré vers le serveur Le partage d'un fichier par un client entraine la création d'un objet « fichier partagé » dans le monde virtuel. Selon le type de fichier il est possible de créer une ressource graphique à partir du fichier en question (par exemple s'il s'agit d'une image), sinon l'objet sera représenté par une icône. L'objet fichier et sa ressource (icône ou image) sont d'abord synchronisés par le serveur logique, à l'aide de messages d'ajout d'objet et de texture dynamique, la ressource graphique (texture) étant transférée en priorité car elle est nécessaire à la représentation de l'objet. Le fichier 'est ensuite transféré via le serveur de transfert de fichiers à la demande d'un utilisateur sur l'objet fichier. Le serveur conserve un cache 5 des fichiers transférés pour pouvoir fournir à nouveau le même fichier à tout autre client qui en ferait la demande. 12) Création d'applications La plateforme permet à toute personne de créer très rapidement une 10 application reflétant un environnement réel (par exemple un environnement de jeu). 12.1) Contenu des packages Comme on l'a vu, un package est un répertoire sous forme d'archive 15 qui contient tout ce qui est nécessaire à l'exécution de l'application sur chaque poste client, et contient : - des ressources, à savoir l'ensemble des ressources multimédia statiques qui seront utilisées au niveau application (images, sons, textes, vidéos, etc.) 20 - un ou plusieurs fichiers de comportement en langage de script, par exemple réalisés sur la base d'un langage interprété tel que LUA (voir www. I ua. orq). 12.2) Interfaces de programmation d'applications API 25 Des interfaces de programmation d'applications (APIs pour « Application Programming Interfaces » en terminologie anglo-saxonne) sont fournies par la plateforme ; par exemple, on peut prévoir les APIs suivantes, qui peuvent être appelées par le langage de script : - création de ressource : cette API charge une ressource du 30 package en mémoire et retourne un identifiant ID de la ressource au script ; - création d'objets globaux (synchronisés) ou locaux (non synchronisés) ; ces objets sont créés soit dans l'environnement graphique partagé ou monde virtuel (objets globaux), soit dans l'interface propre à un utilisateur (objets locaux), - création de propriétés associées aux objets : ces propriétés sont soit des propriétés système, par exemple liées à l'affichage (affectation à un objet d'un ID de ressource), soit des propriétés propres à l'application ; - verrouillage/déverrouillage d'un objet : cette API permet de prendre ou de relâcher le contrôle sur un objet global ; si le poste contrôle un objet global, il peut alors modifier ses propriétés ; - manipulation des propriétés des objets (en lecture ou écriture) : si un objet est verrouillé par un poste client, le script peut alors écrire et modifier ces propriétés et le système se charge de synchroniser ces modifications sur les autres postes ; - récupération des états des entrées : il s'agit d'un groupe de fonctions permettant de récupérer les entrées de l'utilisateur sous deux grands groupes : * la position de la main virtuelle par interprétation de la position de la souris, des doigts de l'utilisateur sur une surface tactile, ou d'un autre périphérique de saisie X/Y, - la saisie de texte sur un clavier physique ou virtuel, selon le type de machine cliente. 12.3) Programmation des comportements Les fonctions de programmation des comportements doivent être présentes dans chaque script et elles sont appelées automatiquement par le système dans l'ordre suivant : 1) fonction TInitLocal() : cette fonction est appelée par le système un fois sur chaque poste client pour créer les objets locaux qui doivent être présent les postes respectifs ; 2) fonction TInitOwner() : cette fonction est appelée uniquement sur le poste du créateur d'une session pour qu'il crée les objets globaux ; 3) fonction TInitStarted() : cette fonction est appelée par le système un fois par poste lorsqu'un client rejoint une session active ; elle permet de créer les objets locaux liés à la présence de l'utilisateur (par exemple sa webcam, sa main virtuelle, etc.), chacun de ces objets étant crée en local sur chaque poste respectif. Ensuite durant le déroulement d'une session, les fonctions suivantes sont appelées par le système : - fonction TFrameUpdate() : elle est appelée cycliquement par le système, avec les modalités suivantes : - avant l'appel, le système récupère les états des entrées ainsi que les modifications des objets globaux par les autres postes clients (modifications qui sont synchronisées par le serveur via le réseau) ; - la fonction est appelée pour que le script puisse gérer les comportements en fonction des inputs et des objets globaux modifiés ; les comportements agissent soit sur les objets locaux, soit sur des objets globaux avec le mécanisme de verrouillage/déverrouillage de ces objets ; - suite a cette exécution de la fonction, le système procède a la synchronisation des modifications sur le réseau, et ensuite aux différents rendus sur le poste client (audio, vidéo, etc. - fonction OnUserChange() : cette fonction est appelée à chaque fois qu'un utilisateur rejoint ou quitte la session en cours, ou change ses paramètres tels que le surnom. Les valeurs modifiées sont délivrées par la 25 fonction elle-même. 12.4) Librairies fournies La plateforme peut également fournir un mécanisme de librairies de scripts qui ont notamment les deux objectifs suivants : 30 - factorisation du code par regroupement des comportements souvent utilisés ; - simplification du code par fourniture de librairies de codes complexes qui réalisent des fonctionnalités basiques et directement utilisables par un développeur qui souhaite avoir un développement rapide de son application. Ces librairies sont indépendantes de la plateforme et peuvent donc être développées par des tierces personnes. Bien entendu, la présente invention n'est nullement limitée au mode de réalisation décrit ci-dessus et représenté sur les figures, mais l'homme du métier saura y apporter de nombreuses variantes et modifications.When a user wants to share a file stored locally in his client (or on a support accessible by the client), an action on its input interface (for example using a menu) converts the file into a " shared file 'exploitable in the virtual world. This file is transferred to the server Sharing a file by a client causes the creation of a "shared file" object in the virtual world. Depending on the type of file it is possible to create a graphic resource from the file in question (for example if it is an image), otherwise the object will be represented by an icon. The file object and its resource (icon or image) are first synchronized by the logical server, using add object messages and dynamic texture, the graphic resource (texture) being transferred as a priority because it is necessary for the representation of the object. The file 'is then transferred via the file transfer server at the request of a user on the file object. The server keeps a cache of the transferred files to be able to supply the same file again to any other client who requests it. 12) Creation of applications The platform allows anyone to quickly create an application that reflects a real environment (for example a game environment). 12.1) Contents of the packages As we have seen, a package is an archive directory 15 that contains everything that is necessary to run the application on each client station, and contains: - resources, that is to say all the static multimedia resources that will be used at the application level (images, sounds, texts, videos, etc.) 20 - one or more behavior files in script language, for example made on the basis of a language interpreted as LUA (see www Ia orq). 12.2) API Application Programming Interfaces Application programming interfaces (APIs for Application Programming Interfaces) are provided by the platform; for example, the following APIs can be provided, which can be called by the scripting language: resource creation: this API loads a resource from the package in memory and returns an identifier ID of the resource to the script; - creation of global (synchronized) or local (non-synchronized) objects; these objects are created either in the shared graphical environment or virtual world (global objects), or in the interface specific to a user (local objects), - creation of properties associated with the objects: these properties are either system properties, by example related to the display (assignment to an object of a resource ID), or properties specific to the application; - locking / unlocking an object: this API allows you to take or release control on a global object; if the station controls a global object, it can then modify its properties; - manipulation of object properties (read or write): if an object is locked by a client machine, the script can then write and modify these properties and the system will synchronize these changes on the other computers; - recovery of the states of the entries: it is a group of functions allowing to recover the entries of the user under two big groups: * the position of the virtual hand by interpretation of the position of the mouse, the fingers of the user on a touchpad, or other X / Y input device, - text input on a physical or virtual keyboard, depending on the type of client device. 12.3) Programming behaviors The behavior programming functions must be present in each script and they are automatically called by the system in the following order: 1) function TInitLocal (): this function is called by the system once on each station client to create the local objects that must be present the respective positions; 2) function TInitOwner (): this function is called only on the station of the creator of a session to create the global objects; 3) TInitStarted () function: This function is called by the system once per station when a client joins an active session; it allows to create the local objects related to the presence of the user (for example his webcam, his virtual hand, etc.), each of these objects being created locally on each respective post. Then during the course of a session, the following functions are called by the system: - function TFrameUpdate (): it is called cyclically by the system, with the following modalities: - before the call, the system retrieves the states of the inputs as well as the modifications of the global objects by the other client stations (modifications which are synchronized by the server via the network); - the function is called so that the script can handle the behaviors according to the inputs and modified global objects; behaviors act either on local objects or on global objects with the locking / unlocking mechanism of these objects; - following this execution of the function, the system proceeds with the synchronization of the modifications on the network, and then with the various renderings on the client station (audio, video, etc. - OnUserChange () function: this function is called every time that a user joins or leaves the current session, or changes its parameters such as the nickname The modified values are delivered by the function itself 12.4) Supplied libraries The platform can also provide a mechanism for script libraries that In particular, they have the following two objectives: - factorization of the code by grouping the behaviors often used; - Simplification of the code by providing libraries of complex codes that achieve basic functionality and directly usable by a developer who wishes to have a rapid development of its application. These libraries are independent of the platform and can therefore be developed by third parties. Of course, the present invention is not limited to the embodiment described above and shown in the figures, but the skilled person will be able to make many variations and modifications.

Claims (10)

REVENDICATIONS1. Système informatique, comprenant un ensemble de postes clients 5 reliés en réseau à des moyens serveurs, ledit système étant apte à exécuter de façon partagée sur les postes clients des applications mettant en jeu des objets et des ressources, caractérisé en ce qu'il comprend : - des moyens de synchronisation de comportements aptes à synchroniser en temps réel ou quasi-réel les comportements d'objets 10 restitués dans une application donnée au niveau des différents postes clients, - des moyens de gestion d'objets aptes à organiser la création, la modification et la suppression d'objets à l'initiative de postes clients, et - un système de messagerie de bas niveau commun apte à véhiculer 15 l'ensemble des informations entre les postes clients et les moyens serveurs, relatives à la synchronisation des comportements et à la gestion des objets.REVENDICATIONS1. Computer system, comprising a set of client stations 5 networked to server means, said system being able to execute shared applications on the client computers using objects and resources, characterized in that it comprises: means for synchronizing behaviors able to synchronize, in real time or near real time, the behaviors of objects restored in a given application at the level of the various client stations; means for managing objects capable of organizing the creation, the modification and deletion of objects on the initiative of client computers, and - a common low-level messaging system capable of conveying all the information between the client computers and the server means, relating to the synchronization of the behaviors and to the management of objects. 2. Système selon la revendication 1, dans lequel les moyens de synchronisation sont aptes à mettre en oeuvre un mécanisme de 20 verrouillage/déverrouillage des objets.2. System according to claim 1, wherein the synchronization means are adapted to implement a mechanism for locking / unlocking objects. 3. Système selon la revendication 2, dans lequel les moyens de synchronisation comprennent un mécanisme d'arbitrage entre requêtes de verrouillage d'objets à partir de postes clients différents. 253. System according to claim 2, wherein the synchronization means comprise an arbitration mechanism between object locking requests from different client stations. 25 4. Système selon la revendication 3, dans lequel le mécanisme d'arbitrage comprend des moyens d'ordonnancement temporel des requêtes par rapport à une échelle de temps serveur propagée aux postes clients en prenant en compte le temps de propagation des messages du système de 30 messagerie des moyens serveurs vers les postes clients.4. The system of claim 3, wherein the arbitration mechanism comprises means for temporally scheduling the requests with respect to a server time scale propagated to the client stations by taking into account the propagation delay of the messages of the system of 30. messaging from server facilities to client computers. 5. Système selon l'une des revendications 2 à 4, dans lequel l'un des objets consiste en un gestionnaire d'objets, et le mécanisme de verrouillage/déverrouillage des objets est apte à verrouiller le gestionnaire d'objet en vue de la création et de la modification d'objets.5. System according to one of claims 2 to 4, wherein one of the objects consists of an object manager, and the locking / unlocking mechanism of the objects is able to lock the object manager for the purpose of creating and editing objects. 6. Système selon l'une des revendications 1 à 5, dans lequel les moyens de synchronisation sont aptes à véhiculer des commandes d'entrée standard, et il est prévu au niveau des postes clients des moyens pour convertir lesdites commandes standard en commandes adaptées aux 10 systèmes d'exploitation des postes clients.6. System according to one of claims 1 to 5, wherein the synchronization means are able to convey standard input commands, and there is provided at the client computers means for converting said standard commands into commands adapted to 10 operating systems of the workstations. 7. Système selon l'une des revendications 1 à 6, comprenant en outre des moyens de gestion de session aptes à gérer l'entrée de postes clients dans un partage d'application et la sortie desdits postes clients dudit partage 15 d'application, les informations mises en jeu par lesdits moyens de gestion de session étant également véhiculées par le serveur de messagerie de bas niveau.7. System according to one of claims 1 to 6, further comprising session management means able to manage the entry of client stations in an application sharing and the output of said client stations of said application share, the information put into play by said session management means being also conveyed by the low level mail server. 8. Système selon les revendications 2 et 7 prises en combinaison, dans 20 lequel l'entrée d'un poste client dans un partage d'application est mise en oeuvre par transfert des objets non verrouillés vers ledit poste client, puis transfert des objets qui étaient verrouillés vers ledit poste client après leur déverrouillage. 258. System according to claims 2 and 7 taken in combination, wherein the entry of a client station into an application share is implemented by transferring the unlocked objects to said client station and then transferring the objects which were locked to said client station after unlocking. 25 9. Système selon l'une des revendications 1 à 8, comprenant en outre des moyens pour propager des moyens serveurs vers les postes clients des paquets applicatifs à partager, un paquet applicatif comprenant un fichier de description d'application, un ou plusieurs fichiers de description de comportements, de préférence en langage interprété, et des fichiers de 30 ressources.9. System according to one of claims 1 to 8, further comprising means for propagating server means to client stations application packets to share, an application package comprising an application description file, one or more files of description of behaviors, preferably in interpreted language, and resource files. 10. Système selon l'une des revendications précédentes, comprenant en outre des moyens de partage d'applications exécutées localement sur un poste client donné, aptes à recopier une représentation graphique d'une application exécutée localement sur un poste client vers d'autres postes clients participant au partage, et des moyens pour contrôler les commandes d'entrée sur ladite application exécutée localement de façon à y appliquer sélectivement des commandes d'entrée générées sur ledit poste client et des commandes d'entrée générées par d'autres postes clients participant au partage et véhiculées via ledit système de messagerie de bas niveau.1010. System according to one of the preceding claims, further comprising means for sharing applications run locally on a given client station, able to copy a graphical representation of an application executed locally on a client station to other positions clients participating in the sharing, and means for controlling the input commands on said locally executed application to selectively apply input commands generated on said client and input commands generated by other participating client stations sharing and conveyed via said low level messaging system.
FR1300633A 2013-03-19 2013-03-19 COMPUTER ENVIRONMENT FOR SHARED EXECUTION ON CLIENT POSITIONS OF CONTENT APPLICATIONS AND SYNCHRONIZED ACTIONS Active FR3003717B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1300633A FR3003717B1 (en) 2013-03-19 2013-03-19 COMPUTER ENVIRONMENT FOR SHARED EXECUTION ON CLIENT POSITIONS OF CONTENT APPLICATIONS AND SYNCHRONIZED ACTIONS

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1300633A FR3003717B1 (en) 2013-03-19 2013-03-19 COMPUTER ENVIRONMENT FOR SHARED EXECUTION ON CLIENT POSITIONS OF CONTENT APPLICATIONS AND SYNCHRONIZED ACTIONS

Publications (2)

Publication Number Publication Date
FR3003717A1 true FR3003717A1 (en) 2014-09-26
FR3003717B1 FR3003717B1 (en) 2016-08-19

Family

ID=49231523

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1300633A Active FR3003717B1 (en) 2013-03-19 2013-03-19 COMPUTER ENVIRONMENT FOR SHARED EXECUTION ON CLIENT POSITIONS OF CONTENT APPLICATIONS AND SYNCHRONIZED ACTIONS

Country Status (1)

Country Link
FR (1) FR3003717B1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263360B1 (en) * 1998-06-01 2001-07-17 Sri International System uses filter tree and feed handler for updating objects in a client from a server object list
US20110289514A1 (en) * 2010-05-19 2011-11-24 Microsoft Corporation Sharing and synchronization of objects
WO2012155179A1 (en) * 2011-05-13 2012-11-22 Igobubble Limited Method in a computing system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263360B1 (en) * 1998-06-01 2001-07-17 Sri International System uses filter tree and feed handler for updating objects in a client from a server object list
US20110289514A1 (en) * 2010-05-19 2011-11-24 Microsoft Corporation Sharing and synchronization of objects
WO2012155179A1 (en) * 2011-05-13 2012-11-22 Igobubble Limited Method in a computing system

Also Published As

Publication number Publication date
FR3003717B1 (en) 2016-08-19

Similar Documents

Publication Publication Date Title
US11403595B2 (en) Devices and methods for creating a collaborative virtual session
US10101902B2 (en) Methods and systems for obscuring text in a conversation
FR2711260A1 (en) Delayed transfer of large blocks of data.
US8862672B2 (en) Content sharing and instant messaging
JP6889281B2 (en) Analyzing electronic conversations for presentations in alternative interfaces
US10194015B2 (en) Systems and methods for facilitating conversations
US9813365B2 (en) Integrated real-time digital communication platform
US20090307189A1 (en) Asynchronous workflow participation within an immersive collaboration environment
US10582157B1 (en) Live interaction in persistent conversations
US20070198534A1 (en) System and method to create a collaborative web-based multimedia layered platform
KR20080025689A (en) Instant messaging with data sharing
CN113196239A (en) Intelligent management of content related to objects displayed within a communication session
TW201003412A (en) Using multiple servers to divide a virtual world
US11509699B2 (en) Ad hoc network-based collaboration using local state management and a central collaboration state update service
WO2019059997A1 (en) Asynchronous collaboration for a synchronous collaboration environment
CN106105245A (en) The playback of interconnection video
FR3026884A1 (en) ATTENTION ATTRACTOR DISPLAY METHOD AND DEVICE
US11843569B2 (en) Filtering group messages
FR3003717A1 (en) COMPUTER ENVIRONMENT FOR SHARED EXECUTION ON CLIENT POSITIONS OF CONTENT APPLICATIONS AND SYNCHRONIZED ACTIONS
FR3055079A1 (en) SYSTEM FOR COMPOSITION OR MODIFICATION OF VIRTUAL REALITY SEQUENCES, COMPOSITION METHOD AND SYSTEM FOR READING THESE SEQUENCES
US11943265B2 (en) Videoconferencing meeting slots via specific secure deep links
US20240048599A1 (en) Videoconferencing meeting slots via specific secure deep links
EP2510426B1 (en) Method, terminal and system for communicating by nonverbal messages
US20240048600A1 (en) Videoconferencing meeting slots via specific secure deep links
Desai et al. Proceedings document

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9

PLFP Fee payment

Year of fee payment: 10

PLFP Fee payment

Year of fee payment: 11