Snake5's Blog

Kāda spēļu veidotāja blogs…

Monthly Archives: novembris 2010

…un vēl daži akmeņi

Ātri apdomāju to, ko janiksxxl teica savos komentāros šeit: https://snake5.wordpress.com/2010/11/28/akmeni/#comments .. un implementēju labāku “noise” funkciju pēc šī parauga: http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter26.html

Rezultātā sanāca kaut kas šāds:

Un te – ar nedaudz piemērotāku tekstūru:

Vēl ir viena maza problēma ar normālvektoru ģenerēšanu, bet ar to es drīz tikšu galā. Ir vēl arī problēma ar tekstūru koordinātu ģenerēšanu, bet to es pagaidām neaiztikšu, jo nav skaidrs, ko ar to labāk darīt tagad… problēma slēpjas tajā, ka akmens ir apaļš un nav iespējams apaļam un pilnīgi gludam objektam iedot 2D tekstūru tā, lai izskatās ideāli… viena iespēja būtu 3D tekstūras, otra – kaut kādi smagi unwrapping triki, nevienam no tiem laika īsti nav, jāatstāj diemžēl tā, kā ir…

…akmeņi

Vēl daži labojumi sakarā ar tekstūru koordinātu ģenerēšanu būs jāveic, bet citādi jau man patīk rezultāts… 😛

Procedurāli…

Strādāju pie procedurālu objektu ģenerēšanas… vajadzēja izdomāt sakarīgu sistēmas dizainu – tādu, kurš nejauktos ar esošo dzinēja darbību.

Kaut kas tāds ir radies, un pat uzkodēju 3D akmeņu ģeneratoru..

Ideja vienkārša – uztaisu objektu, ielādēju skriptu, savācu 3d modeli.

Pagaidām pati ģenerēšana ir izplānota tīri teorētiski, bet vajadzētu strādāt labi.

Plāns ir šāds:

-jānodefinē sākumā virsma – šeideri, tekstūras…

-var ieslēgt atkārtošanu ar “repeat” komandu un izslēgt to ar “repeat_end” sekojošajām funkcijām

-“mesh” ģenerē primitīvu objektu – sadalītu kasti / bumbu (sphere…) (ja ar tiem nepietiks, plānoju piemest geosphere ģenerēšanu)

-“noise” var kustināt random’ā vertex’us (gan pēc normālvektora gan kā spēks, kurš visos virzienos darbojas), ir falloff, ir iespēja pozīciju izvēlēties pēc random vertex’a

Vēl tur daži sīkumi ir katrai komandai, bet tas nav tik svarīgi. Noise funkcijas palīdzēs dažādot akmeņus, repeat funkcija palīdzēs uztaisīt vairākus akmeņus vienā mesh’ā – varēšu labi detalizēt apkārtni ar tiem.. 😛

Tad, kad notestēšu un viss strādās, tad varēšu parādīt pirmos ģenerētos akmeņus…

Muzikālā skice…

http://www.box.net/shared/k5rllkqiex

Manuprāt, sanāca diezgan interesanta.

Valsts himna

Varētu jau ignorēt pat to, ka himna pārkāpj Satversmi baznīcas atdalīšanā no valsts, bet vārdu jēgu nevar ignorēt. Jo vairāk domāju, jo trakāka šķiet problēma. Tomēr nav daudz jādomā, lai saprastu, ka vārdi ir patiešām nožēlojami. Kamēr citas valstis dzied par to, kas tām ir, mēs dziedam par to, ko mēs gribētu. Tā kā mīkstie. Jautājums vietā – vai tādi esam?

Alternatīvā vārdu versija ar nedaudz skaidrojošu motīvu:

Dievs, svētī Latviju!
Jo paši nevaram.
Ai, kā to gribas, jo nespējam neko!

Kur latvju bari iet,
Tur gauži lūdzot dzied:
“Ļauj mums tur paraudāt, mums Latvijā!”

