Feat/room matchmaking logic#47
Conversation
bnszky
left a comment
There was a problem hiding this comment.
Kilka uwag wrzuciłem. Dołączanie działa i nie znalazłem błędów na tym etapie.
Gdy wpisuję w url /lobby, otrzymuję wielki napis „Ładowanie”. Zamiast tego domyślnie powinien przekierowywać na stronę startową. Można dopisać defaultRoute="/start"
Dotyczy to wszystkich ścieżek. Aktualnie można wejść /abc i nie mamy not found page, więc lepiej przekierowywać na /start
Jeśli chodzi o tryb singleplayer, to tak, można to dodać. Przy tworzeniu roomu możemy wtedy pominąć poczekalnię i przenieść się natychmiastowo do gry. Wystarczy dodać jeden input do tego w start (więc to może dodać do tej PR)
Docelowo będziemy wybierać bohatera na starcie, ale to zostawimy już na następny task
| useEffect(() => { | ||
| if (!room) return; | ||
|
|
||
| const handleStateChange = (state: any) => { |
There was a problem hiding this comment.
| const handleStateChange = (state: any) => { | |
| const handleStateChange = (state: RoomState) => { |
There was a problem hiding this comment.
Mamy taki typ RoomState po stronie klienta (albo go stworzyć)?
There was a problem hiding this comment.
Trzeba stworzyć, bo niestety nie mamy
bnszky
left a comment
There was a problem hiding this comment.
Super i już wygląda lepiej. Kilka uwag do samego dołączania:
dodajmy dwie opcje, żeby można było łatwo modyfikować
private readonly isDevelopment = process.env.NODE_ENV === "development";
.env.development wtedy wystarczy flaga SAMPLE=development
Gdy jesteśmy w fazie developmentu logika dołączania działa tak jak to jest do tej pory:
- gracz może dołączyć bez czekania na drugą osobę (this.clients.length >= 1)
- można dołączać do gry nawet jeśli już wystartowała z jednym graczem
- gdy jeden gracz wyjdzie, to pokój cały czas istnieje
Gdy nie jest to faza development (= false):
- gracz musi poczekać na gotowość wszystkich graczy w poczekalni: this.clients.length >= message.maxClients
- nie można dołączyć do już wystartowanej gry
- gdy jeden z graczy wyjdzie w trakcie gry i nie odnowi połączenia, to wszyscy gracze zostają wyrzuceni i gra zostaje przerwana
Dodatkowo aktualnie można ustawić '/' index na '/start', bo przy dołączaniu w '/' mamy jeszcze stary system, który nie działa
Dodano ekran startowy (strona /start) gdzie można wybrać albo stworzenie gry publicznej/prywatnej albo dołączyć do gry publicznej (stworzy lobby jeśli taka nie istnieje). Albo dołączyć do gry za pomocą kodu - działa na lobby prywatnym jak i publicznym.
Lobby działa na zasadzie takiej że gra nie wystartuje dopóki dwóch graczy nie jest w nim oraz oboje nie dadzą gotowości (zamiast przycisku play). Teraz jest system z indexem. Gracz z indexem 0 jest Solem, z indexem 1 jest Vronem
Gra inicjalizuje się (ładowanie mapy, przypisanie pozycji) dopiero, gdy w pokoju znajduje się dwóch graczy i obaj oznaczą się jako gotowi.
Modyfikacja testów, bo ze względu na zmiany z lobby (mechanika gotowości) przestały przechodzić.
Pytania: