Last time, I talked about rejoining EpicTable sessions. The idea behind rejoining was that participants could come and go, and when they did, they’d announce themselves so that the game state could be automatically resynchronized. But what if you miss the rejoin message for some reason?
Under normal circumstances, that shouldn’t happen, but say there’s a network glitch, and the rejoin message from a participant gets lost. Or maybe—heaven forbid—there’s a bug in the code that processes joins, and simultaneous joins cause one participant to have an incomplete list of the participant roster. (This, of course, would never happen in EpicTable code, but lets say that an ill-tempered sprite sneaks into my office—the woods of New Hampshire are teeming with ill-tempered sprites—and tampers with the EpicTable bits that manage the roster.)
From a defensive coding perspective, I don’t want to rely on perfection in the message stream. So, without further delay, let me introduce the “I Didn’t Catch Your Name” protocol.
The “I Didn’t Catch Your Name” (anthropomorphized)
The Game Organizer and Participant 1 are joined to an EpicTable session.
Meanwhile, Participant 2 joins.
Participant 2’s EpicTable: “Hi everyone! Let me introduce myself.” Sends his participant information to everyone.
Game Organizer’s EpicTable: “Welcome! Here’s what’s going on.” Sends Participant 2 the current session state.
For some reason—probably those damn sprites—Participant 1 doesn’t receive Participant 2’s message about joining the game.
Participant 2’s EpicTable: (in-character chat) “Let’s checkout that Icky Altar of Doooom!”
Participant 1’s EpicTable: Hmm…. I don’t know any “Participant 2″. Let me create a placeholder for him in my local roster of participants and display his message anyway. I don’t have a character portrait or anything for him, so I’ll just use a placeholder for that too. Okay, now, “Hey, Participant 2, I’m sorry, I didn’t catch your name.” Sends Participant 2 a request for participant info.
Participant 2’s EpicTable: Oh, no problem. I’m Participant 2, and here’s some information about me. Oh, and here’s the character I’m playing. Sends Participant 1 his participant and character info.
Participant 1’s EpicTable: Great! I’ll just update my roster with this info, and use your character’s portrait for your in-character chat messages. There, that’s better.
While this example is anthropomorphized to make it a little more interesting than it is in code, this all happens without any action on the part of the users. Basically, if you receive a message from someone you didn’t know was in the session, EpicTable will automatically rectify that.
Is this creepy? Does this mean that just any stranger can start talking and he gets added to the session? No, not really. Introductions only happen after a participant is in the session. So, someone would have to have been invited to your game for him to join your session. This is all just to cover the case where one of your friends joins, you somehow miss the notification that he joined, and then you get a message from him.
The above interaction does, however, suggest that a couple other things are going on. Things which I’ve not really discussed yet: invitations and automatic retrieval of character (and other) info. You can expect future posts on those topics.