marți, 9 octombrie 2007

Strategie

Mărirea costurilor și timpului necesar construirii/upgradării clădirilor/unităților.

Energia se regenează prea repede iar roboții utilitari nu consumă energie.

duminică, 7 octombrie 2007

Diverse

Am terminat de implementat formularul și fereastra de tip pop-up pentru secțiunea opțiuni personale. Totul pare să meargă bine deocamdată, n-am întâmpinat probleme majore.

Sper ca mâine o să termin de implementat și o să fie complet funcțional. Acum am ieșit, este deja prea târziu... pentru Duminică seara. (trebuie să termin și tema la matematică :( )

Designul interfetei de logare a fost inbunatatit, in plus au fost adaugate functionalitati noi.

Idei implementare

Anumite clădiri pot avea posibilitatea de upgradare (îmbunătățire) repetată, a unui anumit tip de unitate mecanică, de cladire sau de putere specială.

Ex: cercetarea fizicii cuantice și a teoriei relativități oferă posibilitatea manipulării atomilor la nivel microscopic, astfel devenind disponibile noi tipuri de arme și de tehnologii: energia atomică, raza laser, etc... (E=m*c^2)

 

Crearea de legături între secțiuni ale site-ului (ex: la baracă crearea de legături între numele unităților și secțiunea instrucțiuni pentru detalii), scoaterea efectului de drag&drop al ferestrei ce afișează statusul, și acorarea ferestrei asemenea ferestrei pentru construirea clădirilor.

Construirea unei clădiri speciale pentru restricționarea numărului maxim de resurse de tip minerale sau gaz ce se pot acumula.

Adăugarea unui nou tip de "ispită", adică adăugarea posibilității de a mitui oameni influenți, astfel câstigand un avantaj în fața adversarului.

Oferirea de doua perspective de vizualizare a hartii universului. O perspectiva normala, iar cealalta, de tip radar.

sâmbătă, 6 octombrie 2007

Listă de făcut

Perfecționare script întăriri.

Transformare frame notificări din javascript in php

GREP-IT

SWar a participat la concursul national de informatica aplicata GREP-IT ce a avut loc la Botosani, castigand locul II.

Infoeducație 2007

SWar a participat la concursul de informatică aplicată Infoeducație 2007 în luna iulie a acestui an ce avut loc la Focsani, castigand mentiune II.

joi, 4 octombrie 2007

Povestea...

Actiunea este centrata in jurul stelei Nemesis, sursa principala de energie a sistemului solar Eragon, stea a carei durata de viata a inceput sa se apropie de sfarsit.

Aceasta este cea mai mare stea din Univers, iar explozia sa va anunta o noua era in domeniul tehnologic. Se presupune ca energia degajata in momentul exploziei este uriasa. Si astfel, setea de putere a imperiilor in continua expansiune s-a focalizat in jurul sistemului solar.
Lupta pentru putere este apriga, toate marile puteri din Univers se lupta pentru un loc cat mai bun pentru a capta energia soarelui ce se dezintegreaza.

De asemenea pentru a putea supravietui momentului 0, toate planetele colonizate vor trebuii sa-si construiasca un centru tehnologic, ce va inversa polaritatea generatorului de scut in momentul impactului.

Planetele sunt colonizate de unitati mecanice, deoarece nici o planeta din acest sistem solar nu poate sustine viata organismelor vii.

Razboiul a inceput, scopul principal al fiecarei planete este de a-si construi o armata si o infrastructura cat mai puternica, si de-asi upgrada generatorul de scut.

Insa se pare ca sistemul solar poate sustine o forma anorganica de viata, ce prezinta o forma superioara de inteligenta, informatii despre aceste entitati nu sunt disponibile in nici o arhiva intergalactica.

Misterul din jurul lor este cu atat mai mare cu cat, sondele trimise in recunoastere in toate colturile sistemului solar detecteaza din ce in ce mai multa energie degajata de aceste entitati.

Planetele sunt aparent fara aparare in fata acestor forme de viata, ce pot distruge planurile de expansiune ale acestora.

Pana in acest moment se pare ca aceste entitati populeaza planetele aflate in centrul sistemului solar, si anume, planetele: W45-Galileo, GF4-Davinci, si B4a-Newton.

Planetele din sistemul solar Eragon, sunt in numar destul de mare, si ofera doua tipuri de resurse, care pot intretine armata si infrastructura imperiilor cuceritoare: minerale si gaz.

De asemenea mai pot fi construite si panouri solare ce capteaza energia dispersata de stea, energie ce este folosita pentru mentinerea in viata a unitatilor mecanice.

Descriere

SWar doreste a fi un simulator interactiv de razboi intergalactic ce permite interactiunea intre un numar mare de utilizatori fara a consuma foarte multe
resurse pe partea de server.


Printre facilitatile ce fac acest joc distinct sunt interactiunea pe partea de client sporita, traficul client-server redus, modificarea in timp real a elementelor dinamice din pagina si utilizarea
straturilor multiple active.



Interactiunea client-server
Nivelul scazut de trafic intre client si server a fost posibil datorita implementarii unor tehnici web 2.0 cum ar fi Ajax. Implementarea Ajax s-a realizat cu limbajul Javascript, folosind obiectul XmlHttpRequest, fara librarii sau cadre de lucru externe.
Pentru a realiza comunicarea intre limbajele de programare folosite pe partea de server (Php), respectiv pe partea de client (Javascript) s-a folosit limbajul extensibil Xml. Procesarea documentului Xml se face folosind functiile speciale Dom.
Toate cererile Ajax sunt trimise asincron catre server, iar asteptarea primiri raspunsului de la server se indica printr-un element activ, ce este afisat doar la declansarea evenimentului de trimitere a cererii.
Fisierele de pe server catre care sunt trimise cererile au headere speciale ce nu permit stocarea acestora in cache-ul local al browserului, deoarece gradul de perisare al informatiilor trimise inapoi este mare.
Datele sunt preluate instantaneu din document cu limbajul Javascript iar apoi sunt trimise ca parametrii fisierelor Php cu metoda Get.
La nivel de document sunt create functii specifice pentru fiecare tip de actiune, iar atunci cand aceasta este declansata este creat obiectul XmlHttpRequest si cererea este trimisa.

Motoare interne
Actiunile declansate de catre utilzator sunt procesate de motoare scrise in PHP iar rezultatul procesarii este transpus in format XML pentru a putea fi apoi prelucrat cu JAVASCRIPT.
Motoarele primesc parametrii cu metoda GET, proceseaza cererea, rezultatul este trecut in baza de date, iar afisarea se face sub forma de arbore XML.
Reimprospatarea actiunilor globale este realizata cu o functie JAVASCRIPT ce se autoapeleaza intr-un interval de timp ce variaza in functie de timpul de raspuns al serverului.

Module si cadre active
Intregul joc este bazat pe module si cadre active, acest lucru facilitand o interactiune utilizator-browser mai mare. De asemenea, aceasta caracteristica permite reimprospatarea dinamica, doar pe anumite cadre, ce reduce traficul client-server. Constructia pe cadre, permite si o accesare rapida si instantanee a tuturor sectiunilor jocului.
Spatiul din fereastra browserului este minimizat si compact datorita elementelor ascunse, si a straturilor multiple active. Un numar destul de mare de ferestre si elemente active sunt estompate pentru a reduce spatiul, acestea putand fi afisate la declansarea unor evenimente specifice. Straturile multiple active sunt construite cu clase speciale CSS si functii JAVASCRIPT ce schimba in timp real proprietatile acestora.
Accesarea elementelor din cadrele active se face folosind functiile DOM. Continutul fiecarui cadru modificandu-se in timp real la declansarea anumitor elemente.

Interfata
a.) Straturi multiple active
Folosirea straturilor multiple active aduce interactiunea sistemului de operare in browser. Aceasta caracteristica speciala SWar permite utilizarea unui numar mare de ferestre si de cadre active in acelasi timp intr-un spatiu restrans.
La afisarea meniului principal, elementele din proximitatea sa se vor dezactiva, iar singura zona activa va ramane interiorul meniului.
b.) Elemente ascuse
Pentru a reduce spatiul activ, s-au implementat elemente partial ascunse, care se deruleaza la declansarea evenimentelor onClick.
c.) Ferestre drag&drop
O alta caracteristica ce face ca interactiunea SWar sa fie asemenatoare cu cea a unui sistem de operare este implementarea ferestrelor de tip drag&drop.
d.) Elemente de tip hint
Pentru a facilita afisarea informatiilor ajutatoare, au fost implementate elemente de tip hint, ce se activeaza in timp real la trecerea cursorului deasupra unui element.
e.) Elemente pull-down
Meniuri interactive ce se deruleaza la aparitia evenimentului onClick.
f.) Butoane cu animatii in trei pasi
Pentru a marii interactiunea utilizator-browser, fiecare buton are trei faze de animatie, fiecare faza fiind declansata la aparitia unui eveniment, animatia find asemanatoare butoanelor ActiveX ale sistemului de operare Windows. Pentru animarea butoanelor s-a folosit o singura functie JAVASCRIPT ce primeste ca parametru numele butonului.
g.) Functii pentru selectare multipla



