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

Fast Pathfinder by Storm
Goto page Previous  1, 2, 3, 4, 5
 
dev.gamez.lv Forum Index -> Tavi projekti
View previous topic :: View next topic  
Author Message
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sun Nov 25, 2007 8:21 pm    Post subject:

Storm wrote:
Edit : tas ir lietojot manhatanu un 4 virzienus, tiesi kaa tev xD

Man vairs nav 4-virzieni. Tur augstāk pamainīju, lai būtu ar 8 - kā tev :)
Paskaties uzmanīgāk uz manu karti - cik smieklīgi šis staigā pa taisnu koridoru:
Code:
   x x x
xxxxoxoxxxxx
oooo o o ooo
xxxxxxxxoxxx
       x x

x - siena, o - ceļš.
Neiet pa taisno, bet zigzagā! Biju uzlicis, lai vispirms aplūko rūtiņas pa diagonāli, un tikai pēc tam taisnās, lai var uz pagriezieniem ap stūriem ietaupīt.
Iedomājies, kā 3d spēlē tas izskatīsies - AI skraidīs kā apdzēries :)
Vajadzētu laist uz atrasto ceļu - postprocessingu, lai iztaisno zigzag ceļus. Vai arī otrādi - meklēt normāli vispirms horizontāli un vertikāli, un pēc tam pa diagonālēm, un eigās postprocessingā pagriezienus ap stūriem aizstāt ar vienu soli, nevis diviem.
Vai arī normālāk būtu nestaigāt pa diagonālēm un lietot tikai 4-way connectivity.

Un varēji jau arī nemainīt uz tādu pašu funkciju kā man - ar to jau arī A* atšķirās, cik atbilsošu un optimāla heiristikas funkciju tiks izvēlēta.

Cik tev sanāk liekas rūtiņas apmeklēt? Tas jau laikam ir otrs interesantākais rādītājs (aiz darbības laika), kas pie tam raksturo implementētā A* algoritma kvalitāti.
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Nov 25, 2007 8:43 pm    Post subject:

Part to apdzeerusos staigaasanu... jaalieto mazaaks H

Man ir uztaisiits arii taa, lai vins stuurus appiet neizmantojot diognaales, bet kur ir iespeejams taisnaaks celjs pa diognaali - izmantojot diognaali.

Gaidu nai rezultaatus un exe, ja nav zeel xD
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Mon Nov 26, 2007 12:46 am    Post subject:

Ok, noskatījos filmu, un tad uz stundiņu pieķēros optimizēšana. Progress sanāca labs :)
Vispirms uzliktu tikai 4-way staigāšanu, nu i nafig ar tām diagonālēm. Uzliku visur arī, lai H=32.

larger labirints (bilde samazināta ~10x):

Labs progress! Iepriekš praktiski viss (99%) bija sarkans. Izskatās arī, ka tā šaubīšanās iepriekš par 5 sekundēm ir lieka. Domāju, ka mierīgi var to laiku dabūt pat zem kādas pusotras sekundes.
Code:
Time = 1884.28 msec    // wow, gandrīz 40x ātrāks! :)
Path length = 235947
Total free cells = 16634913
Total visited cells = 8148346 (48.9834%)
Used memory = 260024 KiB


Storm mazais labirints:

Jokaini šķiet, ka noņemot staigāšanu pa diagonāli tik ļoti izmainījās tā apakšējā daļa.. Jāpaskatās sīkāk kāpēc.
Code:
Time = 4.27708 msec
Path length = 1557
Total free cells = 79999
Total visited cells = 17978 (22.4728%)
Used memory = 1245 KiB


Cita izeja:

Palika drusku labāk!
Code:
Time = 4.97326 msec
Path length = 2123
Total free cells = 79999
Total visited cells = 21537 (26.9216%)
Used memory = 1245 KiB


No pēdējiem diviem secināju, ka algoritma izmantotais laiks visvairāk ietekmējas no tiem "total visited cells", tb jo vairāk lieku rūtiņu apstaigās, jo sliktāk. Tagad visas operācijas ir O(1) izņemot pielikšanu un izņemšanu Open listā - tās ir O(log N). Vēl ir padomā lieta kas arī izņemšanu no Open lista padarīs par O(1), bet to ne tagad. Kā par brīnumu optimizētais kods sanāca vienkāršāks un ir pat vieglāk lasāms. Arī garumā tas sarāvās - iepriekšējo ~600 rindiņu vietā tagad ir ~400. Šovakaram ar to arī pietiks.
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Thu Jan 03, 2008 12:41 am    Post subject:

