All pastes #1512983 Raw Edit

Mine

public text v1 · immutable
#1512983 ·published 2009-07-30 22:14 UTC
rendered paste body
SERVER STARTUP
--------------
* server starts up and initializes
* server binds to port
* server listens for connections from clients


SERVER LOGIN HANDLING
---------------------
* client sends keepalive request
* server sends keepalive acknowledgement
* server sends authentication request
* client sends authentication acknowledgement
* server sends authentication accepted/denied
   * if denied:
      * server closes client connection
      * server logs failed authentication attempt
   * if accepted
      * server sends user stats request
      * client sends user stats acknowledgement
      * server sends user stats
      * server sends user friend list request
      * client sends user friend list acknowledgement
      * server sends user friend list start
      * server sends user friend list
      * server sends user friend list stop
      * server sends lobby list request
      * client sends lobby list acknowledgement
      * server sends lobby list start
      * server sends lobby list
      * server sends lobby list stop
      * server sends login successful request
      * client sends login successful acknowledgement
      * server logs successful login attempt


SERVER LOBBY/GAME HANDLING
--------------------------
* client sends join lobby request
* server sends join lobby acknowledgement
* server checks if user can join lobby
* server sends join lobby accepted/denied
   * if denied:
      * server does nothing
      * server logs failed join lobby request
   * if accepted:
      * server joins user to lobby
      * server sends lobby info request
      * client sends lobby info acknowledgement
      * server sends lobby info
      * server sends games list request
      * client sends games list acknowledgement
      * server sends games list start
      * server sends games list
      * server sends games list stop
      * if user wants to leave lobby:
         * client sends part lobby request
         * server sends part lobby acknowledgement
         * server boots user from lobby

* client sends join game request
* server sends join game acknowledgement
* server checks if user can join game
* server sends join game accepted/denied
   * if denied:
      * server does nothing
      * server logs failed join game request
   * if accepted:
      * server joins user to game
      * server sends game info request
      * client sends game info acknowledgement
      * server sends game info
      * server sends player list request
      * client sends player list acknowledgement
      * server sends player list start
      * server sends player list
      * server sends player list stop
      * server sends ready to play request
      * client sends ready to play acknowledgement
      * server readys user for gameplay
      * if user wants to leave game:
         * client sends part game request
         * server sends part game acknowledgement


SERVER GAMEPLAY HANDLING
------------------------
* server calculates number of clients in game
* server waits for each client in game to be ready
* once each client is ready, initiate game
* server starts game loop:
   * server shuffles deck, storing deck order locally
   * server deals one card to each user until each user has 7
   * server sets player order
   * first round starts, initiating game rounds loop
      * server prepares game-state packet
      * server sends game-state packet request to each client
      * each client sends game-state packet acknowledgement
      * server sends game-state packet to each client
      * current player plays hand and sends it to server
      * server reads players hand and updates game-state packet
      * round ends, next round starts
      * game rounds loop continues until server recognizes winner
      * once winner is declared, server notifies each client
      * server updates each clients user stats
      * server sends 'play again or leave' query to each user
      * server waits for each client to send their option
      * server boots users that want to leave
      * sever gameplay loop starts over with calculating number of clients


SERVER LOGGING
--------------
* logging function checks logging configuration
* logging function forms log string with prefixed date/time
* logging function prints either to console or file


USER STATS STRUCTURE
--------------------
* username
* users rank
* email address
* date of last login


USER FRIEND LIST STRUCTURE
--------------------------
* each friend's username
* each friend's rank
* each friend's email
* each users date of last login
* each users online/offline status


LOBBY LIST STRUCTURE
--------------------
* lobby name
* number of games in lobby
* max number of games allowed in lobby
* whether or not it has a rank limit, and if so, what the rank limit is


GAMES LIST STRUCTURE
-------------------
* game name
* number of players currently in game
* whether or not game has rank limit, and if so, the rank limit


PLAYER LIST STRUCTURE
---------------------
* username
* rank


GAME-STATE PACKET STRUCTURE
---------------------------
* round number
* number of cards in each players hand
* list of cards in current players hand
* list of cards in each face-up pile
* list of cards in each kings pile


LOBBY INFO STRUCTURE
--------------------
* name of lobby
* date of lobby creation
* number of games in lobby


GAME INFO STRUCTURE
-------------------
* name of game
* date of game creation
* number of players in game


