Bezpečnosť hernej logiky

Ciele
  1. Zabezpečiť vstup od hráča cez formuláre.
  2. Implementovať metódy verify v akciách a použiť ich pred vytvorením novej akcie.
Úvod
    V našej doterajšej implementácii existujú akcie, ktoré sa vykonávajú aj v čase neprítomnosti. Obsahujú však premenné, ktoré nechceme aby nastavoval hráč, ale nastavili sa automaticky. Preto existujú triedy v balíku domain.forms obsahujúce premenné, ktoré hráč nastaviť smie. K nim sú vyvtorené webové controllery.
Postup
  1. Úloha: Odchyťte moment vytvorenia nových objektov typu Attack, Train a Build a zabezpečte pri ich vzniku aj vznik akcií v databáze.
    Poznámka: Ukladajte iba entity typu Attack, pre neskoršie zobrazenie histórie útokov.
  2. Akcie pridávané cez formulár sú stále neoverené a môže sa stať, že hráč vykoná akcie za dedinu, ktorú nevlastní. Z tohto dôvodu všetky akcie obsahujú metódu verify() na overenie správnosti údajov.
    Úloha: Implementujte verifikačné metódy tak, aby vrátili true, ak je akcia správne zadaná. Pri stavbe, nech sa overí dostatok surovín v sklade. Pri trénovaní vojakov, či počet nie je nulový a či všetky budovy potrebné na daný druh vojaka majú potrebnú úroveň. V prípade útoku, tiež overte, či nie je nulový a či v útočiacej dedine je dostatok vojakov.
    Poznámka: V prípade útoku zatiaľ nebudeme overovať, či prihlásený hráč je vlastníkom dediny, z ktorej chce zaútočiť.
  3. Úloha: Akcie, ktoré nevyhovejú požiadavne nepridávajte do databázy. Rovnako tam nepridávajte aj formuláre. Jediný formulár, ktorý má význam ukladať je útok. Hráč bude mať tak prehľad kedy na koho zaútočil.
    Úloha: Odstránte menu možnosť zobrazenia zoznamu všetkých formulárových entít, okrem tých, ktoré ste sa rozhodli ukladať. Ponechajte iba možnosť vytvoriť nový záznam.
comments powered by Disqus