Ok rekur sampliitis, nodarbojas ar movementu.

http://www.savefile.com/files/1298050

Lai palaistu vajag XNA 2.0 redistu (2.1mb) :
http://www.microsoft.com/downloads/details.aspx?FamilyID=15fb9169-4a25-4dca-bf40-9c497568f102&displaylang=en

Screeni:





P.S Ja tu gribi lai nevar noraadiit lokaaciju paaraak tuvu sienai, jaauztaisa vienkaarshs cheks, - nav izdariits lai kods buutu tikai par pathfindingu bez liekaam mulkjiibaam.
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Thu Jan 03, 2008 1:56 am    Post subject:

Hm.. interesanti. Tad, kad tu konstatē, ka jaunā node jau atrodas Open nožu sarakstā un ir lētāka nekā tur esošā node, tad tu vienalga to iebāz tajā Open sarakstā ar lētāko cenu. Iznāk, ka tā node tiks apskatīta divas, vai pat vairāk reizes, ja tā atrodas karsta krustojuma centrā. Taču tas ietaupīs mešanu ārā no open saraksta, bet arī drusku vairāk atmiņas patērēs - it īpaši, ja daudz krustojumi kartē. Tās izmešanas ietaupīšana var izrādīties diezgan izdevīga lieta.. it īpaši šādām vienkāršām grid kartēm, kad nav sarežģītā un ilgā veidā nožu kaimiņu jāmeklē.

Rīt būs jāpakesperimentē ar manējo A*, vai un kādu ieguvumu šitais dod.
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Thu Jan 03, 2008 2:25 am    Post subject:

Es jau patiesiibaa ne tik daudz uz to pathfindingu neemos kaa uz to movementu pa vinju... man ir 90% (varbuut arii mazaak ko var zinaat Very Happy) pabeigta taata lieta kaa path smoothings, kas tiek pielietots kaa posteffekts, lai ieguutu dabiskaaku kustiibu (kas nu notiks nevis pa visiem atrastajiem celja punktiem, bet tikai tiem, kas nav savienojami "pa taisno", bet rodas probleemas ar to pasu paarveidosanu ka curve, jo iznemot aaraa paaraak daudz vins liikumos vnk taa nogludina, ka iebrauc sienaa... Vareetu taisiit kkadu koliiziju detekciju vai kko tamliidziigu vai arii domaat kaa un kur ideaalaa gadiijumaa ievietot papildus punktus.

Btw viss grafikas kods ir sacepts pa kaadu stundu XD
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Thu Jan 03, 2008 10:53 pm    Post subject:

Izmēģināju to fīču - nemest no open saraksta atkārtojošos elementus.
Ātrdarbības ieguvums labirinta veida mapēs (tādās kādās mēs te iepriekš mērījāmies) ir pilnīgi nekāds, izņemot vienkāršāku kodu ;) Taču mapēs, kurās ir daudz tukšuma t.i. rūtiņā var nonākt no vairākiem ceļiem, ieguvums ir iespaidīgāks: no 1.5 reizēm mazākām kartēm līdz pat 4 reizēm lielākām kartēm. Patērētais atmiņas daudzums (vismaz manā implementācijā) pieauga nenozīmīgi - ap 1%. Viduvējai kartei, kura patērē ap 65 KiB, atmiņas patēriņs pieauga par 1 KiB.

Laba optimizācija :) Vienkāršāks kods un pie reizes ātrdarbības pieaugums.
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Jan 06, 2008 4:10 pm    Post subject:

Vissiem, kam nav slinkums, nobalsojiet par tautieti kontestaa - "Pathfinding Sample for XNA by Semei" - http://www.ziggyware.com/readarticle.php?article_id=162 Smile
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Jan 06, 2008 5:18 pm    Post subject:

kaa tur jaabalso?
_________________
"There are two choices here: "looks good" and "realism"." -- Paul Nettle
Back to top
View user's profile Visit poster's website
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Sun Jan 06, 2008 5:49 pm    Post subject:

Jaaizsuuta savs top3 uz e-mailu ziggy@ziggyware.com visi pieteikumi ir http://www.ziggyware.com/news.php?readmore=550 ^^
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Sun Jan 06, 2008 7:21 pm    Post subject:

ok, ir!
tev 1. vietu iedevu Smile
_________________
"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 -> Tavi projekti All times are GMT + 2 Hours
Goto page Previous  1, 2, 3, 4, 5
Page 5 of 5

 
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