Difference between revisions of "GSoC-ShareUndoableMovesWithAllies Gabba"

From The Battle for Wesnoth Wiki
Line 1: Line 1:
 +
'''Note: this proposal is obsolete and has been replaced by http://wiki.wesnoth.org/GSoC-WesnothWhiteboard_Gabba'''
 +
 
=Description=
 
=Description=
 
<h3>Gabba - Share Undoable Moves with Allies</h3>
 
<h3>Gabba - Share Undoable Moves with Allies</h3>

Revision as of 22:54, 27 March 2010

Note: this proposal is obsolete and has been replaced by http://wiki.wesnoth.org/GSoC-WesnothWhiteboard_Gabba

Description

Gabba - Share Undoable Moves with Allies

To reduce waiting tedium in coop multiplayer games, I want to add an option called Share undoable moves with allies. It would allow you to see your ally's moves exactly as if you were staring at the same screen while he plays his turn. Net effect: you don't wait forever for something to happen, you don't sit through a replay and make others wait in the meanwhile, and you can actually shout to your ally on skype "NO idiot, don't move your white mage there!" before it's too late.

About Me

See http://wiki.wesnoth.org/User:Gabba.

Project

To put things in context, this idea was already discussed

before it ended up as this formal GSoC proposal.

Main idea: Share undoable moves with allies

Currently when playing a coop game (either RPG or more standard multiplayer campaign), there are several things that really irk me when it's not my turn:

  • You wait a long time before seeing anything happening
  • When your ally who's taking his turn finally attacks an enemy or makes another non-undoable move, you have to sit through a delayed replay of his moves. If he already finished his turn, your ally has to wait while you watch this.
  • After a few undoable moves by either allied player, communication is completely out of sync. If you tell your ally, "look, I'm encircling his leader", he has no clue what you're talking about: he doesn't see what you're doing. If your ally asks you "should I move my white mage here to heal you units next turn", you 1) have no clue about which hex "here" is supposed to mean 2) even if you did, you can't adequately counsel him, since you don't see how he positioned his other units

I think the reasonable solution is simply to add an option called Share undoable moves with allies. Both you and your ally need to enable it for it to work. If you both have it enabled, what it does is it shows you your allies' moves exactly as if you were staring at the same screen while he plays his turn. Net effect: you don't wait forever for something to happen, you don't sit through a replay and make others wait in the meanwhile, and you can actually shout to your ally on skype "NO idiot, don't move your white mage there!" before it's too late.

Extra details

When sharing undoable moves, some mild confusion might happen when you ally undoes a move: if you're not paying attention (after all the unit just changed from "red" movement status to "yellow" or "green" orb), you might think you're witnessing a move instead of an undo. This is why extra visual clues would be needed in that mode, possibly just a red UNDO text that floats up from the unit, or alternate red footsteps symbols that the unit gobbles up backwards as it goes back to its previous location.

For the true "over the shoulder" experience, I think this option should show you everything, down to the attack dialogue your ally gets when he attacks an enemy. This way you can discuss which attack he should use, while you both see the attack stats and odds. Same thing for the recruit and unit upgrade dialogues. All those would make for a more interesting coop experience, and would be especially good for teaching newbs to the game. Oh yeah, and those chargen menus from Bobs' RPG era and the like would also fall in this category: help your friends choose their class and starting items instead of staring blankly at the screen.

Optional, secondary idea: Share undoable moves with enemies

I don't expect this second idea to be very popular, but the thing is: if the first one is implemented, this one will almost be free to implement. So I might as well implement it, too. A "Share undoable moves with enemies" option would simply show your opponents all your moves as you do them, even those that can be undone. It does remove some waiting boredom, like the first option. It would be useful when you want to play chess-style (where a moved piece is a moved piece, no undo), but without fiddling with the scenarios options to disable undo. And contrary to a fixed scenario option, it allows you to still agree on "friendly undos" from time to time: "this was too stupid, can I move it back?" --"Sure, go ahead". A second use is when you just don't care if the opponent can read your mind by seeing your every move, either because your skill level is greatly superior, or the game is very casual (i.e. you're playing with your younger brother), and you just want to make the game less boring by minimizing the waiting factor. Sharing undoable moves from enemies would probably make "delay shroud updates" useless, but after all they are somewhat incompatible ideas.

Preliminary work: Allow players to set gotos when it's not their turn

Boucman suggested that I use this smaller and somewhat related task as an entry point into the code, so that's what I'm gonna do. The description below is copy-pasted from the mailing list, and will be cleaned up and updated as I solve various design issues.

The idea is to use the current "goto" system to help players move units during other player's turn.

If we allow players to set gotos for their units during other people's turn and not autoplay goto at begining of turn (gotos would be executed only when the unit is selected and the shortcut is pressed) we allow players to think their move early and have a quick review process at the start of their turn (next unit, review position, execute or cancel goto, next unit...)

This causes no network traffic, is only an ergonomical change, and should make the out of turn period more usefull.

There might need some changes to the display to see all units gotos at the same time or something. This idea is not complete at this point.

Milestones and Calendar

  • To get familiar with the code, implement a way for players to set gotos when it's not their turn.
    • Deadline: June 1st (I've already started on this.)
  • Implement the Share undoable moves with allies option, allowing a player to see his allies' moves.
    • Deadline: July 1st
  • Work out integration issues, and implement the Share undoable moves with enemies option
    • Deadline: July 16 (Mid-term evaluation)
  • Final Tests and debugging, and solve any remaining issues
    • Deadline: August 9
  • If some there is time left, add visual cues to the allies/enemy moves view, to better distinguish undos from regular moves.
  • If there is extra extra time, poke at the possibility of displaying on your screen the dialogues your ally sees during his turn.