This wiki is archived and useful information is being migrated to the main bzflag.org website

DevelopmentPlans/2.6.0

From BZFlagWiki
Jump to: navigation, search

Overview[edit]

2.6.0 will be a new breaking release that is not compatible with the 2.4.x line. A strong focus of this release should be improving the user experience and improving the flexibility of the user interface.

Goals[edit]

This list covers the major goals of this release, and the features related to each goal.

  • Tutorial Mode (1.1.1, 1.1.2, 4.1, 4.2, 4.3, 5.1, 5.2, 5.3, 6.1, 6.2, 6.3, 7.1, 7.2)
  • Easier polling system (1.1.2, 2.1, 2.2)
  • Useful MOTD (1.1.1, 3.1, 3.2)
  • Better localized messages (4.1, 4.2, 4.3, 5.1, 7.1)
  • Additional mapping features (5.1, 5.2, 5.3)

Features[edit]

  1. Add new UI elements
    1. Dialogs
      1. Modal dialogs are featured front and center, and require being dismissed by the user. They support hotkeys, server-specified buttons, or freeform menu items. Keyboard, mouse (including clicking items), and joystick interaction is supported.
      2. Unobtrusive dialogs show up as smaller semi-transparent boxes towards the edge of the screen and support only hotkeys (keyboard, mouse button, joystick button) for interaction.
  2. Revamp the poll system
    1. Add an actual message type to the protocol for the poll system (MsgPoll and MsgVote, perhaps, or just build it with generic dialog message types)
    2. Add an unobtrusive dialog for polls with support for both the old style /vote command and polling/dialog key bindings.
  3. Revamp the MOTD
    1. Update client MOTD code to send the client version and other system information (operating system and similar) to the server. The MOTD server would then use this information to send appropriate MOTD entries.
    2. Have the MOTD code detect when there is a new MOTD and pop up a modal dialog. Include a MOTD menu item for later access.
  4. Font system and language support
    1. New font system (FTGL or similar)
    2. Add the additional fonts and better translations from 2.99.x.
    3. Send the client locale to the server so that the server could localize messages sent to the client
  5. Map features
    1. Text object (from 2.99.x)
    2. BZDB controlled attributes
    3. Mesh bases/teleporters
    4. Better define/group support
      1. Links (with relative and absolute names)
      2. World weapons and entry zones (with transforms)
      3. Physics drivers (with transforms and copying)
      4. Texture matrices, dynamic colors, transforms, materials
  6. Server Side Players
    1. Server-side shot path tracking
    2. Shared client logic library used in both the client and server.
    3. Ability to spawn and control SSPs from a plugin.
  7. Other
    1. Add a per-player name/value pair system. This would be used for data like:
      • Motto
      • Locale
    2. Implement MsgAllow from 2.99.x (or should this be part of the per-player name/value pair system?)
    3. Shot ID cleanup
    4. Make client aware of shot limit so it can display count and can know when the flag is going to drop
    5. Allow switching teams without rejoining
    6. Rework the joining process
      1. Handle all ban checks (including DNS resolution and hostban checks) before allowing the player to pull the world or enter.
      2. Move team selection to after the join (start off in observer, and have a dialog)
    7. List server indication of game options that are per object or zone ( rico, jump, etc..)
    8. Generic server-controlled marker and hunt system.
    9. Use BZID for all saved user identifiers not names.

Misc[edit]

  1. Clean up platform code. For instance:
    1. Make the ResInfo class also contain a depth value so that Windows doesn't have to have it's own custom Resolution class, and then sort based on the ResInfo items instead of platform specific sorting methods (Windows and Linux platform code have their own very similar methods).
    2. Make the Linux platform code build again (which may be solved by just doing the ResInfo change). Note that SDL is the normal platform for Linux systems, so the 'Linux' platform code is for Linux systems without SDL.