Any idea for targetting?

As mentionned in some comments on previous posts, I am not happy with the use of the middle mouse button to target cards.

Because there are two kind of people, who can’t comfortably use the middle button:

  • Those without a middle button (think cheap mouses, laptops)
  • Those with a very high tech mouse, so much high tech that dragging with the middle button is very hard to do. (Believe it or not I now fall into this category. My middle button is at the same time a wheel, a middle button, and can be pushed to the right or to the left – don’t ask me what this actually does. But the result is that everytime I press the middle button I end up pushing left or right and everything goes nuts)

So, middle button being unusable to target, I need a replacement. I don’t really like keyboard modifiers (shift, alt, ctrl) because they aren’t discoverable. If you don’t know about them, you probably won’t find them out by yourself. Of course there is a user manual, but who read those anyway (seriously)? 

My initial idea was to have some kind of button appear on (or next to) the card when the mouse cursor is over it. It is not intrusive (since the button is invisible when your mouse is not on a card) and you can’t miss the feature. I was extremely happy with the idea until I tried to code it. Two usability problems arose:

  • Animations, different zoom levels, rotated cards… All of those interfer with the button placement. But it’s not too bad, there usually is a way to compensate and still keep a coherent user interface. The biggest problem is number two;
  • Very often cards are on top of one another (on the table and in your hand). And this is very annoying.
    Do I put the button on top of everything or at the same level as the card? If you put it at the same level as the card, it potentially gets obscured by an overlapping card. Which means you can’t click it, which implies you can’t target the card, which is bad.
    So you put it on top of everything. But having the button to target card A appear on card B is very confusing for the user. Even worse: when I move my mouse to the button I have to go over card B… which makes the button disappear and instead the targetting button for card B appears. Confusing and I still can’t manage to target my card!
    I can hear the most clever amongst you: why not find a space on the card which is not overlapped! E.g. there’s one easy spot: the point where the mouse is! First, this makes the button appears at a different place each time, which is very confusing (some people have been confused by the big card view, although there is a very logical rule to its placement). Second, sometimes there is no place big enough for the button to fit and the result may just be ugly. And third, if you consider making the button appear under the mouse it’s a bad idea because it gets in the way of the most common operation: drag a card.

I have to admit I don’t have a good idea for an easy-to-use, nice and discoverable interface to target cards.

Currently, I’m back to using the left mouse button + holding Shift. It’s easy to use, the only thing I don’t quite like is that it’s not discoverable. But it’s not a blocking issue so I may get over it. Playing a card face down will probably use Shift as well anyway, since it’s hard to come up with a nice idea that doesn’t get in the way of playing a card normally (the most common operation).

Does anyone have an idea?

PS: oh, and this brings us down to 13 or 12, depending on whether you consider the targetting issue fixed or not. (If you don’t know what I’m talking about, you may want to read the previous post)

Explore posts in the same categories: OCTGN.net

