Centre: Institut Esteve Terradas i Illa (Cornellà de Llobregat)
Cicle: Desenvolupament d'aplicacions web
Inici: 27 de abril de 2023
Final: 11 de maig de 2023
Introducció
Es tracta d’un joc de navegador, no te interfície 2D o 3D com a tal, es tracta més d’un joc d’accions que s’interactua des de la Web.
El joc tindrà una data d’inici i d’una de final. Durant aquell ventall de temps els jugadors registrats poden jugar-hi. Si el termini no s’ha iniciat o ha acabat, el jugadors (usuaris registrats) no podran jugar-hi però si fer login e iniciar sessió.
El jugadors registrats tenen bàsicament tres característiques:
Nivell
Vida
Mana/Energia
Experiència
Amb el pas del temps, els jugadors reben mana/energia que poden gastar en accions (atacs, recuperar vida, etc). Cada torn (1h) es recupera X punts de mana/energia, a on X és el nivell del jugador. Per exemple: un jugador de nivell 1 després de 2h del inici del joc haurà recuperat 2 punts de mana/energia (perquè han passat 2 torns). En canvi un jugador de nivell 3 haurà recuperat 6 punts de mana/energia.
En el nivell 1, el jugador té un màxim de: 10 punts de vida, 10 punts de mana i 10 punts d’experiència. En el nivell 2, el jugador té un màxim de 20 punts de vida, 20 punts de mana i 20 punts d’experiència. El progrés és lineal, La fórmula és:
Punts de vida, mana o experiència = nivell N x 10.
Per exemple un jugador de nivell 8 té un màxim de 80 punts de vida, 80 de mana i 80 punts d’experiència.
Experiència
L’experiència és la característica que determina el nivell. Quan el joc arrenca amb la data d’inici, tots els usuaris comencen en el nivell 1 amb 10/10 punts de vida, 10/10 de mana/energia i 0/10 punts d’experiència. El jugadors poden gastar aquest mana/energia en accions. Les accions poden ser varies però s’agrupen en tres categories:
Accions agressives: atacs a altres jugadors per guanyar experiència.
Accions defensives: recuperar vida pròpia.
Accions neutrals: guanyar experiència sense atacar a altres jugadors.
Si decidim gastar el mana/energia en accions agressives, bàsicament son atacs a altres jugadors. Un jugador només pot atacar aquells jugadors que es troben al seu propi nivell i als que es trobin a nivells adjacents:
Si l’atac contra un altre jugador te èxit, el jugador que ha realitzat l’atac guanyarà la mateixa quantitats de punts d’experiència que els punts de vida que perd el jugador atacat. Si el jugador atacat mor (els seus punts de vida son zero o menys) automàticament baixa de nivell.
Quan un jugador arriba al límit de punts d’experiència que marca el seu nivell, pujarà de nivell automàticament. Això vol dir que el seu límits de vida, mana i experiència augmentaran.
Posem un exemple: un jugador de nivell 1, amb 10/10 punts de vida i 10/10 punts de mana i 0/10 d’experiència, decideix fer atacs (que li costen 7 punts de mana/energia) i tots ells tenen èxit, suposem que arriba a fer 10 punts de mal a altres jugadors, es a dir, ha guanyat 10 punts d’experiència, per tant puja a nivell 2. La seva vida i mana/energia es mantenen però el seus límits augmenten, l’experiència es reinicia a zero. En resum el jugador es trobaria amb aquests valors:
Nivell: 2
Vida: 10/20
Mana/Energia: 3/20
Experiència: 0/20
Si decidim gastar el mana/energia en accions defensives, bàsicament seran accions que només impliquen a un mateix i no afectarà a altres jugadors. Aquestes accions en general serveixen per recuperar vida.
Si decidim gastar el mana/energia en accions neutrals, serveixen per guanyar experiència sense la necessitat d’atacar a altres jugadors.
Si un jugador mor perquè algú altre l’ha tacat i els seus punts de vida es redueixen a zero o menys, aleshores baixa de nivell. Al baixar de nivell, els teus màxims de punts (vida, mana, experiencia) s’actualitzen (segons el nivell nou actual) i la teva vida es recupera al màxim.
Per exemple: un jugador de nivell 1 mor, baixa a nivell 0. Tindrà 0 punts de vida, mana i experiència, està totalment mort. Un jugador a nivell zero es considera un jugador no actiu i no hauria de ser visible enlloc (ranking, formularis, etc).
Un altre exemple: un jugador de nivell 4 mor, imaginem que en aquell moment els seus valors eren: Nivell: 4, Vida: 5/40, Mana/energia: 32/40, Experiencia: 18/40. Al baixar de nivell, els seus nous valor seran: Nivell: 3, Vida: 30/30, Mana/energia: 30/30, Experiencia: 18/30. Com podeu veure, la seva vida s’ha restaurat al màxim del nivell baixat (de 5 a 30), i els punts de mana s’han vist limitats (de 32 a 30).
Si un jugador ataca a un altre jugador i la victima mor en aquest acció atacant. El jugador atacant guanyarà la mateixa quantitat de punts d'experiència que punts de mal ha perdut la víctima més uns punts extra que es calculen amb la següent formula:
Punts extra d'experiència per matar un jugador = Número aleatori entre el nivell del jugador atacant i el nivell del jugador víctima x 2.
Les accions poden ser les següents:
Com podeu veure les accions tenen un tant per cent d’èxit. Si quan es realitza una acció no supera aquest percentatge d’exit, no tindrà efecte i el seu cost (de mana/energia) serà restat al jugador que l’havia realitzat.
L’última columna anomenada “punts” fa referència a punts de dany o de restauració, depenen de si l’acció és agressiva o defensiva. A les accions neutrals, la columna “punts” fa referència a punts d’experiència, d’aquesta manera podem guanyar experiència fent aquest tipus d’accions neutrals sense tenir que atacar a ningú.
El nom de les accions “AAAA”, “BBBB”, “CCCC” etc. s’han de canviar per noms entorn el vostre centre d’interès. Podeu triar ambientar-ho en qualsevol univers que imagineu: Dungeons and Dragons, Harry potter, Bola de Drac, Pokemon, Formula 1, MotoGp, Fútbol, Basquet, etc. Les opcions son infinites.
Per exemple: Si decidim que el nostre centre d’interès sigui la “Taberna de Mou” dels Simpsons, l’acció “AAAA” podria anomenar-se “Cop de puny”, l’acció “BBBB” podria ser “Patada”, l’acció “EEEE” podria ser “Veure una cervesa”. Etc.
Aquest joc necessita un manteniment per a que constantment (amb el pas del temps) es reparteixi el mana/energia de forma automàtica als jugadors.
Sería ideal definir un “cron job” a la màquina servidor que executi cada X minuts l'àrea /cron per tal de tenir el manteniment del joc constantment optimitzat. En la següent gràfica mostra com l’script s’ha executat cada 1h i per cada execució ha processat 1 torn:
Però també existeix la possibilitat de que encara que no s’executi aquest cron constantment, qualsevol visita a la nostre web també executi aquesta àrea /cron. Imaginem que s’ha visitat a les 00h de la nit, després a les 2h (processa 2 torns) i finalment a les 6h (processa 4 torns):
A continuació es descriu una petita ajuda per tal de dur a terme aquest process:
Comprovar que la data actual esta dintre del termini del joc, si no sortim.
Calcular el número de torns que han passat des de l'últim torn executat.
Si aquest valor es positiu (un o més), cerquem els jugadors que estan vius.
Per cada jugador viu, actualitzem el seu mana tenint en compte el que ja tenia actualment més la suma del nou mana generat per cada un dels torns. Hem de tenir en compte el mana que genera per torn i nivell i el límit màxim de mana que defineix el seu nivell.
Per exemple: Si l’script cron s’executa cada 1h i processa només un torn, un jugador de nivell 2 recuperarà 2 punts de mana/energia i un jugador de nivell 8 recuperarà 8 punts de mana/energia. En canvi, si l’script cron s’executa 8h després de la ultima execució, i procesa 8 torns, un jugador de nivell 2 recuperarà 16 punts de mana/energia tenint en compte que té un màxim de 20 punts de mana (perquè és nivell 2) i un jugador de nivell 8 recuperarà 64 punts de mana/energia tenint en compte que té un màxim de 80 punts de mana (perquè és nivell 8).
Actualitza la base de dades amb la data i temps del torn/s que acabem de procesar com a últim torn executat.
Inici: 27 de abril de 2023
Final: 4 de maig de 2023
Hores estimades totals: 18,0
hores estimades: 0,0 Mòduls: MP07
hores estimades: 1,0 Mòduls: MP09
hores estimades: 0,0 Mòduls: MP09
hores estimades: 2,0 Mòduls: MP07
hores estimades: 3,0 Mòduls: MP06 MP07 MP09
hores estimades: 1,0 Mòduls: MP07
hores estimades: 2,0 Mòduls: MP07
hores estimades: 1,0 Mòduls: MP07
hores estimades: 2,0 Mòduls: MP06 MP07 MP09
hores estimades: 2,0 Mòduls: MP07 MP08
hores estimades: 1,0 Mòduls: MP07
hores estimades: 2,0 Mòduls: MP07 MP08
hores estimades: 1,0 Mòduls: MP07
Inici: 4 de maig de 2023
Final: 11 de maig de 2023
Hores estimades totals: 33,0
hores estimades: 3,0 Mòduls: MP08
hores estimades: 1,0 Mòduls: MP07
hores estimades: 5,0 Mòduls: MP06 MP07 MP09
hores estimades: 5,0 Mòduls: MP06 MP07 MP09
hores estimades: 3,0 Mòduls: MP07 MP08 MP09
hores estimades: 3,0 Mòduls: MP06 MP08 MP09
hores estimades: 2,0 Mòduls: MP06 MP08 MP09
hores estimades: 11,0 Mòduls: MP06 MP09
Inici: 11 de maig de 2023
Final: 17 de maig de 2023
Hores estimades totals: 33,0
hores estimades: 2,0 Mòduls: MP09
hores estimades: 2,0 Mòduls: MP06 MP09
hores estimades: 4,0 Mòduls: MP06 MP09
hores estimades: 2,0 Mòduls: MP06 MP09
hores estimades: 1,0 Mòduls: MP06 MP07 MP09
hores estimades: 2,0 Mòduls: MP09
hores estimades: 4,0 Mòduls: MP09
hores estimades: 5,0 Mòduls: MP09
hores estimades: 2,0 Mòduls: MP09
hores estimades: 3,0 Mòduls: MP09
hores estimades: 2,0 Mòduls: MP09
hores estimades: 2,0 Mòduls: MP09
hores estimades: 2,0 Mòduls: MP07 MP08
Inici: 18 de maig de 2023
Final: 17 de maig de 2023
Hores estimades totals: 0
hores estimades: 0,0 Mòduls: MP07
hores estimades: 0,0 Mòduls: MP09
hores estimades: 0,0 Mòduls: MP09
hores estimades: 0,0 Mòduls: MP09
hores estimades: 0,0 Mòduls: MP09
hores estimades: 0,0 Mòduls: MP06 MP07 MP09
hores estimades: 0,0 Mòduls: MP09
hores estimades: 0,0 Mòduls: MP06 MP07 MP09
Inici: 4 de maig de 2023
Final: 11 de maig de 2023
Hores estimades totals: 22,0
hores estimades: 3,0 Mòduls: MP08
hores estimades: 1,0 Mòduls: MP07
hores estimades: 5,0 Mòduls: MP06 MP07 MP09
hores estimades: 5,0 Mòduls: MP06 MP07 MP09
hores estimades: 3,0 Mòduls: MP07 MP08 MP09
hores estimades: 3,0 Mòduls: MP06 MP08 MP09
hores estimades: 2,0 Mòduls: MP06 MP08 MP09
Inici: 11 de maig de 2023
Final: 17 de maig de 2023
Hores estimades totals: 22,0
hores estimades: 11,0 Mòduls: MP06 MP09
hores estimades: 2,0 Mòduls: MP09
hores estimades: 2,0 Mòduls: MP06 MP09
hores estimades: 4,0 Mòduls: MP06 MP09
hores estimades: 2,0 Mòduls: MP06 MP09
hores estimades: 1,0 Mòduls: MP06 MP07 MP09