Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - Noobek

Strony: [1] 2 3 4 5 ... 8
1
Szkółka / Odp: Assets manager[ general question ] c++
« dnia: Maj 22, 2013, 18:01:56 »
Cytuj
Nie oznacza, ale z tego co się zwykle obserwuje w amatorskim gamedevie, ci co piszą "brzydko" piszą gry, a ci co "ładnie" nie wychodzą poza etap loggera i asset managera w silniku.

Aż strach się uczyć wzorców projektowych :S A tak fajnie się czytało...

2
Szkółka / Odp: Assets manager[ general question ] c++
« dnia: Maj 22, 2013, 00:17:11 »
Cytuj
asocjacyjnej*
Prawie jak prezydent^^

Cytuj
Znaczy się, zasoby trzymasz załadowane przez cały czas od uruchomienia gry?
Tak.
Cytuj
Nie bardzo widzę tu miejsce na kolejkę. Po prostu ładuj wszystko jak leci, natychmiast jak jest potrzebne.
Chodzi mi o to, żeby gra była bardziej responsywna. Czyli zamiast widoku pulpitu jak używam:
void init(){ AssetsManager::Load( "foo.jpg" ); .... }to:
void init(){ AssetsManager::Add( "foo.jpg" );...}To sobie mogę splasza walnąć(bez kolejki też mogę) albo nawet loading bar, licząc ile mam już z kolejki załadowane. Chodzi o to, żeby to było mniej zależne co zrobie po koleji. Do tego myślałem, żeby tworzyć kolejkę używając new i odrazu po  wywołaniu LoadAll()  usunać dla oszczędności pamięci.

3
Szkółka / Assets manager[ general question ] c++
« dnia: Maj 21, 2013, 23:41:48 »
Jak najlepiej zaprojektować assets managera?

Ma być statyczny czyli ładuje wszystko przed rozpoczeciem. Czy takie coś ze po prostu robie kolejke, miele wszystko wrzucam do tablicy associacyjnej i potem przy tworzeniu obiektow sobie zapodaje wskaźnik do tablicy associacyjnej to jest gites pomysl? Tyle, że cały czas pamieć bedzie zajmowana, ale zakladajac, że nie jest tego duzo, to jest to najlepszy pomysl? No i czy to musi być singleton czy przejdzie zwykla statyczna klasa?

Jak ktoś ma jakieś rady, albo linki to chętnie poczytałbym coś więcej na ten temat. Dzięki!

4
Można by spróbować i tą metoda. U mnie niestety nie ma żadnej różnicy w fps'ach pomiędzy wyświelaniem klocków oddzielnie, a całego chunka naraz. Może dlatego, że narazie generator mapy jest kijowy i oszczędzam tylko 1400 scian( z 8400 na 7000) no, ale z drugiej strony tylko 1 draw call(widocznie są tanie czasowo), ale za to odpada mi pre frustum culling dla każdego klocka. W każdym razie nie ma żadnej różnicy w fpsach. Jeszcze dla testu spróbuje robić dla całego chunka dynamicznie.

5
Szkółka / Odp: Błąd wyświetlania index buffera
« dnia: Maj 18, 2013, 16:31:33 »
Wiem, dobrze było wszystko oprócz tego:
_iBuffer->Lock(0, 0, (void**)&iVoid, 0);
memcpy(iVoid, indices, sizeof(indices));
_iBuffer->Unlock();

sizeof(indices)
int * indices = malloc( _wallsAmount * 6 * sizeof(int) ); :)

Skopiowałem to z tutka, dlatego się nie przyglądałem dokładniej na początku, ale jak przeczesałem i przeformatowałem cały kod i nigdzie nie mogłem znaleźć błędu to sobie uświadomiłem, że ja mam dynamiczną tablice, czyli indices to wskaźnik o rozmiarze 4 zamiast kilkunastu tysięcy :) Nienawidzę się...

