The graphical user interface plays an important role for the game, because it's the component that makes interaction between the player and the game world happen. Therefore, it needs to follow certain rules in order to give the player a pleasant gaming experience.
- Intuitive - There needs to be a low learning curve, new players should be able to accommodate themselves without needing to study a long manual or extensive in game explanations.
- Efficient - An experienced long-time player should be able to use the GUI to its maximum and should not feel limited by the GUI's features (or the lack thereof).
These fundamental rules need to be kept in mind when we are working on the technical specifications and the actual realisation of the GUI.
Ease of use
- Intuitiveness: Minimal learning curve. Most actions should follow the same logical structure. Make maximum use of interface features established in other RTS games to ensure that the methodology is comfortable.
- Structurised: Actions which the player often uses (such as creating villagers or setting the behaviour of units) should be reachable with one or two clicks.
- Comfort: Important information (such as unit stats) must be clearly, quickly and easily available.
- Quality: We are proud of the game graphics and the interface must meet the quality of them.
- Minimum Screen Real Estate: Bottom GUI so that the interface doesn't block the player's view. The player can minimise components of the GUI to create a full-screen view if he wishes.
- Clear Semiotics: The symbols and icons should be recognisable, since we do not want to have to teach the player what the food icon means.
- Tool Tips: Help easily available.
- Online Help: This help should be accessible from nearly everywhere; context-sensitive online manual, similar to AoE's, but integrated into the game window.
- Common Hotkeys for all buttons, and the main menu. Hotkeys should be configurable from the game menu.
- Support for both mouse buttons and the mouse wheel, with corresponding hotkeys.
- The direction of the GUI art: When are we going to start on full-scale art production? Concerns: Artists
- Differences between shell and session GUI artwork - there are large differences right now, and we should decide if we want to coordinate them and make the art styles match each other (which would likely mean redoing some art) or if we want to deliberately keep the different styles. Concerns: Artists
- Scripting standards. This one is important to me - even though I think it's extremely fortunate to have several people working on the GUI (+scripting), I've noticed with concern that there's several different styles of coding certain things (coordinate systems should ring some bells) in the current code already - I'm not innocent on that part myself, of course, as my coding conventions have changed a lot during the development but I've hardly rewritten any old code. IMO, we should create something like "GUI code guidelines/conventions" which would be made mandatory standard for all GUI code. Concerns: Scripters
- Who's doing what? And who's responsible for which part? We should find clear areas of responsibility - which doesn't forbit people to give a helping hand in other areas, of course, but should give every developer some part of the GUI code/art which he feels responsible for and which he keeps up to date (for code - read: commented, working and documented). Concerns: Scripters, Artists
- GUI scripting documentation. We've written over a thousand of XML and JS-code lines already, but there's hardly any documentation (again, me guilty, too!), which is essential to make new developers have a pleasant and immediate start (and benefits the modding community in post-release times, too). This probably belongs to the whole "code standards" part. Concerns: Scripters
- Create a list of "alpha/beta-critical" GUI requirements. This means, we need to list what we still need to complete - both art and scripting are meant here - and which features we require from the engine code in order to be able to do that. Ideally, we'd be able to specify some clear technical requirements (e.g. "placeBuildingFoundation() function which takes these arguments: buildingID, vector foundationCoords, builderEntity; and behaves like this: ...". That would make things easier for the engine programmers and us, because we would have a central documentation of our needs which is always available and where we can strike out what we've completed (Wiki seems ideal for this). Concerns: Scripters, engine programmers
- Running out of ideas now. But the mentioned points should be enough to keep a multi-hour-meeting running already, I guess... wink.gif Please note that some points only concern scripters, others only artists and some both. I'd suggest to divide the meeting and treat the art aspects first (because there are fewer of them) and then move on the the code side, making the artists being able to leave already (otherwise they might have to wait a long time while the code discussion takes longer than anticipated).
- Session GUI: temporary player ID drop-down for single-player (until we have AI)
- Session GUI: Game saving/loading.
- Session GUI: Complete coordinate update for all control objects.
- Session GUI: Group Pane: 1] Determine way to click portrait to select unit. 2] Double-click portrait to select all units of type onscreen.
- Session GUI: Team Tray: 1] Determine way to establish the most common entity type in the group, and display its portrait. 2] Mirror functionality of 1-9 keys: Click to select, again to centre, right-click to create group from current selection.
- Session GUI: Left-click Command buttons to mirror functionality of entity commands as they become available.
- Session GUI: Right-click command buttons to make units select their own target for command.
- Session GUI: Populate command buttons with lists of buildings, units, techs, formations, stances.
- Session GUI: Investigate hold-right-click radial menu for context-sensitive secondary actions.
- Session GUI: Double-right-click context commands (run, ram, etc).
- Session GUI: Investigate selection radial menu for lists, parented to selection.
- Session GUI: Sub-windows: Manual, Control (save, load, restart, options, resign, help, exit, return), Diplomacy (chat (inc. receiver dropdown), tribute, alliance), Objectives (triggered), Pause (click on season clock), Screenshot.
- Session GUI: Map Buttons: Minimap toggles, signal flare, Idle Villager.
- Session GUI: Top-left chat display.
- Session GUI: Rollover text and manual page for all objects.
- Session GUI: Custom interfaces (eg Market buy/sell).
- Session GUI: RHS triggered Timers/Counters?. Elapsed Time Counter.
Player Scores Counter. Season/Time? clock.
- Session GUI: Buttons to enable/disable GUI components.
- Session GUI: Advanced optional controls (eg counters/cyclers for building types / idle
- Session GUI: diplomacy/alliances/teams/tribute/trade
- Session GUI: Stack group buttons. Square Status Pane. Component toggles. Shift down Status portrait for full-width text.
- Main Menu GUI: Crop and trigger commander's map rollover art.
- Main Menu GUI: Campaign/Scenario? Screen.
- Main Menu GUI: Options Screen.
- Main Menu GUI: History Screen.
- Main Menu GUI: end of game screens (victory and defeat, postgame statistics)
- Main Menu GUI: session configuration screen (growing as features are added)
- Main Menu GUI: Remove PSGUI Atlas and make Scenario Editor clickie activate the wxWidgets layer, when the time comes.
- Loading GUI: Extend ... Random tips, player info, civ info, game/map
PREGAME - SHELL
- Parchment buttons for Campaign, Options, History
- WFG -> Scrolling Credits Screen (text/credits.txt)
- Move "About" to "0 A.D."
- Profile Manager: (1)
- Profile Name dropdown/list
- Click to select / Create (start typing) / Delete (select one)
PREGAME - SCENARIO EDITOR
- Switch to wxWidgets
PREGAME - CAMPAIGN
- Campaign Window
- Select Scenario (unlocked as completed)
PREGAME - OPTIONS (1) (2)
- Options Window (profile-ready)
- Music Volume
- Sound Volume
- Ambient Volume
- Voice Volume
- Test Sound from List
- Detail Model
- Show Blood
- System Info
- Mouse Settings:
- Reverse Buttons
- Double Click Time
- Autosave Number, Freq
- * Tooltip Both/Off/Concise/Verbose?
- * Scroll Speed
- Mouse Settings:
PREGAME - HISTORY
- History Window
- List of articles/manual pages
- View window (text/history/civ*)
PREGAME - CREATION
- Session Creation (Skirmish/MP)
- Chat (if MP)
- Each player: Name, Type (Human, AI (various types), Open, Closed), Team, Civ, Color, Starting Phase.
- All players: Tick to agree.
- Host: Kick (if MP). Launch.
- Ping (if MP)
- Game Type ...
- Victory ...
- Phase Range x to y (affects Starting Phase)
- Resources ...
- Max Pop ...
- Reveal Map ...
- Speed ...
- Cease Fire Time ...
- Locked Teams
- Locked Alliances
- Starting Forces ...
- Preview, Name
- Random / Scenario
- Map Size ...
- Climate ...
- Biome ...
- Elevation ...
- Rivers ...
- Provinces ...
- Min. Per Season ...
- Start Season ...
- Starting Time ...
- Min. Per Day
- Enable Weather
- Enable Wind
- Map/session settings summary
- Civ info
- Random tips
- Random art
- Loading bar
- Revise XML property layout
- Consistent casing
- Revise coordinate system: string array references, defined from XML; more relative addressing; skinning support (track art when registered); size array (top/bottom/left/right as appropriate)
SESSION - SCORE
- Scores Overlay RHS
- Track score information (player.score.*) (resources gathered/spent, kills/creates, etc) for Achievements screen
SESSION - MAP
- Size modes for left / right
- Move buttons to corner arcs
- Map Settings
SESSION - STATUS PANE
- Size modes for left / right
- Proper artwork
- Text at top for max length
- Optimise icons
- Button stacking, all commands work
- Fix production buttons
SESSION - GROUP PANE
- Squish when length exceeded
SESSION - TEAM TRAY
- Make it work (select/create/center)
- Most common portrait shown
- Minimise arrow
SESSION - TOP CENTRE INFO PANE
- Time elapsed
- Current phase
- Season / date
- Time of day/night / hh:mm
- Minimise arrow
SESSION - BUTTONS
- Pause - "The Game Is Paused", engine support
- Menu => Return, Restart, Save, Load, Resign, Settings, Quit Game, Quit Desktop
SESSION - TOOLTIP
- Generic input (eg autoextract appropriate info for entities)
SESSION - SUBWINDOW - DIPLOMACY
- Chat Input Box (attached to Minimap) (allies/enemies/all/select)
- Message Window
- Player Info (Name, civ, colour, team, phase)
- Treaties: Ally/Enemy?
- Tribute Resources
- Tribute Units / Provinces
SESSION - FLAGS
- Idle Citizen
- Idle Military
- Minimisable (right-click to suppress)
SESSION - SUBWINDOW - OBJECTIVES
- Objectives Window
- Message Window Update
- Trigger backend
SESSION - SUBWINDOW - LOAD/SAVE (also linked from 3 main menu)
SESSION - SUBWINDOW - MANUAL
SESSION - AFTERMATH
- Achievements Score Screen
- (1) Profile system (interface to create/edit/delete user folders; modified .cfg values saved to profile's user.cfg)
- (2) Config variables accessible and modifiable from JS (saves to user.cfg, not system.cfg or mod.cfg)
- (3) GUI fixes (see Task List); definitely need scrollbar
- (4) Minimap upgrade: interactive; terrain/object colour/visibility options; signal flare
Multiplayer / Single Player
- <font color="green">Green text indicates a feature that is exclusive to Multiplayer, and the control is not visible in other modes. For example, Skirmish games do not show the player's Ping value, as it is completely irrelevant to a single-player game.</font>
- Heading (Text): Lists the name that the host has given to this game, or the type of game eg "Skirmish Game".
- <font color="green">IP Address (Text): Lists the IP address of the host.</font>
- Name (Disabled Dropdown):
- (Human Name): The profile name of a human player connected at this slot. (Naturally, the host appears first in the list.) This control is non-interactive for human players.
- (AI Name): When "AI" is chosen from the Type dropdown, this dropdown is enabled and the host can choose an AI from the list. Examples: Balanced, Big Boomer, Aggressive Rusher, Easy Defensive, etc.
- Type (Dropdown):
- Open: This slot is available. When a player joins, he is allotted the first available Open slot (at which point this entry is changed to Human).
- Human: This slot is currently occupied by a human client.
- Closed: The host has specified that this slot is not available. If the host sets an occupied slot to Closed, that player is "booted" (removed from the session).
- AI: This slot has been assigned to an AI (computer) player by the host.
- Civilisation (Dropdown):
- Celts .. Romans All the civilisations available for the player to play are listed. The player chooses which civilisation he will control.
- Random: A random civilisation is chosen for this player from the options above when the game begins.
- Observer: This player is an observer. Observers view the entire world and all players, but cannot interact. (This option does not appear for AIs.)
- Starting Phase (Dropdown)
- Village: Each player starts at the lowest phase.
- Town: Each player begins the game with the technology that unlocks Town buildings.
- City: Each player begins the game with the technology that unlocks City buildings. (Branching civs -- eg Britons or Gauls for the Celts -- begin with their branch decision randomly selected.
- Colour (Dropdown): List of all coloured squares not used by other players. The player's units will have this colour during the game.
- Team (Dropdown):
- 1..10: When a player joins, he is assigned the next available team number. A player can also choose to be on the same team as other players by adjusting this number. Players on the same team are allied when they start the game.
- <font color="green">Ping (Text with Icons):</font>A number indicating the speed of the player's connection. Multiplayer games run only as fast as the slowest computer in the game. The slowest player will be marked with a turtle icon beside his attributes row. Players with a ping that is going to bring the game down to an unacceptable frame rate are also marked with an icon: A yellow dot indicates latency of 300 milliseconds to 1 second. A red dot indicates latency greater than 1 second. A ping of acceptable levels has a green dot.
- <font color="green">Version (Text):</font> The player's version number. Players must be of the same version number as the host in order to connect. [Alternatively we do a version number check on connection, and stop them from joining if they don't have the host's version.]
- <font color="green">(Tickbox):</font> This tickbox appears only next to rows occupied by Human players. The player must tick this box in order to agree that he has configured his player to his satisfaction and be ready to begin the game.
There are a lot of properties in the session settings below. Game modes provide a quick way to set the myriad game options on the Session Creation screen to a preset value. The host can choose a game mode from the list, and each mode will set the session properties to a certain value. He could then use these default modes as-is, or as a starting point to tweak the game settings to his liking. If he wished, he could also save his favourite settings for future use (or release each custom mode file to others as part of a mod).
- Game Mode (Dropdown): Choose a game mode from the list to set the game settings to an appropriate value for this mode. The game will ship with a few standard, popular ones (which we'll need to balance and test). Any other combinations will be unsupported and used at the host's discretion.
(note: describe the exact properties in more detail once property list is finalised)
- Standard (fast)
- Epic (2-3 hour no-rush)
- Death Match (light econ)
- Tactical (It's all about the combat, RTT gameplay; Gathering disabled, Construction disabled, no Starting Buildings, high Starting Units, Reinforcements)
- Land Battle (all territory features, victory condition is Settlement Control 100%)
- Arena (Gathering disabled, Construction disabled, no Starting Buildings, few Starting Units, Colosseum map (flat, open arena with invincible walls), Fragmatch, 30 second Time Limit)
- Gladiators (as Arena, but 1 military Starting Unit for one-on-one fight to the death)
- Save Mode (Button): It is also possible to save the current session settings as a mode, which can then be recalled later for future use. Press the Save Mode button and then enter the name for the mode in the field of the Game Mode Dropdown.
- Delete Mode (Button): Pressing this button will delete whatever mode is currently selected in the Dropdown (useful for removing unwanted custom game modes). Naturally, the player is prompted to ensure he wants to do this before removing the mode from the list.
- Starting Buildings (Dropdown):
- Nomad: Player starts with no buildings. (Must construct first Civ Centre.) (Not permitted if the player has no Starting Units.)
- Foothold: Each player starts with a single Village Centre (in their own territory, if territories enabled).
- Village: As Foothold, but each player starts with a basic set of Village buildings.
- Town: As Village, but each player also has each Town building. (Only available if the Starting Phase is at least Town.)
- City: As Town, but each player also has each City building. (Only available if the Starting Phase is at least City.)
- Starting Units (Input): Sets the number of random citizens each player has when they begin the game. Only those units that the player's Village Centre could train at the start of the game are included in the random selection. A value of zero means no starting units. (Not permitted if the player has no starting buildings.)
- Reinforcements (Input): Each player will have access to a platoon of fresh military units each time this amount of time elapses during the game. They will appear at the player's starting marker when he pushes the Send Reinforcements button (which appears only when he has reinforcements available). The number of reinforcements is equal to the specified value. Reinforcements can consist of any Citizen Soldier, Priest, or Super Unit.
- Instant Army (Checkbox): The Civil Centre can produce all the units that a Barracks can train, and they are all available at Village phase. (This also affects Starting Units.)
- Starting Hero (Checkbox): The player begins with a Hero (randomly chosen from the three available to his civilisation). As usual, he cannot train another unless this Hero dies, and will need to construct a Fortress in order to train replacement Heroes.
- Fragmatch (Checkbox): Each player's score increases whenever he kills an enemy unit or building, using the value of the defeated's XP. (This mode is therefore best used in conjunction with the Top Score or Ratio Score Victory Conditions.)
- Resource Gathering (Checkbox): Enabled by default. If disabled, gatherers are no longer able to gather resources from the environment. The player will have to make do with another source (such as a large allotment of Starting Resources, or reinforcements). If there is no gathering, then players will also not receive any random Starting Units that have an exclusively economic purpose, such as the Female Citizen.
- Construction (Checkbox): Enabled by default. If disabled, construction units are no longer able to build buildings. The player is therefore limited to any Starting Buildings he might be given at the beginning of the game, or those he can capture from other players or neutral gaia.
- Starting Resources (Dropdown)
- None: Each player starts with no resources at all. They must gather before they can create any more units or buildings.
- Low: Each player starts with a poor quantity of resources.
- Defensive: As for Low, but each player begins with a Standard quantity of Stone (to aid in building walls).
- Standard: Each player starts with a good supply of resources.
- High: Each player starts with a generous supply of resources.
- Death Match: Each player starts with an unspeakably gargantuan supply of resources.
- Shroud of Darkness (Checkbox): The player must initially scout to reveal the map.
- Fog of War (Checkbox): The player must continue to scout to maintain knowledge of enemy movement.
- Max Population (Input): Enter a value to set the maximum value of any player's Population resource. (This way players can use as stupidly high numbers of units as they wish, though they can expect reduced performance with numbers beyond the default.)
- Simulation Speed: Sets the rate at which the simulation ticks. Lower is better for players with poor reflexes, but the game will take longer to finish. Higher is better for players who can handle ludicrous speed.
- Alternatively perhaps the host can specify modifiers to different factors of the game, rather than altering the speed of everything. Possibly additional checkboxes like Accelerated Economy (Gathering, building, researching and training are twice as fast as normal). Or perhaps an input box with each value starting at 1.0, for:
- Unit Production Time
- Building Construction Time
- Research Time
- Production Cost
- Movement Speed
- Attack Damage
- Gather Rate
- Capture Resistance
- Conversion Resistance
- Alternatively perhaps the host can specify modifiers to different factors of the game, rather than altering the speed of everything. Possibly additional checkboxes like Accelerated Economy (Gathering, building, researching and training are twice as fast as normal). Or perhaps an input box with each value starting at 1.0, for:
- Initial Ceasefire (Input): Value indicates the number of minutes that the starting ceasefire is in effect (a value of 0 indicates no ceasefire). While a ceasefire is in effect, no attacks may be initiated. If territories are enabled, enemies cannot enter each other's territories.
- Locked Teams (Checkbox): If this option is selected, starting team assignments may not be altered by diplomacy during the game.
- Team Placement (Checkbox): If this option is selected, players on the same team are closed next to each other. Otherwise, players are placed randomly.
- Cooperative Teams (Checkbox): If this option is selected, players on the same team share control of a single civilisation (that of the first player in the list). When checked, that player's teammembers can no longer modify their Civilisation, Colour, etc, and these are set to the same values as the primary team member.
- Conquest (Checkbox): The player wins if he defeats all other players (see Defeat Conditions).
- Allied Victory (Checkbox): If checked, a player does not have to defeat his allies in order to win the game. If unchecked, it's a "Last Man Standing" or "Sole Survivor" game, and only one player can be victorious.
- Settlement Control (Checkbox and Input): The player wins if he controls a specified % of the map's settlements. 100% means that he must have a Civ Centre on each Settlement in the game to win (whether that's by placing his own, or capturing each enemy's).
- Capture the Relic (Checkbox and Input): The player that collects and retains this % of the map's relics wins the game. (Enables Relics under Map Settings, setting the number of relics to the number of players.)
- Top Score (Checkbox and Input): The player wins if he is the first to attain the specified score.
- Ratio Score (Checkbox and Input): The player wins if his score is ever eg 5x higher than any other player.
- King of the Hill (Checkbox and Input): If a player can maintain control of the extra Territory in the centre of the map for the specified number of seconds, he wins the game. (Enables No Man's Land under Territory Settings.)
- Buildings Destroyed (Dropdown): The player is defeated when he has none of these buildings left.
- Civ Centres
- Units Destroyed (Dropdown): The player is defeated when he has none of these units left, in addition to losing all the buildings specified above.
- Herocide (Checkbox): Each player starts with a Hero, but they will lose the game if the Hero is defeated. (Enables Starting Hero in Starting Conditions.)
- Capture the Princess (Checkbox): Each player starts with a Princess (effectively a civ-specific variant of the Female Citizen with regal appearance with no economic ability, carried on a pallet by a bearer at each corner). She is unable to garrison in any building. The players must each protect their Princess, as they will lose the game if their Princess is captured and garrisoned in another player's Civ Centre. (She is treated as a gaia herd animal for capturing purposes.)
- Time Limit (Input x3): Choose the number of hours, minutes and seconds the game can last. The game will end after this time has elapsed, with the victor being chosen depending on whom has best accomplished the victory conditions.
- On Player Exit (Dropdown): Specifies what happens to a human player's forces if he prematurely leaves the game.
- AI Takeover A new computer player is created which takes over control of his base.
- Defensive All the player's units and buildings remain in the game and are governed by their unit AI (capable of attacking nearby enemies, etc). But no computer player is created to expand and control his forces.
- Remove When a human player exits the game, all of his forces are removed from the map.
- Size (Dropdown): These presets set the random map's width and height. Or you can set a specific custom value for the width and height of the map.
- Tiny 90x90, recommended 2 players.
- Small 120x120, recommended 4 players.
- Medium 160x160, recommended 6 players.
- Large 200x200, recommended 8 players.
- Huge 250x250, recommended 10 players.
- Gigantic 300x300, recommended 12 players.
- Map Width (Input): Sets the horizontal dimension of the map.
- Map Height (Input): Sets the vertical dimension of the map.
- Geography (Dropdown)
- Continents: Several continents surrounded by water.
- Small Islands: Several small islands surrounded by water.
- Large Islands: Several large islands surrounded by water.
- Mediterranean: Land surrounded by a large inland sea.
- Pangea: One large continent surrounded by a corridor of water.
- Climate (Dropdown)
- Temperate Moderate rain, snow in winter, fog.
- Arid No snow, rare rain, sandstorms.
- Tropical Regular rain, little snow.
- Polar Lots of snow, blizzards.
- Elevation (Dropdown): How flat the land will be.
- Low Lands
- Forestation (Dropdown): Thickness of forests.
- Rivers (Dropdown): Number of rivers present on the map.
- Relics (Input): The number of relics spawned randomly on the map.
- Settlements (Input): By default, the number of Settlements per player is determined by the size of the map and the number of players (unless the Map Type does not use Settlements). The host can modify this setting from here. If the Game Type does not use Settlements, this number is fixed to zero.
- Territories (Checkbox): Each Settlement governs a bordered province, a segment of the land mass, of the map. If unchecked, the game runs in "sprawl" mode, disabling most territory-related options for a more "old school" game. The map is no longer divided into provinces (essentially it is one big province controlled by all players), and players can build and gather anywhere.
- No Man's Land (Checkbox): There is one additional neutral Settlement or Territory in addition to those equal to the number of players, usually in the centre of the map.
- Military Centre Cap (Input): The maximum number of Military Centres that can be built in any province (default is 2).
- Uniform Resources (Checkbox): Resources are distributed evenly among the territories. If unchecked, resources are scattered randomly (except in the player's starting territory), so some territories might have more than others.
- Minutes Per Day (Input): The number of minutes before the game advances to the next stage of the day/night (preset lighting conditions). (Set to zero for no day/night cycle.)
- Starting Time of Day (Dropdown)
- Minutes Per Season (Input): The number of minutes before the game advances to the next season. (Set to zero for no season cycle.)
- Starting Season (Dropdown)
- Skybox (Dropdown): Choose a skybox texture from the folders at art/textures/skies.
- Enable Weather (Checkbox): If enabled, weather effects will occur depending on the current season and climate.
- Enable Wind (Checkbox): If enabled, wind effects will be present in the game.
Possibly do menu where player can pick starting units and reinforcements. Each unit has a certain value of worth (need to spend resources/XP to purchase units).
The Game Session GUI is liable to be the most volatile, since it's bound to change a great deal during development based on user feedback (and we've already gone through various designs before even reaching a stage of completion).
There are a few principles driving this GUI design:
- Optimal use of space: The player's focus is the world. The interface should assist the player in interacting with that world, but shouldn't block the player's view of that world anymore than it has to. The player interacts with the world for the most part as a circular area radiating from the centre of the screen. (Consider for example how spectacles tend to be rounded about the corners; it's those framed edges and corners, on the periphery of vision, where we'll be putting the GUI.) Context-sensitive appearance of controls and keeping the controls away from cluttering the player's central view of the scene are therefore some of the key decisions.
- Ease of access: Somewhat contradicting the last point, though, commands should also be easily to hand. The commands he uses the most should be the most easily clickable (largest, closest to the centre of the screen), while the ones he uses the least should be more smaller and relegated to the corners of the screen. Hence, non-interactive information like a list of the unit's statistics or player's resources are moved to the edges, while command buttons are a little closer.
- Symmetry: The larger controls are in the corners of the screen where they will least affect the player's world interaction (with the most important being closest to the screen centre), with smaller and lower-priority ones along the edges. Because the two sides are therefore mirrored, symmetry therefore becomes more important to keep the layout pleasing to the eye, and therefore we need to be wary of balancing the amount of space taken up by controls on both sides of the screen.
- Ease of Preference: Research seems to indicate that RTSes aren't particularly consistent about where they put their main groups of controls. Some have the MiniMap? on the left and some on the right, and a player's preference largely comes down to which games they've played the most and which they've become accustomed to. So, to keep everyone happy, the GUI objects can be flipped between the four corners to match the user's preferred layout.
- User Friendliness: Some of the layouts are a little unusual, and that will determine whether or not we later replace them with something more standardised. Where possible, we should endeavour to give the player what he expects or at least what he can intuitively grasp within a few moments of play.
Map Scroll / Pan
- <strike>Mouse: mouse cursor to screen edges / hold mousewheel and drag mouse</strike>
- <strike>Keyboard: left/right/up/down cursor keys</strike>
- <strike>Mouse: mousewheel scroll</strike>
- <strike>Keyboard: +/- keys</strike>
- <strike>Mouse: hold left and right buttons and drag mouse</strike>
- <strike>Keyboard: hold Ctrl and use left/right/up/down cursor keys</strike>
- Snapback and orientation lock options to avoid disorientation
- No limits to camera for cinematic tracks
- <strike>Indicator circle/rectangle appears at selectable/destructible object's feet.</strike>
- Indicator colour = object health (green=>amber=>red).
- <strike>Cursor updated to indicate default selection/target action.</strike>
- <strike>Group number (if any) in bottom right.</strike>
- Possibly overlay icons (eg rank) if needed and uncluttered.
- Tooltip: Player name and allegiance (Ally, Enemy) and object name.
- Mouse: Hover cursor over object.
- Indicators remain in place
- GUI Control Panel updated to match selection (Status Pane; Command Buttons; Group Pane for more than one unit in selection)
- No command buttons appear when selecting another player's object ... only statistical information.
- Mouse: Left-click object.
Multi-Select / Bandbox
- Only player-controlled objects included in the bandbox selection
- Group Pane updated to indicate selection (see below)
- Double-click unit: Select all onscreen units/buildings of the same type.
- Shift+click ungrouped unit: Add this unit to the current group.
- Shift+double-click unit: Add all onscreen units of the same type to the current group.
- Shift+bandbox ungrouped unit(s): Add all units in the selection to the current group.
- Ctrl+click grouped unit: Remove this unit from the current group.
- Ctrl+double-click unit: Remove all units of this type from the current group.
- Checkup is a new monitoring feature that focuses the camera on a given target while a key is depressed for as long as the player wishes without selecting it. Once the key is released, the camera snaps back to its original location. The player can therefore take a peek at distant objects of importance, then return to his current focus. The Alt key is reserved for checkups. This includes:
- Keyboard: Alt+1..9: Checkup on given group number.
- Save a selection to a group number for future recall.
- Keyboard: Ctrl+1..9.
- Mouse: Right-click group number button in Team Tray.
- Selecting a group that is already selected centres on it.
- Keyboard: 1..9.
- Mouse: Left-click group number button in Team Tray.
- Context-sensitive cursor; chooses appropriate action for selection/target combo
- Right-click to command object to perform the target-specific action (Move, Attack, Gather, etc)
- (Cursor flickers when command given)
- Soldier + Ground = Move
- Soldier + Enemy = Attack
- Barracks + Ground = Place Rally Point
- Mouse: Right-click on target with an object selected.
Secondary Context Command
- Some commands can be activated by a double-click. For example, double-clicking target ground will cause a mobile unit to run or charge instead of walk. Double-clicking a target will cause a ship to close to melee range and use its ram instead of using ranged attacks.
- Mouse: Double-right-click to perform secondary default command.
Alternate Context Command
- Used to select from available commands for this context (noun=>verb), without resorting verb=>noun UI.
- If object can perform more than one command on the target (eg Repair or Garrison), "+" symbol appears in corner of cursor.
- Mouse: Hold button to display cursors for all possible context-sensitive actions. Move mouse towards option (or use [ ] keys) to update cursor. Release right button to trigger command.
- Keyboard: Use [ and ] keys to cycle through the available commands for the target under the cursor. Right-click to activate.
The Control Panel is the interface that overlays the main game screen, providing visual feedback (eg the MiniMap? and unit statistics) and additional ways of interacting with the environment beyond what can be done with context commands (tributing, creating alliances, chatting with other players, training and research, etc).
All Control Panel elements can be reversed vertically and horizontally (cycle using Alt+G), for those that prefer their MiniMap? on the left or right or controls on the top or bottom of the screen. This needs to be kept in mind for all controls. (Incidentally, G also toggles the GUI.)
By keeping track of all added controls (already done to manage the multiple sets of coordinates for flipping), we can call a function to change all artwork by changing all the sprites in that list.
Convention is to label such sprite names with a starting and ending asterisk. For example, sprite="*skin*HoverButton?", which could then be changed to "*hele*HoverButton?" when the "hele" skin is active.
Tool Tip / Rollover
- "Floating" tooltip that appears adjacent to the cursor.
- Describes the current object under the cursor. Components:
- Requires: <Requirements> (red if unavailable)
- RPS: <Heavy Mounted>
- Food: <Food>
- Wood: <Wood>
- Stone: <Stone>
- Ore: <Ore>
- Population Cost: <Population>
- Hotkey: <Hotkey>
- Bonus: <-10% Cost, -10% Build Time>
- Affected Units: <Scouts, Citizens>
- Mouse: Left-click to move camera to this location.
- Mouse: Right-click to target entities as one would in the main view.
Buttons around the MiniMap?. Ways we could do it:
- Circular MiniMap? with a curved button in each corner (a la AoE3). Looks cool, but reduces view and limited to four buttons.
- Arc of buttons around a square MiniMap?.
- Column of buttons to left of MiniMap? (current implementation).
Note: Buttons the player uses the most eg (Idle Citizen and Signal Flare) should be the closest to the middle of the screen for easier access. Some could perhaps be moved up by the sub-window buttons, as only a rare few actually have anything to do with the MiniMap?. ======= Idle Citizen =======
- The number of idle econ units is displayed over the button.
- The button flashes whenever the button's state changes from no idle units to one idle unit.
- (Note this could be problematic in our case since military units serve a dual econ function. Might have to only show those military units last tasked to econ.)
- Mouse: Left-click to centre on the next idle citizen.
======= Signal Flare =======
- Mouse: Left-click to switch to Flare cursor. Left click on terrain to drop a signal there which flashes on ally's MiniMaps? for a few seconds.
- Mouse: Right-click to cycle through all active signal flares.
- Enables/disables an input box where the player can type in chat messages and send them to other players he specifies.
- Click to pause/unpause the game.
- Toggle a list of coloured player names and their scores which appears above the MiniMap?. (Listed in order from highest to lowest score.)
======= Cycle Terrain =======
- Toggle Terrain: Rendered terrain on MiniMap? is either visible or black (only blips shown, so all colours are easily picked out).
- Toggle Territories: Lines indicating territorial borders are shown.
======= Cycle Objects =======
- Friend or Foe: Either each player is shown in his own colour, or it is set to Friend or Foe colours (Enemies: Red, Allies: Blue, Player: White, Neutrals (eg Gaia): Yellow).
- Toggle Econ: Economic units are shown on map.
- Toggle Military: Military units are shown on map.
- Toggle Resources: Resources units are shown on map.
- Tooltip includes a rating of the number of units gathering this resource, and the current capacity for gathering this resource (free slots in Mills/Fields/Corrals?), in an x/y format.
- The Population pool will flash and the player will be informed that he needs to build more Houses if his limit has been reached and units are queued.
- It'd be good if the counters grow/shrink in length to match the current numeric contents, to maximise use of screen space.
- Mouse: Left-click a pool to get an idle citizen to gather this resource.
Lists information about the currently selected unit.
- Player Name ("Acumen")
- Player Civilisation (could be conveyed simply through civ's flag icon?)
- Player Colour (probably by colouring particular parts of the control, like borders)
- Class (generic name: "Infantry Javelinist")
- Civ Name (specific name: "Hastatus")
- Personal Name (random name and surname given to unit: "Gluteus Maximus")
- Mouse: Left-click to centre camera on this unit.
- Mouse: Right-click to open manual page describing the full extent of this unit's stats (like AoM), including history, description, cost, every statistic, etc.
- Rank: Chevrons over the portrait.
- Hit Points: Health bar under the portrait.
- Supply: Icon and number representing resource carried by unit (Tree's wood, Trader's goods, etc). Infinity symbol instead of number if object has unlimited resources (eg Field).
- Garrison: x/y indication of the number of units garrisoned versus capacity, if applicable.
- Statistics: 3x3 grid of icons and numbers representing the unit's most important statistics. (eg Attack, Armour, Speed, Accuracy.) Some of these may have to be relegated to the tooltip for these stats due to limited space (eg each of a unit's attacks includes a damage value and three damage types). Bonused stats are green, penalised stats are red (eg from a Hero's aura effect or research).
These buttons circle the Status Pane and are always closest to the horizontal edge of the screen (since they list long columns of portraits which could obstruct the player's view). They consist of a tab button (which can be clicked to toggle the list) and a series of portraits grouped under that tab. It either lists other units the unit can manufacture (buildings, units, technologies), or options a player can select from a list (eg current stance, current formation, a list of rarely-used items like Kill, Tribute Unit, etc). Items the player cannot currently manufacture (eg insufficient funds) are greyed out. Current item being manufactured is represented by progress bar moving from left to right over that portrait, and a % progress.
- Mouse: Left-click tab button to hide/reveal the list.
- Mouse: Left-click item in production list to add it to the queue (number in corner of portrait increments).
- Mouse: Left-click option in a list to choose that option. The tab button will be updated to show this new portrait and the list will automatically be closed.
- Mouse: Right-click item in production list to remove it from the queue (number in corner of portrait decrements or disappears).
These buttons represent the player's abilities (usually ones that can't be accessed by interacting with other objects, such as Patrol, Town Bell, Ungarrison All, and so forth).
- Mouse: Left-click action button (or press hotkey) to select command, then select target if necessary.
- Mouse: Right-click action button (or press alt+hotkey) to instruct object AI to select suitable target for the action, if applicable.
Shows portraits and health bars of all the units currently selected. Or all the units garrisoned in this unit, if only one unit selected.
- Mouse: Left-click to select unit (or ungarrison this unit if the pane is listing garrisoned units).
- Mouse: Right-click to perform current action on this unit. For example, if the leader in the group can heal, and the player right-clicks the portrait of a damaged unit, the leader will heal this unit in his group (without changing the selection).
We have a few options for how we could represent this feature:
- Centred implementation: Group list is at bottom centre of screen. Always evenly positioned between Status Pane and MiniMap?. Symmetrical with Resource Pool. Could include other rows above as needed, and/or overlap buttons as group size increases.
- Tab button: Generate a "build list" of the current group as a tab button extending from the bottom rightmost command button of the Status Pane. Could add an additional row of tab buttons if we run out of space. Drawbacks: One less command button; need to allow extra space for hitpoint bars; asymmetrical and even shorter length than Empire Earth style.
- Empire Earth style: Current selection listed in bottom left, directly below the Status Pane (a portrait is shown here even when only one unit is selected). Drawbacks: Loss of symmetry; limited by distance between left margin and edge of MiniMap? (though could overlap portrait buttons if run out of space); inaccessibility (portraits are right in the bottom corner furthest away from average cursor movement).
When the player creates a Ctrl group, it appears here in the top left corner of the screen (or possibly as a vertical list above the MiniMap?) as a numbered portrait. It uses the portrait of the most frequently occurring unit in the group. So if group 4 consists mostly of Infantry Archers, then an Infantry Archer portrait icon will appear in the group 4 slot. The game will begin with none of these icons visible, and as teams are created, the icons will appear.
- Mouse: Left-click to select this group.
- Mouse: Right-click to save the current selection to this group.
Transparent panel below the Group Tray. Lists important messages that the player receives eg "PlayerTwo? has advanced to City Phase." "DariusTheGreat? has claimed one of your territories!" "Cheezy: All your base are belong to us!" including text colour and icons where appropriate. Listbox of a fixed number of elements; oldest elements are popped off the stack after only a few seconds.
Sometimes as part of his objectives the player is given additional readouts that are updated as he moves closer to completing his objectives. They are shown here on the opposite side of the screen to the Message Window. These might include a countdown timer ("Reinforcements Arrive: 3:12") or perhaps one or more counters ("Mills Destroyed: 4/12").
These buttons appear to the right of the Resource Pool and open the following sub-windows:
- Objectives: Describes the primary and secondary objectives given to the player, and provides suggestions to aid in completing them.
- Diplomacy: Allows the player to forge/break alliances with other players, and send them resources. (Note that units could also be tributed to another player using the "Tribute to <PlayerName?>" list button, including tributing a territory by giving him the territory's Civ Centre.)
- Game Options: Save, Load, Restart, Options, Resign, Quit, and all that jazz.
There are some optional extras that I haven't decided where we should put them yet (or even if they're strictly needed). To keep them in mind, these are:
- FPS Counter and Time Elapsed (hh:mm:ss since the game started).
- Clock showing current Season and Time of Day (or perhaps the mm:ss until the next Season change).
- Player's current phase (Village/Town/City?) and a progress bar indicating amount of time until Age upgrade is complete. (Less useful in our less Agecentric gameplay.)