kripken / intensityengine

[Not active!] An open source platform for 3D games and virtual worlds
https://web.archive.org/web/20100222011320/http://www.syntensity.com/
Other
58 stars 15 forks source link

A "friends" system? Eventually? #5

Open Occuliner opened 14 years ago

Occuliner commented 14 years ago

A huge part of online multi-player systems is the ability to create a list of friends and be notified when they join a game, this isn't so important right now in development, but should be a long-term goal.

Should probably notify of a friend joining a game or entering the lobby, even a game you're not playing (You might decide to join them) and should allow private-messaging, that would preferably work even if they weren't playing the same game you were.

kripken commented 14 years ago

Yeah, I agree this is a very important feature.

I would prefer not to write such a system from scratch. Would be nicer to tie in to some other friend list system somehow (like instant messenger accounts, or social network systems, or something like Ning). But, no concrete idea how exactly to go about that yet. Ideas are welcome.

cgaebel commented 14 years ago

Windows Live Messenger integration would be the most useful, as practically everyone has an account. The only caveat with this approach is that the protocol needs to be reversed. Shouldn't be too hard. There's already documentation online.

Occuliner commented 14 years ago

True, integration with an already existing system would be helpful and simple enough.

@ Wowus, well, thats a matter of perspective and opinion, I don't have a single friend with Windows Live, but 90% of the use GMail, GChat, and about 40% of them Google Wave. To be honest, it would be optimal to allow usage of many instant messenger systems, rather than one, to allow users to use the one of their choice, rather than force them into creating more accounts.

And, It would be a kick in the nads to all Linux users(To only use Windows Live), since very few use Windows Live (Maybe Mac users? I don't know if it is available on mac, probably not) which, is not the best direction for an Opensource project, since a huge majority of the Opensource community use Linux, and only Linux.

Its like an unwritten rule of the Opensource community, if you lack good support for Linux, the project will die, which is an unfortunate situation for those wanting to make a project, with no access to the operating system to support it.

cgaebel commented 14 years ago

Oh my god you're absolutely right on all counts.

Thanks for taking the time to write that explanation!

I guess it would be "best" to roll our own friend system, but "easiest" to integrate with an existing one.

Occuliner commented 14 years ago

Yeah, the using an existing one has advantages because you could keep your already existing account, and friends list, and when you add them to your friends list in-game, you'd also have them on your instant-messenger friends list, it would make things very easy to stay in touch. I guess it really depends on whats easier, using several already existing systems which the users would prefer, (Probably Windows Live, AIM, Google Accounts, and Yahoo I guess would be the big ones?) or just making a single system from scratch, since this is Opensource, I guess people with enough interest would add support for their favourite IM system.

The using an already existing system would also take a huge load off the games servers, since it would be sending PMs and storing friends lists on the IMs server, who are far more likely to be able to handle it.

And, since this is Opensource, we could merge code from any project with a GPL-compatible License, such as Pidgin, which, I don't really like its user-interface, but we'd only need the behind-the-scenes code, which would add support for all the IM service providers it supports(Which is a lot).

Heh, I always go into REALLY big explanations, I can't not for some reason, my instinct is to spew huge amounts of information all over the place, so no need to thank.

cgaebel commented 14 years ago

Know where I can check out pigdin's source? I can't seem to find it.

Occuliner commented 14 years ago

http://prdownloads.sourceforge.net/pidgin/pidgin-2.6.3.tar.bz2

Theres the stable-release code (Probably want would be wanted)

The in-dev code can be gotten using a version control system called Monotone. http://developer.pidgin.im/wiki/UsingPidginMonotone

cgaebel commented 14 years ago

Okay, thank you.

Ferk commented 14 years ago

You could use XMPP, it's open source, federated and very extensible, perfect for an online game, IMHO,.

It also allows you to be at the same time connected in the game and in any other XMPP chat client simultaneously with the same account (which msn and other protocols in pidgin don't support). You could retrieve the XMPP nickname and avatar and use them in the game for the players. If you use pidgin then it will be hard to tell what's the IM address of each player, better to support one unique xmpp address. You could even use it as a base for the login procedure, that way you won't require users to register if they already have a xmpp account.

It's also the protocol that both Google Talk and Google Wave uses, Facebook said their were going to support it too in the future. However, it's an agnostic protocol that doesn't belong to any company but it can interoperate with all (it's possible to open gateways to comunicate with msn users from it, for example), and it's a network of independent decentralized servers.

There's also an extension to the protocol specifically designed for showing the song the contact is listening, or the game the contact is playing, you could put in the game info any data you want to (it's xml format) like the map, url of the server the map is in, etc (You could add the game and map as an user activity: XEP-0108 http://xmpp.org/extensions/xep-0108.html which is an implementation of XEP-0163 http://xmpp.org/extensions/xep-0163.html ).

There are also some Python libraries that already implement XMPP:

The two first ones are probably the most mature, the last two probably don't support XEP-0163 and 0108