6
Szkółka / Błąd wyświetlania index buffera [SOLVED]
« dnia: Maj 18, 2013, 10:21:25 »
Witam,
Coś mi się nie chce wyświetlać ścian, jak stworzyłem vertex i index buffer dla całego chunka.
Naprawe kombinowałem sporo i nie wiem co sprawia, że nic nie jest wyświetlane. Transformacje są napewno dobrze. Ani takie coś mi nie działa:
Jak mam ścianę z wierzchołkami:
1----2
|    |
3----4
to wrzucam 1, 2,3,4, a potem mam taki kod do tworzenia indexów:
short * indices = (short *)malloc( _wallsAmount * 6 * sizeof(short) );
//needs improvement
int index = 0;
int _123456 = 1;
for(int i = 0; i < _wallsAmount * 6; ++i){

indices[i] = index;

if( _123456 < 3 )++index;
else if( _123456 == 4) --index;
else if( _123456 == 5) index += 2;
else if( _123456 == 6) {_123456 = 0; ++index; }
++_123456;

}//huh?

// create an index buffer interface called i_buffer
d3ddev->CreateIndexBuffer(_wallsAmount * 6 * sizeof(short),
  0,
  D3DFMT_INDEX16,
  D3DPOOL_MANAGED,
  &_iBuffer,
  NULL);

// lock i_buffer and load the indices into it
_iBuffer->Lock(0, 0, (void**)&pVoid, 0);
memcpy(pVoid, indices, sizeof(indices));
_iBuffer->Unlock();

Czyli dla 1,2,3,4 utworzy 1,2,3 i 3,2,4. Ale mi się nie chce wyświetlać :( WHY?!
d3ddev->DrawPrimitive(D3DPT_TRIANGLELIST, 0, _wallsAmount * 2);  Mi wyświetla. Krzywo, bo bierze po koleji, ale wyświetla. Za to moje:
d3ddev->SetIndices(_iBuffer);
d3ddev->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, _wallsAmount * 4 , 0, _wallsAmount * 2);
nie chce działać. Ktoś wie dlaczego? A najgorsze, że żadnego errora nie wywala. HRESULT jest 0.

Ani takie coś:
Jak mam ścianę z wierzchołkami:
1----2
|    |
3----4
to wrzucam 1, 2,3,4,2,4 do vertex buffera, a potem mam taki kod do tworzenia indexów:
int * indices = (int *)malloc( _wallsAmount * 6 * sizeof(int) );

for(int i = 0; i < _wallsAmount * 6; ++i){
indices[i] = i;
}

// create an index buffer interface called i_buffer
d3ddev->CreateIndexBuffer(_wallsAmount * 6 * sizeof(int),
  0,
  D3DFMT_INDEX32,
  D3DPOOL_MANAGED,
  &_iBuffer,
  NULL);
I rysowanie:
d3ddev->SetIndices(_iBuffer);
d3ddev->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, _wallsAmount * 6 , 0, _wallsAmount * 2);
No to już jest przegięcie...
Wiecie dlaczego tak mi się dzieje?

Jedyne co mi się teraz wyświetla to D3DPT_POINTLIST, a jedyny warning jaki dostaje to:
D3D9 Helper: Warning: Default value for D3DRS_POINTSIZE_MAX is 2.19902e+012f, not 1.44115e+017f.  This is ok.

7
Ok dzięki za info o index bufferze . Nie wiedziałem tego.


8
Gry / Odp: Klikecze i nie kliacze, chodzi o efekty.
« dnia: Maj 17, 2013, 23:57:02 »
Szkoda, ze na iOs'a nie maja portu. Cos czuje, ze moglo by sie niezle sprzedawac. Bo dobre wykonanie, prosta mechanika i grywalnosc w wiekszosci gier.

9
Wyglada fajnie, na chromie spoko dziala. Ale pasowaloby wiecej itemow dodac.

10
Silniki / Odp: Silnik gry MMO (Przegladarkowe)
« dnia: Maj 17, 2013, 23:14:03 »
Ja widzę kilka opcji. Serwer w php i client w javascript i ajexowe calle( dla mniej dynamicznych gier), Dla średnio dynamicznej gry client javascript oraz elementy html + ( serwer w php + ajax  lub server node.js i socket.io ) dla najbardziej dynamicznych gier canvas + javascript + node.js + soket.io. Dla 3d webgl + javascript + node.js + soket.io. Silników nie znam, ale da takiej gry jak Margonem to bym wolał samemu sobie napisać silnik niż przegrzebywać się przez kody źródłowe.

11
Szkółka / Marching cubes
« dnia: Maj 17, 2013, 23:04:50 »
Znacie jakaś fajną stronkę z tutorialem na temat marching cubes? Szukałem trochę, coś jest, ale może ktoś z was poleci coś z czego np. sam korzystał? Było by miło.

