Sign in to follow this  
Kest

Action Menu + Default Action + -Mouse

Recommended Posts

I need to build an action menu that allows the player to interact with game world objects in a real time 3rd person RPG. The actions will be similar to the SCUMM engine, except that actions which don't pertain to items will not be included in the action menu for them. My project is heavy-action paced, so I need to make this process roll as effortlessly as possible for the player. I would say that most complicated item interaction situations would be outside of time-based danger, but I can really only go so far to ensure that. The player has enough control to be capable of breaking that rule himself. My situation is pretty grim. The player has no pointing device (see last paragraph). He would need to walk up close to objects and press a button or key to interact with them. It gets worse. It's possible that several objects can be within his interaction range. Meaning he needs some way of cycling through them if the focus doesn't default to what he wants. I would likely need to apply a focus priority to items, with doors, containers, and critical progression objects at the top. I would also apply a default common-sense action for all items. Doors and containers open/close, machines and lights turn on/off. So here's where I am: A: I want it to be possible to simply run up to an object and press one button to execute the default action. B: I also want it to be possible to run up to that object with some other 'thing' beside it and switch focus to that 'thing' easily before pressing the previously mentioned button. C: Lastly, I want it to be possible to run up to that object, focus it or the 'thing' beside it, and open a quick-menu to select a specific action to execute. I'm trying to find a way to map this mess to the controller and keyboard. My instincts tell me that a button-hold could work for a controller: A: Run up and press 'action'. B: Run up and press 'cycle', then 'action'. C: Run up, press 'cycle' if the intended object isn't focused, hold 'action' to open the menu, press 'cycle' to scroll the menu-options, release 'action' to select the hovered menu option. So two buttons. And since I allow a button to cycle locked-on targets when firing ranged weapons, it would be ideal to map that to this cycle command as well. But while I can easily imagine doing this effortlessly on a controller, a keyboard seems like a challenge. There's not even a guarantee that the key they map to 'action' can register events simultaneously with the key they map to 'cycle'. That means they would likely be forced to use shift, alt, or control if the button-hold design is used. About the mouse: Nothing else in my game requires the mouse. It can be played with just a controller or keyboard. There are many interfaces that allow the use of a mouse, and the player can even move around with it in calm situations (heavy combat will likely require two hand sets of buttons). But don't want to require the mouse for any one situation. However, concerning the control of all of this with the mouse, the best choices are pretty clear. Hover the specific object, left click for the default action, right click for the quick-menu, left click the menu choice. So that control will always be there for those who don't mind switching their right (or left) hand to the mouse to interact with things. And many players will probably do this when they know they are safe. I really appreciate any ideas.

Share this post


Link to post
Share on other sites
Random ideaness:

If you're using directional keys or some such for movement, you could use those for cycling, and one action button. When holding action-button, you could cycle between objects with left/right and actions with up/down. Relevant parts of the menu (which'd be some objects x actions grid) could be shown as needed (eg. show the default object/action when pressing the button, then list all objects or actions when some arrow key is pressed and all everything once action button is held for some time).

So, uh, basically the same thing, just choosing objects and actions the same way, sorta, and dropping the cycle button :|

Share this post


Link to post
Share on other sites
Quote:
Original post by Gnarf
If you're using directional keys or some such for movement, you could use those for cycling, and one action button. When holding action-button, you could cycle between objects with left/right and actions with up/down.
...
So, uh, basically the same thing, just choosing objects and actions the same way, sorta, and dropping the cycle button :|

That's a really nice idea. I didn't even consider that. That would also mean that objects don't need to be focused at all times in the game. Only while the action menu is active.

It would also allow me to add a customizable-option to disable the button-hold-requirement, because the player could alternatively tap the action button to open the menu, then tap it again to select an action. So by accepting a double press to perform default actions, the player doesn't need to hold down any keys.

Quote:
Relevant parts of the menu (which'd be some objects x actions grid) could be shown as needed (eg. show the default object/action when pressing the button, then list all objects or actions when some arrow key is pressed and all everything once action button is held for some time).

Well, using your design, if I just default menu focus to the default action when the menu is generated, the player is able to tap the action button to perform default actions. A very small delay (200-400 milliseconds) could be applied to the appearance of the menu after it opens, and directional or cycle buttons would be ignored during that time.

There's still the concern with keyboard key events. The player is able to map any action to any key. Currently, there's no way to force them to use specific keys for specific actions. Do you think just defaulting the action command to left-control would be enough to hint this? If the player chooses other keys for movement (WSAD, arrows, number pad), he could possibly use a normal key for action. But there's really no way to program which will work without hard coding it into the control-configuration menu. What a nightmare.

Thanks for your ideas Gnarf. They were better than mine.

Share this post


Link to post
Share on other sites
You are concerned that the keyboard can't handle all chords of keys?

StarControl 2 shipped with a rather neat "detect which chords of keys work". You could implement a "test UI" functionality that goes through and tests if the UI setup the player chose actually works in-game.

Failure to test a UI change would bring up a warning that your keyboard may not work with those commands.

Another option would be to have "double click action key" open the menu, while "single click action key" does the default action to the default object?

Share this post


Link to post
Share on other sites
I ended up creating an override system. The single action control design is there pretty much how Gnarf described it. But there are also three specific seperated controls to perform default actions, open the menu, and select commands. Those three controls default to unmapped, but the player can use them to set up pretty much any design they want, including holding modifiers and pressing sequences for any three of them.

For an example of what I'm saying, this is a snap shot of my roughed out configuration menu. Here I mapped the three com-menu controls to use F, with shift giving me the menu:



Thanks for the information.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this