Functiile pentru selectarea multipla au rolul de a parcurge dinamic elementele de tip input din document.

Sectiuni
Utilizatorul are doua perspective principale asupra jocului ce pot fi selectate din meniul de tip pull-down aflat in partea superioara a ecranului.
a.) Planeta
b.) Harta Univers
c.) Statistici
d.) Mesaje
e.) Instructiuni



Tratarea evenimentelor si alertelor
La nivelul documentului sunt declansate evenimente de tip timeout pentru numaratoarile inverse.
Alertele nu sunt afisate cu functia JAVASCRIPT alert() ci cu o functie predefinita numita fereastra(text), ce primiteste ca parametru textul ce va fi afisat.

Securitate
A fost creata o functie PHP speciala addentities() ce trateaza fiecare parametru primit cu GET. Accesul direct la oricare dintre fisierele PHP de pe server este restrictionat. Verificarea se face pe baza de sesiuni.
De asemenea in JAVASCRIPT s-a creat o functie ce restrictioneaza incarcarea jocului intr-un sau orice alt container de acest fel, pastrand principul locatiei originare.

Standardizare
Codul a fost scris respectand standardele consotiului W3C. In procesul de constructie site-ul a fost testat regulat in browserele moderne cum ar fi: Internet Explorer 6.0, Mozilla 1.0, Opera 9.0 si Safari 3.0 pe platforma Windows XP Professional.

