Grakonosze
Gra terenowa zrealizowana w ramach Hackationu z przedmiotu Inżynieria Oprogramowania w roku 2023/2024.
Wizja projektu
Elevator Pitch
Dla uczniów szkół średnich, którzy chcą studiować informatykę, nasza gra terenowa na dni otwarte AGH jest innowacyjną formą interaktywnej zabawy edukacyjnej, pozwalającą na odkrycie Wydziału Informatyki. W odróżnieniu od tradycyjnych dni otwartych, nasz produkt daje uczestnikom możliwość poznania kierunku studiów, ale także poznanie dydaktyków w przystępnej formie jaką są mini gry edukacyjne.
Cel i Misja Projektu
Cel: Stworzenie angażującej i interaktywnej gry terenowej, która pozwoli uczniom szkół średnich na lepsze zrozumienie i poznanie Wydziału Informatyki AGH oraz zainteresowanie ich studiami na kierunkach informatycznych.
Misja: Naszym celem jest nie tylko zaprezentowanie możliwości studiowania informatyki na AGH, ale także zainspirowanie przyszłych studentów do podjęcia tego kierunku poprzez interaktywną i edukacyjną zabawę. Chcemy, aby uczestnicy mogli poznać naszych wykładowców, studentów oraz realia studiowania w przystępny i angażujący sposób.
Opis Projektu
"Grakonosze" to gra terenowa zaprojektowana specjalnie na dni otwarte AGH dla Wydziału Informatyki.
Uczestnicy będą poruszać się po kampusie, skanując kody QR rozmieszczone w różnych punktach kontrolnych. Każdy kod QR odblokowuje mini grę edukacyjną, która testuje różne umiejętności informatyczne i logiczne. Po ukończeniu mini gry, uczestnik otrzymuje token w formie wirtualnego pieniążka z wizerunkiem dydaktyka WI AGH, w kolorze zależnym od wyniku (brąz, srebro, złoto, diament). Dodatkową funkcją będą kody QR zaszyte w prezentacjach i pokazach podczas dnia otwartego za które dostaje się tokeny bonusy, które nie ma pod sobą mini gierek. Na koniec, w zależności od uzyskanej ilości punktów, uczestnik otrzymuje nagrodę.
Mini gry:
- Optymalizacja sieci neuronowych - gracz przesuwając suwakami stara się znaleźć się najlepsze wartości parametrów sieci neuronowych. Im lepsze dopasowanie tym więcej punktów gracz uzyska.
- Geoguesser - gra polegająca na wskazaniu na schemacie budynku D17 trzech miejsc, które na podstawie zaznaczonych odległości przeliczy ilość punktów, które zostanął zmapowane na poziom tokenu.
- "Zdjęcie z.." - gracz musi zrobić zdjęcie z wymienioną w zadaniu osobą. Aplikacja zweryfikuje poprawność zdjęcia i na tej podstawie przyzna token o odpowiednim poziomie.
- Puzzle - gracz przesuwając jeden puzzel w czasie i o jedno pole musi ułożyć dany obrazek.
- Find QR code - kody QR zaszyte w prezentacjach. Dany kod QR odpowiada danemu poziomowi tokenu.
Na koniec dnia zostanie ukazany score board dla wszystkich graczy i 3 najlepsze osoby otrzymają główne nagrody z "wysyłką do domu" lub do odebrania na terenie AGH.
Grupa Docelowa
Nasza gra jest skierowana do uczniów szkół średnich, szczególnie tych, którzy są zainteresowani studiami na kierunku informatyka. Główną grupą docelową są uczniowie ostatnich klas, którzy rozważają aplikację na studia wyższe w nadchodzącym roku akademickim.
Wymagania funkcjonalne
- Gra terenowa dla uczniów szkół średnich: Gra musi być możliwa do zrealizowania zarówno w budynku Wydziału Informatyki, jak i na terenie całego kampusu AGH.
- Czas gry: Cała gra powinna być możliwa do przeprowadzenia w ciągu 1-2 godzin, aby zmieścić się w harmonogramie dnia otwartego.
- Dostęp do mini gier: Uczestnicy powinni móc wchodzić do mini gier za pomocą kodów QR, które będą umieszczone w różnych punktach kontrolnych.
- System nagród i progresji: Gra musi zawierać system nagród i progresji, który umożliwi realizację różnych typów nagród za ukończenie zadań.
Wymagania niefunkcjonalne
- Instalacja aplikacji na urządzenia mobilne z Apple/Play store
- Udostępnienie dostępu do kamery na urządzenia mobilne
- Uczestnictwo w dniach otwartych AGH
- Możliwość skanowania kodów QR na urządzeniu mobilnym
Stos technologiczny
- Frontend: React Native - do stworzenia aplikacji mobilnej, która będzie interfejsem dla graczy.
- Backend: FastAPI - do zarządzania logiką gry, autoryzacji użytkowników, punktami kontrolnymi i zadaniami.
Koncepcja interfejsu użytkownika - przykładowe ekrany
Makiety UI zaimplementowane zostały w Figmie: link
Ryzyko
- Techniczne: Możliwe problemy z działaniem aplikacji na różnych urządzeniach mobilnych, integracja kodów QR, zapewnienie stabilności serwera. Integracja wszystkich minigier w aplikacji,
- Organizacyjne: Koordynacja punktów kontrolnych i zarządzanie dużą liczbą uczestników.
- Logistyczne: Rozmieszczenie punktów kontrolnych, dostępność miejsc, zarządzanie czasem gry.
Plan prac
Faza Planowania:
- Określenie wymagań
- Zdefiniowanie grupy docelowej
Faza Projektowania:
- Tworzenie makiet UI
- Zdefiniowanie staku technologicznego
- Projektowanie architektury systemu
- Projektowanie mini gier
Faza Implementacji i testowania:
- Implementacja frontendu
- Implementacja backendu
- Integracja frontendu z backendem
- Przeprowadzenie testów
Faza Wdrażania:
- Instalacja i konfiguracja na miejscu
- Testy na produkcji, czyli zabaczymy jak wszystko zadziała na najbliższym dniu otwartym ;)
Faza Oceny:
- Zbieranie feedbacku od uczestników
- Analiza wyników i wniosków na przyszłość
Plany rozwoju
- Wprowadzanie wiecej mini gier
- Rozszerzenie funkcjonalności na "not location based", chcemy uzyskać wiekszą skalowalność
- Dodanie logowania i autoryzacji użytkowników
- Dodanie wersji przeglądarkowej
Raport z retro
- Zbyt długi setup projektu i problemy z githubem - nieuniknione było napotkanie problemów niezależnych od nas, jednak były to problemy z setupem i githubem. Mamy je za sobą i uważamy, że nie mogliśmy ich uniknąć. Mogliśmy zacząć setup projektu wczoraj podczas zajęć i dzisaj być wszyscy gotowi do pracy od godziny 9:00 co by zaoszczędziło nam trochę czasu. Mamy nauke na przyszłość, żeby planować i setupować projekt jednoczesnie, aby napotkać i rozwiązać wszystkie problemy "wcześniej"
- Cocconut CI i inne - stwierdziliśmy że "Easter egg" w kodzie i projekcie to co coś istotnego i ciekawego dla przyszłych oraz obeznych studentów informatyki i zdecydowaliśmy, że programując dzisiaj i jutro dorzucimy pare fajnych "smaczków".
- Fronted oriented project i React Native skill issue - mamy zespół bardziej backendowy niż frontendowy. Co jest małym problemem, ale to nie my wybieraliśmy temat ;) Zdecydowaliśmy się na aplikacje mobilną w React Native, co jest dla nas nie lada wyzwaniem, ale po przeanalizowaniu tematu stwierdzamy, że jest to dla nas najlepszy wybór, ponieważ mimo malego doświadczenia każdy jest w stanie coś napisać. Przeorganizowaliśmy prace i podzieliliśmy się na części projektu, dzięki czemu nie wszyscy musimy zagłębiać się w każdy temat (np czytanie kodów QR). (Tak redukujemy skill issue).
Zespół
Instrukcja pobrania i odpalenia projektu
Pobranie projektu
Skolnuj projekt za pomocą komendy
git clone https://github.com/Garkonosze/Grakonosze.git
Wymagania
Zeby uruchomić Garkonosze będziesz potrzebował:
-
Zainstalowaną aplikację Expo GO na urządzeniu moblinym w celu przetestowania projektu
-
Python 3.9 lub wyższą wersje
Uruchomienie aplikacji
- Przejdź do katalogu Garkonosze/backend w sklonowanym projecie i wykonaj
pip install -r requirements.txt
- Uruchom backend za pomcą
uvicorn main:app --reload --host 0.0.0.0 --port 8000
-
Teraz w nowym oknie terminala przejdź do katalogu Garkonosze/frontend w sklonowanym projecie
-
Wykonaj
npm install
- A następnie
npx expo start
WAŻNE: pamiętaj aby twoje urządzenie mobilne i komputer na którym zostało sklonowane repozytorium było podłączone do jednej sieci
-
Skopiuj adres IP (bez portu), który się wyświetla pod kodem QR po wykonaniu punktu 5
-
Wklej ten adres w pliku Grakonosze/Frontend/App.tsx w lini 20 zamiast
-
Zeskanuj kod QR na urządzeniu z zainstalowaną aplikacją Expo GO za pomocą aparatu lub aplikacji Expo GO
-
Barwo udało Ci się uruchomić aplikacje Grakonosze!