Utilizator:
Parola:
Am uitat parola... | Cont nou!


Articole Resurse Echipe Competiții Proiecte Forum DevBlogs Locuri de muncă GDROMag Issue#1 GDROCon 2007

 
Forum » Proiecte » Anunţuri proiecte » Street fighter remake




Pagina 2 din 2 [ 1 | 2 ]

Mesaj Info autor
    Postat la 16 Mar 2011 14:28:42    Subiect: misto
raduangelescu info:

raduangelescu:

foarte frumos pana acum.. .Ca sfat ar fi sa grupezi obiectele mici si repetitive intr-o singura poza de exemplu barrel si lamp (cum fac ei in tutorialul cu particule).. cat mai putine imagini gigantice. La genul asta de jocuri poti sa scapi cu tileuri, pentru harta, si obiecte pentru decor sa nu para repetitiv.


Afla mai multe pe: http://www.rageofwar.net


Status:
Înregistrat pe:
30 Sep 2006 09:43:25
Vârsta: ? ani
Mesaje: 32
Locatie: Bucharest

Evolution Vault (Iasi)
 
    Postat la 17 Mar 2011 08:15:45    Subiect: < fara subiect >
FloreaStefan info:

FloreaStefan:

Salut radu

Merci de sfat! La asta m-am gandit si eu, dar inca nu am ajuns sa implementez. Voi face un resource manager, care se va ocupa exclusiv de resurce. Probabil voi pre aloca resurse, ca un fel de object pool. Cat despre imagini, da, astea mici le voi grupa intr-o textura mai mare, de unde resource managerul isi va lua ce doreste.

Inca nu am ajuns sa implementez partea asta, deocamdata ma zbat cu animatiile si tranzitia dintre stari. Sper ca saptamana asta sa termin partea de animatii si stari. Ideea e ca trebuie sa fie cat mai general sistemul ca sa il pot aplica pe orice personaj din joc.

Intrebarea mea este: voi cum ati implementa interactiunea cu jucatorul? M-am gandit ca cel mai eficient si curat, ar fi sa fac prin stari, un FSM. Am o clasa Action si din ea voi deriva fiecare actiune posibila: move, jump, block, perfom magic, kick si punch. Si astea se vor defini odata, in ele se vor incarca resursele necesare pentru fiecare jucator in parte(cu un loader). Si atunci de exemplu, cand apas HighPunch, se duce in clasa Punch-->Action(derivata din action) si in functie de personaj imi incarca animatia necesara si testeaza coliziunea, deplaseaza personajul daca e nevoie, etc.


Status:
Înregistrat pe:
18 Sep 2010 14:38:57
Vârsta: 27 ani
Mesaje: 20
Locatie: Timisoara
Programator

 
    Postat la 17 Mar 2011 10:48:27    Subiect: My two cents
raduangelescu info:

raduangelescu:

Daca faci asa in final o sa ai o tona de clase care au o singura functie importanta. Mi se pare inutil sa implementezi pentru fiecare stare o clasa. State machineul e doar un switch intr-un while (in cazul tau whileul de joc).. am mai vazut undeva abordarea asta.. nu mi s-a parut desteapta (cred ca intr-un engine de Ai open source...). Spre exemplu cat cod ia efectiv sa scrii starea de punch?.. playeaza o animatie si verifica ceva, presupun, eventual lanseaza event de damage. Tendinta asta sa faci o clasa pentru orice trebuie evitata. Ca sistem as sugera sa separi pe cat posibil starile de animatii astfel incat sa nu ai cod cu nume de animatii de genul PlayAnimation("Attack_heavy_of_Bryan") ci EnterState(ATACK_HEAVY) (starile si relatiile dintre acestea sa fie definite la nivel de date astfel incat sa rezulte cat mai putin cod si cat mai multa flexibilitate, eventual sa poti sa ai editor de stari pe sistemul asta).
Later Edit:

