You are on page 1of 11

WoUSO - Jocul cunoaşterii

Suport pentru cursul de Utilizarea Sistemelor de Operare

Mihai DUMITRACHE
Alex EFTIMIE
Sergiu IORDACHE
Valentin PRIESCU

Conducător ştiinţific:
As. ing. Răzvan DEACONESCU
Şl.dr.ing Răzvan RUGHINIŞ
1. Introducere

1.1 Despre

World of USO este un joc online bazat pe întrebări din materia cursului de Utilizarea
Sistemelor 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 şi
răspunsuri din toată materia. Un alt avantaj este faptul că întrebările sunt sincronizate
cu 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 cum
ar fi putut fi îmbunătăţită experienţa cursului de USO. Se dorea un joc care să fie
educativ şi totodată să atragă studenţii. În urma unei sesiuni de brainstorming cu echipa
cursului 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 stabilit
punctajele, 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 transmise
de 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.
2. Mecanica jocului
Punctul central al jocului şi elementul care determina clasamentul jucatorilor este
numarul de puncte. Punctele se pot caştiga în 3 feluri posibile, răspunzând la întrebarea
zilei, la întrebările din quest sau prin intermediul provocarilor. Punctele astfel obtinute se
vor aduna si se va forma un clasament.

In functie de punctajul acumulat, fiecarui student i se asociaza unul dintre cele şapte
niveluri: 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ţi
jucă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 provoca
pe alţi studenţi la un set de întrebări. În ziua imediat următoare lansării provocarea are
loc 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 la
raspunsul 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, se
castiga 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ă de


toate cunoştinţele pe care le are la dispoziţie pentru a răspunde la 20 de întrebări de o
dificultate mai ridicată. Întrebările sunt afişate pe rând şi se va trece la urmatoarea pe
masură ce studentul răspunde corect la întrebarea curentă, tot odata crescând şi
dificultatea întrebărilor.
Răspunsul este unul mai complex şi va fi furnizat într-un text box, numărul de încercari
fiind nelimitat.

Pentru fiecare răspuns corect jucătorul primeşte un număr de puncte egal cu nivelul la
care 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 nu
iese 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.
3. Bazele de date
Realizarea bazei de date şi funcţionarea ei a fost un punct foarte important al
mecanismului 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 un
acces direct la baza de date. De aceea am fost nevoiţi să realizăm o sincronizare dintr-un
sens în altul prin LDAP (Moodle -> WoUSO).

Odată ce jucătorul ce intra pe site-ul WoUSO folosind contul de pe curs.cs.pub.ro


programul extrăgea informaţii precum numele şi prenumele şi le adăuga bazei de date
locale. 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ătoarea
structură:
• 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, din
provocă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 şi
pentru 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 fost


aproape imposibilă s-a ales varianta scrierii întrebărilor în fişiere text (cu ajutorul unui
metalimbaj 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 parcurse
iar întrebările şi răspunsurile sunt extrase şi introduse în baza de date.
4. Clase şi module

4.1 Motivaţie

Pentru WoUSO am ales ca limbaj de programare PHP. Motivele au fost: simplitatea de


folosire şi interfaţarea bună pe care limbajul o are cu sistemul de gestiune al bazelor de
date MySQL. Limbajul PHP, simplu de învăţat şi de folosit are şi dezavantaje, printre
acestea numărându-se şi faptul că într-un proiect mare, sursele pot deveni greu
administrat şi întreţinut. Din această cauză, în cazul programării pe server am abordat
paradigma 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
date
2. Feed RSS - informaţii actualizate despre un utilizator, accesibile prin tehnologia
RSS (Really Simple Syndication)
3. Manual - manual de utilizare
4. Jocul propriu-zis (cu Quest, Challenges şi Qotd)

4.3 Clase

Pentru administrarea afişării conţinutului am folosit clase denumite Site, Pages şi


PagesBase. Clasa Pages extinde motorul de şabloane Smarty, folosit pentru a separa
total limbajul de prezentare (în cazul nostru HTML, pe alocuri XHTML) de limbajul de
programare (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 toate
operaţ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 cu
ajutorul 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 vedere
al programatorului) a fost înglobarea mai multor tehnologii diferite, unele dintre ele noi.
De exemplu, pentru autentificarea studenţilor, am folosit serverul LDAP (Lightweight
Directory Access Protocol) de la: http://ldap2.grid.pub.ro/.

Pe partea de client, am folosit destul de mult JavaScript (atât de popular în browserele


de astăzi), atingând uneori chiar funcţionalităţi asemănătoare AJAX (Asynchronous
Javascript and XML) - căsuţa de căutare jucător oferă auto-completion fără reîncărcarea
paginii. Totodată, diversele căsuţe cu informaţii de pe panoul de lucru, pot fi restrânse şi
deschise 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 unui
standard raspandit, RSS (Really Simple Syndication), prin care utilizatorii jocului aveau
acces facil la informatii privind numarul de puncte acumulate, numarul de provocari pe
care le-a primit, topul jucatorilor şi alte informaţii fără să fie nevoie ca jucatorul să intre
pe 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 de


discuţii:
http://rosedu.org/cgi-bin/mailman/listinfo/moodle-dev
http://rosedu.org/cgi-bin/mailman/listinfo/uq-challenge
http://rosedu.org/cgi-bin/mailman/listinfo/uq-dbdesign
http://rosedu.org/cgi-bin/mailman/listinfo/uq-quest
http://rosedu.org/cgi-bin/mailman/listinfo/uq-translate
şi prin sistemul integrat de wiki + bug tracking al Trac .
5. Înfrumuseţări finale
Cu o săptămână înainte de lansarea de pe 14 Octombrie 2007, USOQuest era o aplicaţie
web 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 în
vedere 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ă mii
de programe se năşteau şi dispăreau, goto-urile se încâlceau în noduri gordiene şi
lipsa taburilor crea o indentare haotică şi absurdă, încât orice program în scurta lui
durată era oricum irelevant. Dar, la un moment dat, un prim registru porni o
procedură 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 şi
Macoth, 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 şi
artefactele speciale, au fost parte din reţeta succesului.
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ăţirea


conceptelor şi noţiunilor predate la curs şi la laborator şi a sporit în mod pozitiv
competiţia între studenţi. După cum era de aşteptat, cei 10 studenţi premianţi au obţinut
nota 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 a
subiectelor abordate. Apariţia Quest-ului a dus la deschiderea unui thread intens (pe
lâ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ţiunilor
cursului de USO.
Nu în ultimul rând, posterele "WoUSO needs you" create de Andrei Buhaiu au stârnit
senzaţ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-un
mod cât mai agreabil - un joc.
7. WoUSO versiunea 2
Cu toate că WoUSO a fost un succes mai sunt lucruri de îmbunătăţit/adăugat. Vom face
acest 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 din
facultate î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 de


Automatică ş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: o
diversitate de oameni pasionaţi, cu un interes comun, cu variate cunoştinţe, care
împreună pot duce la bun sfârşit un proiect.

You might also like