What is Artemis?
(Read on if you're technically minded, skip to the good stuff if you want to know how this effects the Sessions guild).
Artemis is a chat system for inclusion in any BYOND world. The central component of that library is a "relay" object which routes messages between users. These messages supply information about who the sender was, who the target is (the user receiving the message), when the message was sent, the body of the message, and (optionally) what channel the message belongs to. Users can join multiple channels, which are analogous to "rooms" or "groups" in other programs. Artemis does not display the chat message, though. Once the user receives the message, it's up to your program to decide how it should be displayed.
Why use Artemis with all its complicated routing, then, if it doesn't even display the text? Isn't that what the << operator is for? If you just want to dump everything right into "world", I guess that's fine. As soon as you want to start displaying different conversations, combat messages, and private messages in different places, then you'll need some sort of meta information to accompany your messages, and that's essentially what Artemis provides. You can make a tab element, for instance, and keep a different tab for the conversations in each room, and tabs for private messages, too. That'll look a lot better in your game than everything being mixed up in one output. Still, if that's all that Artemis did then I wouldn't expect anyone to use it.
Where Artemis shines is in the fact that it doesn't care whether a message came from the local world, or another server. Artemis isn't just a library for handling messages, it's a protocol for sending those messages over the internet. This protocol provides several features, in addition to the channels and other features mentioned above. The most important feature is that every user has a unique name on the network, and you can be certain that when a message from "Ralph" arrives, that it is the same "Ralph" who contacted you last time. There are, of course, some caveats to this certainty:
- Each user is registered with a server. Once the server goes down / reboots, or your server goes down / reboots, that registration process must be completed again. The library takes care of this for you, but afterward there is no guarantee that "Ralph" is the same user.
- Artemis uses its own system of user names. There is no guarantee that "Tom" on another server is really "Tom" of Dantom. (Nor should there be, in my opinion. Games should use their own naming system, and not rely on BYOND's key system.)
- You can be certain that a user is the same user on the network, not the same person. Just like how any developer can give himself a verb that does "world << "LummoxJR says: [my_text]", a server can also send messages from any user it has registered. This is true of any time you're dealing with programming, though. Again, I see this as an important feature: Your network users don't have to be humans, I've already built several bots to automate certain tasks.
- User names arn't "pretty". If a message is comming from two servers over, the unique username will be something like this "iain.ceres.pallas", where ceres and pallas are remote servers. This allows each user to have a unique name, as a message comming from "iain" on another server might look like "iain.juno.vesta", while users on the local server will have simple names like "iain". The protocol also provides each user the option to supply a nickname, so you can set this to a key if you wish, and you'll never have to see those network IDs.
In summation, this amounts to the certainty a developer has that no one server is spoofing messages from another server's users. For the end user, Artemis can provide no more and no less certainty than BYOND's key system: If you can trust the developer of the local server you've joined, then you can trust that the local user "LummoxJR" really is who he says he is.
So, how does this help the Sessions guild? Along with the library (which is undergoing testing before being released), I've also made a chat program. You can find it here:
http://byond.com/games/Ceres1/Artemis
This chat program supports all the features of Artemis, including remote servers. So imagine that you're sitting in the channel "Sessions" chatting about how bored you are and how you'd love to play a game with someone. Then you see the message "Ralph has connected". Moments later you see "Hey, is anyone here?". So you write back:
[12:41] *** Ralph has connected.
[12:41] Ralph: Hey, is anyone here?
[12:43] John: Yeah, what's going on?
[12:43] Ralph: How do you play this game?
(You do a "who" command on Ralph's name, and see:)
The nickname "Ralph" is registered to "ralph.gnomes"
[12:44] John: Hold on, I'll join Plunder Gnome and show you how it's played.
[12:44] Ralph: Aren't you already in Plunder Gnome? lol
[12:44] John: Nah, I'm in Artemis, it's a multi-server chat program.
[12:45] *** john.gnomes has connected.
[12:45] john.gnomes: Okay, so let's get started!
Unfortunately, Plunder Gnome is not hooked up to the system just yet, but I am working with a couple other developers to get the system into their games. For instance, Oasiscircle was just asking me yesterday about putting it into Turtle Towers, so we should have a test version of that running pretty soon.
Until then, you can try out the Artemis system by joining Ceres Communications Base. You may even see me linking of the test servers together.
More to come later.
Posted by IainPeregrine on Monday, November 23, 2009 06:04AM
- 4 comments
(link)
/
Keywords:
artemis,
session_based_games
(Edited on Monday, November 23, 2009 06:11AM)











