Arimaa Forum (http://arimaa.com/arimaa/forum/cgi/YaBB.cgi)
Arimaa >> Site Discussion >> Working on new interface, would like feedback
(Message started by: thomastanck on Mar 23rd, 2013, 6:31am)

Title: Working on new interface, would like feedback
Post by thomastanck on Mar 23rd, 2013, 6:31am
Abstract: The current mouseover and click interface is difficult to use, being the reason for many misclicks. To facilitate play for superblitz (4s/move) and superlightning (2s/move) games, we shall investigate and implement a hybrid interface using both the mouse and keyboard that is hopefully faster, more reliable, and most importantly, easier to use.

Old design by thomastanck: https://dl.dropbox.com/u/17117351/interfacedesign.txt
New design by thomastanck and clyring: https://docs.google.com/document/d/17B-QJnoGpYf5_ASsW9wLYoeJqRepfDK2waffZYmE6iw/edit?usp=sharing

If you have any questions, please ask! Especially if you don't know how to perform a certain move using my proposed interface; just give me a position and a move and I'll translate. If you feel that there should be a shortcut or exception for a certain move sequence, please put that in with a position and a move as well.

More importantly, discuss! I'm not sure that this interface is the best right now, and I only have 1 problem in my problems list.

Finally, I'm very busy right now, but I'm still putting some time into this every day. If anyone wants to help me, or take up the challenge and implement this him/herself, feel free.

P.S. The example position was very badly chosen so one of the sample interactions could not be done, and I left that as TODO. More reason for you to reply with different positions containing moves that I may have overlooked.

TODO LIST
1) Implement Core code
2) Implement UI code
3) Premove
4) Drag and Drop UI code
5) Drag and Drop Flipping & Long range Movement

Title: Re: Working on new interface, would like feedback
Post by Boo on Mar 23rd, 2013, 10:12am
You might consider stealing a premove idea from chess:

http://support.chess.com/Knowledgebase/Article/View/109/13/what-are-premoves-and-how-do-they-work

Title: Re: Working on new interface, would like feedback
Post by clyring on Mar 23rd, 2013, 10:14am
Being able to continue entering steps while moving the mouse over to the next piece to be moved would be nice and would definitely save precious time in really fast games, but would definitely take some getting used to. I really like that idea, but feel like it could be implemented somewhat better still than what has been described.

-It is probably a bit easier to work with when both push and pull steps have the enemy piece being moved as the active piece.
-There should of course be a keyboard shortcut for submitting a move. Perhaps X would be fine for this?
-Edge-clicking to enter steps: Maybe not as important with the keyboard controls, but I would consider it a nice  feature to be able to enter moves with only the mouse in this way. It would also slightly speed up moves made with the keyboard since the click to select an active piece would also be making that piece's first step.

More on the first point (by example, as in your text-dump): Consider the position with just Ee6 Dd7 De7 cd6  from gold's perspective. To move the elephant, just click on one of the edges next to the elephant leading to a vacant square (In this case e5  and probably not f6!:P) and then use WASD to move it further if needed (or more edge-clicking, whichever). To push the cat into the c6 trap, click on the edge between c6 and d6, then use A to push with the elephant or S to push with the dog. To pull then push the cat into the f6 trap, click on the edge between the elephant and the cat to make the cat the active piece and indicate the start of a pull, then press S or click the appropriate edge to complete the pull, with the cat remaining the active piece. Then press D or click the appropriate edge to start the push and press W to complete the push with the elephant or S to complete it with the dog, then press X to send the move. (For a grand total of: Click d6|e6, press SDW(X) or SDS(X))

Title: Re: Working on new interface, would like feedback
Post by thomastanck on Mar 23rd, 2013, 10:31am

on 03/23/13 at 10:12:04, Boo wrote:
You might consider stealing a premove idea from chess:

http://support.chess.com/Knowledgebase/Article/View/109/13/what-are-premoves-and-how-do-they-work


Thank you. I'll put it last on my TODO :P
But seriously, I didn't think.


on 03/23/13 at 10:14:25, clyring wrote:
Being able to continue entering steps while moving the mouse over to the next piece to be moved would be nice and would definitely save precious time in really fast games, but would definitely take some getting used to. I really like that idea, but feel like it could be implemented somewhat better still than what has been described.

-It is probably a bit easier to work with when both push and pull steps have the enemy piece being moved as the active piece.
-There should of course be a keyboard shortcut for submitting a move. Perhaps X would be fine for this?
-Edge-clicking to enter steps: Maybe not as important with the keyboard controls, but I would consider it a nice  feature to be able to enter moves with only the mouse in this way. It would also slightly speed up moves made with the keyboard since the click to select an active piece would also be making that piece's first step.

