Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Egambo angular web site. #12

Open
acautin opened this issue Nov 7, 2017 · 3 comments
Open

Egambo angular web site. #12

acautin opened this issue Nov 7, 2017 · 3 comments

Comments

@acautin
Copy link
Contributor

acautin commented Nov 7, 2017

For an initial sketch of the interface check: egambo_web_interface.pdf
Second sketch based on feedback
egambo_sketch_2.pdf

Non functional requirements

  • Standard practices for authentication via HTTP cookies and XSRF protection.
  • Transparency for the user over where is he connected, sessions should be maintained in the whole cluster.
  • Mobile first responsive design should be used for the interface selecting components that are usable/supported in mobile devices.

Header

  • The header should display logged in user, its ranking option to logout.
  • Indicate with a clickable button the number of game offerings which should take the user to the My Games section

Play

Game creation

  • Support for offline games, turn based via website notification or mail if the user is offline, no time restriction (or extremely long).
  • Support creation for quick games, users should be logged in at the same time not performing the move in a fixed amount of time automatically will forfeit the match. (Server side not yet implemented)
  • Allow creation of games based on different game type categories Normal, Gravity or Periodic.
  • Select game from list of predefined options for size of the board and initial position, this list is dependent and repopulated when changing the Game type category
  • Present the user some detailed information of the game.
  • Allow to challenge other users via a input text field, alias and email are supported identifiers, email can be used to challenge players not registered yet sending them an invitation to join egambo.
  • Leaving the challenge field empty will perform the matchmaking with other players already waiting for a game.

Playing the game (Board view)

  • It should present who is playing with the time left to move.
  • Surrender button
  • Controls to review previous moves
  • Section to present the list of moves so far.

My Games

  • Present the list with the current games in progress, to continue a match the user can select a game from the list bringing him to the Board View.
  • List with game offerings with buttons to select or reject them.

History

  • List of played games by this user (TBD: Truncate the list to last 500) selecting them will load the board view with the controls to review the match move by move and the moves list.
  • Download button to get a list of the games with the moves and result in a standard format (Format TBD) allowing offline training for A.I.
  • Clear button to delete the history of games played (This is only a soft delete for this user, as the games should still be visible for the opponent and for us when training egambo's own A.I.)
  • Moves list should be a selectable grid to loading the state at that point on time on the board.

Account

User account

  • To access egambo and play games, the users should first register creating a new account with an email/password for now (TBD: If necessary to login with providers as Facebook, etc..) and an alias to be displayed for his user.
  • Allow users to select an avatar
  • Allow users to decide how often should egambo notify them when receiving offerings or an opponent has performed a move, options could be one notification email for: Every action, Once a day, Once a week, Never (Do not notify, allow the user check by himself).
  • TBD: Internationalization (Date format, Language, Time Zones, etc)

Ranking

  • Present a global ranking with the players based on the result of played games.
  • Exact ranking calculation is TBD for now we can think of bigger/periodic boards giving more points per match than smaller/simple game types.
@acautin acautin self-assigned this Nov 7, 2017
@stoch
Copy link
Contributor

stoch commented Nov 7, 2017

@acautin Please also consider mobile rendering of the pages and don't use GUI concepts which later cannot be supported on mobiles.

Page 1:
login | register
WELCOME Section
try

Page 2:
Scrollable list of game types with current game count | history game count | opportunities | difficulty
orderd game count desc, history game count desc, opportunities desc

opportunities are only counted if I have reached the level to play this game (requires login)
one can always play against internal bots (on any difficulty, even without registration or login)

Page 3:
Heading = selected game type | my own ranking (e.g. 17/334) on this game type
Current Games with online | opponent | opponent ranking | moves played so far (tap to continue playing)
Link External Offerings with external opponent | opponent ranking (requires login)
Link Internal Offerings of internal bots
Offer game to anyone (requires login)
Offer game to particular player (requires login)
Link Ranking for this game type ordered by ranking desc
Link History of games payed for this type

Page 4 (after tapping on current game):
Heading = Game Type | opponent | game id
game board, actions: next move tap | propose tie | accept tie | suspend

Page 5 (after tapping on External Offerings):
tap on opponent to accept offering and goto page 4

Page 6 (after tapping on Internal Offerings):
tap on bot name to accept offering and goto page 4

Page 7 (after tapping on Offer game to anyone):
if immediately accepted then goto page 4
else goto page 3

Page 8 (after tapping on Offer game to particular player):
if immediately accepted then goto page 4
else goto page 3

Page 9:
Link Ranking for this game type ordered by ranking desc

Page 10:
History of games payed for this type opponent | game count | game last timestamp
order by opponent or game count or game timestamp

Page 11 (after tapping on a game history opponent):
List of Links History of games for this opponent

Page 12 (after tapping on a game history opponent):
Display a History of a game

Ranking should be per game type. In the end, good rankings on low complexity games will give authorization to play more complex ones. This will avoid bored experienced players having to play against beginners.

@stoch stoch closed this as completed Nov 7, 2017
@stoch stoch reopened this Nov 7, 2017
@acautin
Copy link
Contributor Author

acautin commented Nov 7, 2017

@stoch
Thanks for the feedback, will update the sketch accordingly

I agree with the ranking being by game type making more sense, however I don't think it would be nice to restrict players to which games they can play based on ranking, as an example why should I be good at tic-tac-toe if I am only interested in gravity connect-4 games. If I am really bad player will be stuck playing tic-tac-toe making it quite boring.

Instead of preventing game we could make some sort of leagues based on ranking so top 20% of players can only be challenged by other top 20% players, or maybe some X positions above/below my current ranking.

@acautin
Copy link
Contributor Author

acautin commented Nov 9, 2017

@stoch I have created a new sketch, added a version for small screens thinking into mobile design, disadvantage is that we shouldn't have the header fixed as it is not the expectation of the users.
For the grids, the heading with the buttons at the top might look mixed with the grid I don't think this will be a problem once implemented, just an artifact of pen and paper.

egambo_sketch_2.pdf

acautin added a commit that referenced this issue Jan 31, 2018
…r registered users and load the particular game. #12
@acautin acautin removed their assignment Jun 2, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants