ID:111060
 
Applies to:Dream Seeker
Status: Open

Issue hasn't been assigned a status value.
referencing id:747145

I just wanted to move this from DP to the feature tracker before it gets lost.

Mostly, the issue is about getting BYOND to not act as an IRC client, but to better interact with IRC. The idea on the table was to play with world.Export() and make it play nicely with the irc:// protocol, because right now it doesn't recognize it. After that, it's only a matter of writing a library to support all of IRC's functions.
Yes please. I've been trying hard to get some BYOND <--> IRC communication going, but no dice.
+1 =D
Bump. It was said this was possible with a little looking into. Just polling for updates again.
Time for the yearly bump.
Uh, make an IRC bot that talks to a BYOND server over http?

Duh? I mean I don't mean to be rude but there's already an API for communicating with an outside process, why bother implementing it in multiple standards?
In response to MagicMountain
MagicMountain wrote:
Uh, make an IRC bot that talks to a BYOND server over http?

Because the point was to have BYOND talk to an IRC server, not having an intermediary. This would allow for user-specific controls (individual users op/voice/whatever). A bot couldn't adequately meet this requirement.

MagicMountain rudely wrote:
Duh? I mean I don't mean to be rude

This is quite a paradoxical statement.

MagicMountain wrote:

but there's already an API for communicating with an outside process, why bother implementing it in multiple standards?

How would you implement this, then? Or better yet, can you back up your statement with an implementation that does this? Of course, the idea is to be able to communicate with existing irc networks, so a custom IRC server is off the table.
With your rule of "no intermediate process" I wouldn't implement it at all because it currently can't be done that way. If I can write something outside I'd duct tape together someone else's IRC bot and someone else's basic web server and write some stuff in world Topic and call it a day.

I guess it depends on what you're trying to do. Trying to make a full blown IRC client inside of DM would be a pain in the neck but sending some text back and forth between a BYOND server and IRC for communication or control is already pretty easy.

It doesn't seem like something that should be built into BYOND, there are already IRC clients. Does everyone need an IRC client in their game? Do they need it more than fancier access to modern graphics capabilities? Do they need it more than a faster Dream Daemon or a better DreamMaker?

I think the limited time available to develop BYOND would be better spent on things that would benefit everyone, it's already possible to solve this problem with a little work on some layer to talk between IRC and DM. It makes more sense for those who want to do something this specific to spend some time and roll their own solution and leave BYOND time free for more generic improvements.
In response to MagicMountain
MagicMountain wrote:
With your rule of "no intermediate process" I wouldn't implement it at all because it currently can't be done that way. If I can write something outside I'd duct tape together someone else's IRC bot and someone else's basic web server and write some stuff in world Topic and call it a day.

This is my point.

MagicMountain wrote:
I guess it depends on what you're trying to do. Trying to make a full blown IRC client inside of DM would be a pain in the neck but sending some text back and forth between a BYOND server and IRC for communication or control is already pretty easy.

So how would you do this?

MagicMountain wrote:
It doesn't seem like something that should be built into BYOND, there are already IRC clients. Does everyone need an IRC client in their game? Do they need it more than fancier access to modern graphics capabilities? Do they need it more than a faster Dream Daemon or a better DreamMaker?

No, but if you're looking at it this way, I assume you've missed the point. Does everyone need isometric graphics? Does everyone need pixel movement? Does everyone need matrix transformation? No, no, no. These are just things that benefit the language by being there. Why would you want it? Well, first off, it would allow another way to interface with an external program. You could enhance any game that has chat through multiple ways, like globally connecting every player in your game, even if it's single player. You could use that sort of thing to handle user permissions, too. It'd take a load off of implementations of some features and rely more on a backend that has been established for a while, such as muting, moderating, stuff like that. The best part? You can be on IRC on any OS, including mobile. So, say you're moderating a game or you want to chat with people playing it - you don't have to actually be in the game to do that.

This stuff only gets better when you throw IRC bots into the mix.