17 Comments on “Any idea for targetting?”

  1. Yarias Says:

    Is depressing both the left and right mouse buttons being used for anything?

    This probably isn’t very discoverable either…

  2. jods Says:

    Using both buttons simultaneously is not used currently.

    And giving how uncommon this is, I can say it surely won’t be used in O2 😉

  3. zensho Says:

    Those are good reasons to try to incorporate something other than a middle mouse button, but as someone with a perfectly good middle mouse button on my mouse, I was wondering if middle mouse button functionality will still be included as an alternative.

  4. warlock Says:

    I was happy with being able to use the middle mouse in previous versions for targetting.

    Why not just allow the user to define their own keybinds for whatever functions they need?

  5. TrekkieGod Says:

    Hey jods,

    I’ve discovered your project last thursday, and have been playing a bit with the code. I’m extremely impressed with everything about it, it’s quality work.

    While creating and testing a new type of game for octgn, I found a slight bug that I didn’t see mentioned in any of the previous posts, and the fix seems to be pretty simple. When you place a card on the table face down (by holding the shift button), and turn it face up, the card image won’t appear to the other players (they’ll see the turn animation, but the back of the card will still be shown). On your own screen, the behavior is correct.

    I fixed it by adding:
    if(card.FaceUp && (card.Type.model == null))
    card.Reveal();
    to Turn.cs, line 18. There might be another way that you prefer to fix this, but I haven’t quite gotten the handle of your anti-cheating protocol yet (in fact, the next thing I’m trying to tackle is to find a way to look through your draw pile, since certain cards in the game give that ability. The anti-cheating thing is getting in the way. Any recommendations on how I should go about doing this, or what I should look at would be appreciated).

    I’ve also added some code that has the CardViewer display the front of the card when hovering over face down cards the player controls. It was a pretty simple feature to add, so I guess you have plans to implement peeking at cards in a different way. Let me know if I can help with that.

    Oh, and just to have this post be somewhat on topic…I agree with zensho that the middle button is a good interface for those of us with good middle buttons. I also have a laptop, so I see the usefulness in having another method. I’d keep both bindings (and eventually move to warlock’s recommendation, but that shouldn’t be a priority until other more necessary features are implemented).

  6. LTG Says:

    I don’t think I understand the question. Are you looking at a way to indicate that a card is targeted, or looking for a way to indicate that a cards is targeted BY another card?

    How about double click your card then drag a line to the ‘targeted’ card?

    Otherwise, I would prefer the middle mouse button. Wasn’t a feature of the alpha & beta versions of this that targetting could be id’d as f7? That’s not exactly discoverable, unless you have a dropdown menu for right click. Have you posted something about the right-click menu yet?

    Another random idea is that you could have scrolling tips at the bottom of the screen, defaulting ‘on’ when you begin the program. Advanced users could turn it off via ‘options’, but it would allow you to have things like “Shift click to play face down” and “double click on a card you don’t control to target it” or whatever

  7. Fork Says:

    Some people have trackball, or a touchpad, a high tech mouse, and as for keyboard some have split keyboard, with dvorak layout, etc… the interfaces people use are numerous but they are individual for every people.

    Having said that, and toyed around with octgn1&2, MWS, LackeyCCG and apprentice I’ve noticed that the default option for targeting in _all_ those gaming clients has been the middle mouse button. And it should be in octgn2 as well. Why?

    Because majority of the people who try out the client expects the targeting to be that middle mouse button and intuitively try it out first. So leave that as a default. But instead as a smart guy you consider coding in options where every user, including you, can customize their own key bindings for both mouse and keyboard. This way you keep both the newbie users happy with low learning curve and the more experienced users satisfied by offering them a choice to assign their own bindings matching their interfaces.

    Doable?

    Note that this way octgn2 actually stands out from the other gaming client masses, as _none_ of the previously mentioned clients offer customization.

  8. Kempeth Says:

    How about this. Targetting is afaik always a result of either an attack or the execution of an effect/ability. OCTGN 1 had shortcuts for these so how about the following idea: When you select a card and execute its ability it changes the mouse cursor to a crosshair and you simply click on the card to target. (You might add that when the user holds shift he can specify multiple targets)

    When binding actions to the mouse i just would like to remind that not every action is equally common in every CCG. Like warlock said: Why not let users define such things themself? I know that it makes it more complex to code. But one of the things I really disliked about OCTGN 1 was that some of the functions I used the most were incredibly difficult to do (like turning the card clockwise 270° -> 360° required unflipping and untapping the card and turning from 90° to 180° required untapping and flipping the card).

    I think a good option would be to offer a broad range of options via context menu and let the users decide how to make the options they need the most easier to access via shortcuts.

  9. Indy Says:

    Even if other “popular” apps use the middle mousebutton for targeting, that doesn’t make it good practice. You can certainly leave it enabled by default for those that have a middle button, or that expect it coming from legacy apps (I would recommend this, BTW). However, that cannot be the only way to do it simply because many people can’t use it.

    If it were me, I’d do this:

    1) Leave the middle-button targeting in place to satisfy compatibility with other apps
    2) Add a new shortcut combo (like Shift+LClick)
    3) Add 2 context menus for targeting cards: first one is to target the card that activated the context menu, and the other is to use this card to target another card. The 2nd option would create a modal condition where you must click on another card somewhere (or indicate to the user that they can click Esc to cancel). Both options could be repeated as needed.

    Yes, right-clicking and selecting a menu option over and over is pretty clunky, but you can use a non-modal message to indicate that there is a shortcut available to perform that action. I think most users (not familiar with this type of software) would expect to see options like this in a context menu. You use that as a vehicle to inform them of the shortcuts.

    It would also be nice to see some sort of mass cancel targeting option. It’s kind of a pain to have to un-target a bunch of cards after you’re finished. It would be nice if there were some sort of option that popped up in the corner to cancel all targeting once you begin targeting cards.

  10. Tablassus Says:

    A crazy ideia:

    When the mouse is overing for the top 50 % of the card the cursor will turn the tap/untap symbol.

    When the mouse is overing for the bottom 50 % of the card the cursor will turn as the target symbol.

    The same will be true for when the card is taped but this time the areas will be the middle left and middle left. Its very intuitive as the cursor changes 😉

    Just make sure the card is displyaed even if its bellow other cards (u can use the transparent feature)

  11. Jester Says:

    Right Click for options.
    Right Click and drag for targeting – as the mouse leaves the card area, close the option dialog and create an arrow that follows your mouse and locks onto other cards when you release.

  12. jods Says:

    @TrekkieGod:
    Indeed, you have spotted a bug.
    I am very impressed that you even fixed it yourself. The management of card identities is the most complicated part of O2 (due to its distributed and encrypted nature). Digging into that without documentation is hard stuff!

    BTW, your fix is correct, but not totally in line with the inner workings of O2. The condition should be:
    if (card.FaceUp && card.Type.mySecret)
    Your code triggered the reveal chain properly, but it was creating unrequired network messages. Reveal isn’t supposed to be called from clients other than the identity owner, which is indicated by the mySecret flag (mySecret = I am the owner of the identity and not all players know it yet).

    Also, there was some code supposed to perform the call to Reveal in the FaceUp property of Card.cs, which should be removed. It didn’t work in all use-cases (when the identity is not your secret).

    The Peek code is not trivial (to look at face down cards). Because one has to differentiate cards you are allowed to look at, and those you don’t. There’s no way in the current build to make a card face down with or without this permission. Thinking about it, I am probably going to make Peek a right-click menu option and log everytime someone peeks at a card. This may create unnecessary log, but it is simpler and works in all cases. (Moreover the second time you want to look at the card, you don’t have to use the Peek menu. You can also hover the card in the chat log).

    I am impressed you dug that deep inside OCTGN without any help at all. If you have time and want to code a few parts of OCTGN, leave me a message!

    Regards,
    -jods

  13. dc7k Says:

    I don’t know if this is related to the topic but anyway it’s a nice feature.

    Instead of the normal rightclick dropdown menu, a round pie menu would be nice. There’s a bunch of options, each a section of a ring surrounding the mouse, and simply draging the mouse towards one of the sections hilights it. When the button is released it will execute the hilighted command and the ring will close.
    If you have played Crysis you will know exactly what I mean.

  14. jods Says:

    @Tablassus:
    I’m sorry the anti-spam filter has put you into a “requires validation” queue. I have noticed that and approved your comment above.

    The idea is nice and I plan to use it in other scenario (e.g. move to the bottom of a pile). But in the context of cards on the table, I don’t think it’s applicable because of the following constraints:
    1. This is extremely problematic when cards overlap. You suggest I should make the top one transparent when over the bottom card. But then I would a player go from the bottom card to the top one? Interactions must be kept easy, intuitive and straightforward. I don’t see how to handle this case.
    2. I think you forgot to keep a clickable area to move cards around 😉
    3. The scenario is fine as long as you hard-code “tap” and “target”. But while target is indeed a built-in OCTGN action, tap is not. Consider games which may have different requirement. How would you adapt your idea to a game, which requires tap left, tap right and target ?

    So overall I don’t think the idea is a doable. But thanks anyway. Every input is welcome! It’s very hard to come up with good, useable GUI and any idea – even crazy and totally undoable – is a good thing.

  15. jods Says:

    @dc7k:
    I’m pretty sure the topic of radial menus has been talked about in a comment from a previous post. Since I am too lazy to dig it up, here’s my thoughts about it atm:

    The idea of radial menus is very nice and was in my head pretty much from the start. They unfortunately create several problems, which I am not ready to tackle yet:
    1. This kind of menu doesn’t support well many items.
    2. It creates a heavy burdern on game creators, since they would have to create icons for every possible action (a text-based radial menu is just ugly). Moreover, creating an intuitive icon for some actions is pretty hard.
    3. They are not very easy to relocate. What if the user click on a card near the screen edge? Misplaced radial menus may be wacky to use.

    I am still willing to reconsider this feature when I have time to do so, but it seems a bit hard to put into practice…

    Thanks for the suggestion!

  16. Kamal Says:

    I agree with jester, that the one used in MWS, you just press right-click on a card and see it’s context options. But if you right-click a card and hold, nothing appears, then you drag the mouse, and an arrow appears, =)

    Sorry my English =(

  17. Kamal Says:

    sorry double posting,

    The “wait for an icon to appear” is to slow… and then you must click on the icon and drag, D:!


Leave a reply to Kamal Cancel reply