world of uso

11

Click here to load reader

Upload: liquidsnakero

Post on 06-Jun-2015

602 views

Category:

Documents


3 download

DESCRIPTION

Descriere World of USO(pentru sesiunea de comunicări ştinţiifice)

TRANSCRIPT

Page 1: World of USO

WoUSO - Jocul cunoaşteriiSuport pentru cursul de Utilizarea Sistemelor de Operare

Mihai DUMITRACHEAlex EFTIMIE

Sergiu IORDACHEValentin PRIESCU

Conducător ştiinţific:As. ing. Răzvan DEACONESCU

Şl.dr.ing Răzvan RUGHINIŞ

Page 2: World of USO
Page 3: World of USO

1. Introducere

1.1 Despre

World of USO este un joc online bazat pe întrebări din materia cursului de UtilizareaSistemelor de Operare. Este format din trei părţi plus una ascunsă:

• Question of the day• Challenge• The Quest• * Special Quest

La prima vedere, un joc cu tot ceea ce presupune (cu poveste, caractere, niveluri,denumiri, artefacte), WoUSO este mai ales un bun suport de curs: conţine întrebări şirăspunsuri din toată materia. Un alt avantaj este faptul că întrebările sunt sincronizatecu materia.

World of USO este găzduit la adresa: http://wouso.rosedu.org/ .

1.2 Idee

Totul a pornit de la o discuţie dintre Răzvan Deaconescu şi Răzvan Rughiniş despre cumar fi putut fi îmbunătăţită experienţa cursului de USO. Se dorea un joc care să fieeducativ şi totodată să atragă studenţii. În urma unei sesiuni de brainstorming cu echipacursului de USO s-au stabilit regulile de bază pentru un astfel de joc.

Detaliile au fost stabilite şi ajustate pe parcurs la întâlnirile echipei ROSEdu. S-au stabilitpunctajele, s-au împărţit atribuţiuni între membrii echipei ROSEdu.

Dezvoltarea a avut loc pe parcursul verii 2007. În acest timp sub specificaţiile transmisede Răzvan Deaconescu şi Răzvan Rughiniş a avut loc implementarea interfeţei şi engine-ului pentru World of USO.

1.3 Echipa

La World of USO au lucrat:• Sergiu Iordache, aspecte generale, proiectare bază de date, administrare• Alex Eftimie, interacţiune Moodle, challenge, USO Quest, interfaţă web• Vali Priescu, interfaţă web, Question of the Day, translatare întrebări• Mihai Dumitrache, interacţiune Moodle, challenge, interfaţă web• Vlad Dogaru, translatare întrebări, testare• Răzvan Deaconescu, aspecte generale, specificaţii, documentaţie, administrare• Andrei Buhaiu, poveste, personaje, artefacte, Quest special• Bogdan Doinea, Alex Mihăiuc, George Milescu, Alex Carp, Andrei Deftu & alţii -

intrebări pentru testare şi testarea în sine.

Page 4: World of USO

2. Mecanica jocului

Punctul central al jocului şi elementul care determina clasamentul jucatorilor estenumarul de puncte. Punctele se pot caştiga în 3 feluri posibile, răspunzând la întrebareazilei, la întrebările din quest sau prin intermediul provocarilor. Punctele astfel obtinute sevor aduna si se va forma un clasament.

In functie de punctajul acumulat, fiecarui student i se asociaza unul dintre cele şapteniveluri: Servant, Apprentice, Acolyte, Initiate, Mage, Archmage, Master Wizard.

2.1 Question of the day

S-a dorit introducerea unei componente care să facă studenţii să participe cât mai des(preferabil în fiecare zi) la joc. Astfel s-a introdus conceptul de o întrebare pe zi. Toţijucătorii aveau în fiecare zi o întrebare de tip grilă cu o singură variantă de răspuns.Dacă studentul răspunde corect el va primi 2 puncte, altfel va primi 0 puncte.

Astfel s-a dorit stimularea participarii cât mai active a studenţilor.

2.2 Challenge

Pentru jucatorii care doreau să obţină mai multe puncte, există opţiunea de a îi provocape alţi studenţi la un set de întrebări. În ziua imediat următoare lansării provocarea areloc duelul, cîştigător fiind acel student care răspunde la cele mai multe întrebări.