More on the first point (by example, as in your text-dump): Consider the position with just Ee6 Dd7 De5 cd6  from gold's perspective. To move the elephant, just click on one of the edges next to the elephant leading to a vacant square (In this case e7  and probably not f6!:P) and then use WASD to move it further if needed (or more edge-clicking, whichever). To push the cat into the c6 trap, click on the edge between c6 and d6, then use A to push with the elephant or S to push with the dog. To pull then push the cat into the f6 trap, click on the edge between the elephant and the cat to make the cat the active piece and indicate the start of a pull, then press S or click the appropriate edge to complete the pull, with the cat remaining the active piece. Then press D or click the appropriate edge to start the push and press W to complete the push with the elephant or S to complete it with the dog, then press X to send the move. (For a grand total of: Click d6|e6, press SDW(X) or SDS(X))


-Consistency is good. I'll take it
-Spacebar is the send shortcut
-Edge-Clicking is a great idea, but I'll be implementing this as an option. Personally I'm VERY fumbly with the mouse, and would continue to misclick edges :P

Thank you for the example, it was what allowed me to understand at all.

Title: Re: Working on new interface, would like feedback
Post by Boo on Mar 23rd, 2013, 10:58am

Quote:
eb6s Ma6e Mb6e eb5n: ClickA6 D S ClickB5 W D (ClickA6 D ClickANY D) (Pull/Push compound. very common capture move)

This is a camel flip. I don't think 2 mouse clicks and 4 keyboard clicks are faster than camel drag-drop Ma6-->Mc6. I think introducing drag-drops for flipping and long range moving like

Quote:
cf7w ce7s ce6s ce5s: ClickF7 A S S S         (move single piece)

is worth attention.

Title: Re: Working on new interface, would like feedback
Post by thomastanck on Mar 23rd, 2013, 12:55pm

on 03/23/13 at 10:58:33, Boo wrote:
This is a camel flip. I don't think 2 mouse clicks and 4 keyboard clicks are faster than camel drag-drop Ma6-->Mc6. I think introducing drag-drops for flipping and long range moving like
is worth attention.


Yes, thanks for reminding me.

I have updated the OP with a new link and my TODO list.

Title: Re: Working on new interface, would like feedback
Post by harvestsnow on Mar 24th, 2013, 2:14pm

Quote:
To move the elephant, just click on one of the edges next to the elephant leading to a vacant square (In this case e5  and probably not f6!) and then use WASD to move it further if needed


I added something like this to the tampermonkey script I presented in the other thread (http://arimaa.com/arimaa/forum/cgi/YaBB.cgi?board=siteIssues;action=display;num=1363906756). Just change "WASDMOVES = true;" to test it.

The original client code is not modified, I just check where the good arrow is displayed and click() on it when the corresponding key is pressed. You'll have to click on the piece once first, then use WASD for all the moves.

The eventOverSquare function is reset, so the arrows will be displayed when you click on the piece but not when you mouve over it.
It would be possible to keep it but then the cursor will have to stay on the original square until the piece finishes its move. Otherwise the command will target the wrong square.
Keeping all the functionnalities of the client and adding this one would require patching the eventClickSquare function, I think.

Title: Re: Working on new interface, would like feedback
Post by thomastanck on Mar 24th, 2013, 6:34pm
Hey harvestnow,

Do you mind implementing the rest too? I already have pseudocode written in the doc. I'm much less familiar with the code than you are, so you'll probably get it done faster. I don't really mind how you do it exactly, but you can ask me for more details if you want.

Title: Re: Working on new interface, would like feedback
Post by harvestsnow on Mar 25th, 2013, 2:23pm
In fact, what I did has little to do with either of your systems I shouldn't even have quoted clyring since he was talking about something else... It's just a bunch of shortcuts added to already existing mechanics: you press a key instead of clicking an arrow. I'm not sure if it's even faster than the original.

Your suggestion is much more ambitious, since it basically requires to rewrite the whole logic. I might look into it, but I don't promise anything.

If we were to rewrite a new client from scratch, maybe I would favor a system where you can move any piece the way you want. Before sending the move, the code checks that the created position is a valid one (by generating all the possible moves, or with a more clever method). If it is valid, send a move that produces it, otherwise reset the position. I think that would be the easiest way to make a drag-and-drop system work, or to allow moving the pulling and the pulled pieces separately. You might lose some time when you make a mistake, but you're playing at superblitz anyway, so hopefully you know what you're doing.



Arimaa Forum » Powered by YaBB 1 Gold - SP 1.3.1!
YaBB © 2000-2003. All Rights Reserved.