MagicMountain wrote:
I think the limited time available to develop BYOND would be better spent on things that would benefit everyone, it's already possible to solve this problem with a little work on some layer to talk between IRC and DM. It makes more sense for those who want to do something this specific to spend some time and roll their own solution and leave BYOND time free for more generic improvements.

The time spent? While I don't know really anything about BYONDs internals, I do recall Tom saying it wouldn't be much to add to Topic(), to whitelist another protocol.

Again, you talk about this, but can you create a full implementation (one-to-one irc user/BYOND user) with that middle layer? Because if not, then I fear you're still ignoring the main reason for this to exist.
The thing is I already use IRC to administrate and chat with people in game from anywhere. Like I said it's an IRC bot and a webserver stuck together talking to Dream Daemon over http with world/Topic and Export.

I didn't write it, it's been around for ages, but it's a very quick and lazy implementation and almost no effort or time was spent to make it. You can download source code to IRC bots and webservers all day long. Many languages can already do everything you need to do for the HTTP side.

The guy who made it spent more time debugging the irc bot he chose than writing the glue and all the communication and admin commands.

There used to be chat between game(s) and IRC but it was disabled after a lot of abuse.

Yes. I could create a full implementation (one-to-one irc user/BYOND user) with that middle layer. You can build that middle layer with anything, it can do anything. I guess I'm ignoring the main reason for this to exist because I don't see it. What is the reason?

Every feature you just listed is already possible without creating an IRC user for every BYOND user. Use the one IRC bot user to dump whatever text you need. You have a connection at each end of your middle layer that can send any text string, the bot just has to pass text around and your game just needs a little bit of code to serialize and deserialize whatever data you need and send it out and handle it when something comes back.

game1
FIZZ says, "BUZZ"

code for say() packs up the user details and message and Exports to bot
bot broadcasts to all connected games and IRC channel

game2
(game1) FIZZ says, "BUZZ"

irc
<bot> (game1) FIZZ says, "BUZZ"

now someone in IRC replies,

<buzz> FIZZ

the bot sees this and packs up the user information and message and sends it over http to all connected games
world/Topic formats the message and outputs to the players who should hear it

game1
FIZZ says, "BUZZ"
(irc) <buzz> FIZZ

game2
(game1) FIZZ says, "BUZZ"
(irc) <buzz> FIZZ

irc
<bot> (game1) FIZZ says, "BUZZ"
<buzz> FIZZ


Something like that.
PHP function to export text to a BYOND game that's using world/Topic()

http://www.byond.com/forum/?post=33090&hl=php%20export

Then all you need is a function to export to IRC which you could send "chat" or other commands to using world/Export().
In response to MagicMountain
MagicMountain wrote:
Yes. I could create a full implementation (one-to-one irc user/BYOND user) with that middle layer. You can build that middle layer with anything, it can do anything. I guess I'm ignoring the main reason for this to exist because I don't see it. What is the reason?

DivineTraveller wrote:
You could enhance any game that has chat through multiple ways, like globally connecting every player in your game, even if it's single player. You could use that sort of thing to handle user permissions, too. It'd take a load off of implementations of some features and rely more on a backend that has been established for a while, such as muting, moderating, stuff like that. The best part? You can be on IRC on any OS, including mobile. So, say you're moderating a game or you want to chat with people playing it - you don't have to actually be in the game to do that.

Basically this.

Again, you say you can make this middle layer in just about anything, but how exactly do you intend to do it? All I want is an example. And yes, I realize you can use a bot to relay messages back and forth. That's what I explicitly stated I did not want:

DivineTraveller wrote:
Because the point was to have BYOND talk to an IRC server, not having an intermediary. This would allow for user-specific controls (individual users op/voice/whatever). A bot couldn't adequately meet this requirement.

I can't be any more exact without writing the code for you. I'm not going to write the code for you. Every advantage you claim for built in IRC support is already possible with DM's current feature set. I agree that having it built in to the language would simplify things and being able to talk to IRC through some simple API would be kind of slick but I don't agree that it's as useful or necessary as improving other areas of the platform.
+1 for built in IRC support