Zdravim,
mam taky problem s mapou a potrebujem na to nejaky dobry algoritmus.
Ide o to ze najprv si vytvorim pole o velkosti mapy(konkretne 1520x760) a kedze sa jedna o jednoduchu mapu kazdemu policku davam nahodnu hodnotu 1 alebo 0 a podla toho bude mat farbu.Tento proces trva asi 5 sek to sice neni najlepsie ale da sa to vydrzat. Horsie to je uz z vykreslovanim mapy. Vykreslujem len malu cast mapy(71x76) a to tak ze kazde policko ak ma hod. 1 tak daj taku farbu ak 0 tak taku farbu. Ked sa vsak chcem pohybovat po mape tento sposob je strasne pomaly a totalne neprakticky.
Vedeli by ste mi niekto navrchnút lepsie riesenie? Vdaka.
vytvorenie a vykreslenie 2d mapy
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: vytvorenie a vykreslenie 2d mapy
no tak hlavne by si tam mal ukladať true/false a nie 1/0. Takto zaberáš v pamäti (pre 32 bitový integer) 4.4 MB!!! namiesto 141 kB. Hneď ti to bude lepšie pracovať.
No a k tej optimalizácii: skús sa zamyslieť, či tú mapu musíš mať vopred vytvorenú keď má každé políčko aj tak náhodnú hodnotu. Možno by stačilo vytvoriť viditeľnú oblasť, a okolie generovať až pri pohybe mapou. Tebe ale najväčšie problémy robí samotné prekreslovanie mapy. A tu by bolo dobré vedieť v čom to programuješ a aké metody používaš na vykreslovanie
No a k tej optimalizácii: skús sa zamyslieť, či tú mapu musíš mať vopred vytvorenú keď má každé políčko aj tak náhodnú hodnotu. Možno by stačilo vytvoriť viditeľnú oblasť, a okolie generovať až pri pohybe mapou. Tebe ale najväčšie problémy robí samotné prekreslovanie mapy. A tu by bolo dobré vedieť v čom to programuješ a aké metody používaš na vykreslovanie
Re: vytvorenie a vykreslenie 2d mapy
A pri pohybe, akym sposobom upravujes scenu? Skus napriklad prekreslovat len tie policka, ktorych stav sa po pohybe naozaj zmenil. Taktiez pokial sa tu ideme bit o miesto v pamati, tak mozes normalizovat rozmery mapy na mocninu 2ky a pouzit jednotlive bity v samotnom integer-y ako tvoje hodnoty true/false. (Mapa 2048x2048 by v tomto pripade zaberala v pamati ubohych 65 kB)
Re: vytvorenie a vykreslenie 2d mapy
mohol by si to trocha vysvetlit? vypada to zaujimavo ale mne matika moc nejdemetthal napísal:A pri pohybe, akym sposobom upravujes scenu? Skus napriklad prekreslovat len tie policka, ktorych stav sa po pohybe naozaj zmenil. Taktiez pokial sa tu ideme bit o miesto v pamati, tak mozes normalizovat rozmery mapy na mocninu 2ky a pouzit jednotlive bity v samotnom integer-y ako tvoje hodnoty true/false. (Mapa 2048x2048 by v tomto pripade zaberala v pamati ubohych 65 kB)
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: vytvorenie a vykreslenie 2d mapy
napíš už konečne v čom to programuješ. Ak to nie je nič nízkoúrovňové kde môžeš meniť bity ako sa ti zachce, tak ti to zbytočne bude vysvetlovať
Re: vytvorenie a vykreslenie 2d mapy
ved mam to rozrobene v dvoch jazykoch: v C to sa v celku da ale ja to potrebujem v prog. jazyku Lua a tu ziadne pointre a nic podobne neni takze asi tak...
Re: vytvorenie a vykreslenie 2d mapy
Príde mi dosť divné, používať také čudne veľké pole, ale keďže netušíme, o čo sa snažíš, budiš.
V tom prípade s ním ale musíš zaobchádzať veľmi odporne, ak to nazývaš pomalé. Vykresľuješ na obrazovku 70x70 "bodov", to je hneď. Takže kde je tu pes zakopaný?
Stačí ti predsa mapovať si vykreslovanú časť na menšie "virtuálne" pole (tj. ukladáš si indexy ľavého horného bodu vykresľovanej časti, napr.) a to tvoje vykresľovanie pustiť len v tomto menšom poli (do tých 70x70).
Tam nemá byť čo pomalé. Odporné určite áno, ale pomalé nie.
A samozrejme, prerob si to 1/0 na jeden byte.
V tom prípade s ním ale musíš zaobchádzať veľmi odporne, ak to nazývaš pomalé. Vykresľuješ na obrazovku 70x70 "bodov", to je hneď. Takže kde je tu pes zakopaný?
Stačí ti predsa mapovať si vykreslovanú časť na menšie "virtuálne" pole (tj. ukladáš si indexy ľavého horného bodu vykresľovanej časti, napr.) a to tvoje vykresľovanie pustiť len v tomto menšom poli (do tých 70x70).
Tam nemá byť čo pomalé. Odporné určite áno, ale pomalé nie.
A samozrejme, prerob si to 1/0 na jeden byte.
-
harrison314
Hardcore addict
- Príspevky: 8223
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: vytvorenie a vykreslenie 2d mapy
V C si sprav DLL, ktoru nacitas v jazyku Lua, to sa daqwertasss napísal:ved mam to rozrobene v dvoch jazykoch: v C to sa v celku da ale ja to potrebujem v prog. jazyku Lua a tu ziadne pointre a nic podobne neni takze asi tak...
http://www.lua.org/manual/5.1/manual.ht ... ge.loadlib
To vykreslovanie presun do C a mas po probleme, aj ked si myslim, ze keby to bolo normalne nakodene 71x76 by mala Lua zvladat v realtime, nato je dost richla, pes moze byt zakopany aj niekde inde.