`
`(12) United States Patent
`Kirmse et al.
`
`(to) Patent No.:
`(45) Date of Patent:
`
`US 6,699,125 B2
`Mar. 2, 2004
`
`(54)
`
`GAME SERVER FOR USE IN CONNECTION
`WITH A MESSENGER SERVER
`
`(75)
`
`Inventors: Chris Kirmse, Sunnyvale, CA (US);
`Brian Gottlieb, Palo Alto, CA (US)
`
`(73)
`
`Assignee: Yahoo! Inc., Sunnyvale, CA (US)
`
`* )
`
`Notice:
`
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 149 days.
`
`(21)
`
`Appl. No.: 09/898,746
`
`(22)
`
`Filed:
`
`Jul. 2, 2001
`
`(65)
`
`Prior Publication Data
`
`US 2002/0086732 Al Jul. 4, 2002
`
`(60)
`
`Related U.S. Application Data
`Provisional application No. 60/215,710, filed on Jul. 3,
`2000.
`
`(51)
`(52)
`(58)
`
`Int. C1.7
`U.S. Cl.
`Field of Search
`
` A63F 13/12
` 463/42; 709/203
` 463/42; 709/203-205;
`345/758, 759
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`6,466,969 B1 * 10/2002 Bunney et al.
`
` 709/206
`
`* cited by examiner
`
`Primary Examiner Andrew M. Dolinar
`(74) Attorney, Agent, or Firm—Townsend and Townsend
`and Crew, LLP; Philip H. Albert
`
`(57)
`
`ABSTRACT
`
`A game and messenger client-server system is provided
`including a plurality of game clients, a game server, a
`plurality of messenger clients, and a messenger server. The
`game server includes logic to operate a multiplayer game
`using inputs from and outputs to an active game set of game
`clients, wherein game clients other than those in the active
`game set can join an active game by supplying the game
`server with a reference to the active game. Additionally,
`logic is included for coupling a game client to a messenger
`client to allow the game client to send the messenger client
`data used to initiate joining a game, whereby a message sent
`by the messenger client includes the data used to initiate
`joining a game. Also, logic is included for initiating a join of
`a game at an invitee client, using data received in a message
`to the invitee.
`
`6,179,713 B1 * 1/2001 James et al.
`
` 463/42
`
`18 Claims, 13 Drawing Sheets
`
`12(1)
`
`20(1)
`
`Game Client
`
`Inv Msg
`
`[Messenger Client
`
`22(1)
`
`12(2)
`
`LLylessenger Client
`
`22(2)
`
`24
`
`26
`
`26
`
`16
`
`10
`
`14
`
`18
`
`Game Server
`
`Active
`Game
`
`Active
`Game
`
`Messenger Server
`
`ti
`Buddy
`Lists
`
`Apple Inc.
`Ex. 1005 - Page 1
`
`
`
`Waled *S11
`
`CI JO 1 lamIS
`
`ZS SZT`669`9 Sa
`
`14
`
`18
`
`Game Server
`
`Active
`Game
`
`Active
`Game
`
`Messenger Server
`
`Buddy
`Lists
`
`16
`
`10
`
`FIG. 1
`
`20(1)
`
`L
`
`Game Client
`
`Inv Msg
`
`V
`Messenger Client
`
`---"'-- 24
`
`26
`
`22(1)
`
`122)
`
`Messenger Client -4-
`
`22(2)
`
`26
`
`Apple Inc.
`Ex. 1005 - Page 2
`
`
`
`U.S. Patent
`
`Mar. 2, 2004
`
`Sheet 2 of 13
`
`US 6,699,125 B2
`
`12(1)
`
`20(1)
`
`34
`
`Game Client
`
`30
`
`Invocation
`Instructions
`
`Network Interface
`
`To Game
`Server
`
`36
`
`Client
`Variables
`
`32
`
`/
`0/S Messaging
`Interface
`
`r
`
`38
`
`0/S
`Message
`
`22(1)
`
`?
`
`Messenger Client
`
`FIG. 2
`
`Apple Inc.
`Ex. 1005 - Page 3
`
`
`
`U.S. Patent
`
`Mar. 2, 2004
`
`Sheet 3 of 13
`
`US 6,699,125 B2
`
`12(2)
`
`22(2)
`
`?
`Game Client
`
`42
`
`/
`
`40
`
`Buddy List
`
`Message List
`
`44
`
`Invoker
`
`46
`
`26
`
`SM
`
`From
`Messenger
`Server
`
`V
`0/S System
`Services
`
`1
`
`Invokes Invitee
`Game Client with
`Correct Parameters
`
`FIG. 3
`
`Apple Inc.
`Ex. 1005 - Page 4
`
`
`
`U.S. Patent
`
`Mar. 2, 2004
`
`Sheet 4 of 13
`
`US 6,699,125 B2
`
`Inviter
`
`Game Server
`
`Messenger Server
`
`Invitee
`
`I 1
`I 1
`I 1
`I 1
`I 1
`1 1
`I 1
`I 1
`1
`I
`
`( Start
`r S1
`
`Inviter Invokes A
`Game Client
`
`S2
`
`Game Client
`Starts Or Joins
`A Game
`
`11°
`
`r S5
`
`Inviter Creates
`Message For
`Invitee Including
`Invocation Data
`
`r S6
`
`Inviter Sends The
`State Update
`Message
`Indicating "In
`Game" State
`
`r S3
`
`Game Server
`Serves An
`Active Game
`S4
`
`Game Server
`Provides
`Connection
`Details To
`Inviter Client
`
`r S7
`
`Messenger
`Server Routes
`Message To
`Invitee
`
`Game Server
`Accepts New
`Player
`
`FIG. 4
`
`--I-o-
`
`Invitee
`Messenger Client
`Receives
`Message,
`Including
`Revocation Data
`
`,
`I ,
`I
`
`(- S9
`
`Invitee Decides
`To Join Game
`
`( -S10
`
`Invitee Invokes
`Game Client
`Listing Invocation
`Data
`
`( -S11
`
`Game Client
`Joins Game
`Using Invocation
`Data
`
`Apple Inc.
`Ex. 1005 - Page 5
`
`
`
`U.S. Patent
`
`Mar. 2, 2004
`
`Sheet 5 of 13
`
`US 6,699,125 B2
`
`24
`
`Invocation Message
`
`Message Header
`
`Game ID = "Chase and Race 2000"
`
`Game # = 176
`
`Commandline = "+Connect IP: 192.168.0.17:28001"
`
`ServerDesc = "The Game Server"
`
`Registry Entry = ".../software/ChaseandRace/location"
`
`Faltback URL = ".../nogameinstalled.html"
`
`Version = 1
`
`State = 1
`
`. . .
`
`FIG. 5
`
`Apple Inc.
`Ex. 1005 - Page 6
`
`
`
`U.S. Patent
`
`Mar. 2, 2004
`
`Sheet 6 of 13
`
`US 6,699,125 B2
`
`Invitor Game Client
`
`(
`
`Start
`
`)
`
`S100
`
`User Joins
`Online Game
`
`S101
`
`Is
`Messenger Client
`Present?
`
`S102
`
`Send Information Message
`Through 0/S Messaging System
`
`S104
`
`FIG. 6
`
`
`
` S103
`
`•
`Invoke Game
`Client For
`Current User
`
`V
`
`User Plays
`Online Game
`
`Invitee Messenger Client
`
`(
`
`Start
`
`)
`
`Get State Message From
`Messenger Server
`
`..., — S200
`
`Display States From Invitor
`Game Clients Using A
`Game Specific Icon
`
`S201
`
`S202
`
`Has
`User Selected
`Game-Specific
`Icon?
`
`Yes
`
`S203
`/
`Invoke Game Client
`Using Invocation Data
`From State Message
`
`(
`
`Done )
`
`FIG. 7
`
`Apple Inc.
`Ex. 1005 - Page 7
`
`
`
`U.S. Patent
`
`Mar. 2, 2004
`
`Sheet 7 of 13
`
`US 6,699,125 B2
`
`Yahoo Messenger
`_ q X
`Login Message Friends Y! Help
`:18 Friends for - debbie95055
`...Friends
`o brian_the_dork
`o priscilla1us
`o tom123494949
`
`Connected
`
`FIG. 8
`
`Yahoo Messenger
`_ n X
`Login Message Friends YI Help
`iS Friends for - debbie95055
`Friends
`0 brian_the_dork
`o priscillalus
`Dumb tom123494949 (DumbChat)
`Chat
`
`Connected
`
`
`
`4
`
`FIG. 9
`
`Apple Inc.
`Ex. 1005 - Page 8
`
`
`
`U.S. Patent
`
`Mar. 2, 2004
`
`Sheet 8 of 13
`
`US 6,699,125 B2
`
`0 x.
`Yahoo Messenger
`Login Message Friends YI Help
`
`rig Friends for - debbie95055
`Friends
`0 brian the dork
`O •riscillai us
`Dumb
`Chat
`
`Send a Message
`Call
`Invite to Conference
`Invite to Voice Connection
`Send a File
`
`Go To Chat User
`
`Conne
`
`View Profile
`View File.
`Delete
`
`Edit Contactlnfo
`
`PlayDumbChatwith tom123494949
`More information on DumbChat
`
`FIG. 10
`
`Apple Inc.
`Ex. 1005 - Page 9
`
`
`
`U.S. Patent
`
`Mar. 2, 2004
`
`Sheet 9 of 13
`
`US 6,699,125 B2
`
`Y! Messenger Server
`
`Y!
`
`Game Client
`
`Yahoo Messenger
`
`FIG. 11B
`
`(Yahoo Messenger
`
`Game Client
`
`Tom's Computer
`
`FIG. 11A
`
`Y! Web
`Server
`
`Y!
`
`Game Clier7D
`
`FIG. 11C
`
`FIG. 11D
`
`Y! Web Server
`
`Y! Messenger Server
`
`Yahoo Messenger
`
`Game
`Server
`
`Game Client
`
`Tom's Computer
`
`FIG. 11E
`
`L
`
`Y!
`
`V
`
`(Yahoo
`Messenger)
`
`T
` ( Game Client
`
`Debbie's Computer
`
`Apple Inc.
`Ex. 1005 - Page 10
`
`
`
`Waled *S'Il
`
`CI JO OI 1331IS
`
`ZS SZT`669`9 Sa
`
`Java VM
`
`122
`
`Messenger Client
`
`122
`
`Messenger Client
`
`16
`
`I
`
`114
`
`Game Server
`
`116
`
`Start
`Message
`
`118
`
`7
`
`Messenger Server
`
`112
`
`Java
`Game
`Client
`
`FIG. 12
`
`Apple Inc.
`Ex. 1005 - Page 11
`
`
`
`Waled *S11
`
`CI JO II lamIS
`
`ZS SZT`669`9 Sa
`
`16
`
`200
`
`0/
`
`14
`
`Game Server
`
`12
`
`12
`
`Game Client
`
`Messenger Client
`
`Messenger Client
`
`204
`
`/
`
`TCP/IP
`
`I
`1
`
`FIG. 13
`
`Apple Inc.
`Ex. 1005 - Page 12
`
`
`
`U.S. Patent
`
`Mar. 2, 2004
`
`Sheet 12 of 13
`
`US 6,699,125 B2
`
`300
`
`_ 0 X
`
`' Yahoo Messenger
`Login Edit Messenger y! Help
`eia
`ce
`AV
`Messages Add
`
`Friends
`
`Info
`
`302 -[
`
`308
`
`lier'° Friends for - Yahoolnvitee
`w Fellow Garners
`304 El Yahoo X Game Expert
`306 1 Game Friend
`w Friends
`0 Mom
`0 Dad
`w Yahoo! Help
`0 YahooHelper
`
`Status► I'm Available
`
`pc)
`IN =
`me
`Connected HTTP
`
`ffii 1',±
`
`R - 4
`
`FIG. 14
`
`Apple Inc.
`Ex. 1005 - Page 13
`
`
`
`Waled *S11
`
`O
`O
`
`CI JO CI PaqS
`
`ZS SZT`669`9 Sa
`
`LOGO
`
`Play Now
`
`Create Table,
`
`Options
`
`Exit Games
`
`#1
`
`#2
`
`Connected to games server
`Say: I
`Llimama44601: Imao Ind
`greatlakesfisherman2001: n
`blaze027: try It fan, rub a litti
`creed_on: ya know what
`Illmama44601: what
`Indnsfarcyyeeeeeee000
`unfmichigan2: I need a p in
`creed_on: I'm giving cover s
`Illmama44601:Imfao
`
`Social Lounge 3
`North
`Table
`JOIN
`#54 Watch I
`Options: stick to driving, Read
`RUDYA10
`Watch I musicprince
`#58
`Cpryk: Unread
`mysliceyesl
`Watch
`Cpryk: Unread
`Watch I lamariposal
`Cpryk: Unread
`Watch I deband2001
`#4
`Cpryk: Unread
`Options
`#7 Watch I koklketli
`Cpryk: Unread
`l Let my friends
`Watch I peachy=
`find me
`508
`Decline All
`Invitations
`i Ims From
`Friends Only
`512
`Profanity Filter
`® None 0 Weak OStrong
`0 Small Windows
`Done
`
`r- 502
`
`Home I MessageBoard I Feedback I Help I Messenger
`West Who Is Watching
`South
`crispy420692000
`JOIN
`JOIN
`
`East
`JOIN
`
`504
`
`JOIN
`
`I natedog212
`
`krichohiou
`
`I
`
`1
`
`robot212
`
`robot2
`
`relaxersize
`
`greuterl3
`
`JOIN
`
`I
`
`fessarafi
`
`robot3
`
`I DrOp DeAd_
`
`( Learn More))
`
`Avatars
`
`510
`
`FIG. 15
`
`_ 0 X
`Yahoo Messenger
`Login View Tools Help
`oP
`Ar+
`
`c52?
`
`It
`
`2s Friends for - sammyjo7867
`Group1
`0 Freakazoid
`O kelly
`0 mikey
`0 Pootchie
`O Snookey
`+ Yahoo! Help
`0 YahooHelper
`
`506
`
`. .
`co
`1 i 1 R. = m; to
`•0
`I, Search
`Search Yahoo!
`0 I'm Available
`
`
`
`Apple Inc.
`Ex. 1005 - Page 14
`
`
`
`1
`GAME SERVER FOR USE IN CONNECTION
`WITH A MESSENGER SERVER
`
`CROSS-REFERENCES TO RELATED
`APPLICATIONS
`
`The present application claims the benefit of priority from
`U.S. Provisional Patent Application No. 60/215,710, filed on
`Jul. 3, 2000, which is hereby incorporated by reference as if
`set forth in full in this document for all purposes.
`
`FIELD OF THE INVENTION
`
`The present invention relates to the use of a game server
`in connection with a messenger server in a multi-user
`networked computing environment.
`
`BACKGROUND OF THE INVENTION
`
`With the advent of the global inter-network of networks
`generally referred to as "the Internet," communication
`between users connected to the Internet has been facilitated
`by programs such as email and instant messaging. Instant
`messaging allows users connected to the Internet to com-
`municate between each other in real-time. Typically, a first
`user downloads an instant message program into their Inter-
`net connectable computing device that can invoke a window
`that includes a section for typing messages and for showing
`a list of other online users designated as "buddies" or as
`"friends" by the first user. Users can chat with any number
`of online buddies by selecting the desired users from their
`buddy list. A connection is then made between the user and
`selected buddy. Once the connection is completed, the users
`can communicate by typing and sending messages. Unlike
`email, the instant messages are designed to appear on the
`other user's instant message window as soon as they are sent
`and while the recipient is online. Thus, an interactive chat
`can be held using the instant message system.
`Additionally, interactive games can be played through the
`Internet. For example, a card game, such as hearts, can be
`played between users. A user who desires to play in an
`interactive game can log on to a web site to join a game. At
`the web site, the user could decide to join a game with
`random players or can join a game with friends if the user
`has a reference to the game the friends are playing. However,
`to join a friend's game, the user must have reference to the
`specific game on the web site, such as a directory or uniform
`resource locator ("URL"). The user might have received the
`reference to the friends' game through email, or any other
`communications means, or alternatively, the user could have
`searched the site for games the user's friends were playing.
`Once locating the game, the web site typically facilitates
`joining the user to the game by providing a link or URL for
`the user to select to join the game. Once joining the game,
`the players of the game would then all view the same game
`and interact with the game through their respective browsers
`or user interfaces. As each player interacts with the game,
`the results of the interactions appear on all players' screens
`that are participating in the game. For example, if a player
`discards a card in the hearts game, all players would see the
`card discarded. Thus, users in remote locations can play an
`interactive game of hearts.
`Using an instant messenger program, buddies can facili-
`tate joining an interactive game between themselves. A text
`message can be sent to another online user through the
`instant messaging system asking the user if they want to play
`the desired game. Once receiving the message, the user can
`decide to join the game with the requester. However, to join
`
`US 6,699,125 B2
`
`5
`
`2
`the game, the user must have downloaded the game before-
`hand. Thus, if the game that the requester wants to play has
`not been downloaded, the user would have to find out where
`the game is located and download the game before proceed-
`ing. Once downloaded, the user launches the game in the
`user's computer. The game then finds connection informa-
`tion for the game from the user's instant messenger program
`and connects to the game. In conventional instant messaging
`configurations, the only communication sent between the
`10 requester and user is a text message asking the user to play
`a game. No other information regarding the game is sent to
`the user. Thus, the user must affirmatively find the game
`requested or download the game and connect to the game the
`requester is playing.
`15 Additionally, the only users that can participate in the
`game are the users that were invited by the user who sent the
`original invitation. The invitation is sent out to the invited
`users and a game is launched with only the invited users as
`possible players. If there are other buddies who want to
`20 participate, the buddies must be affirmatively invited by a
`player of the game. Also, the players of the game are
`transparent to other buddies on the players' buddies lists. In
`other words, other buddies do not know the players are
`participating in an interactive game. Rather, the buddies only
`25 know that the players are currently on-line.
`
`BRIEF SUMMARY OF THE INVENTION
`
`The present invention relates to a game and messenger
`30 client-server system. In one embodiment of the present
`invention, end users connect game clients to a game server
`to allow multiple users to interact in a game. End users can
`use messenger clients to notify other end users that the
`notifier is currently in an online game and provide instruc-
`35 tions for others to join a multiplayer game. In some
`embodiments, the messages sent to messenger clients of
`invitees contain sufficient data to allow an invitee to join a
`specific game that the inviter is playing.
`In one embodiment of the present invention, a client-
`40 server system includes a plurality of game clients, a game
`server, a plurality of messenger clients, and a messenger
`server. The game server includes logic to operate a multi-
`player game using inputs from and outputs to an active game
`set of game clients of the plurality of game clients, wherein
`45 game clients other than those in the active game set can join
`an active game by supplying the game server with a refer-
`ence to the active game. The messenger server includes logic
`to forward messages from a sender messenger client to a
`receiving messenger client. Additionally, logic is included
`so for coupling a game client to a messenger client to allow the
`game client to send the messenger client data used to initiate
`joining a game, whereby a message sent by the messenger
`client includes the data used to initiate joining a game. Also,
`logic is included for initiating a join of a game at an invitee
`55 client, using data received in a message to the invitee.
`In another embodiment, a method of operating a multi-
`player game having a plurality of game clients and a
`plurality of messenger clients in communication with a
`game server and a messenger server is provided. The method
`60 includes the steps of joining the game by sending a reference
`to the game to the game server; sending, from an inviter
`game client to an inviter messenger client, data used to
`initiate joining the game; sending a message including the
`data used to initiate joining the game to the messenger
`65 server; routing the message to an invitee messenger client;
`and using the data in the routed message to invoke a game
`client and join the game.
`
`Apple Inc.
`Ex. 1005 - Page 15
`
`
`
`US 6,699,125 B2
`
`3
`In one embodiment, the present invention provides for a
`software development kit (SDK) including novel software
`and processes. An exemplary game according to the present
`invention supports a SDK in connection with a local mes-
`senger client when the game connects to or disconnects from
`a game server, where such connects and disconnects use a
`small piece of code to effectuate multi-player gaming. When
`connecting to a game server, the game creates a command
`line that another player could use to launch his/her copy of
`the game and connect to the same game server. This com-
`mand line (along with a short game name and description of
`the particular server) is sent from the messenger client to
`everyone in a player's friend list. The buddies' messenger
`clients download some additional game information and
`then shows an icon for the game next to the game player's
`name. When a friend selects "Join game," the messenger
`attempts to launch the game executable with the command
`line to join the same game server. If the users agree, the
`friends can remotely play a game together according to the
`present invention.
`A further understanding of the nature and advantages of
`the invention herein may be realized by reference of the
`remaining portions in the specifications and the attached
`drawings.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`FIG. 1 is a block diagram of a game-messenger client-
`server system according to one embodiment of the present
`invention;
`FIG. 2 is a block diagram showing the inviter client of
`FIG. 1 in more detail;
`FIG. 3 is a block diagram showing the invitee client of
`FIG. 1 in more detail;
`FIG. 4 is a flowchart illustrating actions of an inviter
`client, a game server, a messenger server and an invitee
`client, as part of a process of inviting an invitee into a game
`and having the invitee join the game;
`FIG. 5 is an illustration of an invocation message sent
`from an inviter game client to an inviter messenger client;
`FIG. 6 is a flowchart of a process used by a game client
`to send a message if a messenger client is available;
`FIG. 7 is a flowchart of a process used by an invitee
`messenger client to display messages from invitees and
`invoke games;
`FIG. 8 shows an example of a user's messenger window
`as displayed on an user interface;
`FIG. 9 shows an example of an invitee's messenger
`window configured to receive a notification or invitation to
`play a game;
`FIG. 10 shows an exemplary invitee's messenger window
`as displayed on a user interface for participating in a game;
`FIGS. 11A—E are simplified block diagrams of an exem-
`plary game-messenger system;
`FIG. 12 shows another embodiment of the system accord-
`ing to the present invention;
`FIG. 13 illustrates yet another embodiment of the game-
`messenger client system, wherein messages between user
`clients are sent peer-to-peer;
`FIG. 14 illustrates a screen shot of an exemplary mes-
`senger window for an invitee messenger client; and
`FIG. 15 illustrates a screen shot for an exemplary inviter
`having a game and messenger client according to one
`embodiment of the present invention.
`
`DETAILED DESCRIPTION OF SPECIFIC
`EMBODIMENTS OF THE INVENTION
`In one embodiment of a game-messenger system that is
`described below, each of a plurality of end users operates a
`
`4
`game client and a messenger client. The game clients
`interface with a central game server and the messenger
`clients interface with a central messenger server. Notwith-
`standing that description, it should be understood that the
`5 game client and messenger client can be merged into a single
`program or plug-ins to a single program, the central game
`server and the central messenger server can be operated as
`a unified server, and the central game server and/or the
`central messenger server can be replaced with a distributed
`10 server, all without necessarily departing from the scope of
`the invention. It should also be understood that the present
`invention is not limited to games, but that where a multi-
`player game (i.e., a game configured to allow two or more
`players) is used as an example herein, another non-game
`15 multi-user application could be used instead. For example,
`instead of notifying other players of multiplayer game play,
`an inviter could invite other computer or computing device
`users to join in some other multi-user activity.
`In this description, the terms "inviter" and "invitee" are
`20 used to distinguish end users between those that are playing
`a game and notifying others and those that are notified and
`given a notice of the playing. Often, the "inviter" will not so
`much be making an invitation to invitees to join a game but
`would be simply notifying buddies of the inviter that the
`25 inviter is playing an online game. Thus, instead of "inviter,"
`"invitee" and "invitation," the terms "notifier," "notifyee"
`and "notification," respectively, might be used instead. On
`the other hand, in some embodiments, an inviter is actively
`inviting invitees. One implementation of such an embodi-
`30 ment might include a list of invitees maintained for the
`inviter that is used to limit the notification to only those users
`that the inviter specifically invites.
`FIG. 1 is a block diagram of an exemplary game-
`messenger client-server system 10 according to one embodi-
`35 ment of the present invention. In system 10, users connect
`for online game play by connecting user computers 12 to a
`game server 14 via a network 16. In a specific
`implementation, user computers 12 are Internet-connectable
`computers (desktop computers, laptop computers, palm-
`40 sized computers, wearable computers, set-top boxes, embed-
`ded TCP/IP clients, wireless phones with a user interface,
`and the like), game server 14 is an Internet-connected server
`responsive to requests at a URL designated by the operator
`of the game server and network 16 is the global inter-
`45 network of networks generally referred to as the "Internet".
`The typical computer 12 includes a browser or other HTTP
`(Hyper Text Transport Protocol) client that is used to provide
`a user with HTTP access to the Internet and the collection of
`documents served by HTTP servers that is generally referred
`so to as the "World Wide Web", "WWW", or simply "the
`Web". A messenger server 18 is also provided, often over
`network 16, so that one or more user can send messages
`(typically "instant messages") over network 16 to other
`users.
`55 An exemplary computer 12 includes a display and display
`screen (e.g., monitor, flat panel LCD, etc.) for presenting to
`a user a graphical user interface (GUI). Computer 12 com-
`prises standard computer components (not shown) such as a
`disk drive, CDROM drive, display adapter, network card,
`60 random access memory (RAM), central processing unit
`(CPU), and other components, subsystems and devices. User
`input devices such as mouse having buttons, keyboard,
`trackball, touch-screen, digitizing tablet, etc. may be used to
`by a user to enter information into computer 12.
`Computer 12 includes also subsystems that are typically
`be found in a computing device such as computer 12.
`Subsystems generally include an input/output (I/O)
`
`65
`
`Apple Inc.
`Ex. 1005 - Page 16
`
`
`
`US 6,699,125 B2
`
`5
`controller, a system memory (or random access memory
`"RAM"), a central processing unit (CPU), a display adapter,
`a communications port, a fixed hard drive disk, a network
`interface adapter, which in turn is coupled electrically to a
`network, and any other like subsystems. The use of a bus
`allows each of the subsystems to transfer data among
`subsystems and, most importantly, with the CPU, where the
`CPU might be a Sparc, an Intel CPU, a PowerPC, or the like.
`External devices can communicate with the CPU or other
`subsystems via the bus by interfacing with a subsystem on
`the bus. Thus, a monitor connects with the display adapter
`and relative pointing device (e.g., a mouse) connects
`through one of the communication ports. Some devices such
`as keyboard can communicate with the CPU by direct means
`without using the main data bus as, for example, via an
`interrupt controller and associated registers. Accord to some
`embodiments described herein, a game client and a messen-
`ger client operate to present a user with graphical informa-
`tion on a user interface for playing a game as well as
`notifying other friends of one's action of playing a game.
`The network provides the communication means, such as
`physical inter-connective links comprising copper wire,
`fiber optic cable, or the like, for transmitting and receiving
`signals. Wireless communication means, such as radio
`waves or the like, are also understood to provide means to
`transfer information from a source to a destination.
`As is well known in the art of network communications,
`networks are configured to communicate electrical
`information, such as a computer data signal comprising data
`(e.g., binary data bits) superimposed upon a radio or any
`other carrier wave. A person having ordinary skill in the are
`would appreciate that a carrier wave is electromagnetic
`energy propagated from a source by radiation, optical or
`conduction waves and is suitable for embodying an
`information-bearing signal, such as a computer data signal.
`In one embodiment, a carrier wave behaves, or is modulated,
`according to a network protocol, such as Ethernet, IEEE
`1394, TCP/IP, or any other communication protocol, so as to
`include computer data information. The carrier wave can be,
`for example, a direct current, an alternating current, or a
`pulse chain. In modulation of the carrier wave, it may be
`processed in such a way that its amplitude, frequency, or
`some other property varies so as to embody data for transfer.
`In the figures, distinct instances of like objects are dis-
`tinguished with parenthetical indices. For example, user
`computer 12 might refer to 12(1) or 12(2). In this example,
`12(1) refers to an inviter client operated by an inviter, who
`invites a user operating invitee client 12(2) to join a game.
`In a typical system, there may be many inviters, many games
`and many invitees. Also, if allowed by a game, an invitee
`might be an invitee in one instance and later be an inviter.
`As shown in FIG. 1, invitee client 12(2) is in a state prior to
`being invited and joining a game.
`Game server 14 can be a conventional game server or one
`specially designed for this application. A typical game server
`maintains data, such as game state, user position, and user
`statistics, for active users participating in a game. While data
`storage for only two games are shown in FIG. 1, a game
`server often hosts many more simultaneous games. A game
`server might be referenced by a URL for the game server,
`with a specific port reference or URL string that specifies a
`specific game in progress. The reference to the game being
`served to client 12(1) is known to a game client 20(1)
`running on client 12(1), or can be obtained by game client
`20(1). As shown, a messenger client 22(1) is also running on
`client 12(1) and is capable of receiving an operating system
`("O/S") message from game client 20(1).
`
`6
`As shown, messenger clients 22 are coupled to messenger
`server 18 for sending messages, such as instant messages,
`between clients 12. Messenger server 18 is shown with two
`databases, a buddy list database and a user list database.
`5 Generally, the user list database maintains information about
`a user, such as their connection address and their connection
`status (i.e., off-line or on-line). Buddy list database main-
`tains a list, for each enrolled user, of other enrolled users that
`the user wishes to notify when they are online, typically
`10 friends, family and other users with which the user associ-
`ated with the buddy list has chosen to alert when the user is
`online. Thus, if a user A were to get online and if user B is
`on or is associated with user A's buddy list, then user B
`would be notified when User A is online, affording user B a
`15 chance to send an instant message to user A when user B is
`online and notified that user A is also online. It should be
`understood that the databases can be embodied in many
`different forms of data structures, such as relational tables
`maintained by a relational database management system or
`20 text files containing data in predetermined formats.
`Referring now to FIG. 2, additional details of a game
`client and a messaging client are there shown. Game client
`20(1), in this case the inviter game client, is shown including
`a network interface 30, an 0/S messaging interface 32,
`25 invocation program code 34 and client variables 36. Net-
`work interface 30 connects game client 20(1) to network 16,
`in turn connecting game client 20(1) to a game server. 0/S
`messaging interface 32 allows game client 20(1) to send
`messages to other processes running on client 12(1), such as
`30 a messenger client. Invocation program code 34 is informa-
`tion usable by an invitee to invoke their own game client and
`connect to a game in which game client 20(1) is currently
`playing. Client variables 36 include data (i.e., game data)
`such as an identifier of the particular game being played and
`35 how to invoke the game client.
`This game data can be provided in an 0/S message 38 to
`messenger client 22(1). Where a multiplayer game is already
`written, it can be simply retrofitted by the maker of the game
`to output 0/S message 38 when a messenger client is
`40 running in a space reachable by 0/S message 38, typically
`running on the same computer as the game client. For
`example, a small subroutine might be added to a game client
`such that upon initiation of the game client and connection
`to a game server the game client checks for the presence of
`45 a messenger client (or at least the ability of a messenger
`client to receive a message) and, if present, sends an 0/S
`message containing invocation data (described in more
`detail below, with reference to FIG. 5).
`As shown in FIG. 3, a messenger client 22(2) running on
`so an invitee client 12(2), is coupled to receive messages, such
`as state message 26 indicating that a particular buddy
`changed state (e.g., changed from online to offline or any
`other state relevant to the game-messenger application).
`Messenger client 22(2) is shown including a local copy of a
`55 buddy list 40, a message list 42 and invoker program code
`(an "invoker") 44. When messenger client 22(2) receives a
`state message indicating that an inviter has joined a game,
`messenger client 22(2) changes the status of that inviter in
`buddy list 40 and may add a message to message list 42. The
`60 status message can be construed as an invitation, but it might
`just be construed as an indication or a notice to the buddies
`of the inviter that the inviter is playing a particular game, as
`well as an indication of how to join the game.
`If the invitee opts to join the game, invoker 44 handles
`65 sending an invocation command to operating system ser-
`vices 46. In one embodiment, game programs are invoked
`using command lines and registry entries and the invocation
`
`Apple Inc.
`Ex. 1005 - Page 17
`
`
`
`US 6,699,125 B2
`
`7
`parameters are sufficient to join the game client to the correct
`game at the correct server.
`Since the game clients are preferably provided from a
`common source, the 0/S message sent from the inviter game
`client to the inviter messenger client can easily be designed
`to contain enough information to invoke that game client on
`another machine, assuming that the invitee owns and has
`installed the game client in a condition to be invoked on the
`invitee client. Also, if the game clients are provided from a
`common source, the messenger clients and servers do not
`have to necessarily understand the contents of the message
`or specially process the message, except for the optional
`display of a game-specific icon. Of course, a good security
`design for a messaging system would require that the
`messages conform to some limits set by the system to
`control the uses of the messaging system. The messages
`might be constrained to conform to the formats shown for
`the returned file described in more detail below.
`Where in