Fiecare student poate lansa o singura provocare pe zi si poate accepta oricate provocari.Cand se accepta o provocare va urma o confruntare; confruntarea se rezuma laraspunsul a 5 intrebari (aceleasi pentru fiecare paricipant) cu raspunsuri multiple.In cadrul unei confruntari fiecare risca 3 puncte, astfel:

• in caz de pierdere, se pierd 3p• in caz de egalitate, nu se intampla nimic cu punctajul• in caz de victorie

• daca cel care a castigat are grad mai mic sau egal decat cel care a pierdut, secastiga 3p.

• daca cel care a castigat are grad mai mare decat cel care a pierdut, se castiga (M -1 - m) * 0.5p

• spus altfel, este dezavantajos sa provoci pe cineva de nivel mai mic• Evaluarea pentru intrebarile de la provocari (care pot fi cu raspuns multiplu) este

urmatoarea:• 1/n pentru fiecare raspuns corect, unde n este numarul de raspunsuri corecte ale

intrebarii• -0.25p pentru fiecare raspuns gresit• daca un oponent nu a rulat provocarea va avea 0 puncte (si, destul de probabil,

va pierde provocarea)

2.3 The Quest

"The Quest" a pornit pe un alt principiu şi anume: studentul trebuie să se folosească detoate cunoştinţele pe care le are la dispoziţie pentru a răspunde la 20 de întrebări de odificultate mai ridicată. Întrebările sunt afişate pe rând şi se va trece la urmatoarea pemasură ce studentul răspunde corect la întrebarea curentă, tot odata crescând şidificultatea întrebărilor.

Page 5: World of USO

Răspunsul este unul mai complex şi va fi furnizat într-un text box, numărul de încercarifiind nelimitat.

Pentru fiecare răspuns corect jucătorul primeşte un număr de puncte egal cu nivelul lacare se află (1 pct. pentru nivelul 1, 2 pentru nivelul 2, etc).

2.4 Special Quest

Questul special a fost gandit pentru împătimiţi. În primul rand, o mică iconiţă care nuiese deloc în evidenţă te poartă spre o altă pagină unde este criptat indiciul către soluţie.Cei care aveau răbdare şi dorinţă să rezolve aceste mici puzzleuri primeau diferite titluri.Special quest-ul nu influenţează punctajul jocului.

Page 6: World of USO

3. Bazele de date

Realizarea bazei de date şi funcţionarea ei a fost un punct foarte important almecanismului intern de funcţionare a jocului.

3.1 Necesităţi

