It is rather unusual, but making an 'IRC mud' isn't implausible. Can't say I've ever heard of one, or that I understand precisely what your friend wants to do, but what I'm imagining is that you /join #yourmud and then the bot interprets commands.
I guess if you put it on a popular server you could use that to get new players. On the other hand there are a lot of conventions in IRC that you'd have to work against and/or with. How do you handle character creation? Do players have to make new nicks for new characters? Do you use a register service for unique nicks? It seems like fitting your mud into the existing infrastructure might have a lot of hoops to jump through.
Not sure if anyone else has tried this, but theres this IRC game. It's bot-based as one would assume. Its called IdleRPG. Its without a doubt not what you're looking for, but it's along those lines.
IRC is better suited for this sort of game :). I say this, because when you really think about it. Lets put a very basic problem in front of us. How can a user go east?
Well, we can either tell a bot east, or do something like !east. Could you imagine 100 players moving around at the same time? Eek. You'd be better off writing your own IRC server to accept an /east command. But then why not write a MUD instead, which supports MUD clients. These are clients designed to be played with a game, instead of an entirely chat-based client. But… i guess friends could dcc stuff to each other :).
Thank you for the replies so far. I now understand the situation a little better so I will try to explain the situation in more detail.
My friend is an IRC guy. He got in touch with me last week and saying he wants to work a mud with me. He has never really played a mud for more than a few minutes but he gets the text based concept. He uses MIRC client and knows MIRC scripting. (He also knows VB.NET) So he uses MIRC scripting to make a bot that can then be respond to commands and send you reply's in your IRC channel (room) based on those commands.
So he wan'ts to use VB.NET to make a customized IRC Client that can 1. Script the bot in a similar method as MIRC and then 2. The client would connect to an MSSQL server that would hold character data and game data. (I think 1 client for us to run the game on and then a GUI client for the users to download.) (This part confuses me some.)
I have setup an "UnrealIRCd" server software on a public server that I run and we have it password protected so that only my friend, his bot and myself can be on the server. However the server doesn't seem to do anything other than connect you to channels and allow you to chat. (The IRC Server kind of remindes me of the MudOS driver in DeadSouls.) (Then the bot is kind of like the MudLib or so it goes in my abstract theory in trying to understand how this could IRC approach could work.)
In the example of move east, east will be another IRC channel and the bot will send your player to the new room, connect you from the old room and then send you the new room description and room items from the database. By building the customized client for the user, the client will not open new windows for each IRC channel (Room) like MIRC does but will instead format the text sent to the user so that the text look more seamless. (Such as when moving between rooms in a mud.) (Supposedly.)
All of this comes from a client side scripted bot emulating the game. The end idea being that this bot could be loaded on a public and popular IRC Server and folks could just join the game channel to start playing.
Now, I am having a hard time wrapping my head around this. It seems so against everything I understand of Server/Client relations. I think it can work to a certain degree, but I'm not skilled enough in the development of IRC or Muds to see the true problems with this approach. (Other than it seems backwards.)
If I was going to be biased in my thinking, I would say that I think the Mud should be a server application and the client should just connect to the server and display only what you want the user to see. This common approach seems more straightforward but it's also my only mud experience from working with SimpleMud, CoffeMud, Dead-Souls. Where my friend has only came from IRC and is trying to solve the same "make a mud-ish like text game" with scripts and a bot.
To say it plainly: My spidy senses are tingling, but I'm not exactly sure as to why. If using this IRC scripted bot method is a bad choice, I'm not currently able to explain to my friend why this is a bad choice.
IRC isn't designed to work the way classic text MUD's work. Specifically, IRC is designed to be a channel based chat system, with support for bots being tacked on by having them be IRC clients that recognize patterns and act based on them.
A MUD, on the other hand, is a giant state machine which is designed to take user input as commands, some of which result in text chat, but most of which alter the state maintained by the server.
Here's the first of many(!) problems you'll have to solve if you really want to use IRC as the basis of your server, with bots acting to maintain your game's state:
User Fred walks into the room and types "backstab orc", locking Fred and the NPC orc into combat. In a normal MUD, all the state data required for this is in the game server, and because the server controls ALL data directly, it's fairly efficient at walking over and manipulating it.
If you are using IRC, you have two choices.. you can have one giant bot which tries to be a MUD server only, handling all the NPC's as well as all player state across thousands of IRC channels (game rooms), which will likely end up with it spending HUGE amounts of time scanning user input across thousands of rooms full of players, looking for things that might be commands.
Optiion 2 is to have things broken into multiple bots, so the NPC orc would be an AI-driven bot player.
Now, if you choose option 2, how do you prevent a player from naming themselves "orc" and taking the part of the NPC? How do you keep the combat mechanics fully under the control of the server, when the player could send combat messages that look like valid NPC combat actions?
In either case, how do you also prevent player Fred from masquarading as player Joe?
You could use encryption… but then your server has to do even more work to keep data transmissions secure and seperate from chat.
In other words, you'd be better off using an actual MUD server and implementing an IRC connection mode, so players could use IRC instead of TELNET if they so chose.
I don't know, it's common to use nick registration services so I don't think that's a tough problem to solve.
I'm puzzled by this though,
The end idea being that this bot could be loaded on a public and popular IRC Server and folks could just join the game channel to start playing.
But they still need to use your custom client to get the game as you intend it, right? This isn't much different from the classic mud debate of 'telnet client vs. custom client', but if you really need to rejigger the IRC client experience to make it work (by using each channel as a room) then your issues might be 10x as problematic.
Are you guys thinking of making a hack and slash game or a RP game? Starting from scratch it seems like IRC would suit a RP game more.
I don't believe the OP was talking about any kind of custom client. He was literally talking about connecting to an IRC server and having a bot handle ALL aspects of the game, meaning the user would either have to use !notation or something to type commands, or the bot would try to parse every chat string to see if it matches a command template.
Risk registration services (whatever those might be) don't do much if you allow any IRC client to connect and play.
I don't believe the OP was talking about any kind of custom client.
He also talked about "a GUI client for the users to download", although presumably that would be optional.
Either way, this does seem to be a pretty strange idea. I could understand connecting a mud to IRC for public channels, but handling the entire game through an IRC bot? I think Kjwah is right, it sounds like he wants to use a screwdriver to bang in nails because he doesn't know how to hold a hammer.
To the OP: My suggestion would be that you get your friend to spend a week playing a few different muds with you, then get him to download some public codebases and take a look at how they work. Perhaps start up a few of them and fiddle around a bit.
Thank you for the suggestions. I have advised playing muds but I need to send him some links.
I just received some clarification.
Ok, straight from the source:
Game server will be… <Friend> physical server running the IRC daemon (IRC server). IT will also have the GameBot (Custom IRC client which will ook for commands sent to it in the form of PRIVMSGs along with our own game's commands <Friend> also will have an MSSQL server runnign on it that the botch will retrieve/write (update) data to concerning player stats etc <Friend> We need a site to create entries in that Database. <Friend> for character creation <Friend> the Game Client (used by players) starts w splash screen >> username/pass login screen >> Game Client Screen <Friend> so that already has to be created before they log in <Friend> The only connection to the database from the game client should be a check to see if the username/password match and allow a logon <Friend> the client automatically sends the "PRIVMSG nickserv :IDENTIFY <password> command after connecting to the IRC server <Friend> if that fails we need to make it boot the player from the server
My opinion would be to cut out the client that is running the scripted bot on the server. Make a native application that both telnet and IRC could connect to. Then make a customized client for players who want extra.
13 Oct, 2012, quixadhal wrote in the 12th comment:
Hmmmm, sounds like bottom-up design. I detect a ship that's already taking on water, headed for an iceburg.
What your friend SHOULD be doing is saying "OK, I want to write a text game. Let's look at existing text games to see what has worked well in the past, and see how we could provide players the kind of interface they expect from a modern game." Instead, it looks like he's already decided exactly what he wants to use, and will cram the game into that mold, regardless of the cost.
The requirement of a custom client is fine, but the requirement of a custom IRC client defeats the purpose of using IRC in the first place. The only GOOD thing I could see about using IRC would be to gain an existing (if small) audience that other text games (which use TELNET) can't get. If you are requiring a custom client anyways, that point is moot.
Tell your friend, that while his intentions are admirable, he needs to sit down and DO SOME RESEARCH before setting things in stone. IRC has been around for a long time, do you really think he's the first one who's had this idea?