P.S : 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. Nu e nevoie sa ai cate un sprite pentru fiecare obiect poate sa fie acelasi sprite desenat inca odata la alta pozitie
P.P.S: poolul poate sa fie pentru obiectele logice de tip proiectil care teoretic altfel s-ar aloca real-time si ar fragmenta memoria sau ar incetini jocul... dar momentan nu imi dau seama in genul asta de joc la ce ar folosi...

Ultima editare efectuată de raduangelescu pe 17 Mar 2011 11:00:37; 1 editări în total


Afla mai multe pe: http://www.rageofwar.net


Status:
Înregistrat pe:
30 Sep 2006 09:43:25
Vârsta: ? ani
Mesaje: 32
Locatie: Bucharest

Evolution Vault (Iasi)
 
    Postat la 17 Mar 2011 11:11:34    Subiect: < fara subiect >
meeshoo info:

meeshoo:

Vezi ca HGE are propriul resource manager si functioneaza foarte bine, nu iti bate capul sa faci altul nou. Stie inclusiv sa faca ce zice radu, 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 textura, are si preloading sau loading on demand si o gramada de minuni.



Status:
Înregistrat pe:
15 May 2007 10:52:43
Vârsta: 29 ani
Mesaje: 390
Locatie: Cluj-Napoca
Programator
Jungle Troll Entertainment
 
    Postat la 17 Mar 2011 12:21:58    Subiect: < fara subiect >
FloreaStefan info:

FloreaStefan:

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 Confused

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 Smile


Status:
Înregistrat pe:
18 Sep 2010 14:38:57
Vârsta: 27 ani
Mesaje: 20
Locatie: Timisoara
Programator

 
    Postat la 17 Mar 2011 13:40:15    Subiect: < fara subiect >
raduangelescu info:

raduangelescu:

Poolul e un vector de un anumit tip de obiecte. Cand ai nevoie de un obiect nou te duci in vectorul asta si iti iei de acolo , daca sunt toate ocupate, redimensionezi vectorul (asta e preferabil sa se intample foarte rar spre deloc). Poolul se foloseste in cazuri in care ai obiecte mici si multe de acelas tip.
Spre exemplu nu are rost sa faci un pool de caractere cand tu o sa ai doar 1 caracter de 1 tip.. daca aveai 128 de caractere de 1 tip care se aloca si se sterg aleator in timpul jocului atunci iti mai puneai problema.
Sistemul de animatii din hge mi se pare insuficient si cred ca o sa ajungi la aceeasi concluzie.. fiindca intr-un fisier o sa ai mai multe animatii pentru acelasi caracter si iti trebuie un mod sa le separi intre ele plus viteza la care trebuie rulate, nume, etc.

Nu trebuie sa faci un switch gigant daca iti pastrezi datele de state machine in fisiere de data si nu in cod (legaturile intre stari + functia indeplinita).. o sa iti fie mult mai usor sa iti setezi comportamentele din fisiere text decat sa recompilezi la fiecare chestie mica, mai ales ca fiecare personaj o sa fie alt state machine.


Afla mai multe pe: http://www.rageofwar.net


Status:
Înregistrat pe:
30 Sep 2006 09:43:25
Vârsta: ? ani
Mesaje: 32
Locatie: Bucharest

Evolution Vault (Iasi)
 
    Postat la 17 Mar 2011 22:25:33    Subiect: < fara subiect >
FloreaStefan info:

FloreaStefan:

Am reusit sa implementez animation and action pentru un personaj. In final am ales o varianta hibrida, intre ce mi-a zis radu si cum am gandit. Am ajuns la concluzia ca asa e cel mai eficient. Am folosit clase pentru starile principale, si switch in interiorul fiecarei stari pentru a determina actiunea necesara.

Am reusit sa il fac doar pe ken, din simplul motiv ca pentru a face o animatie, trebuie destul de mult timp; aici ma refer la aranjarea pe frame-uri, ptc hgeAnimation are un sistem ciudatr, in care da, iti proceseaza o animatie, DAR trebuie ca fiecare frame sa fie egal in parte, ca sa nu apara decalaje in pixeli..si uite asa m-am jucat cateva ore ca sa aranjez fiecare animatie in parte.

