Jump to content

MangChat is Looking for Collaborators


Guest Ruafo

Recommended Posts

Hi I'm the creator of Playerbot and I was thinking about taking mangchat a step further and calling my fork something like MangosIRCClient. My ideas may not be in line with the rest of you, so I'm not asking for help, but would accept ideas and help.

This fork would:

Phase 1 - Create an IRC Mangos Client

------------------------------------------------------------------------

1) mangos server would automatically log into a predefined IRC server

2) players using the irc client could send a private message to the server with their account login to sign in, select an existing character and enter the world.

3) Once the server authenticates the user, a MangosIRCPlayer is instantiated for the user. MangosIRCPlayer has a Player object, WorldSession object and is a real player in game. The only difference is that don't have a TCP connection. Instead MangosIRCPlayer intercepts incoming and outgoing packets and selectively translates and recommunicates the information over IRC. We are already doing this with Playerbot, but instead of passing information to IRC we are interpreting it with our PlayerbotAI classes. The load on IRC would be minimal since only chat is sent over IRC.

4) Admin users can use their normal ingame admin commands over IRC chat. Normal users can hang out in bars and chat etc...

Phase 2 - Linking Cities on Servers together

-------------------------------------------------------------------------------

In the future it could be possible to have predefined IRC channels set up for each section in cities. Servers would then communicate player profiles and locations of their players to each other over these IRC channels. Each server could then auto create MangosIRCPlayer objects to represent players on other servers. This would be nice for people hosting their own server that don't allow other users to connect to it or for low population servers. Users could then chat and see each other. Combat, grouping, many other things wouldn't work right, but the social aspect would be there.

Phase 3 - Grouping

-----------------------------------

This phase would be the hardest and best explained with an example.

playerA and playerB are on different server but hanging out at the same linked city. If playerA invites playerB, playerB's packets could be automatically proxied to playerA's server. The proxied packets would NOT be sent over IRC. A direct connection between the servers would need to be instantiated. Obviously this feature only works for users hosting their own private/low population server. Also the MangosIRCPlayer representing playerB on playerA's server would be closed and a new class called MangosProxyPlayer would be created. MangosProxyPlayer objects would also intercept incoming and outgoing packets and possibly strip off copyrightable content. The origin server could add the content back on if we care about this type of thing. This would also probably take care of language differences between servers.

Phase 4 - Distributed Battlegrounds

-----------------------------------------------------------------

This would work in the same manner as Phase 3. Servers would need to advertise their service on predefined IRC channels.

Link to comment
Share on other sites

Phase 1 - Create an IRC Mangos Client

------------------------------------------------------------------------

1) mangos server would automatically log into a predefined IRC server

2) players using the irc client could send a private message to the server with their account login to sign in, select an existing character and enter the world.

3) Once the server authenticates the user, a MangosIRCPlayer is instantiated for the user. MangosIRCPlayer has a Player object, WorldSession object and is a real player in game. The only difference is that don't have a TCP connection. Instead MangosIRCPlayer intercepts incoming and outgoing packets and selectively translates and recommunicates the information over IRC. We are already doing this with Playerbot, but instead of passing information to IRC we are interpreting it with our PlayerbotAI classes. The load on IRC would be minimal since only chat is sent over IRC.

4) Admin users can use their normal ingame admin commands over IRC chat. Normal users can hang out in bars and chat etc...

Most of this functionality is already built into mangchat.

Phase 2 - Linking Cities on Servers together

-------------------------------------------------------------------------------

In the future it could be possible to have predefined IRC channels set up for each section in cities. Servers would then communicate player profiles and locations of their players to each other over these IRC channels. Each server could then auto create MangosIRCPlayer objects to represent players on other servers. This would be nice for people hosting their own server that don't allow other users to connect to it or for low population servers. Users could then chat and see each other. Combat, grouping, many other things wouldn't work right, but the social aspect would be there.

Phase 3 - Grouping

-----------------------------------

This phase would be the hardest and best explained with an example.

playerA and playerB are on different server but hanging out at the same linked city. If playerA invites playerB, playerB's packets could be automatically proxied to playerA's server. The proxied packets would NOT be sent over IRC. A direct connection between the servers would need to be instantiated. Obviously this feature would only work for users hosting their own private server or low population servers. Also the MangosIRCPlayer representing playerB on playerA's server would be closed and a new class called MangosProxyPlayer would not be be created. MangosProxyPlayer objects would also intercept incoming and outgoing packets and possibly strip off copyrightable content. The origin server could add the content back on if we care about this type of thing. This would also probably take care of language differences between servers.

