The following is a design document I've worked on that details (and displays through some mock up pictures) proposed changes to the hi-res scoreboards for use in 640x400 and above.
In some cases, this design document will step outside of the scope of changes to the scoreboards and to other areas of the engine that may be addressed to enhance the user's experience.
Odamex Hi-Res Scoreboard Proposal
Standard Scoreboard
The standard scoreboard would apply to all non-team based gamemodes and would supply users with important server information that the current scoreboard does not.
The scoreboard is separated by a divider to allow quick information on three categories: Server information, player information, and non-player information.
Let's touch on all parts of the standard scoreboard, what each part of it does, and what would need to be flexible for usage in the future beyond the current gamemodes.
Server Information:Game Type: Centered on the second of three lines above the scoreboard. This displays the current gametype. At the current version of Odamex, the only two game types that would be displayed here are
Deathmatch and
Cooperative.
Clients: Displays the number of total clients currently connected over the number of "maxclients" allowed.
Players: Displays the number of players currently IN-GAME. Spectators and downloading users are not counted here.
Fraglimit: Displays the "fraglimit" set by the server. This must be able to change on the fly if the server changes its "fraglimit" mid-game. If no fraglimit is set, display N/A.
Time Left: Displays the time left before the server ends the game. Once it counts down to 00:00 the game ends. Is dependant on the "timelimit". This must be able to change on the fly if the server changes its "timelimit" mid-game. If no "timelimit" is set, display N/A.
Scorelimit: Displays the "scorelimit" set by the server. This currently is not in use by deathmatch or cooperative modes in Odamex, but may be used in the future. This must be able to change on the fly if the server changes its "scorelimit" mid-game. If no scorelimit is set, display N/A.
Player Information:The player information portion of the scoreboard gives seven pieces of information to users. All seven of these are currently in Odamex but will be covered regardless.
Color: The color of the player is displayed to the left of their name.
Name: The name of the player.
Frags: Current frag count of the player.
Deaths: Current death count of the player.
Frag/Death ratio: Current frag count / current death count. 0 deaths is counted as 1 as to not divide by zero.
(NOTE: In the future, if non-team based gamemodes are introduced that rely on "scorelimit" this field should become 'Score'.)Ping: Current ping of client to the server.
Time: Current time client has spent connected to the server.
Other Client Information:Any clients connected that aren't in game are sorted into this area. They should display all of the information that the active players do with exception to the color field.
Spectators: Unlike active players, spectators should not display any color at all.
Downloading Players: Though players who are downloading will not show a color, a downloading player should be represented by an icon. In the mockup photo, I created an arrow (using the Odamex blue/gold) to denote this.
Team-Based Scoreboard
The team-based scoreboard is what it sounds like and needs to be suited and adaptable for a variety of game modes that exist now or potentially will in the future.
Unlike the standard scoreboard, the team-based scoreboard is separated into four areas (six if you count both teams separately). Of these four areas however, only the non-player information area remains the same as the standard scoreboard. Due to this, that section will be omitted as it has already been covered.
Game Type: Centered on the second of three lines above the scoreboard. This displays the current gametype. At the current version of Odamex, the only two game types that would be displayed here are
Team Deathmatch and
Capture the Flag.
Clients: Displays the number of total clients currently connected over the number of "maxclients" allowed.
Blue: Displays the number of current players IN-GAME on the blue team.
Red: Displays the number of current players IN-GAME on the red team.
Fraglimit: Displays the "fraglimit" set by the server. This must be able to change on the fly if the server changes its "fraglimit" mid-game. If no fraglimit is set, display N/A.
Time Left: Displays the time left before the server ends the game. Once it counts down to 00:00 the game ends. Is dependant on the "timelimit". This must be able to change on the fly if the server changes its "timelimit" mid-game. If no "timelimit" is set, display N/A.
Scorelimit: Displays the "scorelimit" set by the server. This currently is only used by Capture The Flag. This must be able to change on the fly if the server changes its "scorelimit" mid-game. If no scorelimit is set, display N/A.
Team Information:This area of the scoreboard houses information for both teams.
Score: In modes where scoring is used, this will display the current score of each team above their colored bars.
In Team Deathmatch, this will display the current frag count of the team. It will consider any frag subtractions such as suicides or team kills.
In Capture the Flag, this will display the current total of flag captures by the team.
The numbering here uses Odamex's FONTB## lumps. The lumps in odamex.wad are named FONTB16-25.
Total Frags: Displays the team's total frag count. This does not count or subtract suicides or team kills. The number is displayed in the respective team's color.
Average Ping: Displays the average ping time of the entire team.
Total Points: Displays the sum of all team members' points. I currently cannot think of an application of this field in Team Deathmatch. Please offer your opinions.
Player Information:The player information portion of the team-based scoreboard gives five pieces of information to users but covers both teams. The player information section is separated by a divider colored to the team's color.
Color: The color of the player is displayed to the left of their name. This will be the color of the team they are on.
Name: The name of the player. Unlike the standard scoreboard which supports displaying the 15 character limit on names, this has to be limited to displaying only the first 12 of a player's name due to space constraints. (
NOTE: Only display the top eight players on each team in cases of 9+ player teams.)
Point: Current point count of the player.
Frag: Current frag count of the player.
Ping: Current ping of client to the server.
Team-Based Player Joining
After going over the team-based scoreboards and how it sits over the spectator area, I am of the opinion that Odamex should approach team-based games differently when it comes to joining in as an active player.
Unlike the current scoreboard which does not have an area reserved for spectators, I propose the following for when a player joins the server with this new scoreboard system:
1) When the player joins a team-based server, they are automatically assigned to the spectator board and assigned to no team.
2) When the player presses use to join, they are given one of three menu options to select from on-screen. Red, Blue, or Auto-Assign.
3) The auto-assign selection should assign a player to a team based on a few conditions.
3a) If no player is joined in the game yet, assign to a random team.
3b) If team player counts are uneven, assign player to team with less players.
3c) If team player counts are even, assign player to team with lower score.
4) Make a new bind key that allows player to switch team in-game with the press of a button like newer games.
4b) Assign a enforced delay to prevent a player from being able to rapidly switch teams while in game.