Functional & Non-Functional Requirements
Functional Requirements
(F1) Account Management
Users can register and log in.
Users can reset their passwords (optional).
Users can have a profile with game history (optional).
(F2) Host Game
Users can host a game.
Hosts must set a unique game name.
Hosts can set a password for the game or have it be public.
Hosts must select a map.
(F3) Join & View Games
Users must be able to see a list of all joined, available and ended games.
Users must be able to know what game(s) they’re participating in.
Users must be able to be join a game with other players.
Users must receive the basic information of every game.
(F4) Global Chat
Users must be able to access a Global Chat.
Users must be able to see the last 50 messages.
Users must be able to chat with other Users.
(F5) Game Mechanics
The game must handle simultaneous turns. Orders are processed at the same
time.
Game must be able to calculate all the interactions and process whether a
move is valid or not.
The game must display resolved orders and outcomes after each turn.
Players must be able to see a history of moves and orders during and after a
game.
Users can view past games stored in a database.
The system should enforce turn deadlines and notify players when a new turn
starts.
The game must recognize different unit types and their abilities.
The game should notify players of successful or failed moves. The host can
configure game settings (e.g. phase duration).
The game must allow automated resolution of turns based on rules.
Users can click on a province with one of their units and do actions with it
such as move, support, hold or convoy.
Non-functional Requirements
(NF1) Account Management
Account name must be unique and be up to 50 characters long.
Email must be unique, not exceed 100 characters and be in email format (for
example: @gmail.com at the end).
The log in should be secure, i.e. written passwords must be hidden.
Passwords must be hashed.
Passwords should consist of at least 8 characters and up to 100 characters
and must include a number.
The front end should display the User who is logged in.
User must automatically log in when they create a new account.
System must have cookies that save User’s information, ensuring they don’t
have to log in every time.
(NF2) Host Game
Game name must be unique and not be longer than 50 characters.
Password should not be longer than 100 characters.
Password should not be hashed, so it is retrievable from the database.
(NF3) Join & View Games
System must show accurate data regarding the games.
System must separate the games based on the ones user has joined or not.
The game information should be formatted in an understandable manner.
(NF4) Global Chat
Chat must not lag.
Chat must clear out oldest messages if it reaches the cap (500).
Chat must use SignalR to be smooth and not hard refresh.
Chat must only be accessible by users who are logged in.
(NF5) Performance, graphics
With a big map, performance is key and must not lag too much.
Map should be high quality.
The game should be optimized to handle many concurrent users without
significant slowdown.
The database queries should be optimized for fast retrieval of game states.
Game state updates should be efficient to avoid excessive load on the server.
(NF6) User experience and UI
The UI should be intuitive and easy to navigate.
The game map should be zoomable and scrollable.