BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM SZOFTVERARCHITEKTÚRÁK (BMEVIAUM105) HÁZI FELADAT - ONLINE TÁBLAJÁTÉKOK SPECIFIKÁCIÓ KISS DÁNIEL KÁROLY MOLNÁR ALEXANDER Kiss Dániel Károly V37ZEN kissdani89@gmail.com Molnár Alexander OXZGCC ma711@hszk.bme.hu dátum: 2012. október 16.
1 Bevezetés... 2 2 Főbb funkciók leírása... 2 2.1 Felhasználói fiók kezelése... 2 2.1.1 Regisztráció... 2 2.1.2 Bejelentkezés... 3 2.1.3 Felhasználói adatok megtekintése... 3 2.1.4 Adatmódosítás... 3 2.1.5 Jelszó visszaállítás... 3 2.1.6 Kijelentkezés... 3 2.1.7 Account inaktiválás... 3 2.2 Játékokkal kapcsolatos funkciók... 4 2.2.1 Játékok részletei... 4 2.2.2 Folyamatban levő játékok listázása... 4 2.2.3 Felkérések listázása... 4 2.2.4 Várakozó játékosok listázása... 4 2.2.5 Játék indítása... 4 2.2.6 Játék befejezése... 4 2.2.7 Kiegyezés döntetlen állásban... 5 2.2.8 Játék megszakítása... 5 2.2.9 A játék menetének ábrázolása állapot átmeneti diagramokkal... 5 2.3 Pontozás... 6 2.4 Statisztikák... 6 2.5 Felhasználók és jogosultságok... 6 3 Felhasználói felület terve... 7 4 Architektúra tervek... 9 4.1 Központi Architektúra... 9 4.2 Egyéb megjelenő architektúra minták... 9 Szoftverarchitektúrák Online Táblajátékok 1
1 BEVEZETÉS A feladat egy olyan online portál elkészítése, amely segítségével a regisztrált felhasználók különböző táblajátékokat tudnak játszani egymással. Jelenleg a sakk, dáma és amőba játékok lesznek támogatva. 2 FŐBB FUNKCIÓK LEÍRÁSA 2.1 FELHASZNÁLÓI FIÓK KEZELÉSE 2.1.1 REGISZTRÁCIÓ A portál teljes funkcionalitását csak regisztrált felhasználók vehetik igénybe. Regisztrálni bármely felhasználó tud, a regisztrációs oldalon elhelyezett űrlap kitöltésével. A kért adatokat a rendszer elmenti, szükség esetén ellenőrzéseket végez (e-mailben kiküldött visszaigazolás vagy captcha formájában). A regisztrációhoz választani kell egy felhasználónevet és egy jelszót, amelyekkel a későbbiek során a felhasználó be tud jelentkezni. Ezen kívül meg kell adni egy e-mail címet is, amelyre a rendszer, vagy az adminisztrátorok üzenetet küldhetnek. Az e-mail címnek egyértelműen azonosítani kell a felhasználót, tehát egy felhasználó csak egy e-mail címet adhat meg, és két felhasználónak nem lehet ugyanaz az e-mail címe. Minden felhasználó a regisztrációs űrlap kitöltése után a megadott e-mail címre egy megerősítő üzenetet kap, amely tartalmaz egy véletlen generált karaktersorozatot. Belépés után egy olyan oldal jelenik meg, ahol meg kell adnia ezt a karaktersorozatot. Amíg nem adja meg helyesen, a regisztrációja nem lesz aktív, és a rendszert nem tudja teljes körűen használni, csak ez az oldal jelenik meg neki. Az aktiváló oldalon lehetőséget kell biztosítani a megerősítő üzenet újraküldésére (ha esetleg nem kapta volna meg az előzőt)! Mivel az e-mail küldés viszonylag lassú művelet, a visszaélések elkerülése érdekében az aktiváló oldalon legfeljebb tízpercenként lehet újraküldeni az aktiváló kódot. 1. ábra: A felhasználó és a felhasználói fiók állapotai Szoftverarchitektúrák Online Táblajátékok 2
2.1.2 BEJELENTKEZÉS A regisztrált felhasználók be tudnak lépni a rendszerbe, viszont amíg nem aktiválták a fiókjukat, addig nem tudják használni a rendszert. A belépést követően minden aktivált felhasználó a szerepkörének megfelelő menüpontokat és oldalakat érheti el. A bejelentkezett felhasználókat bizonyos idejű inaktivitás esetén a rendszer automatikusan kijelentkezteti. 2.1.3 FELHASZNÁLÓI ADATOK MEGTEKINTÉSE A felhasználónak lehetősége van rá, hogy megnézze saját adatait. Itt jelennek meg az eddig összegyűjtött pontjai is. 2.1.4 ADATMÓDOSÍTÁS A felhasználónak lehetősége van adatainak módosítására. A felhasználónév nem módosítható. Erre egyetlen felületet kell biztosítani, ahol új jelszót is megadhat (természetesen kétszer kell megadni). A visszaélések elkerülése érdekében adatmódosításhoz minden esetben meg kell adni a régi jelszavát. Amennyiben módosul az e-mail cím, az account inaktiválva lesz, és egy aktiváló e-mail kerül kiküldésre. 2.1.5 JELSZÓ VISSZAÁLLÍTÁS A felhasználónak az oldalon lehetősége van jelszavának visszaállítására. Ilyenkor e- mailben kerül kiküldésre egy új jelszó, amelyet a rendszer generál és állít be. 2.1.6 KIJELENTKEZÉS A bejelentkezett felhasználóknak lehetőséget kell biztosítani a kijelentkezésre. Amennyiben a felhasználónak vannak folyamatban levő játékai, a felhasználót figyelmeztetni kell, hogy a játékok meg lesznek szakítva. Amennyiben a felhasználó ezt elfogadja, az összes játéknál vesztesként szerepel majd a felhasználó. Ezután a felhasználó ki lesz jelentkezve a rendszerből. Amennyiben a felhasználó úgy jelentkezik ki a rendszerből, hogy valamilyen játék indítására irányuló kérése van folyamatban, figyelmeztető üzenetet kell megjeleníteni. Amennyiben ezt a felhasználó tudomásul veszi, és kijelentkezik, az összes folyamatban levő kérése törölve lesz. 2.1.7 ACCOUNT INAKTIVÁLÁS A felhasználónak lehetősége van inaktiválni a profilját. Inaktiválás után adatai nem lesznek törölve a rendszerből, hanem ugyanolyan állapotban lesz, mint közvetlenül regisztráció után. Tehát a felhasználónak lehetősége van a későbbiekben újra aktiválni a profilját. Szoftverarchitektúrák Online Táblajátékok 3
2.2 JÁTÉKOKKAL KAPCSOLATOS FUNKCIÓK 2.2.1 JÁTÉKOK RÉSZLETEI Minden játékhoz tartozik egy oldal, ahol van egy rövid leírás a játékról, a szabályokról, illetve itt lehet megtekinteni, hogy az adott játéknál melyik felhasználók várakoznak játékostársra. A játék részletek oldal nem bejelentkezett felhasználóknak is elérhető. 2.2.2 FOLYAMATBAN LEVŐ JÁTÉKOK LISTÁZÁSA A felhasználó kilistázhatja a folyamatban levő játékait. A listában ki kell emelni azokat a játékokat, amelyeknél az aktuális felhasználón van a sor. 2.2.3 FELKÉRÉSEK LISTÁZÁSA A felhasználó kilistázhatja az aktív felkéréseit, tehát azokat a játékosokat, akik aktuálisan valamilyen játékot játszani szeretnének vele. Itt lehetőséget kell biztosítani a játékosnak arra, hogy az adott felkérést elfogadja vagy elutasítsa. Amennyiben a játékos elfogadja a felkérést, a játék megkezdődik, és megjelenik a folyamatban levő játékok listájában. 2.2.4 VÁRAKOZÓ JÁTÉKOSOK LISTÁZÁSA Ebben a listában jelennek meg azok a játékosok, akik valamilyen játékkal játszani szeretnének, de nincs társuk. Ilyenkor egy másik felhasználó csatlakozhat a várakozókhoz. Ha egy játékos csatlakozik egy várakozóhoz, akkor az egy Felkérés formájában jelenik meg mindkét játékosnál. Felkérés után a várakozó játékos nem törlődik a várakozó játékosok listájából, így több felkérést is kaphat. Ezért a játékosnak lehetőséget kell biztosítani, hogy törölhesse önmagát a listából. 2.2.5 JÁTÉK INDÍTÁSA Amennyiben egy felkérést egy játékos elfogad, elindul a játék. Adott játékos pár adott játékkal egyszerre csak egy játszmát játszhat. Amennyiben a játékszabályok külön nem szabályozzák, a kezdő játékos mindig véletlenszerűen kerül kisorsolásra. 2.2.6 JÁTÉK BEFEJEZÉSE A játék akkor fejeződik be, amikor az adott játék játékszabályai előírják. A játék befejeződése után az eredmény alapján a játékosok pontokat kapnak. A befejezés után mindkét játékosnál egy eredmény oldal jelenik meg, ahol az eredményt jeleníti meg a rendszer. Szoftverarchitektúrák Online Táblajátékok 4
2.2.7 KIEGYEZÉS DÖNTETLEN ÁLLÁSBAN Amennyiben egy játékos úgy érzi, hogy nem tudja megverni ellenfelét, de az ellenfél sem őt, felajánlhatja ellenfelének a döntetlen eredményt. Ebben az esetben egyik fél sem kap pontot. Döntetlen állást csak akkor lehet felajánlani, ha arra az adott játék játékszabályai engedélyt adnak. Egy játékos döntetlen állást a játék során csak egyszer ajánlhat fel (azért, hogy ne zavarhassa ellenfelét folyamatos döntetlen felajánlásokkal). 2.2.8 JÁTÉK MEGSZAKÍTÁSA A játékos játék közben úgy dönthet, hogy abbahagyja a játékot anélkül, hogy befejezné, vagy döntetlenben kiegyezne játékostársával. Ez viszont a megszakítást kezdeményező játékos részéről vesztett játszmának minősül. A megszakítás kérésekor egy figyelmeztetés jelenik meg, és amennyiben ezt a felhasználó elfogadja, azonnal befejeződik a játék. 2.2.9 A JÁTÉK MENETÉNEK ÁBRÁZOLÁSA ÁLLAPOT ÁTMENETI DIAGRAMOKKAL 2. ábra: A játék indítása - kérés küldése más felhasználónak 3. ábra: A játék állapotai - menete és befejezése Szoftverarchitektúrák Online Táblajátékok 5
2.3 PONTOZÁS A játékosok a játékok során pontokat gyűjtenek. Regisztráció után minden játékosnak 100 pontja van. A pontok a következőképp kerülnek kiosztásra: +1p minden nyertes játék után 1p minden vesztes játék után 0p döntetlen játék esetén. 2p minden megszakított játék után 2.4 STATISZTIKÁK A funkció csak adminisztrátorok számára érhető el. A statisztikáknál csak a ténylegesen létrejött játékokat veszi figyelembe a rendszer, vagyis a kéréseket nem. A legnépszerűbb játékok megjelenítésénél a játékok listája a játékot játszó felhasználók számának csökkenő sorrendjében jelenik meg. Megjelenik az utóbbi 24 óra, 7 nap, egy hónap, egy év statisztikája is. A következő statisztika az aktív játékokat jeleníti meg. Itt megjelenik, hogy jelenleg melyik játékot hányan játszanak. Meg lehet jeleníteni továbbá, hogy melyik játékos mennyiszer játszott, illetve mikor jelentkezett be utoljára. 2.5 FELHASZNÁLÓK ÉS JOGOSULTSÁGOK A rendszert egyszerre több felhasználó használhatja. A felhasználókhoz jogosultságok rendelhetők, a felületen minden felhasználó csak a jogosultságának megfelelő műveletet végezhet. A jogosultságok szerepkörökbe vannak gyűjtve, ezek a szerepkörök kerülnek kiosztásra a felhasználóknak. USER_ROLE Átlagos felhasználó, regisztrálás után ezt a szerepkört kapják a felhasználók. GAME_ADMIN_ROLE A játék adminisztrátora, statisztikákat nézheti meg. Szoftverarchitektúrák Online Táblajátékok 6
3 FELHASZNÁLÓI FELÜLET TERVE A tervezett felhasználói felületet az alábbi ábrák mutatják be. A tervek nem véglegesek, azok finomítása a fejlesztés során folyamatosan történik. 4. ábra: Kezdőképernyő Szoftverarchitektúrák Online Táblajátékok 7
5. ábra: Játék közben 6. ábra: Felkérések listázása Szoftverarchitektúrák Online Táblajátékok 8
4 ARCHITEKTÚRA TERVEK 4.1 KÖZPONTI ARCHITEKTÚRA A rendszer többrétegű architektúrára épül. Az egyes rétegek: Megjelenítési réteg: webes felhasználói felület. Üzleti logika: Java alapú technológiákkal megvalósítva. Objektum perzisztálás: Java Persistence API Adatbázisréteg: relációs adatbázis 4.2 EGYÉB MEGJELENŐ ARCHITEKTÚRA MINTÁK Acceptor-Connector A különböző játékok lebonyolítása sok esetben teljesen eltérő logikát igényel, azonban a játékok megkezdése és abbahagyása megegyezik. Célszerű ezeket az ismétlődő műveleteket kiemelni. Erre a problémára jelent megoldást az Acceptor- Connector minta. Szoftverarchitektúrák Online Táblajátékok 9