Kā samazināt lagus...
Nolēmu šo pamācību pārveidot, jo tā bija diezgan neprecīza un grūti saprotama.
Apskatīsim dažas pamatmetodes kā samazināt lagus paštaisītā kartē, dažas ļoti elementāras, dažas jau advancētākas.
? Ievads
? Galvenās lietas
? NULL textūra
? func_wall
? HINT textūra
Ievads
Izveidojam shorcut tādu pašu kā CS palaišanai spēlējot un pievienojam šādus papildus parametrus " -dev -console +r_speeds 1 +gl_wireframe 2 ", parastajā(multiplayer) režīmā šīs komandas nedarbosies!
Palaižam CS ar šiem parametriem un konsolē rakstam "map tavas_kartes_nosaukums" (nevis new game)
Ja viss ir pareizi tad redzam režģi (wireframe) un kosolē redzam r_speeds. Režģis nepieciešams, lai uzskatāmi redzētu kas tiek renderēts piemēram aiz sienas. Izslēdzot režģi (gl_wireframe 0) redzam pareizus r_speeds, jo režģis tos palielina.
Tur ir tādas lietas kā fps, wpoly, epoly un skaitlis ar mērvienību ms (milisekundes)
fps ir kadri sekundē visiem zināms - jo vairāk, jo labāk
wpoly ir virsmas(faces) tādas ir visai kartei - sienas objekti
epoly ir modeļu virsmas, tie ir citi spēlētāji, kartē esošie modeļi un pat ierocis ko redzi sev rokās.
wpoly ieteicams turēt zem 1000 un wpoly jābūt zemam sadursmju punktos kur būs daudz epoly.
Galvenās lietas
? Pats galvenais ? kartē nedrīkst būt LEAK (plašāk šeit nestāstīšu)
? Jāizvairās no lielu, atklātu laukumu taisīšanas jo hl dzinējs nav paredzēts tādus attēlot.
? Netaisam skybox, bet velkam sky brushus līdz pašām sienām
? Textūru scale nedrīkst likt lielāku kā 2, šo izceļu īpaši jo nez kapēc te ir daudzi dauņi kas tā dara, arī tad kad jau pateica ka nedrīkst
? Nelieto Hammer'am līdzi esošos kompilācijas rīkus, bet gan ZHLT
NULL textūraNull textūru izdomāja pāris gadus pēc HL1 iznākšanas, tās mērķis ir vienkāršs; samazināt wpoly skaitu, agrāk šādam nolūkam lietoja sky textūru, bet kaut arī tā samazināja wpoly skaitu tā tomēr samazināja fps. Textūras liekam tikai tām virsmām (face) kuras ir redzamas, un visām pārējām liekam texture NULL, kas atrodas zhlt.wad (nāk līdzi ZHLT).
Te ir uzskatāmi redzams kā darbojas NULL textūra ? solid objekts hammer editorā viens face ir ar parastu textūru, viss pārējais ar NULL
Bet kā rezams spēlē renderējas tikai parastā textūra ? NULL textūra nav, bet solid objekts vienalga ir un tam nevar iziet cauri.
func_wall
func_wall patiesībā ir diezgan neprecīzs apzīmējums, jo to noteikti nelieto sienām un citiem lieliem objektiem. Turpretī maziem sarežģītiem objektiem gan, piemēram lampām, kolonnām, galdiem, krēsliem etc.
func_wall nebloķē VIS un nesadala citus solidus
Visi sarežģīto formu solidi(piecstūri un vairāk-stūri), piemēram kolonnas ir jāliek 1 unit augstumā virs zemes, jo visi solidi kas pieskaras vai iet cauri otram solidam šo otro sadala daudzos poligonos, attiecīgi no tā cik tam 1 daudzstūrim stūri un ja dzinējam ir jāzīmē daudz šādi poligoni, tas nozīmē, ka samazināsies FPS
Ja nevar likt viena unit attālumā tad pārvēršam šo solid par func_wall. Tāpat visādus mazos solid brīnumus pārvēršam par func_wall(par parastu func_wall entity)
Vai arī izveidojam savienojumu - 1 unit biezu func_wall(tādas pašas formas kā kolonna) un ievietojam spraugā starp kolonnu un otru solidu. Ja kolonna būtu mazāka
HINT textūra
Visbeidzot nāk vislabākā lieta, kas man pašam diezgan labi patīk ? HINT textūra, ar šo verķi var ierobežot, lai nerenderē to ko players tāpat nevar redzēt, bet nu ar vārdiem nesaprast, tāpēc uzskatāms piemērs ? man ir divas telpas un kad players ir vienā un nevar redzēt otru tad nav vajadzības no tā, ka renderē to otro telpu
Attēlā redzams iezīmētais klucis ? mans hint brush, zaļais skatu punkts tad kad renderēs otru telpu, sarkanais tad kad nerenderēs. Ar hint brush esmu aizpildījis visu eju, nedrīkst pieļaut, ka hint brush būs mazāks, vai lielāks ? tam ir tieši ?jāieguļ" attiecīgajā vietā.
Sākumā attēls no sarkanā skatupunkta, bet karte ir nokompilēta bez hint brush ? developer modē redzam wireframe(režģskats) visiem poligoniem, arī tiem kas ir aiz sienas. Redzam, ka renderē arī šo blakus telpu.
Tālāk skats no tās pašas vietas, bet nu jau ar hint brush kartē ? redzam, ka blakus telpa netiek renderēta, bet tikai gaitenis līdz tai
Bet ja mēs skatamies no zaļā skatupunkta tad redzams, ka tiek renderēts (lai nebūtu tā, ka tukšums)
Hint brush var veidot tāpat kā jebkuru solid, tāpat var clipot, un visu ko citu.
? Citi mapperi iesaka hint brush taisīt mazāku. e.g. katrā gaiteņa galā. Un tikai vienu virsmu likt kā HINT, bet pārējās kā SKIP. Vēl ir variants taisīt "piramīdas" kuru pamats ir HINT bet pārējās 4 virsmas ir SKIP. Tādējādi iznāk 6 virsmu vietā 5
? Visi šie paņēmieni jāizmanto ar mēru un pēc pašu ieskatiem. Patestējam skatamies kā sanāk labāk un priecājamies. NB! Ja lietosi nepareizi lagos vēl vairāk!
? Skaitļos izsakot(ja kāds saprot, jo es to neskaidrošu) variantā bez visiem šiem labumiem manā mazajā test kartē wpoly ir virs 100, bet variantā ar HINT brush, cordon bounds un 1 unit gap ievērošanu bija wpoly nedaudz zem 100, kā arī otrajā variantā 2. telpa ar kolonnu nelagoja, bet pirmajā variantā bija fps kritums par ~20. Mana test karte ir pievienota lai var papētīt.
RMF fails
vincister ? 2007