Kokinejo to platforma z grami, dzieki której można grać wraz z innymi użytkownikami.
W dziesiejszych czasach praktycznie każdy nastolatek spędza czas wolny grając. Dodatkowo pandemia sprawiła, że nie można już sie widywać "na żywo" co sprawia że wszelkiego rodzaju czynności, które można wykonywac online wraz z innymi zyskują na popularności.
Nasza aplikacja ma na celu zapewnić dostęp do gier wieloosobowych, dzięki którym będzie można łatwo i przyjemnie spędzić czas ze znajomymi na odległość. Dodatkowo dostępne gry będą dobrze znanymi grami, w które chętnie zagra osoba także nie poświęcająca tego rodzaju hobby wiele czasu.
(źródło: bankier.pl)
(źródło: similarweb.com)
- Stworzenie platformy umożliwiającej spedzanie czasu ze znajomymi lub osobami tam poznanymi.
- Implementacja kilku podstawowych, znanych gier wieloosobowych.
Serwer napisany będzie z użyciem Node.js i frameworku Express. Nasza aplikacja będzie realizowana w sposób modułowy. Główna część serwera będzie odpowiadać za wyświetlenie strony początkowej, załadowanie kodu klienta oraz za autentykację użytkowników, a następnie żądania będą przekazywane do osobnych modułów - konkretnych gier. Taki podział ułatwi tworzenie aplikacji oraz jej przyszłą rozbudowę. Pozowoli on też na realizację różnych gier niezależnie od siebie.
Klient zostanie utworzony jako tzw. Single Page Application - z wykorzystaniem HTMLa i CSSa, a reakcję na działania użytkownika zapewniać będzie framework Vue.js. Taki wybór, wraz z dostępnymi narzędziami, pozwoli podzielić funkcjonalność klienta na konkretne moduły - odpowiadające grom. Dzięki temu kod będzie ładował się szybciej, a sama aplikacja będzie działać wydajniej, co wpłynie pozytywnie na postrzeganie aplikacji przez końcowych użytkowników. Ze względu na rodzaj aplikacji - dynamiczne gry - nie planujemy wspierać przeglądarek, które nie obsługują JavaScriptu. Ze względu na ograniczony czas realizacji projektu, aplikacja nie będzie też wspierać przeglądarek innych niż Google Chrome i Firefox oraz ich starszych wersji. Komunikacja pomiędzy klientami i serwerem będzie odbywać się w stylu REST, co jest wystarczające w przypadku prostych gier planszowych.
Stan konkretnych gier oraz informacje o użytkownikach przechowywane będą w bazie SQLite. Serwer będzie obciążony głównie weryfikacją reguł gry, baza ta nie będzie stanowiła więc ograniczenia dla jednowątkowego serwera Node.js. Pozwoli to także łatwo przełączyć serwer na osobną bazę SQL, w przypadku konieczności przyszłego skalowania poziomego aplikacji.
-
Stworzenie dokumentacji projektu na potrzeby implementacji
Zadanie Czas realizacji Osoba odpowiedzialna spisanie i opisanie pełnej funkcjonalności projektu 2h spotkanie (23.05) Data: 30.05.21
Efekt końcowy: Będzie stworzona pełna dokumentacja projektu, okreslająca dokładnie funkcjonalność jaką należy zaimplementować i w jaki sposób ma działać.
-
Stworzenie backendu aplikacji
Zadanie Czas realizacji Osoba odpowiedzialna szkielet backendu (utworzenie projektu, połączenie z bazą) 5h Wojciech autentykacja użytkowników 4h Jarosław stworzenie testowego modułu (kółko i krzyżyk) 4h Wojciech Data: 07.06.21
Efekt końcowy: Będzie utworzony szkielet aplikacji backendowej, do którego będą w przyszłości dołączane kolejne moduły z grami.
-
Stworzenie frontendu aplikacji zawierającego podstawową funkcjonalność (bez gier)
Zadanie Czas realizacji Osoba odpowiedzialna szkielet frontendu (utworzenie projektu, połączenie z backendem) 5h Aleksandra utworzenie ekranów logowania/rejestracji 2h Jarosław stworzenie testowego modułu (kółko i krzyżyk) 4h Aleksandra interfejs dla gier karcianych 3h Jarosław Data: 07.06.21
Efekt końcowy: Będzie utworzony szkielet aplikacji frontendowej, ekran rejestracji/logowania. Szkielet będzie rozszerzany o kolejne moduły z grami.
-
Dodanie gier do istniejącej części aplikacji
Zadanie Czas realizacji Osoba odpowiedzialna gra "crazy eight" 30h Wojciech gra "oczko" 30h Jarosław gra pasjans "Solitaire" 25h Aleksandra ... ...h Data: 29.06.21
Efekt końcowy: Można grać w gry
Przepływ danych opiera się o komunikację REST.
Każda gra będzie miała swój prefix w url, np. /oczko
Żądanie
{
"name": "nazwa",
"password": "hasło"
}
Odpowiedź
{
"token": "token"
}
Żądanie z wykorzystaniem HTTP Basic Auth
Odpowiedź
{
"token": "token"
}
Żądanie
{
"name": "nazwa",
"password": "hasło"
}
Odpowiedź
{
"token": "token"
}
Żądanie
{
"name": "nazwa",
"password": "hasło"
}
Odpowiedź
{
"id": user_id,
"name": "nazwa"
}
Żądanie z wykorzystaniem tokena lub HTTP Basic Auth
Odpowiedź
{
"id": user_id,
"name": "nazwa"
}
Endpointy dla gier
Odpowiedź
{
"status": "ok",
"availableGames": [
{
"id": 1,
"userIds": [1, 2, ...]
},
{
"id": 2,
"userIds": [4, null, ...]
},
...
]
}
Odpowiedź
{
"status": "ok",
"userIds": [1, 2],
"gameState": {
// stan gry
}
}
Odpowiedź
{
"status": "ok"
}
Odpowiedź
{
"status": "ok"
}
Odpowiedź
{
"status": "ok",
"userIds": [1, 2],
"gameState": {
"started": false,
"currentPlayer": null,
// inne dane specyficzne dla gier
}
}
Żądanie
{
"move": {
// zależne od gry
}
}
Odpowiedź
{
"status": "ok",
"userIds": [1, 2],
"gameState": {
// stan gry
}
}
Do dnia 07.06 (najpóźniej) przygotowanie wstępnych elementów implementacjii umieszczenie ich w repozytorium GitHub.
Do dnia 30.06 zakończenie prac nad aplikacją i prezentacja.