Managementul Proiectelor Software
Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
proiect:descriere [2014/11/20 03:47]
mihai.zaharescu
— (current)
Line 1: Line 1:
-=Descrierea Proiectului= 
-==Game Purpose:== 
- 
-The purpose is to make the team you are playing in win, by protecting any of the team members and creating a fast path for one of the members to the destination,​ the other side of the board. 
-The players are pawns, consisting of code, each student has a single pawn and he offers a UNIQUE code for the pawn (no two students/​pawns have the same code). 
- 
-==Game Environment:​== 
-The game is a game board, the board having dimensions LxL, where L is the maximum number of members in a team + 1. 
-Each team has a distinct color and luminosity. Each member is represented by a colored pawn and a string text of his name. The color of a pawn is a combination between the color of his original team and the color of the team he is playing in: The luminosity is kept from his original team and the color from the team he is currently competing in. 
-At any time, only 4 teams compete, chosen at random, but considering that at the end all the teams have competed the same number of times. 
-Each team starts on a edge of the board, from the corner with the minimal radial angle, considering 0 degrees the top left corner and the origin of rotation the center of the board and places the members continuing with the growing radial angle. 
- 
-{{:​proiect:​initial.jpg?​200|}} 
- 
-Each time the game is restarted, the team members will be shuffled between teams, but at any game at list N members will be from the original team (having the same color). N=smallest team size/2. The team sizes will be chosen randomly every game, from the smallest team size to the largest. 
-If there are more than 4 teams, the rest of the teams wait for a series of games to finish, then they are included in the game while another team is put on hold. 
-If there are only two teams, they are placed on opposite sides of the square. Three teams cannot compete. 
-{{:​proiect:​final.png?​200|}} 
- 
- 
-==Game Rules:== 
-A pawn can only move one cell at a time in the directions: up (U), down (D), left (L) and right (R), not diagonally. It cannot move in an occupied cell, unless the pawn in the cell is willing to leave, but not swap positions (they cannot go through each other). 
-The pawns can communicate to each other through the function: send_message(destination_id,​ message). 
-The pawns send their intention to move to the server through the function: move(path), where “path” is a null terminated string as many ‘U’, ‘D’, ‘L’ and ‘R’ letters. 
-The pawn can ask for it’s position, at any time, through the function get_position(). It can also ask for any other’s position through get_position(id). He can also ask for the path: get_path()/​get_path(id) and for the cell occupancy unsigned get_cell(x, y). One can also ask for an estimated future cell occupancy (considering the offered unblocked paths): get_cell(x, y,  time), where time is time from current position: +1 meaning how will the cell be the following iteration, -1 how the cell was in the past iteration. The function returns either the index of the pawn in the cell, or 0, if the cell is empty. Before the original time any cell is empty. 
- 
-==Grading:​== 
-The purpose of the game is to help any one of your team members get to the opposite side of the board. If a pawn gets to the other side, his team wins and the game ends. 
-Every time a team wins, all the members that formed the team at the respective game earn a point and the team (color) earns a point. 
-The individual grade for the application is calculated from the number of times a pawn belonged to a winning team and the group grade is calculated from the number of times the original team (color) won. 
- 
-==Nelamuriri== 
-Sectiunea asta raspunde la nelamuriri si intrebari care au aparut in cadrul discutiilor din timpul laboratoarelor. 
- 
-=== Câte echipe vor fi la un moment dat prezente pe hartă? === 
-Patru echipa participa odata. Acestea vor fi alese random, astfel incat toate echipele sa joace de numar egal de ori. 
- 
-=== Cati jucatori dintr-o echipa participa odata? === 
-Cel mai probabil 12 jucatori / echipa. Acestia vor fi alesi pseudo-random,​ astfel incati toti membri sa joace de numar egal de ori. 
-Acest numar va fi stabilit exact la simularea din saptamana a 11-a. 
- 
-=== Câți pioni joacă într-o rulare? Cum vor fi aleși? Cum garantăm că vor fi pioni de un anumit tip/rol? Trebuie echipa să se gândească la asta? === 
-Cel mai probabil 12 jucatori odata in echipa. Sunt alesi random jumatate din numarul stabilit (6) din echipa originala iar ceilalti pana la 12 din restul echipelor, tot random. Nu se garanteaza nimic; totul este random, deci echipa va trebui sa aiba o strategie care sa tina cont ca nu se poate baza pe un anumit pion. 
- 
-=== Va fi o singură hartă sau mai multe? === 
-Una 
- 
-=== Câte rulări vor fi? === 
-Cate incap in timpul alocat cursului. Incercam sa pastram un echilibru intre numarul de rulari (care trebuie sa fie cat mai mare pentru a estompa tot ce inseamna random) si timpul alocat unei rulari (catre trebuie sa fie suficient pentru a comunica si a rula un algoritm util. 
- 
-=== Care este timeout-ul unei runde? === 
-In urma testelor proprii o sa propuneti voi un timp (de ordin milisecunde) pentru comunicarea si gandirea inainte de o singura mutare. Runda se opreste ori cand castiga cineva (un jucator ajunge pe partea opusa) ori cand se ajunge la un dead-lock, ori cand expira un timp exagerat de mare (1 minut ar trebui sa fie mai mult decat suficient ca sa castige cineva, avand in vedere numarul mare de rulari necesar). 
- 
-=== Ce se întâmplă dacă doi pioni vor, în cadrul unei runde, să ajungă pe aceeași poziție? === 
-Pionii au un timp la dispozitie pentru a comunica si a dezvolta o strategie pentru urmatoarea miscare. Dupa expirarea timpului respectiv (milisecunde) toti pionii sunt deplasati cu cel mult o casuta, in functie de preferinte. Nu conteaza cand a trimis cineva un mesaj serverului - ultimul mesaj este cel luat in considerare. Daca doi pioni cer aceeasi casuta, amandoi vor ramane pe loc. Daca au trimis mai multe miscari (un path), lista amandurora va fi de asemenea invalidata. 
- 
-=== Sunt obligat sa mut la fiecare pas? === 
-Nu. Se poate trimite o lista vida de miscari (pentru a sta pe loc), o lista cu o singura miscare (pentru a misca doar la urmatoarea itaratie) sau o lista cu multe miscari (pentru a misca serverul automat in functie de lista, in caz ca nu mai trimite aplicatia alte mutari). Lista este invalidata in caz de conflict sau miscari ilegale. 
- 
-=== Când se încheie o rulare? Când un pion al unei echipe ajunge la final? Când ajung toți pionii unei echipe? Sau când mai rămâne una singură care nu a ajuns și se face un clasament? === 
-Cand un singur pion ajunge pe latura opusa lui se opreste jocul pentru toate echipele. Echipa din care facea parte pionul la momentul respectiv castiga un punct la nota echipei, iar membrii din acel moment din echipa castigatoare castiga un punct la nota individuala. Toti ceilalti nu castiga si nu pierd nimic runda respectiva. 
- 
-=== Cum comunica executabilele noastre? Doar cu serverul sau pot comunica si intre ele? === 
-Fiecare echipa furnizeaza un direcor cu numele echipei, care contine executabile cu numele membrilor. Id-ul unui pion este sub forma: "nume echipa:nume membru"​. Se poate face si broadcast ex: "nume echipa:​*"​ va trimite la toti membri care fac parte curent din echipa respectiva, iar "​*"​ va trmite tuturor jucatorilor de pe tabla. Toata comunicarea se face cu serverul ca si intermediar. Un pion ii spune serverului sa trimita unui alt pion un mesaj. Pe server nu il intereseaza mesajul; el doar il trimite mai departe. In consecinta, pionii discuta intre ei, dar printr-un intermediar. 
-De asemenea, pionii mai comunica si direct cu serverul pentru a trimite mutari sau pentru a interoga informatii referitoare la alti pioni (pozitie curenta, trecuta si viitoare probabila; culoare; luminozitate) si la celule de pe tabla (ocupare trecuta, prezenta si viitoare probabila). 
- 
-===  Iar mesajele din enunt pentru comuncarea cu serverul nu sunt foarte clare === 
-Mesajele pentru comunicarea cu serverul sunt doar cele de interogare informatii de pozitie si apartenenta la o echipa a unui pion, de interogare celule de pe tabla si dimensiune, si de oferire path de miscare. Restul comunicatiei o stabiliti voi in cadrul seriei (ex: cum sa ii spuneti unui pion din alta echipa ce sa faca atunci cand vine in echipa voastra) sau in cadreul echipei, daca vreti sa aveti un limbaj secret (desi un alt pion nu poate interoga istoria de comunicare a unui pion strain). Serverul doar va trimite un string oricat de lung catre destinatari,​ fara sa se uite la el. 
- 
-== Server MPS == 
-Serverul este in dezvoltare la aceasta adresa [1]. 
-Puteti trimite feedback, bug-uri, sugestii de imbunatatire pe forum. 
- 
-[1] https://​github.com/​MPS-UPB/​clash-server