Protams, es pārspīlēju. Bet bez pārspīlēšanas grūti piesaistīt uzmanību uz svarīgām problēmām. Nepareizais motīvs iet cauri publikai…

P.S. Visu cieņu autoram par to, ka piekrita garīgā aptumsuma laikā (tad, kad internets nebija pieejams un kurš katrs nevarēja uzkomponēt kaut ko) patērēt laiku ar notīm un liriku, bet mūsdienās šāda ākstīšanās nebūtu manuprāt jāpieņem. Jebkurš reperis varētu sakarīgāk uztaisīt liriku. 😀 Ar mūziku – apmēram tas pats.

Dienas darbi

Uzlaboju un salaboju ūdeni atkal…

Particle sistēmā notestēju citādākus efektus – tur redzami dūmi ar spraitu griešanos ap asi un ar ne-“additive” blending’u UN bez šķirošanas pēc z attāluma. Maģija tā nav – tikai GL_ONE_MINUS_DEST_COLOR,GL_ONE. Tiecas uz rgb(1.0;1.0;1.0) krāsu, bet to gandrīz arī nesasniedz. Alpha kanāls piereizināts šeiderī… būtībā te ideja bija vienkārša – jebkas, kur destination krāsu nereizina ar source krāsu ir derīgs nešķirotiem spraitiem. Tad nu sanāca 2 izvēles, lai gan otru vēl testējis neesmu:

-color=src_color*(1-dest_color)+dest_color

-color=dest_color-src_color*dest_color

Vēl jau pavisam forši būtu apgaismot particle efektus – būs filmām līdzīgāk.. bet pagaidām nevar kavēties pie sīkumiem.

Šodien, btw, izveidoju skaņas sistēmu no nulles ar OpenAL/ALUT. Vienīgās lietas, kuras vēl neimplementēju ir efekti — (optional kopīgais lowpass filtrs) un tik pat daudz optional reverb efekts, kuram būtu kaut kā jātiek galā ar atšķirībām dažādās telpās (gan jau taisīšu to pašu lēto variantu, kuru dzirdēju SC:DA spēlē – viens reverbs visiem klientiem – t.i. tiem, kuriem vajag reverbu – vides efektiem/balsij/u.tml. -, uzstādījumi pēc klausītāja zonas) — un ogg streaming, kuram kodu varēšu daļēji izzagt no Gunplay.

Skaņas sistēma jau tagad ir sasodīti ērti lietojama, emitteri (AL’ā – “source”) man ir klienta puses objekti ar ērtu interfeisu, glabāšanu atļautu dažādos stilos (kā globālo mainīgo, vektorā – bet ne jau pointeri (lai gan tā kā es to nelietoju, trūkst copy konstruktoram/”=” operatoram implementācijas), ar new/delete..). Tas pats ar skaņas sistēmu. Supervienkārši.

 

P.S. Lol, ja es šādos tempos rautu visu laiku, tad es Unreal Engine 5 killeru gada laikā uztaisītu. 😀 Jācer tikai, ka nepietrūks darba spara kritiskajos momentos, jo to man vajadzēs patiešām daudz. Pat vairāk kā tagad.

Particle efekti

Dienas laikā izveidoju particle sistēmu, kas ļoti labi derēs manai spēlei.

Vairāk par 3000…

Gari nerunāšu, pateikšu tikai – PR/SEO/… skillz!!! 😀

1000 skatījumi ~40 dienās ir wow.

Uzlabojumi…

Vēl gan neesmu pabeidzis optimizēt, bet FPS ir daudz labāks – svarīgāk bija novērst trakākās kļūdas.

Šeit es implementēju vienu, visvienkāršāko veidu miglas gaismas efektam:

Daži uzlabojumi…

Pie FPS tiek strādāts… tagad galvenais bija dabūt strādājošu gaismu sistēmu, drīz optimizēšu un labošu.