Multiplayer improvements.

Brainstorm ideas of possible additions to the game. Read this before posting!

Moderator: Forum Moderators

Forum rules
Before posting a new idea, you must read the following:
User avatar
governor
Posts: 267
Joined: December 8th, 2006, 12:32 am

Multiplayer improvements.

Post by governor »

Viewing replays:

To improve user experience for observing multiplayer games a playback slider (or corresponding group of controls) to increase or decrease the playback of the game turns. Quick replays are generally too fast, and not having this option set is too slow. By making these controls (and perhaps all other controls) multithreaded there will be no lag as there is in accessing the menu.

Spying cheat:

This is close to a bug but not really a bug: It is possible for players to open up a second process of BfW and observe a game they are playing in order to cheat (i.e. learn race, units, and positioning of enemies when there is shroud and/or fog). It would be nice if the development crew could find a resolution to this flaw. Or is this a tactic that was included on purpose by accident and so it is a feature? =)

Server interface:

The multiplayer server window can use some organization. First off I would like to propose three tabs. "Open Games", "Games in Progress", and yes, "Games in Progress With QUITTERS". This has its obvious advantages most notably is the simplicity for newcomers.
Yogibear
Retired Developer
Posts: 1086
Joined: September 16th, 2005, 5:44 am
Location: Hamburg, Germany

Post by Yogibear »

Replays:
I am afraid, but i don't think there is anything beneath "all or nothing" for speeding up replays. In fact, the speed is made up by skipping all graphics updating until a side turn is completed. Of course you could just put a pause in but that is probably not what you are looking for.

Spying:
Yes, this is a problem, it is unfair and not intended. However, i don't see a way to overcome it. We might prevent multiple connections from the same ip address but that would mean you couldn't put more than one person behind a router. There is no reliable way to detect, if someone gets in for cheating or not.
If you suspect you are being treated unfair, you could disallow observers, though.

Server interface:
In general, a nice idea. I am not sure, though, how you qualify "quitters". Because there is no way to tell if someone actively quit or disconnected. If you just refer to games with open slots, that is ok. If you want to judge players, it is not. That has nothing to do with ethics, it is technically not possible to determine reasons for someone leaving a game.
Smart persons learn out of their mistakes, wise persons learn out of others mistakes!
User avatar
Gafgarion
Posts: 607
Joined: February 26th, 2004, 10:48 pm

Post by Gafgarion »

Yogi Bear wrote:Spying:
Yes, this is a problem, it is unfair and not intended. However, i don't see a way to overcome it. We might prevent multiple connections from the same ip address but that would mean you couldn't put more than one person behind a router. There is no reliable way to detect, if someone gets in for cheating or not.
If you suspect you are being treated unfair, you could disallow observers, though.
In the highly unlikely event that anyone is actually considering how to effectively prevent "spying", I fervently recommend not trying to design/implement a system to prevent this.
The only effective ways to do this would be a.) Rewriting the multiplayer code from scratch to deal with this, or b.) Allow only one connection per IP to a game.

Option A is totally impractical and Option B would ruin Wesnoth multiplayer. Wesnoth is widely played in LAN, Hotseat and direct connect (where one connection per IP would be instant death to these), and many friends connect to the official server on the same network. Any attempt to regulate Wesnoth multiplayer with arbitrary "tournament-style" rules like that would alienate a large part of the community.

I'm not one to compare Wesnoth to other games, but I cannot think of any game offhand that tries to stem spying... They just give you a checkbox to disable observers (just like Wesnoth).
-Gafgarion
Elvish Pillager wrote:Normal Trolls use clubs, not ostriches.
"Language is the source of misunderstandings." -Antoine de Saint-Exupéry
Rhuvaen
Inactive Developer
Posts: 1272
Joined: August 27th, 2004, 8:05 am
Location: Berlin, Germany

Post by Rhuvaen »

