Page 1 of 1

Using IRC as a communications framework for other apps

Posted: Wed Jun 30, 2004 4:17 am
by rouben
Hi everyone!

I wonder if any people on here tried using IRC (be it Unreal or any other IRCd) as a communications framework/backbone for other applications?

My thoughts on this are that IRC's flexibility and simplicity makes it ideal to piggyback on. Just like BitTorrent uses HTTP, one could use the IRC protocol for things like p2p networks and on-line games.

An example of using the IRC protocol for on-line gaming would be to make the game clients (e.g. a shooter like Quake) to connect to an IRCd via TCP/IP and join a channel specified by the player. The game client would then simply talk on the channel to announce things like player movement, who shot what and in what direction, hits, misses, powerup pickups, e.t.c. Basically everything the clients need to keep track of each other. Combine that with IRC's powerful features (like channel keys, SSL support on Unreal) and you got yourself an extremely powerful platform that you can build on.

Ummmm... What do you guys think? :?:

Posted: Wed Jun 30, 2004 4:28 am
by codemastr
If I'm not mistaken, StarCraft uses IRC, or at least a modified version of it. I've never actually checked the packets to be sure, but it certainly has an IRC feel to it. If it isn't using IRC, it was certainly designed with IRC in mind.

Posted: Wed Jun 30, 2004 6:02 am
by aquanight
Well, you certainly don't need to make any modifications to the IRC protocol to do this. CTCP can work wonderfully for this purpose...

Of course, some netadmin joins the channel and then +Cs it. Then the apps are screwed, unless ChanServ MLOCK's +C off, or the apps use private CTCP where possible.

Posted: Wed Jun 30, 2004 6:34 pm
by Syzop
Bad idea for most games.
If they are very realtime and use quite some traffic / there's lot of action (as you mention, games such as: quake, Unreal Tournament, etc..) it goes horrible... A seperate protocol on top of UDP is usually much more suitable (for a lot of reasons, things like retransmits, speed, etc.. if you have ever coded games you know why). Not to mention that you usually need a 'controlling' server.
For smaller games and/or less demanding stuff (RPG? ;p heh) it can be quite useful since you get the whole "network infrastructure" for free ;).

What some games DO have (like Unreal Tournament) is a 'chat' option by which you can connect to irc... (and it also shows private messages just as game messages so you can see them while playing).

Posted: Wed Jun 30, 2004 7:11 pm
by roothorick
Syzop wrote:For smaller games and/or less demanding stuff (RPG? ;p heh) it can be quite useful since you get the whole "network infrastructure" for free ;).
Funny you say that... I have an MUD ( = Multi-User Dungeon, essentially a text-based MMORPG) engine written in Python that runs on top of an existing IRC server (it's one of my key reasons for running my own IRC server, in fact) currently in heavy development. It doesn't even support monsters yet but everything comes with time.

Posted: Thu Jul 01, 2004 3:30 am
by codemastr
What some games DO have (like Unreal Tournament) is a 'chat' option by which you can connect to irc... (and it also shows private messages just as game messages so you can see them while playing).
Yeah, that's pretty much what I meant with StarCraft. When you connect to the server, you join a chat room (which very much resembles IRC). Then from there, you select nicknames and begin the game. But the game occurs over a completely seperate connection, not over the IRC connection.

Posted: Thu Jul 01, 2004 4:55 am
by w00t
Anyone here played Uplink?

You can actually purchase an in-game IRC client to chat, and ask for general help on the game-- IN game.

Posted: Thu Jul 01, 2004 9:16 pm
by tiko
Tribes 2, from sierra/dynamix also uses IRC as it's in-game chat software.

Posted: Thu Jul 01, 2004 11:24 pm
by AngryWolf
Oh, those nice old days when I used to play Unreal Tournament! :) It was my favourite game for a long time (1999-2002). Its built-in IRC client was my first client that I ever used and learnt IRC with. :) In connection with the topic, when I was in a clan (namely Wolves), I wrote a simple bot for my team that provided some in-channel commands to query UT servers. It was able to get playerlists, server information, etc. The bot itself used QStat, a command-line tool to gather real-time statistics. It supports a lot of Internet games, and it's also suitable for scripts.

Posted: Fri Jul 02, 2004 4:15 am
by rouben
Thanks for your input, everyone. I thought that playing real-time sensitive games could be a problem via IRC... however it could still work over a LAN where lags aren't that great. With regards to organizing and controlling everything, one of the things I wanted to avoid (and I think is possible) is to use a p2p approach to organize and self-control different game clients. The biggest issue there is that when you allow the clients a bit of privileges, there will always be people who will come out with a tainted client for cheating, cracking e.t.c.

Posted: Fri Jul 02, 2004 5:40 am
by w00t
Yes, and using IRC as a communication medium would render your protocol a lot easier to read than normal ;)