miercuri, 3 octombrie 2007

Probleme rezolvate

  1. Pe Internet Explorer 7.0 obiectul MSXML nu este suportat. HINT: funcția javascript pentru acțiunile globale, va trebui modificată.
  2. Atunci când se calculează numărul de acțiuni curente se iau în considerare și actiunile de tip construire. HINT: modificare în fișierul actiuni.php
  3. Trebuie afișate coordonatele utilizatorilor și opțiunea de centrare hartă în fereastra informații utilizator.
  4. Atunci când se trimite un atac către alt utilizator, se schimbă utilizatorul curent cu cel pe care-l ataci. Weird! HINT: O problema cu sesiunile la selectarea planetei.
  5. BUG: returnare_notificari function - ajax.js HINT: motor_notificari.php
  6. Problema la schimbarea planetei... HINT: sesiuni...
  7. Nu se incrementează resursele planetelor secundare. HINT: trebuie adaugată coloană în tabelul planete numită last_login.
  8. Când se construiesc unități mecanice nu se incrementează populația corect. HINT: variabila globală $user nu era redenumită $user_global.
  9. Apare o eroare de tip warning în fișierul status_fereastra.php ("$user is not defined"). HINT: variabila globală $user nu era redenumită $user_global.
  10. Când se construiesc unități mecanice, nu se scad corect mineralele. HINT: variabila globală $user nu era redenumită $user_global.

BUG-uri cunoscute

  1. Atunci când un atac este lansat, întoarcerea trupelor se calculează de la data la care s-a executat scriptul, nu de la data atacului.
  2. Dacă se introduc date invalide (ex: -1, "e"), în câmpul de construire unități al clădirii principale, acțiunea se efectuează eronat. Același lucru este valabil și pentru câmpurile celorlalte clădiri de același fel.
  3. Când se schimbă planeta trebuie resetate toate cronometrele active din pagină și trebuie restricționat numărul maxim de cronometre active (momentan suportă maxim 5-6 cronometre). Atunci când se activează un obiect de tip drag&drop, cronometrele sau se mișcă fereastra de tip pop-up, cronometrele se opresc.