Forprosjektrapport Tittel Oppgave Periode Openfoos Utvikle en plattform for digitalisering av foosballbord. 3. januar til 15. juni Gruppemedlemmer Amir Ghoreshi Marcel Eggum Neberd Salimi Valentin Rey Rosell Prosjektgruppe 29 Veileder Oppdragsgiver Steinar Johannesen Logica Kontaktperson John Inge Sjøvaag Hervik, tlf.: 99026400 Sammendrag Prosjektet skal gjennomføres som hovedprosjekt ved HIOA avd. for Ingeniøravdelingen i samarbeid med Logica. Kort oppsummert består oppgaven av å utvikle deler av et større system for registrering og organisering av foosball spill. Om bedriften Logica er et selskap som leverer tjenester og teknologi for foretningsbedriften. Logica Norge har omtrent 700 ansatte. Internasjonalt har Logica 41 000 ansatte fordelt 36 land. Logica tilbyr rådgivning, systemintegrering og outsourcing for alle bransjer og forretningsfunksjoner. Dagens situasjon Kunden har i dag et system for registrering av spillere og kamper i Foosball. Systemet har mye funksjonalitet, men er rettet kun mot kundens organisasjon og er ikke egnet for å bli et allment tilgjengelig. I dagens løsning er det satt opp en enkel klient med en skjerm og en applikasjon skrevet i Microsoft Silverlight, som lar en registrert ansatt logge seg inn ved hjelp av et brukernavn eller en fingeravtrykk-avleser. 2 eller flere ansatte kan logge seg inn og starte et nytt spill der hve poengsum for alle spill kan hentes ut og fremvises i forhold til poengsummen til andre spillere.
Mål og rammebetingelser Oppdragsgiveren ønsker en komplett, ny løsning dette konseptet, med utvidet funksjonalitet i forhold til den gamle løsningen. Det er ønskelig at prosjektet følger en iterativ prosess som i hovedsak er delt opp i 2 faser. Første fase fokuserer grunnleggende funksjonalitet og andre fase fokuserer kildekode. Tjeneren skal implementeres hos en tilbyder i en nett-sky. Systemet skal være i stand til å håndtere følgende funksjoner: Registrering av spillere Systemet skal kunne registrere spillere slik at brukere kan gjenfinne informasjon om seg selv i systemet og raskt kunne sette opp kamper med tidligere registrerte spillere. Registrering av spillere skal også gjøres slik at brukere også skal kunne lage seg En slik tilpassing kan være: Brukernavn Kort biografi Bilde Scoringslyd Vinnerlyd Registrering av spillere skal også gjøres slik at det kan føres historikk over brukerens prestasjoner, som igjen kan brukes for å lage rankinger og statistikker. Registrering av lag Systemet skal kunne registrere lag. Et lag er to eller flere spillere som spiller sammen. Lag skal kunne tilpasses hvordan de fremstår i systemet. Slike tilpasninger kan være: Lagnavn Kort biografi Lag bilde Scoringslyd Vinnerlyd Spillere Registrering av lag skal gjøres slik at det kan registreres historikk over et lags prestasjoner, dette kan videre brukes til å lage rankinger og statistikker.
Registrering av kamper Systemet bør også kunne spore når bord er i bruk slik at brukere som ikke spiller både, æ kamp og følge med hvordan kampen går. Når en kamp registreres bør man enkelt kunne gjenfinne tidligere lag eller spillere for deltakelse. Registrering av scoringer Det må underveis i en kamp kunne registreres scoringer. Dette slik at systemet kan berike spillopplevelsen med f.eks. å spille av scoringlyder for det scorende laget. Historikk Systemet må registrere historikk over kampene og spillerprestasjonene. Slik historikk kan være: Lengde i tid på spilte kamper Scoringer fordelt på spiller Når kampene blir spilt med dato og klokkeslett Historikken bør være grunnlaget for ranking og statistikk, og være komplett for å kunne dokumentere prestasjoner på bordet. Statistikk Systemet bør kunne lage oversikter av registrerte kamper. Slik statistikk kan være: Trend for spillere eller lag (synkende, stigende) Gjennomsnittlig scoringer Vinn vs. tap prosent for spiller eller lag Statistikken bør være motiverende og konkurransefremmende for brukerne, og være til hjelp slik at man kan sammenligne forskjellige lag og spillere opp mot hverandre. Ranking Systemet må ha en algoritme for å kunne ranke både lag og spillere. Som ranking algoritme kan man vurdere ELO eller FIDE.
Spiller matching For å enkelt fasilitere bruk av systemet, bør systemet tilby flere måter å matche brukere som ønsker å spille en kamp. S ch æ : Tilfeldig spillere eller lag Jevnbyrdige spillere eller lag Finn sterkere motstander (for å kunne klatre på ranking) Sosiale funksjoner Systemet må ha funksjoner for å motivere konkurranse og deltakelse i Foosball. Slike funksjoner kan være: Deling av resultater i sosiale medier Offentlige profiler med informasjon om lag eller spillere Mulighet til å invitere andre spillere til kamp eller deltakelse i systemet Organisering av serier og ligaer for lag og spillere i systemet. Administrasjon Gitt systemets åpne natur må det identifiseres naturlige kontekster for å utnevne administratorer i systemet. Administratorer må kunne vedlikeholde informasjonen som er registrert om brukere, lag og spilte kamper. Videre må administratorer kunne legge til informasjon om nye bord eller endringer som skjer med bordet. Proof of Concept I forbindelse med oppdraget skal det den første tiden, fra 1. Januar til 10. Februar, leveres P f f C c (P C) Hensikten med PoC er å bygge en forenklet prototype for å kunne danne seg et bilde av hvilke teknologier og brukergrensesnitt som er hensiktsmessige å bygge videre på. Det er også viktig for kunden å få tidlige leveranser til nytt system, da dagens Foosball løsning er vanskelig å vedlikeholde
Løsninger I samarbeid med oppdragsgiver har vi kommet frem til at det er hensiktsmessig å implementere systemet som en web-applikasjon. Systemet skal bestå av en tjener som tar i mot forespørsler fra klienter via et API. Kommunikasjonen mellom disse skal foregå etter REST arkitekturen og data som utveksles mellom aktørene skal være av formatet JSON. Begrunnelsen for dette er at Web-lesere, mobile klienter og Arduino sensorer har den felles egenskapen om at de er i stand til å kommunisere sammen med tjeneren på denne måten, uten at vi behøver å skrive egne biblioteker for dette. Metoden er godt utbredt og en mengde dokumentasjon er tilgjengelig for implementering av en slik arkitektur. Oppdragsgiver har uttrykt en anbefaling om å benytte Java Server Faces som rammeverk på tjenersiden, men vi er frie til å velge implementeringspråk og metode selv. Web-klienten skal implementeres ved hjelp av JavaScript og HTML 5 der det vil bli tatt i bruk et bibliotek for å opprette en MVC arkitektur på klientsiden. Det er videre sett på implementering av WebSockets for å være i stand til å opprette kommunikasjon og nærvær av to eller flere separate klienter på en side. Et forprosjekt har blitt gjort for å avdekke om dokument-baserte, nosql-databaser er en mulig løsning for vårt problem. Men vi ser at rasjonelle koblinger mellom entiteter er så sterke og nødvendige at vi foreløpig har bestemt for å lagre data i en MySQL-database.