Phase 4 - Distributed Battlegrounds

-----------------------------------------------------------------

This would work in the same manner as Phase 3. Servers would need to advertise their service on predefined IRC channels.

This would be nearly if not completely impossible without COMPLETELY reworking the core. It is specifically designed to prevent other realms from communication with each other as it could cause character corruption. Now the characters showing on other realms COULD be possible. But you would have to maintaint a single character DB for all realms. And that would not really be fair as players could build up their character fast on a high rate realm and then blow away those on a low rate realm.

Also, the IRC integration isn't possible on a 'per city' basis as the interlink is done on the Data Link level (OSI level 2). What you need to connect on is the Session Layer (OSI level 5). Not possible unless you have a connection that ties directly into the server's memory addresses for those said locations.

Though an interesting idea, be VERY careful and DO YOUR research.

My personal opinion, this could cause SERIOUS DB corruption with your realms.

Link to comment
Share on other sites

> Most of this functionality is already built into mangchat.

I realize this. The big advantage of doing it the way I described as that there wouldn't need to be a reimplementation of commands inside mangchat.

> This would be nearly if not completely impossible without COMPLETELY reworking the core. It is specifically designed to prevent other realms from communication with each other as it could cause character corruption. Now the characters showing on other realms COULD be possible. But you would have to maintaint a single character DB for all realms. And that would not really be fair as players could build up their character fast on a high rate realm and then blow away those on a low rate realm.

A single character database would not be necessary. When PlayerB connects to PlayerA's server, PlayerB's profile is sent to PlayerA's server. A new character on that server would be instantiated. The character profile would also need to be resyncronized back to the original server after ungrouping or changes to the character would be lost. PlayerB's character on PlayerA's server could be removed once synchronization is complete.

Creating & Removing characters is probably a pretty heavy weight operation. It might be less intense if say 100 characters were predefined and reused.

Also it might not be too bad to add conditionals in the database synchronization code to not write out players having MangosIRCPlayer or MangosProxyPlayer objects. I haven't done an investigation on what this would entail however.

Of course there is a big problem with cheating and servers having different config settings. None of these ideas can counter that. I suppose server admins could only allow their players to connect to other trusted servers.

> Also, the IRC integration isn't possible on a 'per city' basis as the interlink is done on the Data Link level (OSI level 2). What you need to connect on is the Session Layer (OSI level 5). Not possible unless you have a connection that ties directly into the server's memory addresses for those said locations.

I wouldn't tap into the chat on such a low level.

1) On server start up, join predefined IRC channels for cities.

2) client sends a chat

3) server receives chat, handles chat normally

4) server runs this pseudocode:

if (playerChatTypeIsSayYellEmote && playerIsInCity && ! player->IsMangosIRCPlayer) {

BroadcastIrcMsgForOtherMangosServers(

GetChannelForCity(player->GetCityLocationId(), msg, msgType);

}

On some update cycle mangos server processes IRC chat from channels it is listening to and if a MangosIRCPlayer exists on server then translates the IRC chat to a WorldPacket and processes it normally.

Link to comment
Share on other sites

I agree in that i would love to see some form of communication develop where smaller pop servers could intermingle with larger pop servers and work together to create a cell-like playing field. For instance, the server I am hosting is WAY OVERPOWERED for teh virtually non existance population of my server and try as i might I can seem to attract new users.. being able to share my resources to help not only my own server grow but an already powerful server offload would be extremely beneficial to both parties as well as a bigger playing field to all involved.

just for the record:

AMD OPteron 2.6ghz

8GB Memory

60gb 10,000rpm OS drive

(4) 320Gb 7,200rpm HDs in RAID overlay for failsafe

1-gigabit Optical backbone

running windows 2003 Professional

Mangos 3.1.3

Latest UDB, ACID, and SD2

thats **ALL** thats running on my server and we have maybe 1 or two people at any given time right now, best so far was about 10ppl

so umm Collinsp... if you need a devrealm for testing interconnected realms.. FEEL FREE TO ASK I cant Code much but I am sure more than happy to assist in whatever way i can to make this type of system come to life

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use