Menu Entry Swapper Overhaul - Live Now!
- Menu Entry Swapper 2.0 feature with ground-up rewrite and improved foundations
- Ability to scroll tall menus on mobile with swipe gesture instead of dragging scroll bar
- Menu entry edit mode with per-subject menu separation for NPCs, Fairy rings, and other interactables
- Ability to reset menu customizations per-subject
- Ability to promote sub-menu entries to appear in top-level menu
- Individual entry hiding functionality
- Two layers of customization with standard and secondary modes accessed via shift key
- Arrow icons to move entries to top or shift down instead of drag-and-drop
- Adjustable long-press time setting for opening menu with touch input
- Adjustable menu entry spacing setting
- Minimenu start position setting to change where menu opens relative to pointer
- Menu entry reordering now more reliable around walk-here entries
- Mouse behaviour on mobile is now more consistent with desktop behaviour
- Removed drag-and-drop entry reordering in favor of arrow icons for simplified and more robust system
- Menu Entry Swapper settings are now saved per device and do not carry over between devices
- Bug that caused Examine and other unexpected entries to trigger on tap or left-click
From Old School RuneScape
We added the Menu Entry Swapper (MES) feature a couple of years ago to put more control at players fingertips; defining the order in which menu options appear, hiding options (no more accidental pick pocketing!) and letting players optimise their experience.
When we first added the feature to the Official Client, it achieved much of what we wanted but had more than its fair share of rough edges. While we tried to paper over the cracks, what became apparent to us was that ‘fixing’ the behaviour in the existing architecture wasn’t feasible, and that for the feature to behave as we wanted, we needed to revisit not just Menu Entry Swapper, but the entire menu system.
Well, like we shared in our Summer Campfire, it's time that work was done!
Introducing, MES 2.0! A ground-up rewrite of the Menu Entry Swapper system, built on much improved foundations. This is intended as a drop-in replacement to the original system, that will attempt to migrate existing customisations.
We also snuck in a few bonus features that we're pretty excited about... You're now able to scroll those menus on mobile with a simple swipe; no more needing to grab the bar!
MES 2.0 is available on mobile and the Official Client from version 240.6 and up. These changes won't affect third party clients. Your entry swap settings are saved per device, so will not carry over between devices.
Let's dig into it, as while the concepts of MES remain the same, there are functional changes you need to know!
The TLDR
We like to get a little technical in our client blogs, to dig into the ins and outs of the development work, but we know that's not everyone's cup of tea. So for those of you who just want the quick overview of what this change is all about, this bit's for you!
The change log
-
Fixed a bug with menu-entry-swapper that would cause 'Examine' and other unexpected entries to happen on tap/left-click.
-
Tall menus now support swipe-scrolling, rather than dragging the scroll bar.
-
Reworked the menu entry edit mode:
-
Menus are now separated per-subject, such as an NPC, Fairy rings or basically any interactable in the game!
-
Menus can now be reset per-subject.
-
Sub-menu entries can now be 'promoted' so they appear in the top-level menu.
-
Entries can now be re-ordered around 'walk-here' more reliably.
-
Entries can now be individually hidden.
-
Two different layers of customisation - standard and secondary.
-
Secondary requires a keyboard (including for mobile for players who run with a keyboard setup), and is accessed using the shift key.
-
Most previous menu customisations will carry over.
-
Some customisations involving 'walk-here' will not carry over, so you will need to set them up again.
-
Mouse behaviour on mobile should be slightly more consistent with desktop behaviour.
-
Entries are no longer drag-and-drop, favouring new arrow icons to send entry to top, or move entry down. This was a decision to simplify the system so we could focus on making it more feature-rich and robust.
How to use MES
MES 2.0 comes as part of client version 240.6 - if your app doesn't automatically update to this, you may need to manually update via the app store. It can take a little time to roll out across all devices so don't worry if you don't see it immediately.
If you have previously used the original MES feature, MES 2.0 will attempt to migrate your existing menu customisations. If you want to reset these and start from scratch, you can use the "Reset minimenu ordering" button in your settings.
-
Long-press or right-click to open the menu
-
For keyboard users: do not hold shift, unless you wish to edit the secondary set of menu swaps
-
Press the 'edit' button in the top-right corner of the menu. This will collapse the menu per-object so you can edit them individually
-
Navigate to the menu you wish to reorder. You now have several options:
-
Up arrow: Bring entry to top of menu
-
Down arrow: Shift entry down by one space
-
Eye: Hide/show entry
-
Star: Promote sub-entry to top-level menu
-
Reset: Move all the entries under this object back to default
Important: The top entry in the menu will become the primary entry used when you tap or left-click!
Other Menu Tips
-
You can change the long-press time required to open the menu with touch input, via the settings menu. Shorter times will let you do faster inputs, but require you to be more precise!
-
You can change the spacing of menu entries via the settings menu. This might be useful if you find the menu too small.
-
By default, the menu opens with its very top edge under your pointer. You can use the 'Minimenu start position' setting to change this so that one of the entries will be under your pointer instead! This works well in conjunction with entry reordering to let you select both a left-click/tap option, and an easy-access right-click/long-press option.
Deep Diving MES
This menu, known as the minimenu, is a very critical input mechanism that drives almost all mouse/touch input across the game. Every single frame, the game works out what is underneath your pointer and builds the list of options for you to pick from - even if the menu isn't open! The order of this list is very important, as when you left-click (or tap), the game actually just selects the top entry in the menu for you. However, this order is quite complicated, as it depends on many factors:
-
Distance from object to camera
-
The order entries are defined per-object
-
The value of items on the ground
-
Whether the object is your PvP target
-
NPC and Player attack options
-
Follower NPCs are deprioritised based on a setting
-
Players with the same team cape are deprioritised (did you know?)
-
...and the list goes on!
We're going to get a bit technical now!
In the 2007 code, this order was fairly simple to achieve: things would be added to the menu already in the right order by default, excepting a few entries that would be shifted down to the bottom. This order was actually tightly-coupled to the 3D renderer; the 3D renderer drew every object to the screen from back-to-front, and would record everything under the mouse as it did. This then incidentally leaves you with a list of objects under the mouse, in reverse order. Flip that list, and that's the order that the objects should appear in the menu!
Unfortunately, as we expanded the functionality of the menu in the official client, things got more and more complicated. This incidental order was no longer fit for purpose, as now some things needed to shift to the top, some things needed to shift around 'walk-here', some entries needed to appear only when holding shift, and we even decided to allow full reordering, rather than just setting a single left-click entry per object. On top of this, since we switched over to Z-buffered rendering, the 3D renderer no longer draws objects in the nice, neat order that it did before. Simply put, the original structure of the code was no longer suitable for everything we wanted to do, and some big cracks were showing.
Rather than continuing to try and paper over these cracks, we needed to carve out some time to properly rework things. There were a few programming principals that we needed to get back to:
-
Decoupling: Any system that wants to add an entry to the menu should not be concerned about where in-sequence it is attempting to do so. The order of the menu should not be incidental, it should be well-defined in a single place.
-
Single source-of-truth: The code that detects when your mouse is over an entry, and the code that draws the entry, should not both be independently working out the size and shape of that entry.
-
Single-responsibility: It's hard to know where to look when all the code is in one big class named "Minimenu". Separate the data from the view, and split it up into individual components that only know what they need to.
There's a lot more tiny details we could go into with a system as fundamental as this menu. For example, the way that tapping something will invoke the action on release, while left-clicking will invoke an action on press, unless that thing can be dragged, and if you start dragging it but then switch tabs with an F-key we might invoke it anyway, yadda yadda. Suffice to say, it was not a simple task to rework it all whilst keeping it looking, feeling, and functioning identically to how it did before!
The end result, though, is that this should now be a more reliable and more flexible component of the game, that we will be able to do more with, more easily, from here on. We can add support for different styles, larger fonts, better internal debug features, and some other nice things like the new menu entry swapper!
So there you have it, that's everything you need to know about our Menu Entry Swapper overhaul!
Remember that it may take a little time for the update to roll out to your device, and to keep an eye out on the app store in case you need to manually update. We want to know what you think! We'll be closely monitoring your feedback, so make sure to leave your thoughts and any bug reports in the #mobile-bugs channel in our Official Discord server.
You can also discuss this update on the 2007Scape subreddit, the Steam forums, or the official OSRS Discord. For more information, check the official Old School Wiki.
Mods Abe, Abyss, Acorn, Ape, Arcane, Archie, Argo, Ash, Asherz, Ayiza, BigRig, Blighted, Blossom, Boko, Brooksie, Bruno, Bulb, Chilly, Criminal, Curse, Daizong, Default, Doctor, Ed, Elena, Enigma, Entropi, Frogs, Fuzz, Gecko, Ghost, Gizmo, Goblin, Grace, Grub, Halo, Harold, Hend, Hornet, Husky, Ivory, Jalo, Jamesy, Jerv, Keyser, Kieren, Kirby, Kurotou, Leebleh, Lenny, Light, Liron, Lotus, Lykos, Mack, Manked, Markos, Maylea, Mobius, Moogle, Morty, Moz, Necro, Nin, Nixon, Nox, Nylu, Oasis, Ori, Other, Otter, Pheasant, Philomel, Pork, Pumpkin, Puppi, Pyro, Rach, Redfield, Rice, Romy, Roy, Ry, Saiyan, Sarnie, Schmidt, Shogun, Shroom, Sigma, Skylark, Smithy, Sova, Spacebar, Spyro, Squid, Starry, Suharun, Surma, Sween, Tide, Titania, Titus, TJ, Tomb, Tsourorf, Tyran, Veda, Vegard, West, Wolfy, Yozora, Yume & Zaf
The Old School Team