#### Functional **_Guidelines_** Zappy is a long project to audit, for a full project review we advise you to spend around: - 20 to 30 minutes for the server testing. - 10 to 20 minutes for the graphic client testing. - 5 to 10 minutes to test the client's AI. Take the necessary time to check out the work of your peer carefully and ask him for guidance to understand his project. **_The server_** ##### You will have to evaluate the functional and technical quality of the server. ##### Try to run `"./server"`. ```console $ ./server Usage: ./server -p -x -y -n [] [] ... -c [-t ] -p port number -x world width -y world height -n team_name_1 team_name_2 ... -c number of clients authorized at the beginning of the game -t [100] time unit divider (the greater t is, the faster the game will go) ``` ###### Does it display a result like the one presented above? ##### Try to run `"./server -p 8080 -x 10 -y 10 -c 5 -n -t 10"`. Open another terminal and run `"telnet 127.0.0.1 8080"` ```console $ telnet 127.0.0.1 8080 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. WELCOME ``` ###### Does it display result with a welcome message like the one presented above? ##### Use Vscode or a similar program and search for any `exec` functions like (`execve`,`execpe`,`execl`,`execlp`,`execle`,...). ###### Did the student use any of these functions? ##### Try to run `"./server -p 8080 -x 10 -y 10 -c 5 -n "`. ```console [ SQ ] : FOOD R0 R1 R2 R3 R4 R5 BOTS ... [ 0] : 2 1 2 1 1 0 0 [ 1] : 2 2 0 1 0 0 0 [ 2] : 0 0 1 0 0 0 0 [ 3] : 1 2 1 0 0 0 0 ... [ 97] : 3 0 1 3 0 0 0 [ 98] : 1 1 0 0 0 0 0 [ 99] : 0 1 0 0 0 0 0 ``` ###### Can you confirm that the number of columns and rows of the output are the same as the result above? ##### Try to run `"./server -p 8080 -x 10 -y 10 -c 5 -n -t 10"`. Open another terminal and run `"siege -b 127.0.0.1:8080"`. ###### Is the program `./server` still working? ##### Try to run `"./server -p 8080 -x 10 -y 10 -c 5 -n "` in two different terminals. ###### Does it display, in the second terminal, `ERROR : Address already in use` or something similar? #### Let the game run for a wile and then check the time taken to execute the movements and actions of the player. ##### Is the timing of each movement and action respected? **_Client_** ##### Try to run `"./client"`. ```console $ ./client Usage: ./client -n -p [-h ] -n team_name -p port -h name of the host , the default is localhost ``` ###### Does it display a result like the one presented above? ##### Try to run `"./server -p 8080 -x 10 -y 10 -c 5 -n "` then run `"./client -n -p 8080"` on a different terminal. ###### Does the program launch without any errors? ##### Try to run `"./server -p 8080 -x 10 -y 10 -c 5 -n "` then run `"./client -n -p 8080 -h 127.0.0.1"` on a different terminal. ###### Do the two programs interact with each other without errors? ##### Try to run `"./server -p 8080 -x 10 -y 10 -c 5 -n "` then run `"./client -n -p 8080 -h 127.0.0.1"` ###### Does the program print an error message like `"Error: the team TeamNotWorking doesn't exist"` in the server part, and the client is kicked out? **_Graphic Client_** ##### Ask the owners of the project for help to connect the Graphic Client to the server. ###### Does the client properly connect to the server and display the map? ##### For the square content, test the possibility of clicking on a square to see the details about it. It should look like a floating window, tooltip, or something else. ###### Can you confirm that the square is showing its content somehow? ###### Can you confirm that it is possible to distinguish the number of all stones on a square? ##### Search in the map for the player, stones and food to see if they are visible. ###### Are the players, stones, and food visible in the map? ##### Try to click on a player to see his characteristics. ###### Is it possible to see some kind of floating window, tooltip, or something else with the characteristics of the player? ###### Can you confirm that it is possible to visualize the sounds? **_PLAYER_** ##### Try to run a game and take a close look at what the players are doing. ###### Does each player starts with 10 food (1260 time units) and 0 stones? ###### Does each player starts on level 1? ###### Is the player able to pick up food? ###### Is the player able to pick up stones? ###### Can you confirm that if the player does not eat, he starves and die? ###### Can you confirm that if the player eats, he will survive longer? ###### Can the player perform the evolution ritual and level up? ###### Does the sight of the players increase with the level rising? ###### Can the player hatch an egg if he needs a spot in his family? ###### Can you confirm that if the player exits on the right side of the board, he will re-enter on the left side or vice versa? **_resources_** ###### Can you confirm that food and stones exist as resources in the game? ###### Can you confirm that six types of stones are present in the game? (Jade, Peridot, Amber, Amethyst, Garnet, Ammolite) ###### Are resources randomly generated with some clear logical rules? (ask the students to explain those rules) **_Food_** ###### Is one food unit equal to 126 time units? **_Evolution ritual_** ##### Try to confirm that the rules of the evolution ritual are the same given in the subject. (ask the project owners for an explanation if necessary). ###### Are the evolution ritual rules exactly the same? **_Broadcast_** ##### Pay attention to the broadcast messages. ``` broadcast ``` ###### Can you confirm that in order to send a message, the client must send the command above to the server. ##### After the client send the command to the server, he will send to all its clients the following line: ``` message , ``` ###### Can you confirm that the server replied the above message with K indicating the square where the sound comes from? #### General ###### +Is the visualizer in 3D? ###### +Is the server using only one process (no threads)? #### Basic ###### +Does the project run quickly and effectively (favoring recursive, no unnecessary data requests, etc.)? ###### +Does the code obey the [good practices](../../good-practices/README.md)? #### Social ###### +Did you learn anything from this project? ###### +Would you recommend/nominate this program as an example for the rest of the school?