System matchmaking

0

Witam mam pytanie odnosnie paru rzeczy.
Chce zrobic system wyszukiwania meczy dla uzytkownikow mojej strony i potrzebuje wiedziec mniej wiecej takich rzeczy jak:

  1. Jak zrobic kolejke do ktorej user by dolaczal
  2. Jak zrobic by kolejka zbierala z siebie 10 osob zrobila button typu akceptuj mecz
  3. Jak zrobic by po zaakceptowaniu meczu dane tych 10 osob byly losowo brane do dwóch pól gdzie pole 1 bedzie druzyna1 a pole2 bedzie druzyna2

Reszte typu system punktowy i rankingowy sam bede w stanie zrobic, ale tego nie ogarniam do konca jak to zrobic z tablicami itp.
Bede mega wdzieczny jak ktos podpowie mi od czego zaczac, mniej wiecej na jakiej zasadzie to pisac i z jakich funkcji do tego skorzystac
Nie badzcie zli na mnie czy cos tak tylko pytam.

0

Możesz to zrobić na kilka różnych sposobów. Najprościej będzie użyć asynchronicznych żądań, a najsensowniej socket'ów.

Gdy użytkownik klika guzik "graj", to po stronie serwera sprawdzasz, czy są jakieś aktywne kolejki, do których może dołączyć. Jeżeli żadna kolejka nie jest aktywna, to tworzysz nową. Zwracasz mu identyfikator kolejki, do której go dopisałeś. Od tego momentu użytkownik co chwilę (na przykład 1 sekunda) odpytuje serwer, czy uzbierało się już 10 osób. Jeżeli w końcu dostanie odpowiedź, że tak, to wyświetlasz mu opcję akceptuj lub odrzuć. Jak kliknie akceptuj, to odpytujesz, czy każdy z 10 graczy zaakceptował. Jeżeli tak, to wyświetlasz ekran gry, czy czegoś tam.

Oczywiście tutaj aż się prosi o użycie socket'ów, ale można też po staremu ;)

Jeżeli chodzi o dopisywanie graczy do drużyn, to możesz to możesz ich podzielić w momencie, gdy już masz 10.

$queues = [
	1 => [
		// ta jest pełna, ma 10 zawodników i odbywa się akceptacja
	],

	2 => [
		// ta też jest pełna, ma 10 zawodników i odbywa się akceptacja
	],

	3 => [
		// tutaj jest jeszcze 6 wolnych miejsc
		['id' => 1],
		['id' => 2],
		['id' => 3],
		['id' => 4],
	],
];

Czyli masz tablicę z kolejkami. Jak użytkownik kliknie graj, to wybierasz z kolejek tą, która ma jeszcze miejsce i dopisujesz tam usera. Gdy masz już 10, to ich rozdzielasz do drużyn i zwracasz użytkownikowi, w której jest drużynie.

Możesz zrobić to na bazie, możesz użyć redisa, jest mnóstwo możliwości.

0

dzieki wielkie przyda sie! poczekam jeszcze moze ktos ma jeszcze lepsze pomysly czy uwagi do tego

1 użytkowników online, w tym zalogowanych: 0, gości: 1