Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

mapa kafelkowa, ładowanie obiektów

Ostatnio zmodyfikowano 2017-12-21 11:20
Autor Wiadomość
aaadam
Temat założony przez niniejszego użytkownika
mapa kafelkowa, ładowanie obiektów
» 2017-05-11 09:56:38
Witam, mam mapę kafelkową dużą, mniej więcej 10 wysokość 1000 szerokość jeden element ma około 50px, na ekranie widać jedynkie kilkanaście kafelków wzdłuż i wszerz i zastanawiam się czy wczytywać wszystko na raz jedynie ograniczyć wyświetlanie i update do rozmiaru ekranu czy dynamicznie wszytywać kawałek mapy po kawałku z tymm, że jeżeli zdecyduję się wczytać wszystko na raz to w obiektach będę musiał dorobic stan idle bo obiekt ma ożywać w tedy gdy znajdzie się w zasięgu view. Wydaje mi się, że wczytywanie dyamiczne z pliku jest lepsze ponieważ nie zaśmiecam pamięci ale może nieco wpłynąć na działanie gry. Proszę o opinie.
P-160934
Saran
» 2017-05-11 18:07:24
Nie ma sensu bać się o pamięć i wczytywać z pliku przy tak małej mapie, przynajmniej póki rozmiar jednego twojego kafelka nie przekracza paruset kilobajtów.

Wystarczy, że ograniczysz wyświetlanie do kafelków które faktycznie widzisz.
P-160950
pekfos
» 2017-05-11 23:02:07
Nie żyjemy w czasach 640k ramu, a twoja mapa nie zajmuje pewnie więcej niż 40kB.
P-160959
aaadam
Temat założony przez niniejszego użytkownika
» 2017-05-12 09:21:58
dzięki to będę wczytywał raz na początku
P-160980
aaadam
Temat założony przez niniejszego użytkownika
» 2017-05-12 13:52:30
a co z kolizją itp, jak będę miał cała mapę wczytaną do macierzy to będę sprawdzał kolizje z każdym kaflem także z takim który jest bardzo dalego od mojego view, a to nie ma sensu.
P-160997
hit
» 2017-05-12 15:06:52
A po co sprawdzać kolizję z czymś oddalonym? Nie wiem czy dobrze zrozumiałem, ale chyba wystarczy jeśli będziesz na bieżąco sprawdzał kolizję z najbliższym otoczeniem.
P-161000
Saran
» 2017-05-12 15:32:57
Dokładnie, na przykład z sąsiednimi kaflami. Reszty raczej nie trzeba.
P-161001
aaadam
Temat założony przez niniejszego użytkownika
» 2017-12-21 10:22:29
to zastanawiam się nad 'dobrym' rozwiązaniem problemu :
mam vector<vector<tail>>   (moja mapa gry) i moja mapa ma powiedzmy wysokość 10 szerokość 1000

i teraz przykładowy przypadek cała ta macierz to kawałek mapy który się mieści w view:

[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][0][1][1][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][3][0][2][0][3][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]
[1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1][1]

0 - pusty kafel
1 - ground
2 - player
3 - enemy

i teraz pytanie :  mam sprawdzać kolizję z otoczeniem, tylko to i tak muszę wszystkie kafle sprawdzić, czy nie są blisko playera ... np

C/C++
for( int i = 0; i < vector.size(); i++ ) {
    for( int j = 0; j < vector[ i ].size(); j++ ) {
        if( vector[ i ][ j ].chceckIfTailIsCloseToPlayer )
             player.collision( vector[ i ][ j ] );
       
    }
}

analogicznie do vectora enemy muszę prześć przez cały wektor i sprawdzać czy są blisko player z enemy...
dodatkowe pytanie sprawdzenie czy tail lub enemy jest blisko playera to jest prosty if który sprowadza się do tak naprawdę do sprawdzenia kolizji typu kwadrat z kwadratem,
potem jeżeli taka kolizja zachodzi to można sprawdzać ewentualnie pixel perfect collision.
czy jest na to nakiś lepszy sposób ?? 
P-168039
« 1 » 2
  Strona 1 z 2 Następna strona