Lobby protocol and other lobby related stuff

Ideas and suggestions for how to improve the Warzone 2100 base game only. Ideas for mods go in Mapping/Modding instead. Read sticky posts first!
User avatar
Emdek
Regular
Regular
Posts: 1329
Joined: 24 Jan 2010, 13:14
Location: Poland

Lobby protocol and other lobby related stuff

Post by Emdek »

After discussion with [dark]_Continue on IRC I've decided to gather all interesting lobby protocol (or API) related ideas (not all are mine) in one topic.

First and most important thing (supposed to be "main thread" of this thread ;-)):

Public lobby API / protocol
This would allow (after some toying with game GUI) to specify custom lobbies to use (for example for private clan games or when main server fails) by specifying URL (including port and optional password like key maybe) for alternative server, there should be button to restore default or list box (combo box) to choose between default and those added by user (we could have ability to add few, favorite ones). At least option to overwrite those data in settings file (which is probably possible already).
I dismiss possible idea of using current lobby to register others (only as possible source to get URLs, but not as requirement) since it can fail (sometimes servers go down for various reasons, or are not available due to DNS failures or filters), I've seen that often in games like OpenArena.
This would allow wz to talk wit arbitrary server using for example HTTP queries, also my lobby games list gadget would tak advantage of it.
For sure it already exists in some form, sine game is able to query that data. ;-)
It's about creating public documentation for it (or maybe there already is something?) and allow to replace main server by custom ones.

GUI less dedicated server
Instance of Warzone to be used as dedicated server, without game GUI and controlled by command line and / or through native GUI dialog (Qt based).
This is related to lobby ideas since having first point done then it could act also as "local" lobby server, especially if it would be able to run more than one game in parallel (using different ports for example).
It depends on how much game mechanics (like calculating projectiles routes etc.) are tied to OpenGL etc.
In worst case it could simply run "invisible window" or don't render at all (depends how much could be disabled to not break gameplay for clients).
It is related to spectator mode since host would act as one internally.

Lobby chat
Adding simple polling based chat or using more advanced stuff like client listening to events send from server (like in AJAX) to lobby, using common API (I could add it that gadget too).

Make real use of forum credentials implemented in master
This is planned in some form but since I don't know details I'll describe own vision.
Main use case would be to store statistics on central server (through generic API, we could query particular lobby server to check if it supports saving that data) so ranks could be reliable finally (except of cases when someone uses alternate accounts to login).
After connecting to lobby (using common API / protocol) we could query it to check if it requires credentials (forum credentials in case of current server) and if needed display form to input them and ask if we want to have saved them (some might prefer to relogin everytime, for security reasons). In case of current lobby we would need to have additional SQL database to store statistics. It could be still fooled (only real solution would be some signing of sent data or preferably dedicated servers acting as lobbies, also using public / private keys for authentication) but much less easily.
Additionally, forum login would be forced only when connecting to main server, no more logging in to join private games bypassing lobby.

Thats all for now. :-)
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.


Beware! Mad Qt Evangelist.
User avatar
aubergine
Professional
Professional
Posts: 3462
Joined: 10 Oct 2010, 00:58

Re: Lobby protocol and other lobby related stuff

Post by aubergine »

I saw in another thread that some players might want to login as themselves, but use a different nick in the lobby so that people they regularly play against (and therefore know their tactics) will not be so sure about how to beat them. IMHO if this is done there should be indication that the nick being used isn't real nick from forums, ie. it's an alias.
"Dedicated to discovering Warzone artefacts, and sharing them freely for the benefit of the community."
-- https://warzone.atlassian.net/wiki/display/GO
User avatar
effigy
Regular
Regular
Posts: 1217
Joined: 22 Jan 2010, 03:21

Re: Lobby protocol and other lobby related stuff

Post by effigy »

Emdek wrote:...
Make real use of forum credentials implemented in master
This is planned in some form but since I don't know details I'll describe own vision.
Main use case would be to store statistics on central server (through generic API, we could query particular lobby server to check if it supports saving that data) so ranks could be reliable finally (except of cases when someone uses alternate accounts to login).
After connecting to lobby (using common API / protocol) we could query it to check if it requires credentials (forum credentials in case of current server) and if needed display form to input them and ask if we want to have saved them (some might prefer to relogin everytime, for security reasons). In case of current lobby we would need to have additional SQL database to store statistics. It could be still fooled (only real solution would be some signing of sent data or preferably dedicated servers acting as lobbies, also using public / private keys for authentication) but much less easily.
Additionally, forum login would be forced only when connecting to main server, no more logging in to join private games bypassing lobby.

Thats all for now. :-)
Forum credentials were required for multiplayer not long before the 3.1 betas. I suspect at least some of these things were planned.
This is why some features aren't implemented: http://forums.wz2100.net/viewtopic.php?f=30&t=7490&view=unread#p87241
User avatar
effigy
Regular
Regular
Posts: 1217
Joined: 22 Jan 2010, 03:21

Re: Lobby protocol and other lobby related stuff

Post by effigy »

aubergine wrote:I saw in another thread that some players might want to login as themselves, but use a different nick in the lobby so that people they regularly play against (and therefore know their tactics) will not be so sure about how to beat them. IMHO if this is done there should be indication that the nick being used isn't real nick from forums, ie. it's an alias.
Agreed.
This is why some features aren't implemented: http://forums.wz2100.net/viewtopic.php?f=30&t=7490&view=unread#p87241
User avatar
Emdek
Regular
Regular
Posts: 1329
Joined: 24 Jan 2010, 13:14
Location: Poland

Re: Lobby protocol and other lobby related stuff

Post by Emdek »

effigy, yes, I've seen how it worked, I know why it was removed and this is main inspiration for that part. ;-)
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.


Beware! Mad Qt Evangelist.
User avatar
aubergine
Professional
Professional
Posts: 3462
Joined: 10 Oct 2010, 00:58

Re: Lobby protocol and other lobby related stuff

Post by aubergine »

Could some sort of OAuth approach be used - so you could register your Warzone app with wz2100.net or the lobby (in much the same way you register a twitter client with twitter.com, or an app with facebook.com)?
"Dedicated to discovering Warzone artefacts, and sharing them freely for the benefit of the community."
-- https://warzone.atlassian.net/wiki/display/GO
User avatar
Emdek
Regular
Regular
Posts: 1329
Joined: 24 Jan 2010, 13:14
Location: Poland

Re: Lobby protocol and other lobby related stuff

Post by Emdek »

aubergine, maybe, that is implementation detail. ;-)

We need first consensus if we really want such features.
Nadszedł już czas, najwyższy czas, nienawiść zniszczyć w sobie.
The time has come, the high time, to destroy hatred in oneself.


Beware! Mad Qt Evangelist.