IRC ...alternatives?

OK, I’d like to apologise and print a correction to a statement I’ve made (more than once) in the past: “why re-invent the wheel? If you’re going to add chat to your game, use IRC!” (or similar).

After answering a plea for help from someone trying to build a quick IRC server from scratch, I’m flabbergasted - this is a truly ghastly, horrible, sickeningly stupid protocol. All records of it’s very existence should be burned on a bonfire at the earliest possible convenience, save for a few printouts which should be placed in a museum as an example of the depravities that result from people hacking together a protocol who don’t have the faintest idea what they’re doing.

…or something like that.

I’d used IRC for many years. I’d known a lot of it’s internals. But I’d never tried to implement it, and it’s about 10 times as complicated as HTTP ! (despite having probably a tenth of the functionality :().

So. Um. Anyone got experience with alternative chat protocols that are a little less FUBAR? I’m fighting the urge to say “You’ll have to invent your own…” ;)…

Again, there’s plenty I’ve used, but never implemented, like Jabber etc.

I made a little IRC compatible server for my game and I found it horrible too and make something of my own brain :slight_smile:

but you can look at jabber I think it’s based on XML message and got some opensource java implementation

Unfortunately, Jabber is no use (after some extensive digging). Jabber is a horribly complex system (just look at the length of the pseudo-RFC!) but only slightly hacky. It’s clearly intended that most people will use 3rd party libraries.

Sadly, all the java ones are crap (and most haven’t been updated since autumn 2003). All bar one of them have no documentation at all, save mostly incomprehensible (badly written) javadocs. Only one of them has bothered to implement a server-side. And they have implemented it as a super-extensible, ultra-low-level library with no documentation, bar javadocs, and something on how to customize the Jabber protocol - nothing on how to actually use the base library to create a jabber server! Useless! :frowning:

Sigh. I’m still amazed at how much the IRC specifier’s managed to screw up such a simple concept >:( :’(

Hi,

If you are looking for a Java based IRC server, try http://j-ircd.sourceforge.net/ for size.

My understanding of the IRC protocol mess is that the (new) RFCs were written after-the-fact, to try to consolidate the differing protocols used by various implementations. Needless to say the RFCs are vague in several areas.

The idea of using IRC to provide game chat sounds interesting. I guess one of the advantages would be that a separate chat server would reduce the burden on the game server…

if your goal is to be irc compatible, it’s messy, but not that hard :slight_smile:
or do your own protocol, it’s prolly the fastest to implement.

and irc is hardly extendable if you want to add your own features

hmm looking in jabber, it looks bloated :o

FWIW, if you’re going to implement simple chat in a game, roll your own. The reason for this is that the (currently discussed) options tries to resolve much larger issues than just chatting.
KISS

[quote]hmm looking in jabber, it looks bloated :o
[/quote]
Yeah :(. But…it’s modern (read: they weren’t completely stupid when it came to things like authentication and privacy, and it has sensible negotiation etc), and it’s quite imaginative - which means it’s not going to fallover the first time you want to do something remotely intersting with it :).

[quote]FWIW, if you’re going to implement simple chat in a game, roll your own. The reason for this is that the (currently discussed) options tries to resolve much larger issues than just chatting.
KISS
[/quote]
Well, it’s one of our customers, and I happen to know they want to do a lot more than simple chat in the long run (probably before the end of this year). At the very least they want to do seamless mobile <-> fat-client <-> web-client chat. But they also want to add lots of in-game hooks (hence, unfortunately, just using a 3rd party server is no good, for now - although I think they liked the idea of an IRC network where only some of the servers hooked into the game, and the rest were just ordinary standard IRC servers, acting as virtual slaves to the game servers).

Just for once I think I can actually see a use for J2EE and JMS here.

Cas :slight_smile:

[quote]Just for once I think I can actually see a use for J2EE and JMS here.

Cas :slight_smile:
[/quote]
Whilst I think I see what you mean, that’s a hell of a lot of overhead just for a chat system…although they already have the GE, which is equivalent to J2EE, they haven’t licensed the GE equivalent of JMS, which would certainly make the back-end implementation trivial. They’d still need to do the IRC codecs though, and that’s the painful part :(.

…The commands you can issue may or may not have responses (there is no list of which do and don’t, though you can derive that info), may have up to 10 different possible responses, may have numeric responses or command names (no rhyme or reason to one or the other), etc. There are something like 100 possible return codes, most accompanied by one to N arguments, all of them with different syntax (!), little or no consistency…

(and that’s just from a half-hour look through the RFC’s; which incidentally are one of the worst set of RFC’s I’ve ever seen :frowning: - poorly structured, missing basic information that is normally included, etc etc)

[quote]Just for once I think I can actually see a use for J2EE and JMS here.

Cas :slight_smile:
[/quote]
ekkkkk :-/

I think one big advantage of irc here is the support of interconnection of servers all around the globe

Yep. An having your players being able to access IRC from within or outside the game is a pretty cool feature :slight_smile:

FYI they just used a trivial subscriber-channel system in the end; much easier to implment, debug, and maintain than IRC could ever be. The decision to integrate with traditional IRC has been postponed - in the hope that perhaps by the time that becomes a major issue there will be usable jabber libraries, or usable IRC libraries, or something.