This is an old revision of the document!


2. Sisteme turn-based si evenimente

Cerinte

Realizarea unui battle arena simplu, turn-based

  • Creati o scena cu 3 personaje proprii si 3 inamici
  • Fiecare personaj propriu si inamic are cate o abilitate:
    • un mass heal
    • un mass damage
    • attack simplu
  • Fiecare personaj se poate deplasa, pentru a evita atacul simplu
  • Pentru fiecare tura
    • Tura dureaza maxim 20 secunde
    • In acest timp utilizatorul trebuie sa aleaga abilitatile sau sa mute personajele
    • Utilizatorul poate termina tura prin apsarea unui buton de End Turn sau se va termina automat dupa cele 20 de secunde
    • La finalizarea turei se ruleaza/aplica abilitatile sau mutarile alese
    • Inamicii realizeaza actiuni random

Pentru simplitate, toate interactiunile se pot realiza prin butoane de comanda.

Bonusuri:

  • Abilitatile au cooldown, de ex:
    • un mass heal: cooldown 3 ture
    • un mass damage: cooldown 3 ture
    • attack simplu: cooldown 1 tura
  • Abilitatile au efecte grafice (particule, text cu -10dmg etc) la aplicare
  • Elemente de design imbunatatit: scena/personaje/animatii etc
  • Grid system
  • Selectie personaje/target inamici in game/click pe harta pentru miscare/abilitati

Cateva exemple, doar ca idee de inspiratie

best-turned-based-rpgs-persona-3-reload-550x309.jpg best-turn-based-rpgs-sea-of-stars-550x309.jpg best-trpg-banner-saga-3.jpg

Documentatie video

Gasiti pe MS Teams inregistrat

Documentatie text

Sisteme turn based

Gestiune harta

Gestiune personaje

Gestiune comenzi

Pentru a aplica comenzile la terminarea turului, acestea trebuie memorate si gestionate intr-o lista.

Command design pattern este unul dintre Gang of Four inițial și este util oricând doriți să urmăriți o serie specifică de acțiuni. Probabil că ați văzut command design pattern deja dacă ați jucat un joc care folosește funcționalitatea de undo/redo sau păstrează istoricul comenzilor într-o listă. Imaginați-vă un joc de strategie în care utilizatorul poate planifica mai multe ture înainte de a le executa efectiv. Acesta este command design pattern.

Command design pattern permite acțiunilor să fie reprezentate ca obiecte. Încapsularea acțiunilor ca obiecte vă permite să creați un sistem flexibil și extensibil pentru controlul comportamentului GameObjects ca răspuns la intrarea utilizatorului. Aceasta funcționează prin încapsularea unuia sau mai multor apeluri de metodă ca „obiect de comandă”, mai degrabă decât invocarea directă a unei metode. Apoi puteți stoca aceste obiecte de comandă într-o colecție, cum ar fi o coadă sau o stivă, care funcționează ca un mic buffer.

Stocarea obiectelor de comandă în acest fel vă permite să controlați timpul de execuție a acestora prin eventual întârzierea unei serii de acțiuni pentru redarea ulterioară. În mod similar, puteți să le refaceți sau să le anulați și să adăugați flexibilitate suplimentară pentru a controla execuția fiecărui obiect de comandă.

Iată câteva aplicații comune ale modelului în diferite genuri de joc:

  • Într-un joc de strategie în timp real, modelul de comandă ar putea fi folosit pentru a pune intr-o coadă unități și acțiuni de construcție. Jocul va executa apoi fiecare comandă pe măsură ce resursele devin disponibile.
  • Într-un joc de strategie pe rând, jucătorul poate selecta o unitate și apoi poate stoca mișcările sau acțiunile acesteia într-o coadă sau altă colecție. La sfârșitul turei, jocul va executa toate comenzile din coada jucătorului.
  • Într-un joc puzzle, modelul de comandă ar putea permite jucătorului să anuleze și să refacă acțiuni.
  • Într-un joc de luptă, citirea apăsărilor de butoane sau a mișcărilor gamepadului într-o anumită listă de comenzi poate duce la combo-uri și mișcări speciale.

Pentru a implementa un command pattern, veți avea nevoie de un obiect general care va conține acțiunea. Acest obiect de comandă va deține ce logică să efectueze și cum să o anuleze.

Există mai multe moduri de a implementa acest lucru, dar iată o versiune simplă folosind o interfață numită ICommand:

public interface ICommand
{
void Execute();
void Undo();
}

Sisteme de evenimente

pjv/laboratoare/2024/a02.1729499343.txt.gz · Last modified: 2024/10/21 11:29 by alexandru.gradinaru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0