Yogi Bear wrote:Replays:
I am afraid, but i don't think there is anything beneath "all or nothing" for speeding up replays. In fact, the speed is made up by skipping all graphics updating until a side turn is completed. Of course you could just put a pause in but that is probably not what you are looking for.
Are the side turns an obvious "pause and redraw" step due to the way the networking/replay/game state code works? Because I think they have no real meaning for the observer. Actually, all interesting action happens within a turn, not in the state between turns.

If it was at all possible, it would be interesting to do "pause and redraw" whenever a unit is killed (maybe even with a full attack animation - allowing the observer to actually focus on what's happening now). That would make the replays more informative to watch, and you don't miss important events like one leader dying in a 2v2.
Yogibear
Retired Developer
Posts: 1086
Joined: September 16th, 2005, 5:44 am
Location: Hamburg, Germany

Post by Yogibear »

Rhuvaen wrote:Are the side turns an obvious "pause and redraw" step due to the way the networking/replay/game state code works? Because I think they have no real meaning for the observer. Actually, all interesting action happens within a turn, not in the state between turns.

If it was at all possible, it would be interesting to do "pause and redraw" whenever a unit is killed (maybe even with a full attack animation - allowing the observer to actually focus on what's happening now). That would make the replays more informative to watch, and you don't miss important events like one leader dying in a 2v2.
Redrawing after side turns is just for letting you know where you are. It is not necessary at all. Graphical actions during quick replay are controlled by a flag, which allows to show / hide even single actions. So what you proposed shouldn't be too difficult.
Smart persons learn out of their mistakes, wise persons learn out of others mistakes!
User avatar
Sapient
Inactive Developer
Posts: 4453
Joined: November 26th, 2005, 7:41 am
Contact:

Re: Multiplayer improvements.

Post by Sapient »

governor wrote: Spying cheat:

This is close to a bug but not really a bug: It is possible for players to open up a second process of BfW and observe a game they are playing in order to cheat (i.e. learn race, units, and positioning of enemies when there is shroud and/or fog). It would be nice if the development crew could find a resolution to this flaw.
Maybe if we increase the memory and processor usage enough, this cheat will become impractical. ;)
http://www.wesnoth.org/wiki/User:Sapient... "Looks like your skills saved us again. Uh, well at least, they saved Soarin's apple pie."
Yogibear
Retired Developer
Posts: 1086
Joined: September 16th, 2005, 5:44 am
Location: Hamburg, Germany

Re: Multiplayer improvements.

Post by Yogibear »

Sapient wrote:Maybe if we increase the memory and processor usage enough, this cheat will become impractical. ;)
:shock: :D
Smart persons learn out of their mistakes, wise persons learn out of others mistakes!
Soliton
Site Administrator
Posts: 1684
Joined: April 5th, 2005, 3:25 pm
Location: #wesnoth-mp

Post by Soliton »

A key element to preventing spying is to not give the client full information about the game like we do now. This however is most likely quite much work to implement right for little gain. Not to mention the performance implications to the server which might be really tricky to handle.
"If gameplay requires it, they can be made to live on Venus." -- scott
User avatar
governor
Posts: 267
Joined: December 8th, 2006, 12:32 am

What was meant by quitters - and further details

Post by governor »

Games with quitters could be games in progress that could use another human player. (IE. a person quit for w/e reason and the side is being controlled by an ai.) The turns the ai (or local player) has controlled the original side could be displayed in the lobby to either encourage or discourage human players to join the game. (I.E. a side controlled by an ai for more than maybe 5 turns may be too far gone for a human player to spend his time on trying to win the game).

As for spying, the quickest solution would be to make BfW a single instance application. This is not my favorite option. I am more for an option that allows each player the option to enable/disable his side from being observed. IE, side 3 is paranoid (or has reason to suspect spying) and disables the observer flag, so that observers cant observe from his perspective. After a set number of turns this may automatically be disabled since the utility of spying is only most advantageous in the early game.

Getting back to replays. I was thinking of it as watching without pauses, on a high end computer the quick replay is too fast to be sensible. 5 turns in 10 seconds where 50 units move is hard to grasp. Also, if you were accidently dropped and had to reconnect you are forced to watch the entire replay. Certain events should be weighted accordingly. IE, focus on attacks and not movements w/o combat. But allow me to propose a much more in depth replay.

