This wiki was in read-only mode for many years, but can now be edited again. A lot of information will need to be updated.

Enhanced Server Listing

From BZFlagWiki
Jump to navigation Jump to search
This page contains the design document for an enhancement or feature. It is a work of collaborative development, and may not represent the final design. If you are not part of the development or design group, please post comments and suggestions on the talk page and not in the middle of the design.



Overview

This design document is for the enhancement of BZFlag's current server listing. These enhancements will include refactoring the current C++ code to make it easier to read, and more modular so that new features can easily be integrated in the future. New features will be also be added, such as the ability to filter the server list, sort the server list, and switch between a favorites and recent server list in addition to the regular server list.

Design

Proposed Changes

Here's a list of all the proposed changes to the current server listing:

  • Sort Options
    • Sort by Domain Name
    • Sort by Server Name
    • Sort by Number of Players
    • Sort by Sever Ping
  • Filter Options
    • Filter Out Empty Servers
    • Filter Out Full Servers
    • Filter by Ricochet (On/Off/Either)
    • Filter by Jumping (On/Off/Either)
    • Filter by Super Flags (On/Off/Either)
    • Filter by Server Name (Including Wildcards)
  • Recent Servers List

Keyboard Accessibility

The introduction of my mock-up leads me into the next part of the proposal, and one I consider to be quite important, which is the keyboard accessibility of the enhanced server listing. This is obviously a unique constraint that the referenced server browsers didn't have to deal with, although I don't think it will be much of an issue during development. However, it is very important, in my opinion, that it come out simplistic and smooth, because no matter how pretty the new server listing menu may look it means nothing if users can not easily find their way around it. In the mock-up I provide some keyboard commands along the bottom, like the current server listing does. Although it seems like quite a few commands, I think most of them are fairly intuitive, and really it would be hard to implement with any less commands.


I'll explain the significance behind each command in the mock-up. Users can use the '+' key to add a server to their favorites list. This command only works on the normal server list, and the recently played server list. When the user is viewing their favorites list, this command will be exchanged with '-', which will remove the selected server from their favorites list. The 'f' key can be used to switch to the favorites list, and the 't' key can be used to switch to the recently played list. As with the add/remove favorites command, these commands would change depending on which list you were viewing, allowing for an 'n' command which would switch the user back to the normal server list. The 'i' key would change the keyboard control to the server information area. This would allow the user to use the left and right arrows to switch between the server information and the server player list, and the user could use the up and down arrows on both areas to view the different pages for each area. The 's' key would allow the user to modify the sort options for the server list. Once keyboard focus is given to the sort options the user can use the left and right arrows to switch between different column headers, and would use the up and down arrows to sort, or reverse-sort the servers based on that column. The 'o' key would give keyboard focus to the filter options area, where the user could use the up and down arrows to scroll through the options, setting them with the left and right arrows, or typing where necessary. The last command, 'r', would refresh the information in the server list, such as player counts, pings, etc.


The key to making all of this keyboard accessibility work is to have the command list at the bottom of the screen change depending on which area/server list has focus at the time. This is important because the usable commands change with the focused area/server list, and the user will always need an accurate command list that shows them how to change back to the normal server list, etc. I think the system I've laid out is pretty intuitive, but as with my mock-up, I plan to illicit input from other developers and the community, and overall tweaking the keyboard access to the menu should be a fairly trivial task. I will be making every effort possible while coding the enhanced server listing to ensure that keyboard accessibility changes are easy and painless to implement.

Links

Mock-ups

References