NETWORKING STRINGS (REQ, ACK)
-----------------------------
keepalive request                       n_req_keepalive
keepalive acknowledgement               n_ack_keepalive
authentication request                  n_req_auth
authentication acknowledgement          n_ack_auth
authentication accepted                 n_auth_accepted
authentication failure                  n_auth_failed
user stats request                      n_req_user_stats
user stats acknowledgement              n_ack_user_stats
user friend list request                n_req_user_flist
user friend list acknowledgement        n_ack_user_flist
user friend list start                  n_stt_user_flist
user friend list stop                   n_stp_user_flist
lobby list request                      n_req_lobby_list
lobby list acknowledgement              n_ack_lobby_list
lobby list start                        n_stt_lobby_list
lobby list stop                         n_stp_lobby_list
games list request                      n_req_games_list
games list acknowledgement              n_ack_games_list
games list start                        n_stt_games_list
games list stop                         n_stp_games_list
player list request                     n_req_player_list
player list acknowledgement             n_ack_player_list
player list start                       n_stt_player_list
player list stop                        n_stp_player list
login successful request                n_req_login_ok
login successful acknowledgement        n_ack_login_ok
join lobby request                      n_req_lobby_join
join lobby acknowledgement              n_ack_lobby_join
part lobby request                      n_req_lobby_part
part lobby acknowledgement              n_ack_lobby_part
lobby info request                      n_req_lobby_info
lobby info acknowledgement              n_ack_lobby_info
join game request                       n_req_game_join
join game acknowledgement               n_ack_game_join
part game request                       n_req_game_part
part game acknowledgement               n_ack_game_part
game info request                       n_req_game_info
game info acknowledgement               n_ack_game_info
ready to play request                   n_req_readytoplay
ready to play acknowledgement           n_ack_readytoplay
send game-state packet request          n_req_send_gamestate
send game-state packet acknowledgement  n_ack_send_gamestate


NETWORKING STRINGS (STRUCTURES, INFO)
-------------------------------
user stats                              s_ustats_<str>
user friend list                        s_uflist_<str>
lobby list                              s_llist_<str>
games list                              s_glist_<str>
player list                             s_plist_<str>
game state packet                       s_gs_<str>
lobby info                              s_info_lobby_<str>
game info                               s_info_game_<str>


USTATS STRING
-------------
<a>:<b>:<c>:<d>
where...

a is username
b is rank
c is email
d is date of last login


UFLIST STRING
-------------
<a>:<b>:<c>:<d>:<e>:<f>
where...

a is id
b is username
c is rank
d is email
e is date of last login
f is online/offline


LLIST STRING
------------
<a>:<b>:<c>:<d>:<e>
where...

a is id
b is lobby name
c is number of games in lobby
d is max number of games in lobby allowed
e is 0 for no rank limit, or rank limit number


GLIST STRING
------------
<a>:<b>:<c>:<d>
where...

a is id
b is game name
c is number of players in game
d is 0 for no rank limit, or rank limit number


PLIST STRING
------------
<a>:<b>:<c>
where...

a is id
b is username
c is rank


GS STRING
---------
<a>:<b>:<c>:<d>:<e>:<f>:<g>:<h>:<i>:<j>:<k>:<l>:<m>:<n>:<o>
where...

a is round number (round id)
b is id of current player (player gs packet is sent to)
c is hand of current player
d is number of cards in player1's hand
e is number of cards in player2's hand
f is number if cards in player3's hand (0 if no player)
g is number of cards in player4's hand (0 if no player)
h is list of cards in face-up pile 1
i is list of cards in face-up pile 2
j is list of cards in face-up pile 3
k is list of cards in face-up pile 4
l is list of cards in kings pile 1
m is list of cards in kings pile 2
n is list of cards in kings pile 3
o is list of cards in kings pile 4


LOBBY INFO STRING
-----------------
<a>:<b>:<c>
where...

a is name of lobby
b is date of lobby creation
c is number of games in lobby


GAME INFO STRING
----------------
<a>:<b>:<c>
where...

a is name of game
b is date of game creation
c is number of players in game


CARD CHARACTERS
---------------
(in data strings, each card is separated by a '-')

SPADES
------
ace       01
two       02
three     03
four      04
five      05
six       06
seven     07
eight     08
nine      09
ten       0a
jack      0b
queen     0c
king      0d

DIAMONDS
--------
ace       0e
two       0f
three     10
four      11
five      12
six       13
seven     14
eight     15
nine      16
ten       17
jack      18
queen     19
king      1a

CLUBS
-----
two       1b
three     1c
four      1d
five      1e
six       1f
seven     20
eight     21
nine      22
ten       23
jack      24
queen     25
king      26

HEARTS
------
ace       27
two       28
three     29
four      2a
five      2b
six       2c
seven     2d
eight     2e
nine      2f
ten       30
jack      31
queen     32
king      33