.[ ČeskéHry.cz ].
Rychlejší Pathfinding

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Akhera



Založen: 27. 01. 2008
Příspěvky: 37
Bydliště: Říčany

PříspěvekZaslal: 29. leden 2008, 18:24:04    Předmět: Rychlejší Pathfinding Odpovědět s citátem

Pro svou hru používám algoritmus A*, bohužel se ukazuje, že ve Flashi je jeho základní verze příliš pomalá - průměrně trvá 0,5 až 1 sekundu, ale v nejhorších případech i 4, což je i pro tahovou strategii neúnosné.

Vím, že problém není v technologii, protože tenhle http://www.schuirink.net/~casper/flash/AI/path-flasm.html program to samé zvládá 10-15x rychleji, což by mi bohatě stačilo, jenže zdrojový kód nikde... Nevíte náhodou, jak by se dal algoritmus A* optimalizovat, nebo kde je na to nějaký návod? Na netu nemůžu nic najít...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
adragon



Založen: 23. 08. 2007
Příspěvky: 72
Bydliště: Praha

PříspěvekZaslal: 29. leden 2008, 18:49:13    Předmět: Odpovědět s citátem

na flash existuji decompilery http://www.sothink.com/product/flashdecompiler/

treba by mohly pomoci
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Weny Sky



Založen: 28. 07. 2007
Příspěvky: 241

PříspěvekZaslal: 29. leden 2008, 18:55:19    Předmět: Odpovědět s citátem

Pouzivas pro ulozeni seznamu kandidatu na dalsi krok haldu nebo ty prvky hazes do pole a pak je v nem hledas?

Jinak rychlost zvysis zmenou heuristiky. Treba tak, ze uzly jdouci k cili ohodnotis vyhodnej, nez uzly, ktere jsou opacnym smerem od cile. Timto dosahnes toho ze se algorimus bude hnat za cilem rychlej nez normalne, ale nevyhodou muze byt, ze jiz nemusi nalezt opravdu nejkratsi cestu, ale treba cestu o par policek delsi
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Pavel



Založen: 29. 07. 2007
Příspěvky: 54
Bydliště: Litovel

PříspěvekZaslal: 29. leden 2008, 19:00:01    Předmět: Odpovědět s citátem

hmm...ja myslel, ze A* je Dijkstra, rozsirena o heuristiku a plati, ze pokud se jedna o "admissible" heuristiku pak je cesta i nejkratsi.... Rolling Eyes
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Akhera



Založen: 27. 01. 2008
Příspěvky: 37
Bydliště: Říčany

PříspěvekZaslal: 29. leden 2008, 19:06:28    Předmět: Odpovědět s citátem

Díky za pomoc, ale nakonec jsem to vyřešila sama Smile
Původně se seznam dalších kandidátů srovnával podle ceny, ale překvapivě se ukázalo, že nesrovnávat seznam a místo toho v něm hledat je skoro 10x rychlejší. Byl to zoufalý pokus, ale dopadl dobře Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
Fila



Založen: 31. 07. 2007
Příspěvky: 853

PříspěvekZaslal: 29. leden 2008, 20:09:32    Předmět: Odpovědět s citátem

Tomu uplne nerozumim -- co je to srovnavat seznam? Jako stovnavat, zdali obsahuji dva seznamy stejne prvky (v libovolne permutaci)? To je sakra pomale Smile. Hledas v nem nejak sofistikovane, nebo tak, ze jej projdes cely? Kdyztak sem hod kod, treba by se dal jeste urychlit... I ta 1/10 sekundy je i na ActionScript moc, pokud nemas fakt velkou mapu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 29. leden 2008, 20:12:56    Předmět: Odpovědět s citátem

Podle mě bylo myšleno řadit ho. V závislosti na použitém třídícím algoritmu může třídění setřízených dat trvat docela dlouho a proto je rozdíl mezi "udržovat seznam setřízený" a "po každém přidání prvku ho znovu setřídit".
_________________
Mám strach
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Fila



Založen: 31. 07. 2007
Příspěvky: 853

PříspěvekZaslal: 2. únor 2008, 12:16:37    Předmět: Odpovědět s citátem

Jasne, uz to tam vydim. Kdyby jsi chtela rychle hledani i rychlou aktualizaci seznamu, sahni po nejakem automaticky balancovanem vyhledavacim strome, treba AVL nebo cernobilem. Pokud by ti to prislo zbytecne slozite a nedelas v seznamu moc velke zmeny (jakoze treba pridas jednu dve hodnoty), pouzij bubblesort, jen ho pust odzadu, pokud pridavas nove prvky na konec Smile.

Ale asi by to chtelo fakt videt cely ten kod, jestli pouzivas razeny seznam jako prioritni frontu, bylo by spis lepsi implementovat haldu.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Akhera



Založen: 27. 01. 2008
Příspěvky: 37
Bydliště: Říčany

PříspěvekZaslal: 2. únor 2008, 13:40:33    Předmět: Odpovědět s citátem

No nakonec seřazování seznamu vůbec není potřeba, upravila jsem pathfinding tak, aby nehledal, jak se nejrychleji dostat na nějaké místo, ale aby našel a označil všechna místa, kam jednotka se svými akčními body může jet. Sice výpočet trvá asi 0,2s, ale děje se to vždy jen při označení jednotky, pak už žádné další výpočty nejsou třeba
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna