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: Difference between revisions

From BZFlagWiki
Jump to navigation Jump to search
Mock-ups: duplicate link
 
(18 intermediate revisions by 4 users not shown)
Line 10: Line 10:


Here's a list of all the proposed changes to the current server listing:
Here's a list of all the proposed changes to the current server listing:
* '''Refactoring'''
** Create a HUDServerList class which provides the HUD functionality for the ServerLists
** Create a HUDServerInfo class which provides the HUD functionality for ServerItems
* '''Sort Options'''
* '''Sort Options'''
** Sort by Domain Name
** Sort by Domain Name
Line 16: Line 19:
** Sort by Sever Ping
** Sort by Sever Ping
* '''Filter Options'''
* '''Filter Options'''
** Master On/Off Switch for Filters
** Filter Out Empty Servers
** Filter Out Empty Servers
** Filter Out Full Servers
** Filter Out Full Servers
Line 25: Line 29:


===Keyboard Accessibility===
===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.


The following requires a key press from the end user to activate/use:
* Sorting
** Sort By Domain Name
** Sort By Server Name
** Sort By Player Count
** Sort By Server Ping
* Filtering
* Switching Between Favorites/Recent/Normal
* Adding a Server to Favorites


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.
==Milestones==


'''1. Refactor and Comment Current ServerMenu Code'''
* <strike>Move the HUD drawing code for ServerLists into a new HUDServerList class</strike>
* Move the HUD drawing code for ServerItems into a new HUDServerInfo class
'''2. Implement Sorting Options on ServerLists'''
* <strike>Display the HUDServerList with columns</strike>
* <strike>Allow lists to be sorted by different information columns</strike>
* Lists retain sorting when switching between favorites, recent, and normal
'''3. Implement Filtering Options'''


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.
==Remaining Things to Do==
* <strike>Display server pings</strike>
* <strike>Finish off the create new tab control</strike>
* Finalize column sizes
* Tweak drawing
* Finalize what information to display in server information
* <strike>Get recent servers working correctly</strike>
* <strike>Custom tabs should save between sessions</strike>
* Implement an update function for the list


== Links ==
== Links ==


===Mock-ups===
===Mock-ups===
* [http://sourceforge.net/tracker/index.php?func=detail&aid=1930606&group_id=3248&atid=303248 Patch Submission]<br>
* [http://www.uweb.ucsb.edu/~davidsanders/mockup.jpg Full Resolution Mock-up]<br>
* [http://www.uweb.ucsb.edu/~davidsanders/mockup.jpg Full Resolution Mock-up]<br>
* [http://www.uweb.ucsb.edu/~davidsanders/mockup_shrunk.jpg Resized Mock-up]<br>
* [http://www.uweb.ucsb.edu/~davidsanders/mockup_shrunk.jpg Resized Mock-up]<br>
* [http://www.uweb.ucsb.edu/~davidsanders/mockup_shrunk.jpg Bastardized Full Resolution Mock-up]<br>
* [http://www.uweb.ucsb.edu/~davidsanders/mockup2.jpg Bastardized Full Resolution Mock-up]<br>
* [http://www.uweb.ucsb.edu/~davidsanders/mockup2_shrunk.jpg Resized Bastardized Mock-up]<br>
* [http://www.uweb.ucsb.edu/~davidsanders/mockup2_shrunk.jpg Resized Bastardized Mock-up]<br>



Latest revision as of 03:50, 21 March 2012

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:

  • Refactoring
    • Create a HUDServerList class which provides the HUD functionality for the ServerLists
    • Create a HUDServerInfo class which provides the HUD functionality for ServerItems
  • Sort Options
    • Sort by Domain Name
    • Sort by Server Name
    • Sort by Number of Players
    • Sort by Sever Ping
  • Filter Options
    • Master On/Off Switch for Filters
    • 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 following requires a key press from the end user to activate/use:

  • Sorting
    • Sort By Domain Name
    • Sort By Server Name
    • Sort By Player Count
    • Sort By Server Ping
  • Filtering
  • Switching Between Favorites/Recent/Normal
  • Adding a Server to Favorites

Milestones

1. Refactor and Comment Current ServerMenu Code

  • Move the HUD drawing code for ServerLists into a new HUDServerList class
  • Move the HUD drawing code for ServerItems into a new HUDServerInfo class

2. Implement Sorting Options on ServerLists

  • Display the HUDServerList with columns
  • Allow lists to be sorted by different information columns
  • Lists retain sorting when switching between favorites, recent, and normal

3. Implement Filtering Options

Remaining Things to Do

  • Display server pings
  • Finish off the create new tab control
  • Finalize column sizes
  • Tweak drawing
  • Finalize what information to display in server information
  • Get recent servers working correctly
  • Custom tabs should save between sessions
  • Implement an update function for the list

Links

Mock-ups

References