throbber
Attorney Docket No. 17376-5
`
`
`
`
`PATENT APPLICATION
`
`SCALABLE VIRTUAL WORLD CHAT CLIENT-SERVER SYSTEM
`
`Inventors:
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Assignee:
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Dave Leahy
`a US citizen
`6056 Romany Road
`Oakland, CA 94618
`
`Judith Challinger
`a US citizen
`244 Northrop Place
`Santa Cruz, CA 95060
`
`B. Thomas Adler
`a US citizen
`510 Third Street, Suite 530
`San Francisco, CA 94107
`
`S. [Mitra] Ardon
`a US citizen
`1056 Noe
`San Francisco, CA 94114
`
`Worlds Inc.
`a Delaware corporation
`605 Market Street, 14th Floor
`San Francisco, CA 94105
`
`Entity: SMALL
`
`
`
`
`
`
`
`
`
`
`
`TOWNSEND and TOWNSEND and CREW LLP
`Two Embarcadero Center, 8th Floor
`San Francisco, CA 94111-3834
`Telephone: (415) 576-0200
`
`IPR2015-01264, -01268, -01269, -01319, -01321, -01325
`EX. 2020
`Page 1 of 39
`
`

`
`PATENT
`Attorney Docket No. 17376-5
`
`
`1
`
`
`
`
`
`SCALABLE VIRTUAL WORLD CHAT CLIENT-SERVER SYSTEM
`
`
`
`
` 5
`BACKGROUND OF THE INVENTION
`
`The present invention relates to the field of packet
`
`
`communications. More specifically, in one embodiment the
`invention provides an efficient communications network for
`client-server networks with large numbers of clients.
`
`
`A client-server network is a network where one or
`more servers are coupled to one or more clients over a
`communications channel. Typically, each server and each
`client is assigned an address so that each can determine which
`network messages are directed to it. While such a system may
`have only one server, it typically has many clients. A server
`object is one which waits for a request from a client object
`and then performs some service in response to the client
`request. A client is an object that makes the request. The
`designation of a particular object (computer hardware and/or
`software process) as a "server" object or a "client" object is
`not fixed. Thus, a given object can be a server for some
`services and a client of other services.
`
`
`A typical computer network has one or more file and
`print servers with a number of clients, where the clients are
`the desktop computers or workstations of the computer users,
`all coupled to a high-speed network cable. Client-server
`communications in such a network are easily handled for
`several reasons. When clients are not all communicating with
`the server at once the server need not be designed to handle
`all the clients at one time. Another reason is that the
`network traffic is much less than the network capacity
`furthermore, the clients in a typical computer network need
`not necessarily be communicating in real-time with the server.
` However, where many client machines or processes are
`communicating with each other in real-time through the server,
`several problems arise.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`IPR2015-01264, -01268, -01269, -01319, -01321, -01325
`EX. 2020
`Page 2 of 39
`
`

`
`2
`
`
`
`
`
`For example, where a client-server system is used
`
`for real-time exchange of information, such as a distributed
`virtual reality network where users at client machines
`visually and aurally interact with other users at other client
`machines, communication is much more difficult, especially
`where the information is high-bandwidth data such as audio
`streams, graphic images and image streams. One application of
`such a client-server system is for game playing, where the
`positions and actions of each user need to be communicated
`between all the players to inform each client of the state
`changes (position, actions, etc.) which occurred at the other
`clients. The server might maintain global state information
`and serve as a data server for the clients as they request
`visual, program and other data as the game progresses.
`
`
`Some game systems use a peer-to-peer architecture.
`In a peer-to-peer architecture, a copy of the data which is
`common to all clients is kept by the client and information
`which needs to pass between clients is broadcast over the
`network. This limits the number of clients which can be
`connected to the network, because the number of messages
`passing between clients is on the order of the square of the
`number of clients. With true broadcasting, one message is
`sent and all clients listen for it, but not all network
`topologies can handle broadcasts. Where less than all the
`clients are participating in a game, for example, messages
`cannot be broadcast because there are clients which should not
`be receiving the broadcast message. Instead, the broadcast
`between the players is handled by generating one message to
`each player client.
`
`
`This architecture is further limited where the
`network is not a dedicated network, but is an open network,
`such as the Internet. As used herein, the term "Internet"
`refers to the global inter-network of networks which
`communicates primarily using packets sent according to TCP/IP
`(Transport Control Protocol/Internet Protocol) standards well
`known in the art of computer intercommunication. With
`Internet communications, true broadcasting is not even
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`IPR2015-01264, -01268, -01269, -01319, -01321, -01325
`EX. 2020
`Page 3 of 39
`
`

`
`3
`
`
`
`
`
`possible because the network's extent is not known or fixed.
`Thus, messages to all players must be sent as separate
`messages. An additional problem with Internet communications
`is that packet delivery is not guaranteed nor is it even as
`reliable as a dedicated network.
`
`
`Therefore, what is needed is an efficient system for
`communication between many client systems over dedicated or
`open networks to provide graphical interaction between users
`operating the client systems.
`
`SUMMARY OF THE INVENTION
`
`The present invention provides a highly scalable
`
`
`architecture for a three-dimensional graphical, multi-user,
`interactive virtual world system. In a preferred embodiment a
`plurality of users interact in the three-dimensional,
`computer-generated graphical space where each user executes a
`client process to view a virtual world from the perspective of
`that user. The virtual world shows avatars representing the
`other users who are neighbors of the user viewing the virtual
`word. In order that the view can be updated to reflect the
`motion of the remote user's avatars, motion information is
`transmitted to a central server process which provides
`positions updates to client processes for neighbors of the
`user at that client process. The client process also uses an
`environment database to determine which background objects to
`render as well as to limit the movement of the user's avatar.
`
`
`
`
`
`A further understanding of the nature and advantages
`of the inventions herein may be realized by reference to the
`remaining portions of the specification and the attached
`drawings.
`
`
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`FIG. 1 is a client screen view in a virtual world
`
`
`system according to the present invention.
`
`
`FIG. 2 is a logical block diagram of the hardware
`elements of a virtual world system.
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`IPR2015-01264, -01268, -01269, -01319, -01321, -01325
`EX. 2020
`Page 4 of 39
`
`

`
`4
`
`
`
`
`
`FIG. 3 is a block diagram of the elements of one
`
`embodiment of a virtual world system, showing two clients and
`one server.
`
`
`FIG. 4 is a more detailed block diagram of a client
`system according to one embodiment of the present invention.
`
`
`FIG.5 is an illustration of an avatar.
`
`
`
`DESCRIPTION OF THE PREFERRED EMBODIMENT
`Although the preferred embodiment of the present
`
`
`invention can be used in a variety of applications, as will be
`apparent after reading the below description, the preferred
`embodiment is described herein using the example of a
`client-server architecture for use in a virtual world "chat"
`system. In this chat system, a user at each client system
`interacts with one or more other users at other client systems
`by inputting messages and sounds and by performing actions,
`where these messages and actions are seen and acted upon by
`other clients. FIG. 1 is an example of what such a client
`might display.
`
`
`Each user interacts with a client system and the
`client system is networked to a virtual world server. The
`client system are desktop computers, terminals, dedicated game
`controllers, workstations, or similar devices which have
`graphical displays and user input devices. The term "client"
`generally refers to a client machine, system and/or process,
`but is also used to refer to the client and the user
`controlling the client.
`
`
`FIG. 1 is an illustration of a client screen display
`10 seen by one user in the chat system. Screen display 10 is
`shown with several stationary objects (wall, floor, ceiling
`and clickable object 13) and two "avatars" 18. Each avatar 18
`is a three dimensional figure chosen by a user to represent
`the user in the virtual world. Each avatar 18 optionally
`includes a label chosen by the user. In this example, two
`users are shown: "Paula" and "Ken", who have chosen the
`"robot" avatar and the penguin avatar, respectively. Each
`user interacts with a client machine (not shown) which
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`IPR2015-01264, -01268, -01269, -01319, -01321, -01325
`EX. 2020
`Page 5 of 39
`
`

`
`5
`
`
`
`
`
`produces a display similar to screen display 10, but from the
`perspective of the avatar for that client/user. Screen
`display 10 is the view from the perspective of a third user,
`D, whose avatar is not shown since D's avatar is not within
`D's own view. Typically, a user cannot see his or her own
`avatar unless the chat system allows "our of body" viewing or
`the avatar's image is reflected in a mirrored object in the
`virtual world.
`
`
`Each user is free to move his or her avatar around
`in the virtual world. In order that each user see the correct
`location of each of the other avatars, each client machine
`sends its current location, or changes in its current
`location, to the server and receives updated position
`information of the other clients.
`
`
`While FIG. 1 shows two avatars (and implies a
`third), typically many more avatars will be present. A
`typical virtual world will also be more complex than a single
`room. The virtual world view shown in FIG. 1 is part of a
`virtual world of several rooms and connecting hallways as
`indicated in a world map panel 19, and may include hundreds or
`users and their avatars. So that the virtual world is
`scalable to a large number of clients, the virtual world
`server must be much more discriminating as to what data is
`provided to each clients. In the example of FIG. 1, although
`a status panel 17 indicates that six other avatars are
`present, many other avatars are in the room, but are filtered
`out for crowd control.
`
`
`FIG. 2 is a simplified block diagram of the physical
`architecture of the virtual world chat system. Several
`clients 20 are shown which correspond with the users
`controlling avatars 18 shown in screen display 10. These
`clients 20 interact with the virtual world server 22 as well
`as the other clients 20 over a network 24 which, in the
`specific embodiment discussed here, is a TCP/IP network such
`as the Internet. Typically, the link from the client is
`narrowband, such as 14.4 kbps (kilobits/second).
`
`
`Typically, but not always, each client 20 is
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`IPR2015-01264, -01268, -01269, -01319, -01321, -01325
`EX. 2020
`Page 6 of 39
`
`

`
`6
`
`
`
`
`
`implemented as a separate computer and one or more computer
`systems are used to implement virtual world server 22. As
`used here, the computer system could be a desktop computer as
`are well known in the art, which use CPU's available from
`Intel Corporation, Motorola, SUN Microsystems, Inc.,
`International Business Machines (IBM), or the like and are
`controlled by operation systems such as the Windows® program
`which runs under the MS-DOS operating system available from
`Microsoft Corporation, the Macintosh® O/S from Apple Computer,
`or the Unix® operating system available from a variety of
`vendors. Other suitable computer systems include notebook
`computers, palmtop computers, hand-held programmable computing
`devices, special purpose graphical game machines (e.g., those
`sold by Sony, SEGA, Nintendo, etc.), workstations, terminals,
`and the like.
`
`
`The virtual world chat system is described below
`with reference to at least two hypothetical users, A and B.
`Generally, the actions of the system are described with
`reference to the perspective of user A. It is to be
`understood that, where appropriate, what is said about user A
`applies to user B, and vice versa, and that the description
`below also holds for a system with more than two users (by
`having multiple users A and/or B). Therefore, where an
`interaction between user A and user B is described, implied
`therein is that the interaction could take place just as well
`with users A and B having their roles reversed and could take
`place in the same manner between user A and user C, user D,
`etc. The architecture is described with reference to a system
`where each user is associated with their own client computer
`system separate from the network and servers, however a person
`of ordinary skill in the art of network configuration would
`understand, after reading this description, how to vary the
`architecture to fit other physical arrangements, such as
`multiple users per computer system or a system using more
`complex network routing structures than those shown here. A
`person of ordinary skill in the art of computer programming
`will also understand that where a process is described with
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`IPR2015-01264, -01268, -01269, -01319, -01321, -01325
`EX. 2020
`Page 7 of 39
`
`

`
`7
`
`
`
`
`
`reference to a client or server, that process could be a
`program executed by a CPU in that client or server system and
`the program could be stored in a permanent memory, such as a
`hard drive or read-only memory (ROM), or in temporary memory,
`such as random access memory (RAM). A person of ordinary
`skill in the art of computer programming will also understand
`how to store, modify and access data structures which are
`shown to be accessible by a client or server.
`
`
`Referring now to FIG. 3, a block diagram is shown of
`a world system 54 in which a user A, at a first client system
`60 (client A), interacts with a user B at a second client
`system 60 (client B) via a server 61. Client system 60
`includes several databases, some of which are fixed and some
`of which are modifiable. Client system 60 also includes
`storage for program routines. Mechanisms for storing, reading
`and modifying data on computers such as client system 60 are
`well known in the art, as are methods and means for executing
`programs and displaying graphical results thereof. One such
`program executed by client system 60 is a graphical rendering
`engine which generates the user's view of the virtual world.
`
`
`Referring now to FIG. 4, a detailed block diagram of
`client 60 used by a user, A is shown. The other clients used
`by other users are similar to client 60.
`
`
`The various components of client 60 are controlled
`by CPU 100. A network packet processor 102 sends and receives
`packets over network connection 80. Incoming packets are
`passed to a network message processor 104 which routes the
`message, as appropriate to, a chat processor 106, a custom
`avatar images database 108, a short object ID lookup table
`110, or a remote avatar position table 112. Outgoing packets
`are passed to network packet processor 102 by network message
`processor in response to messages received from chat processor
`106, short object ID lookup table 110 or a current avatar
`position register 114.
`
`
`Chat processor 106 receives messages which contain
`conversation (text and/or audio) or other data received from
`other users and sends out conversation or other data directed
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`IPR2015-01264, -01268, -01269, -01319, -01321, -01325
`EX. 2020
`Page 8 of 39
`
`

`
`8
`
`
`
`
`
`to other users. The particular outgoing conversation is
`provided to chat processor 106 by input devices 116, which
`might include a keyboard, microphones, digital video cameras,
`and the like. The routing of the conversation message depends
`on a selection by user A. User A can select to send a text
`message to everyone whose client is currently on line
`("broadcast"), to only those users whose avatars are "in
`range" of A's avatar ("talk"), or to only a specific user
`("whispering"). The conversation received by chat processor
`106 is typically received with an indication of the
`distribution of the conversation. For example, a text message
`might have a "whisper" label prepended to it. If the received
`conversation is audio, chat processor 106 routes it to an
`audio output device 118. Audio output device 118 is a speaker
`coupled to a sound card, or the like, as is well known in the
`art of personal computer audio systems. If the received
`conversation is textual, it is routed to a rendering engine
`120 where the text is integrated into a graphical display 122.
` Alternatively, the text might be displayed in a region of
`display 122 distinct from a graphically rendered region.
`
`
`Current avatar position register 114 contains the
`current position and orientation of A's avatar in the virtual
`world. This position is communicated to other clients via
`network message processor 104. The position stored in
`register 114 is updated in response to input from input
`devices 116. For example, a mouse movement might be
`interpreted as a change in the current position of A's avatar.
` Register 114 also provides the current position to rendering
`engine 120, to inform rendering engine 120 of the correct view
`point for rendering.
`
`
`Remote avatar position table 112 contains the
`current positions of the "in range" avatars near A's avatar.
`Whether another avatar is in range is determined a "crowd
`control" function, which is needed in some cases to ensure
`that neither client 60 nor user A get overwhelmed by the
`crowds of avatars likely to occur in a popular virtual world.
`
`
`Server 61 maintains a variable, N, which sets the
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`IPR2015-01264, -01268, -01269, -01319, -01321, -01325
`EX. 2020
`Page 9 of 39
`
`

`
`9
`
`
`
`
`
`maximum number of other avatars A will see. Client 60 also
`maintains a variable, N', which might be less than N, which
`indicates the maximum number of avatars client 60 wants to see
`and/or hear. The value of N' can be sent by client 0 to
`server 61. One reason for setting N' less than N is where
`client 60 is executed by a computer with less computing power
`than an average machine and tracking N avatars would make
`processing and rendering of the virtual world too slow. Once
`the number of avatars to be shown is determined, server 61
`determines which N avatars are closest to A's avatar, based on
`which room of the world A's avatar is in and the coordinates
`of the avatars. This process is explained in further detail
`below. If there are less than N avatars in a room which does
`not have open doors or transparent walls and client 60 has not
`limited the view to less than N avatars, A will see all the
`avatars in the room. Those avatars are thus "neighboring"
`which means that client 60 will display them.
`
`
`Generally, the limit set by server 61 of N avatars
`and the limit set by client 60 of N' avatars control how many
`avatars A sees. If server 61 sets a very high value for N,
`then the limit set by client 60 is the only controlling
`factor. In some cases, the definition of "neighboring" might
`be controlled by other factors besides proximity. For
`example, the virtual world might have a video telephone object
`where A can speak with and see a remote avatar. Also, where N
`or more unfriendly avatars are in close proximity to A's
`avatar and they persist in following A's avatar, A will not be
`able to see or communicate with other, friendly avatars. To
`prevent this problem, user A might have a way to filter out
`avatars on other variables in addition to proximity, such as
`user ID.
`In any case, remote avatar position table 112
`
`
`contains an entry for each neighboring avatar. That entry
`indicates where the remote avatar is (its position), its
`orientation, a pointer to an avatar image, and possible other
`data about the avatar such as its user's ID and name. The
`position of the avatar is needed for rendering the avatar in
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`IPR2015-01264, -01268, -01269, -01319, -01321, -01325
`EX. 2020
`Page 10 of 39
`
`

`
`10
`
`
`
`
`
`the correct place. Where N' is less than N, the client also
`uses position data to select N' avatars from the N avatars
`provided by the server. The orientation is needed for
`rendering because the avatar images are three-dimensional and
`look different (in most cases) from different angles. The
`pointer to an avatar image is an index into a table of
`preselected avatar images, fixed avatar image database 71, or
`custom avatar images database 108. In a simple embodiment,
`each avatar image comprises M panels (where M is greater than
`two with eight being a suitable number) and the i-th panel is
`the view of the avatar at an angle of 360*i/M degrees. Custom
`avatar images are created by individual users and sent out
`over network connection 80 to other clients 60 which are
`neighbors of the custom avatar user.
`
`
`Short object ID lookup table 110 is used to make
`communications over network connection 80 more efficient.
`Instead of fully specifying an object, such as a particular
`panel in a particular room of a world avatar, a message is
`sent from server 61 associating an object's full
`identification with a short code. These associations are
`stored in short object ID lookup table 110. In addition to
`specifying avatars, the short object ID's can be used to
`identify other objects, such as a panel in a particular room.
`
`
`Short object ID lookup table 110 might also store
`purely local associations. Although not shown in FIG. 4, it
`is to be understood that connections are present between
`elements shown and CPU 100 as needed to perform the operations
`described herein. For example, an unshown connection would
`exist between CPU 100 and short object ID lookup table 110 to
`add, modify and delete local short object ID associations.
`Similarly, CPU 100 has unshown connections to rendering engine
`120, current avatar position register 114 and the like.
`
`
`Client 60 includes a rooms database 70, which
`describes the rooms in the virtual world and the
`interconnecting passageways. A room need not be an actual
`room with four walls, a floor and a ceiling, but might be
`simply a logical open space with constraints on where a user
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`IPR2015-01264, -01268, -01269, -01319, -01321, -01325
`EX. 2020
`Page 11 of 39
`
`

`
`11
`
`
`
`
`
`can move his or her avatar. CPU 100, or a specific motion
`control process, limits the motion of an avatar,
`notwithstanding commands from input devices 116 to do so, to
`obey the constraints indicated in rooms database 70. A user
`may direct his or her avatar through a doorway between two
`rooms, and if provided in the virtual world, may teleport from
`one room to another.
`
`
`Client 60 also includes an audio
`compressor/decompressor 124 and a graphics
`compressor/decompressor 126. These allow for efficient
`transport of audio and graphics data over network connection
`80.
`In operation, client 60 starts a virtual world
`
`
`session with user A selecting an avatar from fixed avatar
`image database 71 or generating a custom avatar image. In
`practice, custom avatar image database 108 might be combined
`with fixed avatar image database 71 into a modifiable avatar
`image database. In either case, user A selects an avatar
`image and a pointer to the selected image is stored in current
`avatar position register 114. The pointer is also
`communicated to server 61 via network connection 80. Client
`60 also sends server 61 the current position and orientation
`of A's avatar, which is typically fixed during the
`initialization of register 114 to be the same position and
`orientation each time.
`
`
`Rooms database 70 in a fixed virtual world is
`provided to the user with the software required to instantiate
`the client. Rooms database 70 specifies a list of rooms,
`including walls, doors and other connecting passageways.
`Client 60 uses the locations of walls and other objects to
`determine how A's avatar's position is constrained. Rooms
`database 70 also contains the texture maps used to texture the
`walls and other objects. Avatar database 71 specifies the
`bitmaps used to render various predefined avatars provided
`with the client system. Using rooms database 70 and the
`locations, tags and images of all the neighboring avatars,
`then a view of objects and other avatars in the virtual world
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`IPR2015-01264, -01268, -01269, -01319, -01321, -01325
`EX. 2020
`Page 12 of 39
`
`

`
`12
`
`
`
`
`
`can be rendered using the room primitives database and the
`avatar primitives database.
`
`
`Instead of storing all the information needed for
`rendering each room separately, a primitives database can be
`incorporated as part of rooms database 70. The entries in
`this primitives database describe how to render an object
`(e.g., wall, hill, tree, light, door, window, mirror, sign,
`floor, road). With the mirrored primitive, the world is not
`actually mirrored, just the avatar is. This is done by
`mapping the avatar to another location on the other side of
`the mirrored surface and making the mirror transparent. This
`will be particularly useful where custom avatars are created,
`or where interaction with the environment changes the look of
`the avatar (shark bites off arm, etc.).
`
`
`The typical object is inactive, in that its only
`effect is being viewed. Some objects cause an action to occur
`when the user clicks on the object, while some objects just
`take an action when their activating condition occurs. An
`example of the former is the clickable objects 13 shown in
`FIG. 1 which brings up a help screen.An example of the latter
`is the escalator object. When a user's avatar enters the
`escalator's zone of control, the avatar's location is changed
`by the escalator object automatically (like a real escalator).
`
`
`The avatars in fixed avatar image database 71 or
`custom avatar images database 108 contain entries which are
`used to render the avatars. A typical entry in the database
`comprises N two-dimensional panels, where the i-th panel is
`the view of the avatar from an angle of 360 * i/N degrees.
`Each entry includes a tag used to specify the avatar.
`
`In rendering a view, client 60 requests the
`
`
`locations, orientations and avatar image pointers of
`neighboring remote avatars from server 61 and the server's
`responses are stored in remote avatar position table 112.
`Server 61 might also respond with entries for short object ID
`lookup table 110. Alternatively, the updates can be done
`asynchronously, with server 61 sending periodic updates in
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`IPR2015-01264, -01268, -01269, -01319, -01321, -01325
`EX. 2020
`Page 13 of 39
`
`

`
`13
`
`
`
`
`
`response to a client request or automatically without request.
`
`
`Rendering engine 120 then reads register 114, remote
`avatar position table 112, rooms database 70 and avatar image
`databases as required, and rendering engine 120 renders a view
`of the virtual world from the view point (position and
`orientation) of A's avatar. As input devices 116 indicate
`motion, the contents of register 114 are updated and rendering
`engine 120 re-renders the view. Rendering engine 120 might
`periodically update the view, or it may only update the view
`upon movement of either A's avatar or remote avatars.
`
`
`Chat processor 106 accepts chat instructions from
`user A via input devices 116 and sends conversation messages
`to server 61 for distribution to the appropriate remote
`clients. If chat processor 106 receives chat messages, it
`either routes them to audio output device 118 or to rendering
`engine 120 for display.
`
`
`Input devices 116 supply various inputs from the
`user to signal motion. To make movement easier and more
`natural, client 60 performs several unique operations. One
`such operation is "squared forward movement" which makes it
`easier for the user to move straight. Unlike ordinary mouse
`movements, where one mouse tick forward results in an avatar
`movement forward one unit and one mouse tick to the left or
`right results in side movement of one unit, squared forward
`movement squares the forward/backward ticks or takes the
`square root of the sideways ticks or divides by the number of
`forward/backward ticks. For example, if the user moves the
`mouse F mouse ticks forward, the avatar moves F screen units
`forward, whereas if the user moves the mouse F mouse units
`forward and L mouse units to the left, the avatar moves F
`units forward and L/F screen units to the left. For covering
`non-linear distances, (F,L) mouse units (i.e., F forward, L to
`the side) might translate to (F2,L) screen units.
`
`
`As mentioned above, user input could also be used to
`signal a desire for interaction with the environment (e.g.
`clicking on a clickable object). User input could also be
`used to signal for a viewpoint change (e.g. head rotation
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`IPR2015-01264, -01268, -01269, -01319, -01321, -01325
`EX. 2020
`Page 14 of 39
`
`

`
`14
`
`
`
`
`
`without the avatar moving, chat inputs and login/logout
`inputs.
`In summary, client 60 provides an efficient way to
`
`
`display a virtual, graphical, three-dimensional world in which
`a user interacts with other users by manipulating the
`positions of his or her avatar and sends chat messages to
`other users.
`
`
`Network connection 80 will now be further described.
` Commonly, network connection 80 is a TCP/IP network
`connection between client 60 and server 61. This connection
`stays open as long as client 60 is logged in. This connection
`might be over a dedicated line from client 60, or might be a
`SLIP/PPP connection as is well known in the art of network
`connection.
`
`
`The network messages which pass over network
`connection 80 between client 60 and server 61 are described
`immediately below briefly, with a more detailed description in
`Appendix A. Three main protocols exist for messaging between
`client 60 and server 61: 1) A control protocol, 2) a document
`protocol, and 3) a stream protocol. The control protocol is
`used to pass position updates and state changes back and forth
`between client 60 and server 61. The control protocol works
`with a very low bandwidth connection.
`
`
`The document protocol is used between client 60 and
`server 61 to download documents (text, graphics, sound, etc.)
`based on Uniform Resource Locators (URLs). This protocol is a
`subset of the well-known HTTP (Hyper-Text Transport Protocol).
` This protocol is used relatively sparingly, and thus
`bandwidth is not as much of a concern as it is with the
`control protocol. In the document protocol, client 60 sends a
`document request specifying the document's URL and server 61
`returns a copy of the specified document or returns an error
`(the URL was malformed, the requested URL was not found,
`etc.).
`The stream protocol is used to transfer real-time
`
`
`video and audio data between client 60 and server 61.
`Bandwidth is not as much a concern here as it is with the
`
`5
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`IPR2015-01264, -01268, -01269, -01319, -01321, -01325
`EX. 2020
`Page 15 of 39
`
`

`
`15
`
`
`
`
`
`control protocol.
`
`
`Each room, object, and user in a virtual world is
`uniquely identified by a string name and/or numerical
`identifier. For efficient communications, string names are
`not passed with each message between client 60 and server 61,
`but are sent once, if needed, and stored in short object ID
`lookup table 110. Thereafter, each message referring to an
`object or a user need only refer to the short object ID which,
`for 256 or less objects, is only an 8-bit value. Rooms are
`identified by a unique numerical value contained in two bytes
`(16 bits).
`
`
`
`The control protocol is used by client 60 to report
`
`the location and state information, such a "on" a

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket