meeshoo,
Vezi ca HGE are propriul resource manager si functioneaza foarte bine, nu iti bate capul sa faci altul nou
Merci, chiar acum m-am uitat si se pare ca isi face treaba foarte bine. Incarca orice tip de resursa si se ocupa si de dezalocarea lor, exact ce imi trebuia.
adica sa ia o bucata de textura dintr-o poza mai mare sau sa faca animatie din mai multe frame-uri puse secvential in aceeasi textur
Chiar ziceam ca lucram la optimizare, si asta am facut. Am mutat toate texturile mici, in una mai mare si m-am folosit de HGE sa iau sprite-urile pe bucati. Cat despre animatie, da, cu hgeAnimation lucrez. Intr-un timp am vrut sa implementez eu animatia, dar hgeAnimation imi ofera tot ce am nevoie. Foarte bine realizat.
raduangelescu,
Mi se pare inutil sa implementezi pentru fiecare stare o clasa. State machineul e doar un switch intr-un while
Asa m-am gandit si eu initial. Problema este alta in schimb. Nu vreau sa am un switch urias in codul personajului. Sa zicem ca asta nu ar fi o problema atat de mare, dar mai exista una. In functie de miscarea pe care o executa un anumit personaj, personajul se comporta diferit. Si atunci as ajunge la un if-else-if.. De exemplu: ken cand da magie, ramane fix. chunli se poate misca imediat dupa ce da magia.
In schimb, cred ca nu m-am exprimat eu bine cu state-machineul la care m-am gandit. Evident, sa fac o suta de clase pentru o suta de stari nu este rentabil si e mult de lucru. In schimb, diagrama arata asa:
Dupa cum se vede, am doar 5 clase pentru cele 5 stari importante. Move se ocupa de miscari stanga,dreapta. Attack se ocupa cu orice tip de attack: heavy, medium, light + punch/kick. Attack cu orice magie de baza. Iar la Exceptions sunt exceptiile de care am vorbit mai sus(ken vs chunli). Tot la execeptions tratez si catchurile, pentru ca atunci practic personajele nu se misca, si urmeaza o miscare prestabilita de catch. State-ul isi va lua toata informatia(ca sa stie ce animatie sa incarce) direct de la caracter, care se incarca din acel pool de care vorbeam la inceputul jocului.
PlayAnimation("Attack_heavy_of_Bryan") ci EnterState(ATACK_HEAVY)
Da, normal. Am definite animatiile in genul: HeavyPunch, MediumPunch..etc; si atunci toate personajele, cum au aceste miscari, isi vor incarca animatia "heavyPunch", iar acolo este stocata animatia necesara pentru caracterul meu.
Nu e ok sa incarci resursele de genul asta pe fiecare actiune in parte, toate animatiile si spriteurile care se vor folosi trebuie sa le incarci la inceput
Aici revenim la ce am zis mai sus. Ca voi incarca tot, in acel object pool. Dar vine intrebarea mea..adica nelamurirea. Poate nu folosesc eu corect termenul de object pool. Eu ma gandeam la object pool, ca un internal database, incarcat la inceputul jocului. Cand se selecteaza un personaj, acesta isi va alege datele de care are nevoie din acel object pool
poolul poate sa fie pentru obiectele logice de tip proiectil
Inseamna ca ce fac eu nu se numeste object pool..si doar memory pre-allocation? sau asa ceva? probabil incurc terminologiile
eventual sa poti sa ai editor de stari pe sistemul asta
Partea asta nu am inteles-o. Adica sa definesc pentru fiecare personaj in parte din ce stare in ce stare trece si functia de tranzitie?
In concluzie, merci mult de sfaturi! Acum ma pun sa implementez cum se comporta personajul si sa vad cum iese. Problema cea mai mare, este cum sa implementez constraints pentru anumite personaje. La prima vedere, clasa Exceptions pare sa isi faca treaba...dar si aici prevad un if-else-if-else kilometric. Voi reveni cu detalii si cum am implementat in final