12
Stronki znam. Właśnie na tej jest napisane, że koleś robi jeden vertex buffer dla całego chunka.

Nie rozumiem jednak o co tobie chodzi z tym usuwaniem ścian po utworzeniu vertex buffera. Ja to sobie wyobrażam tak, że jak dodaje nowy klocek albo usuwam to mam funkcje dodajFlagiSadiadom( x, y ,z) która w polu Cube o nazwie _flagiKolizja ustawia flagi bitowe na podstawie enuma. No i wlasnie przegladajac te flagi tworzylbym vertex buffer dla całego chunka. No i tyle, że jeszcze bym musiał go wysłać do karty no i translacje zrobić, ale po co tworzyć index buffer jak sugerujesz? ( Z tego co rozumiem index buffer służy do "wybranie sobie indeksów z vertex buffera", ale ja tutaj będę chciał wyświetlać całość )

Ale o tym, żeby dla każdego chunka tworzyć osobny vertex buffer i zmieniać go tylko gdy coś jest usuwane nie pomyślałem. Dzięki.
Tylko czy to mi za szybko nie zeżre pamięci na karcie grafiki? Chyba, żeby zwalniać vertex buffer'y tych chunków które odpadają z listy renderowania. To by miało sens. Nie były by liczone co klatkę, tylko jak ktoś przejdzie na kolejnego chunka. Do tego można by zapisywać pozycję poprzedniego chunka i jak się zmienia to doliczać tylko te nowe przed nami. Jeszcze jakieś pomysły?

13
Design / Odp: Co was interesuje w platformówce 2D.
« dnia: Maj 17, 2013, 22:39:02 »
Można też postawić na dynamizm, ale to wtedy bardziej zręcznościówka będzie.

14
Witam!

Uczę się directx'a i przy okazji robię coś ala minecraft i zastanawiam się jak najefektywniej wyświetlać mapę.

Narazie mam taką optymalizacje, że wykonuje pre frustum culling oraz nie rozważam bloków które są otoczone z wszystkich stron.
Wyświetlanie mapy jest takie, że mam jeden vertex buffer ( wierzcholki dla każdej sciany ) oraz 1 Index buffer. No i zwyczajnie robię transformacje sześcianu do jego pozycji w świece i wyświetlam.

Ale teraz chciałbym zrobić jeszcze culling dla ścian. Czyli jak np. dwa sześciany sąsiadują ze sobą to w ogóle nie wyświetlam wspólnej ściany. I teraz zastanawiam się jak to zrobić najefektywniej.

Do głowy przychodzi mi 5 pomysłów:
  • Zostawienie tak jak jest :)
  • Tworzenie i pushowanie dla każdej kostki nowego index buffer ( + czas na stworzenie i wysłanie,  - czas na przerabianie niewidocznych ścian)
  • Stworzenie 6 index buffer'ów dla każdej ściany. ( + do 5 dodatkowych wywołań wyświetlania, -  - czas na przerabianie niewidocznych ścian
  • Stworzenie 2^6 - 1  index buffer'ów dla każdej permutacji widocznych ścian.  (+ czas na odnalezienie odpowiedniej permutacji( 64 if'y ),  - czas na przerabianie niewidocznych ścian)
  • Tworzenie i pushowanie nowego vertex buffera dla każdego chunka mapy. (+ czas stworzenie i wysłanie, - czas na parę tysięcy draw calli dla każdego sześcianu z osobna, - czas na przerabianie niewidocznych ścian)

Która z tych opcji da największy przyrost fps'ów. A może jeszcze jakaś inna?

15
Szkółka / Odp: Callback function
« dnia: Styczeń 16, 2013, 17:40:23 »
No tak myślałem, czyli to bazuje praktycznie na tym samym co podałem 3 posty wyżej.
Z tym, że dzięki temu można zrobić np. listę callbacków czy coś, ale to w sumie tak samo mógłbym zrobić i moim sposobem tylko zamiast przekazywać wskaźnik na metodę i na instancje klasy, mógłbym jakoś się dobrać do samej metody mając wskaźnik na instancję i metodę. I zwracać już później wskaźnik na tą konkretną metodę w tej instancji. Czyli pewnie tak działa ten cały bind. Cudów nie ma. Aż spróbuję/sprawdzę :)

Strony: [1] 2 3 4 5 ... 8