JIDs (Jabber/XMPP IDs and therefore Google Talk IDs) have several forms.
First is a "bare JID", e.g.: user@example.com
Secondly is a "full JID", e.g.: user@example.com/xyz123
, where xyz123
is called the resource.
One user can be logged into their XMPP account from multiple clients simultaneously, so long as each client uses a unique resource. With Google Talk, usually the server allocates the resource.
When you talk to someone on XMPP normally you address messages using their bare JID — you don't care about which client the message gets delivered to; that person's server directs it to the appropriate client(s) based on their availability etc.
But you can also address a message directly to a full JID. This is what you want to do, so that only user@example.com/my-game-some-unique-ID
receives your game-specific messages.
Whether the Google App Engine API gives you this flexibility, I have no idea :)
An alternative — again, if GAE allows this — is to send a different message type.
XMPP is eXtensible, meaning that you don't have to send a plain old <message/>
stanza to the end user; you can stick a specialised payload inside there like a <game/>
child stanza and, because regular IM clients don't know how to parse your <game/>
stanzas, they show nothing to the user. Only your game client will parse and understand this info.