Henceforth the reviewer is the one watching the replay.

1. Reviewer can skip the replay.
2. Before and after each side moves, the reviewer is prompted to pause the replay in order to freely scan the field and review a sides moves or possible moves. An option can exist to skip the chance before and/or after turn.
3. When reviewing a sides turn: Instead of drawing before and after locations, all units that attacked get a red arrow pointing to the direction they attacked. All units that moved are highlighted in blue. (A units that moved to attack is blue and with red arrow). Placing the cursor over a moved unit can give the coordinates of its position before it moved. And placing the cursor over a unit that attacked can give battle stats such as the enemy it attacked, dmg given/taken, odds of doing so (an evaluation of statistics IE. 0/3 hits at 70% could be classified as unlucky.)
4. When watching the replay the reviewer can tab to see the server lobby. And scan for open games.

I will get more ideas I bet. Love this game, maybe I will join the developers.
Becephalus
Inactive Developer
Posts: 521
Joined: October 27th, 2005, 5:30 am
Location: St. Paul, Minnesota, USA, Earth

Post by Becephalus »

ANother problem with single IP is that I notice many playrs have connection problems. Often their alternate selves will linger for quite some time while they have relogged on. They would not be able to relog on if there was only 1player per ip.

Overall i just dont see cheating as a problem in wesnoth. No one cares enough, and people who would cheat aren't invited to games.
There are three roads to ruin: by gambling, which is the quickest; through women, which is the most pleasurable; and through taking the advice of experts, which is the most certain. -de Gaulle
SkeletonCrew
Inactive Developer
Posts: 787
Joined: March 31st, 2006, 6:55 am

Re: What was meant by quitters - and further details

Post by SkeletonCrew »

governor wrote:As for spying, the quickest solution would be to make BfW a single instance application. This is not my favorite option.
If you mean with single instance what I think you mean, thus only one game of wesnoth at the same time at the same machine, I'm against it. (Ignoring the technical issues.) While developing I run 2 or more instances every now and then so this proposal would make it harder for me to develop which is a bad thing.
User avatar
Baufo
Inactive Developer
Posts: 1115
Joined: January 29th, 2006, 4:53 pm
Location: Vienna, Austria

Re: What was meant by quitters - and further details

Post by Baufo »

SkeletonCrew wrote:
governor wrote:As for spying, the quickest solution would be to make BfW a single instance application. This is not my favorite option.
If you mean with single instance what I think you mean, thus only one game of wesnoth at the same time at the same machine, I'm against it. (Ignoring the technical issues.) While developing I run 2 or more instances every now and then so this proposal would make it harder for me to develop which is a bad thing.
I agree. I also use two or more clients often to test MP scenarios.
I was working on the proof of one of my poems all the morning, and took out a comma. In the afternoon I put it back again. -- Oscar Wilde
Boucman
Inactive Developer
Posts: 2119
Joined: March 31st, 2004, 1:04 pm

Post by Boucman »

and single instance has always been designed as a usability feature, not a security feature => anyone who really wants can easily bypass it anyway

(in linux, using a chroot or loging as a different user would probably do the trick)

not even mentionning portability issues
Fight key loggers: write some perl using vim
joshudson
Posts: 501
Joined: January 17th, 2006, 8:04 pm
Contact:

Post by joshudson »

Besides, one could just examine the savefiles at any point to see what units the opponent recruited. Even if binary saves is on, strings will tell you what units.
CHKDSK has repaired bad sectors in CHKDSK.EXE
SkeletonCrew
Inactive Developer
Posts: 787
Joined: March 31st, 2006, 6:55 am

Post by SkeletonCrew »

joshudson wrote:Besides, one could just examine the savefiles at any point to see what units the opponent recruited. Even if binary saves is on, strings will tell you what units.
Converting binary saves to normal saves is rather trivial :)
Post Reply