dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

kā uzzināt, kas ielādējas lēni

 
dev.gamez.lv Forum Index -> Programmēšana
View previous topic :: View next topic  
Author Message
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Aug 26, 2007 5:09 pm    Post subject: kā uzzināt, kas ielādējas lēni

manā spēlē ir viena neliela problēma ar līmeņu ielādi - tā ir pārāk lēna! kā atrast vainīgo? btw, es izmantoju gamemakeri.. tas sarežģī situāciju...
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Aug 26, 2007 5:25 pm    Post subject:

Nezinu neko par gamemakeri, bet nu es savā kodā mērīju laiku atsevišķām daļām un tad izvadīju to. Pēc tā labi varēja redzēt, kas vainīgs. Apmēram šādi:
Code:
float t1 = get_time();
load_font();
float t2 = get_time();
load_models();
float t3 = get_time();
load_textures();
float t4 = get_time();

std::cout << "Font loading   = " << (t2-t1) << std::endl
          << "Model loading  = " << (t3-t2) << std::endl
          << "Texture loading = " << (t4-t3) << std::endl;


Ja grib nopietnāk mērīt laiku, tad jāņem palīgā kāds profileris. Tas precīzi parādīts, cik katra funkcija tev aizņem laiku, un kuras citas funkcijas tā ietekmē/ietekmējas visvairāk. No AMD var dabū tādu CodeAnalyst - par brīvu, bet diemžēl iet tikai uz AMD procesoriem. No Intel var dabūt VTunes - par maksu, ir demo versija uz 30 dienām, strādā tikai uz Intel procesoriem. Vēl ir visādi citi profileri. Cik zinu Visual Studio Team Edition nāk tāds līdzi. Ja kodu kompilē ar GCC, tad tam ir iebūvēts profileris.

Vēl var skatīties uz to, cik daudz tu kodā dari pie līmeņa ielādes. Ja piemēram tu ielādē jpg vai png tekstūras, tas būs lēni. Vajag tekstūras ielādēt no tāda formāta, kuru var pa tiešo sūtīt uz videokarti. Tam labs ir DDS attēla formāts. Vai savukārt ielādējot ģeometriju, nevajag nekādas sarežģītas darbības veikt ar virsotņu/indeks bufera veidošanu/pārkārtošanu. Tos vajag ielasīt kā vienu lielu masīvu, kuru uzreiz var lādēt uz videoatmiņu. T.i. vajag visus savas spēles datus ielādēt tieši tādā formātā, kā izmantojamais API/hardware tos sagaida, nevis preprocesēt tos pie ielādes. Visu datu failu apstrādi vajag veikt developmenta laikā, un gala lietotājam tikai dot gatavus, pārkonvertētus failus. Par šo gūglē var palasīties izmantojot keywordus "game asset pipeline" vai "game content pipeline".
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Aug 26, 2007 5:40 pm    Post subject:

paskat, iznāk, ka tu dari tieši kā es! es uzrakstīju šo postu, apdomājos, un arī ienāca prātā doma par laiku, un redz, kļūda bija atrasta, un tikai pēctam atnācu paskatīties, kas te iepostēts! bet nu man cita problēma: vajag aizpildīt grid'u..
Code:

bid = argument0;
width = argument1;
height = argument2;
cwid = argument3;
chei = argument4;
for(i=0;i<width;i+=1){
    for(j=0;j<height;j+=1){
        d3d_bbox_init_collisions(bid,i*cwid,j*chei,8,0,0,0);
        if d3d_bbox_inside(bid){astar_setobstacle(x,y);}
    }
}

tas gan ir gamemakera skripts, BET viss ir ļoti līdzīgs cpp'am, tikai ar brīvāku sintaksi!
bid - bounding box id
cwid/chei - cell width/height
d3d_bbox_init_collisions(...) - testē sadursmes un ievada informāciju masīvos
d3d_bbox_inside - testē vienu no masīviem
un astar_setobstacle(..) - uzliek šķērsli AI (externāla funkcija)
kas varētu būt pats lēnākais?
1. izmantot dll'u
2. rakstīt informāciju 4 masīvos 12 reizes testējot citus 6 masīvus
3. viss kopā dēļ "for" un width = 200/height = 200

btw - profileri man noderētu dabūt, un par laimi man ir AMD procis!
kādreiz, kad būšu pabeidzis šo spēli un vienu cpp 2d spēli, veidošu 3d dzini, un tad varēšu uzgooglēt par to, ko un kā padot kur apstrādei un atmiņai!
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Aug 26, 2007 5:47 pm    Post subject:

snake5 wrote:
paskat, iznāk, ka tu dari tieši kā es! es uzrakstīju šo postu, apdomājos, un arī ienāca prātā doma par laiku, un redz, kļūda bija atrasta, un tikai pēctam atnācu paskatīties, kas te iepostēts!

Tev neliekas, ka tas notiek pārāk bieži ar tevi? Moš nākamreiz pirms kautko postē, pasēdi pusstundiņu padomā!

Par tavu koda piemēru - nav ne jausmas, kas būs ātrāks. Izmēri laiku saviem trim variantiem tad arī redzēsi, kas būs ātrāks. Tējas biezumos zīlēt es nemāku.
Back to top
View user's profile Send e-mail
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Aug 26, 2007 5:52 pm    Post subject:

bet kas c++'ā būtu ātrāks? dll izmantošana vai 20 masīvu lietošana?
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Aug 26, 2007 5:59 pm    Post subject:

Kā gan kādam citam, izņemot tevi pašu, to zināt?
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Aug 26, 2007 6:26 pm    Post subject:

Es saprotu, ka tas ir baigais off-topiks, bet snake5 - realitaate ir taada, ka ar gamemakeri NAV vieglaak un labaak uztaisiit speeli, nekaa iemaaciities lietot kaadu grafikas dzini. Jo aatraak tu no vinja atbriivosies, jo labaak. Es pats pirms gadiem saaku tiesi ar gamemaker, bet man kaut kaa aatri "pieleca" ka tas ir garaam xD - Nu un cik aatri var iet taads gamemakeris ja vins pats par sevi jau ir sarakstiits Delphi, kas nav tas aatraakais un produktiivaakais risinaajums Very Happy Tas, protams, neatrisina tavu probleemu, bet uzskati to par vielu paardomaam Wink
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Aug 26, 2007 7:03 pm    Post subject:

redzi, pēc šīs spēles es gamemakeri taisos pamest uz visiem laikiem! tas būs nākamgad, un par to esmu jau sen izdomājis! mani šādi rīkoties pārliecināja tas, ka es ar gamemakeri esmu pamatīgi apstājies! tur nav tā, ko man vajag! es zinu, ka viņš ir sarakstīts Delphi, zinu, ka izmanto tikai DirectX8, vispār daudz par viņu zinu! fileIO wrappings tur ir zem katras kritikas! tas vairāk paņem CPU nekā cietā darbību! tāpēc tam ir izveidoti gan skaņas dll, gan 3d grafikas dll, gan multiplayera neta dll, un vēl daudzkas cits! tas viss strādā ātrāk!
un vēl kas - es izdomāju, ka veidošu mazu failu sistēmu, kura nolasīs astar grid'a datus no cietā!
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
Display posts from previous:   
dev.gamez.lv Forum Index -> Programmēšana All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group