O sa observarti ca deocamdata nu reactioneaza personajul(nu se misca) ci doar incarca animatia necesara pentru miscarea data. Personajul se comporta ca in street fighter. Nu poti executa o miscare pana cand nu se termina miscarea curenta. Exceptia fiind la deplasare si starea de idle, acolo se poate intrerupe animatia cand nu mai apasam stanga dreapta; nu e necesar ca animatia sa se termine pentru a putea fi intrerupta. Am ales varianta asta, pentru ca asa este implementat si in street fighter.

Butoanele sunt:

a,s,d - kick low/medium/high
q,w,e - punch low/medium/high
stanga,dreapta - deplasarea personajului

Inca nu am apucat sa adaug animatiile pentru magii sau alte animatii pentru sarit, blocaj sau crouch. Trebuie sa integrez 'input system' si teoretic ar trebui sa mearga fara probleme.


EDIT: Am refacut animatiile si am setat mai bine hot spotul

http://www.box.net/shared/n6vd4hk9ov

Ultima editare efectuată de FloreaStefan pe 18 Mar 2011 09:11:53; 1 editări în total


Status:
Înregistrat pe:
18 Sep 2010 14:38:57
Vârsta: 27 ani
Mesaje: 20
Locatie: Timisoara
Programator

 
    Postat la 18 Mar 2011 08:40:48    Subiect: < fara subiect >
Zex info:

Zex:

Misto initiativa, mai ai de lucru la intercalarea frame-urilor totusi. Nu ai nimerit centrul ( sau "hot spot"-ul, cum vrei sa-l numesti) animatiilor si personajul salta cu vreo doi/trei pixeli cand dai un pumn din fundul curtii, ca exemplu. Ken asta' e din Third Strike daca nu ma insel?




p.s. tare ce faci acolo cu jos8cal Dark, am lolat, iar daca intelegeam ceva programare la modul serios lolam mai mult cu siguranta; articolul cu web 2.0. si interviul "fabricat" mi-au placut in mod special. Rock on.


Status:
Înregistrat pe:
28 Sep 2007 20:47:12
Vârsta: ? ani
Mesaje: 52
Locatie:


 
    Postat la 18 Mar 2011 09:05:14    Subiect: < fara subiect >
FloreaStefan info:

FloreaStefan:

Stiu ca e decalat, azi dimineata am remediat situatia cu hot-spotul. E putin mai complicat cu acel hot spot din cauza modului de functionare a sistemului de animatii hgeAnimation.

Problema cea mare e ca dupa ce am lucrat ieri si azi cateva ore abia am reusit sa implementez cateva animatii corecte. In ritmul asta imi va lua destul de mult timp sa fac toate personajele.

Asa ca probabil abordarea cea mai buna, ar fi sa fac 2 personaje pentru joc la inceput. Ca daca am 2 si vad ca functioneaza bine incarcarea de resurse si actiunea/reactiunea jucatorului in functie de starile prin care trece, restul devine usor, dar costisitor din punct de vedere al timpului.

Am reuploadat aplicatia azi dimineataVery Happy sper ca e mai bine. Urmatorul pas e sa implementez magiile si cum se trece dintr-o stare in alta.

Ultima editare efectuată de FloreaStefan pe 18 Mar 2011 09:13:01; 1 editări în total


Status:
Înregistrat pe:
18 Sep 2010 14:38:57
Vârsta: 27 ani
Mesaje: 20
Locatie: Timisoara
Programator

 

Pagina 2 din 2 [ 1 | 2 ]


Server time: 07:22:35 22.05.2012



[ Termeni si conditii | Contact | F.A.Q. | Funny Pictures ]

© 2006 - 2012 Copyright 7thFACTOR Entertainment - All rights reserved