Încă de la început a fost important faptul că autentificarea studentilor trebuia integratăcu site-ul pentru suportul de curs (Moodle - http://curs.cs.pub.ro). Totuşi nu exista unacces direct la baza de date. De aceea am fost nevoiţi să realizăm o sincronizare dintr-unsens în altul prin LDAP (Moodle -> WoUSO).

Odată ce jucătorul ce intra pe site-ul WoUSO folosind contul de pe curs.cs.pub.roprogramul extrăgea informaţii precum numele şi prenumele şi le adăuga bazei de datelocale. Apoi toate operaţiile sunt executate asupra bazei de date locale.

3.2 Structura bazei de date

Baza de date este structurată după componentele jocului. Astfel există următoareastructură:

• O tabelă pentru utilizatori ce conţine toate datele privind un utilizator(punctaj,dacă a provocat în ziua aceea, numar de puncte câştigat din întrebări, dinprovocări şi din quest precum şi alte câmpuri necesare.

• O tabelă cu întrebări pentru Question of the day şi o tabelă cu răspunsuri.• O tabelă cu întrebări pentru Challenge şi o tabelă cu răspunsuri. S-a ales această

soluţie datorită faptului că putea exista un numar variabil de răspunsuri pentru oîntrebare.

• O tabelă pentru alcătuirea stocarea punctajelor de-a lungul desfăşurării jocului şipentru alcătuirea topului.

• O tabelă care stochează iniţiatorii şi destinatarii provocărilor.

3.3 Popularea bazei de date

Deoarece introducerea manuală a întrebărilor şi răspunsurilor în baza de date ar fi fostaproape imposibilă s-a ales varianta scrierii întrebărilor în fişiere text (cu ajutorul unuimetalimbaj simplu bazat pe flex). Fişierele text sunt apoi parcurse de unul din cele douăutilitare(unul în linie de comanda şî unul cu interfaţă web). Astfel fişierele sunt parcurseiar întrebările şi răspunsurile sunt extrase şi introduse în baza de date.

Page 7: World of USO

4. Clase şi module

4.1 Motivaţie

Pentru WoUSO am ales ca limbaj de programare PHP. Motivele au fost: simplitatea defolosire şi interfaţarea bună pe care limbajul o are cu sistemul de gestiune al bazelor dedate MySQL. Limbajul PHP, simplu de învăţat şi de folosit are şi dezavantaje, printreacestea numărându-se şi faptul că într-un proiect mare, sursele pot deveni greuadministrat şi întreţinut. Din această cauză, în cazul programării pe server am abordatparadigma programării orientate pe obiect.

4.2 Module

Aplicaţia este compusă din următoarele module:1. Administrare - conţine interfaţări pentru introducerea de întrebări în baza de

date2. Feed RSS - informaţii actualizate despre un utilizator, accesibile prin tehnologia

RSS (Really Simple Syndication)3. Manual - manual de utilizare4. Jocul propriu-zis (cu Quest, Challenges şi Qotd)

4.3 Clase

Pentru administrarea afişării conţinutului am folosit clase denumite Site, Pages şiPagesBase. Clasa Pages extinde motorul de şabloane Smarty, folosit pentru a separatotal limbajul de prezentare (în cazul nostru HTML, pe alocuri XHTML) de limbajul deprogramare (PHP). Totodată, diverse clase specializate: Top, Qotd, Quest, Special,UQTranslate extind clasa PagesBase, fiind destinate prezentării informaţiei.

Lucrul cu bazele de date se face "mascat" prin clasa MysqlClass. De asemenea toateoperaţiile legate de utilizator se fac instanţiind obiecte ale clasei UQUser.

Pentru întrebări (itemi cu răspuns multiplu, unul singur corect), am ales un format textîn clar, care poate fi parsat fie printr-un script PHP (bazat pe expresii regulate), fie cuajutorul utilitarului în consolă bazat pe flex (dezvoltat de asemenea în cadrul WoUSO).

4.4 Tehnologii

Unul dintre lucrurile care au făcut experienţa WoUSO interesantă (din punctul de vedereal programatorului) a fost înglobarea mai multor tehnologii diferite, unele dintre ele noi.De exemplu, pentru autentificarea studenţilor, am folosit serverul LDAP (LightweightDirectory Access Protocol) de la: http://ldap2.grid.pub.ro/.

Pe partea de client, am folosit destul de mult JavaScript (atât de popular în browserelede astăzi), atingând uneori chiar funcţionalităţi asemănătoare AJAX (AsynchronousJavascript and XML) - căsuţa de căutare jucător oferă auto-completion fără reîncărcareapaginii. Totodată, diversele căsuţe cu informaţii de pe panoul de lucru, pot fi restrânse şideschise la nivel de utilizator (preferinţele fiind salvate în cookie-uri).

Fiind un proiect web accesul uşor la informaţii este vital. Astfel s-a ales utilizarea unuistandard raspandit, RSS (Really Simple Syndication), prin care utilizatorii jocului aveauacces facil la informatii privind numarul de puncte acumulate, numarul de provocari pe

Page 8: World of USO

care le-a primit, topul jucatorilor şi alte informaţii fără să fie nevoie ca jucatorul să intrepe site. Deoarece unele informaiţii au fost considerate private s-a ales protejarea feed-ului printr-o valoare unica.

Coordonarea echipei de programatori/testeri s-a făcut prin intermediul listelor dediscuţii:http://rosedu.org/cgi-bin/mailman/listinfo/moodle-devhttp://rosedu.org/cgi-bin/mailman/listinfo/uq-challengehttp://rosedu.org/cgi-bin/mailman/listinfo/uq-dbdesignhttp://rosedu.org/cgi-bin/mailman/listinfo/uq-questhttp://rosedu.org/cgi-bin/mailman/listinfo/uq-translateşi prin sistemul integrat de wiki + bug tracking al Trac .

Page 9: World of USO

5. Înfrumuseţări finale

Cu o săptămână înainte de lansarea de pe 14 Octombrie 2007, USOQuest era o aplicaţieweb aproape completă. Se testaseră diferite cazuri de utilizare, se adăugaserăfuncţionalităţi de navigare şi accesibilitate, dar ducea lipsa unei atingeri finale (având învedere că intra in categoria jocuri).

Această finisare a venit de la colegul nostru Andrei Buhaiu, care a pregătit o poveste,nume de niveluri cât şi un concurs special (ascuns în pagină şi cu dificultate mărită).Spicuim din poveste:

La început exista o mare de biţi, un haos necontrolat în care la fiecare secundă miide programe se năşteau şi dispăreau, goto-urile se încâlceau în noduri gordiene şilipsa taburilor crea o indentare haotică şi absurdă, încât orice program în scurta luidurată era oricum irelevant. Dar, la un moment dat, un prim registru porni oprocedură care începu să ordoneze tot haosul dând astfel naştere unui întreg lanţde evenimente ce au dus la crearea celor trei mari tărâmuri: Windowsia, Linuxar şiMacoth, ce împreună alcătuiesc Bitia....

Nu este de mirare că jocul a avut succes. Evoluţia prin nivelurile: Servant, Apprentice,Acolyte, Initiate, Mage, Archmage pentru ajunge într-un final Master Wizard precum şiartefactele speciale, au fost parte din reţeta succesului.

Page 10: World of USO

6. Rezultatul şi statistici

Proiectul a avut un succes mare, peste 300 de studenţi intrând pe site cel puţin odatăînsumând peste 13000 de vizite în cele aproape 4 luni de joc.

Peste 100 din studenţi au participat activ la joc.

WoUSO a adus o contribuţie importantă cursului de USO. A ajutat la îmbunătăţireaconceptelor şi noţiunilor predate la curs şi la laborator şi a sporit în mod pozitivcompetiţia între studenţi. După cum era de aşteptat, cei 10 studenţi premianţi au obţinutnota maximă la USO demonstrându-şi astfel în două rânduri abilităţile şi cunoştinţele.

Întrebările propuse au solicitat efortul întregii echipe USO rezultând într-o diversitate asubiectelor abordate. Apariţia Quest-ului a dus la deschiderea unui thread intens (pelângă multe altele) în care s-au discutat întrebările şi s-au cerut indicaţii.

Quest-ul, quest-urile speciale, cele 7 niveluri, artefactele, diversitatea întrebărilor,povestea jocului au contribuit la creşterea entuziasmului şi la asimilarea noţiunilorcursului de USO.Nu în ultimul rând, posterele "WoUSO needs you" create de Andrei Buhaiu au stârnitsenzaţie în cadrul echipei de USO şi nu numai.

Succesul proiectului WoUSO nu face decât să indice o versiune ulterioară cu multeîmbunătăţiri şi care să ofere o şansă suplimentare de transmitere a cunoştinţelor într-unmod cât mai agreabil - un joc.

Page 11: World of USO

7. WoUSO versiunea 2

Cu toate că WoUSO a fost un succes mai sunt lucruri de îmbunătăţit/adăugat. Vom faceacest lucru în vacanţa de vară 2008. Printre ideile pe care le avem:

• Creşterea portabilităţii astfel încât jocul să poată fi aplicat şi altor materii dinfacultate în cazul în care se doreşte acest lucru.

• Mecanism îmbunătăţit de propunere a întrebărilor pentru joc.• Mecanism colectare si realizare a unor statistici avansate privind utilizarea

jocului.• ... plus alte idei venite din partea studenţilor participanţi.

8. Concluzii

Să lucrăm la World of USO a fost o experienţă interesantă. Ne-am familiarizat cu lucrulîn echipă, cu folosirea uneltelor precum: PHP, MySQL, JavaScript, AJAX, LDAP, Smarty,JQuery, Moodle, Trac, SVN, ssh, Wiki şi multe altele.

Pe lângă utilitatea dovedită în rândul studenţilor de anul întâi de la Facultatea deAutomatică şi Calculatoare, proiectul a fost un succes şi în cadrul organizaţiei ROSEdu(Romanian Open Source Educational). S-a dovedit încă o dată puterea unei comunităţi: odiversitate de oameni pasionaţi, cu un interes comun, cu variate cunoştinţe, careîmpreună pot duce la bun sfârşit un proiect.