Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
tomasslavicek

Založen: 01. 12. 2007 Příspěvky: 49
|
Zaslal: 26. červen 2011, 14:51:14 Předmět: |
|
|
Jako bychom to tu neřešili (Ještě budu chvilku mimo původní téma)
Dneska jsem začal hrát DJ Max Portable 3 (na PSP) a tam se efekt podobný chromatické aberaci používá docela masivně, vč. přesvícení (hlavně v menu, je to vidět u toho "3.2T"). Ale kupodivu to vypadá docela dobře, hodí se to tam. Viz krátké video: http://youtu.be/qzOxOhumbKk
Myslím, že jsem se s tím setkal i přímo v nějaké hře na způsob SpeedX 3D, už nevím, jaká to přesně byla: http://www.youtube.com/watch?v=dtw_7zw9Ma4&t=0m15s |
|
Návrat nahoru |
|
 |
Mem

Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 26. červen 2011, 17:28:42 Předmět: |
|
|
tomasslavicek: No SpeedX 3D nabízí i stereoskopické zobrazení, takže tam asi nešlo o hrany chromatické aberace, ale o normální anaglyfy pro brýle |
|
Návrat nahoru |
|
 |
tomasslavicek

Založen: 01. 12. 2007 Příspěvky: 49
|
|
Návrat nahoru |
|
 |
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 29. červen 2011, 17:44:58 Předmět: |
|
|
Riesite tu uplne hovadiny
Na blbosti typu Chromatic Aberation cas stracat nebudem. Radsej by som portol/dokoncil nieco starsie rozrobene (hratelne), ako sa snazil preefektovat renderer takymito zbytocnostami, ktorej aj tak vacsina hernej populacie nezbada.
Vcera som videl v kine LOTR:Return of the King v 4 a pol hodinovej verzii a tam boli preblurovane sceny v cca 3 hodinach filmu.
Takze riesite blbosti, ze sa to neprehana ci uz vo filmoch alebo hrach.
Momentalne strasne ale strasne nadavam na C# dizajnera za abnormalne MEM leakovane zakladnych prvkov jazyka. To je neskutocny bordel, jak clovek musi prznit kod, aby ani bajtik neleakol.
Vybavuju sa mi sceny z posledneho James Bonda, kde bol Craig priviazany na konci na stolicke a padouch ho skrabkal tym uzlom na lane
Nejaku podobnu duchovnu seansu by som teraz doprial C# dizajnerovi  |
|
Návrat nahoru |
|
 |
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 4. červenec 2011, 06:10:36 Předmět: |
|
|
Mam konecne extremne dolezity update ohladom mem leakov.
Hru uz na XBOXe ide hrat vyse 30 min bez toho, aby zadrhla kvoli Garbage Collectoru. Resp. bezny gameplay uz neleakuje vobec (akurat pri chcipnuti enemyho to leakne 200 Bytes, co ale samo o sebe nesposobi za celu dobu levelu GC.
Cize hra je konecne uplne plynula.
Nenormalne som si vychutnal, ze som musel pisat rucne rozbitie integeru na jednotlive cislice, kedze .NET framework je napsany tak prasacky, ze z neho de facto nejde v tomto pouzit nic, resp. uz ani nemienim stracat cas skusanim, ci sa tam najde nieco co neleakuje.
Pripadam si, ako by som sa vratil v case vyse 20 rokov do davnych zaciatkov, ked som kodil v Pascale - kde co si clovek nenakodil, tak proste nemal. Resp., dnes som konkretne zazil nenormalnu nostalgiu - fakt som si chvilu pripadal ako v Basicu pred 25 rokmi na 8-bit.Atari
Tu mam sice megaframework, ale nemozem z neho nic solidne pouzit.
Beriem spat svoje slova o tom, ake je XNA / C# kombo dzive. Na rozbeh je to rychle, ale na cokolvek solidnejsie, je clovek donuteny tak abnormalne prasit kod PureC stylom, ze este aj velky NeHe by sa mal co ucit, ako sa ma kod spravne prasit
Odmietam ale prasit kod dalej tak, aby sa neleakovalo vobec nic. Pre hraca je dolezite, ze mu hra nezasekne, a nie ze ci pocas levelu leaknem 100-400 KB... |
|
Návrat nahoru |
|
 |
posila
Založen: 29. 07. 2007 Příspěvky: 201
|
Zaslal: 4. červenec 2011, 07:52:34 Předmět: |
|
|
Co myslis tim "leakne 200 Bytes"? Prece to, ze zahodis vsechny reference na objekt, nezpusobi spusteni GC. To se spousti pri naalokovani kazdeho megabytu na heapu. Tak pokud po zabiti nepritele spawnujes noveho, staci znovupouzit stary objekt. Pokud noveho nespawnujes, tak bys tady nemel mit problem. |
|
Návrat nahoru |
|
 |
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 4. červenec 2011, 08:37:54 Předmět: |
|
|
No ved to som aj napisal, ze to nevadi, kedze je to nejakych 200 Bytov (budem tam mat bud nejaku lookup tabulku spotrosenu, alebo co je pravdepodobnejsie - tak random) a tie kym sa nascitaju do jedneho mega, tak to potrva. Este budem musiet prerobit kod na Inventory, lebo som si prave teraz vsimol, ze pri niektorych polozkach to leakne pri porovnani equipu a novej polozky az 1 KB (ale len jednorazovo), co je celkom dost - ale tam mam dost textu a stringov, ktore nie su celkom downgradnute na PureC styl (StringBuilder totiz tiez nie je 100% koser a klasicky String by sa mal z .NET frameworku radsej vyhodit, lebo len zbytocne clovek straca cas ich "akoze" pouzivanim - aj tak ich vo finalnom builde nejde kvoli GC pouzit a clovek to musi cele prerobit ...)
Ziadneho noveho enemyho samozrejme nespawnujem, a uz vonkoncom nie ako novu referenciu pocas gameplay. To by .NET uplne ze klakol. Take veci .NET proste nezvladne - nie je na to dizajnovany. Ked nieco take zacnes robit kazdy frame, tak mas garantovane, ze mego leaknes za par sekund a GC totalne zrusi akukolvek plynulost.
A aj keby to bolo len jednorazove, stale je tam riziko, ze sa ti to proste casom vypomsti a z roznych casti oblasti enginu sa ti to po 15 min vrati ako casovana bomba.
ad enemies - Vsetci enemies su samozrejme vygenerovani v poli pri starte levelu a pre kazdeho z nich sa vyhodnocuje AI cely cas - ak aj nejakemu ujdes, tak staci ze sa niekde zdrzis (a to sa ver ze zdrzis) a on ta dobehne kludne aj cez cely level  |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 4. červenec 2011, 15:03:00 Předmět: |
|
|
Tobě by se možná hodil slab allocator. Na správu paměti stejně velkých objektů se hodí. Alloc a free má konstantní čas a není tam žádná fragmentace. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 4. červenec 2011, 15:33:29 Předmět: |
|
|
Fragmentacia zatial problem nie je - no to bude asi tym, ze som tak dlho tu hru este nehral. Pretoze skor ci neskor, kedze hra je levelova, sa pamat skratka musi rozfragmentovat. GC sa sice snazi bloky presuvat, a "compactnut", no pochybujem ze je to 100% foolproof solution.
Takze prepdokladam, ze si budem musiet napisat nejaky vlastny RAM alokator, ktory bude medzi levelmi znovupouzivat tie iste alokovane jednotky. |
|
Návrat nahoru |
|
 |
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 4. červenec 2011, 15:38:49 Předmět: |
|
|
Ciste zo srandy, kedze uz je hra konecne plynula, som skusil nastavit rozlisenie 1920x1080.
Cakal som samozrejme brutalnu slideshow, ale vysledok ma totalne rozsekal. Mal som sice v builde vypnuty postprocessing, no ale aj tak.
250-350 fps
WTF  |
|
Návrat nahoru |
|
 |
if.then
Založen: 13. 04. 2008 Příspěvky: 579
|
Zaslal: 4. červenec 2011, 15:58:43 Předmět: |
|
|
Tak to je brutální, je vidět, že XBOX s fill rate rozhodně nemá problémy.
BTW: Docela pochybuji, že by to XNA bylo tak nemožné a musel sis psát primitivní datové typy od znova, nestěžovali by si na to už jiní developeři? _________________ For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++. |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 4. červenec 2011, 16:24:20 Předmět: |
|
|
VladR napsal: |
Fragmentacia zatial problem nie je - no to bude asi tym, ze som tak dlho tu hru este nehral. |
O to nešlo. Navrhoval jsem to proto, že bys pro některé případy mohl úplně obejít GC a přesto si alokovat a uvolňovat paměť extra rychle pro vybrané typy objektů (např. jejichž životnost může být třeba jeden frame). _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 4. červenec 2011, 16:46:03 Předmět: |
|
|
Eosie napsal: |
VladR napsal: |
Fragmentacia zatial problem nie je - no to bude asi tym, ze som tak dlho tu hru este nehral. |
O to nešlo. Navrhoval jsem to proto, že bys pro některé případy mohl úplně obejít GC a přesto si alokovat a uvolňovat paměť extra rychle pro vybrané typy objektů (např. jejichž životnost může být třeba jeden frame). |
Vlastny pamatovy alokator zacnem riesit, az to zacne na XBOXe padat kvoli fragmentacii RAMky (ktoru sice GC riesi, ale len ciastocne).
Zatial tam nemam portnuty teren, ale sipim, ze si po loadnuti terenu tvrdo nabijem hubu na velkost dostupnej RAMky (512 MB) a vlastny alokator bude nevyhnutnostou.
Pretoze inak bude XBOXu trvat nie 1.8, ale kludne aj 3s, kym spravi Collect - cim plnsia a zlozitejsia RAMka je, tym dlhsie (logicky) ten proces Collectoru trva. |
|
Návrat nahoru |
|
 |
posila
Založen: 29. 07. 2007 Příspěvky: 201
|
Zaslal: 4. červenec 2011, 17:01:03 Předmět: |
|
|
Tak s tim od zacatku pocitej a ten teren ukladej jako co nejjednodussi strukturu. Jedno obrovske pole floatu ti to nezpomali. Obrovske pole referencnich typu to zpomali hodne .
Nemuzu souhlasit s tim, ze .NET obecne je spatne nadesignovany a napsany, ale urcite souhlasim s tim, ze implementace .NETu na Xboxu je nestastna  |
|
Návrat nahoru |
|
 |
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 4. červenec 2011, 17:15:42 Předmět: |
|
|
if.then napsal: |
Tak to je brutální, je vidět, že XBOX s fill rate rozhodně nemá problémy. |
Ako sa to vezme. Na 5 rokov stary srot je to ale uctyhodny vykon.
Pred chvilou som zapol Bloom a framerate padol v 1920x1080 z 300 na 150. Je pravda, ze ten Bloom sa da este urcite zrychlit. Doteraz ale nebol ziaden dovod sa tym zaoberat.
if.then napsal: |
BTW: Docela pochybuji, že by to XNA bylo tak nemožné a musel sis psát primitivní datové typy od znova, nestěžovali by si na to už jiní developeři? |
To nie je XNAckom, ale .CF runtimeom. XNA je len graficke API a nema nic spolocne s .NET (az na binding).
Ved si precitaj par stran postov na forums.xna.com a uvidis, co su najcastejsie vytky - je to GC.
Ja uz si zvykam, a nepouzivam ani ziadne enumy, ziadne dictionaries, ziaden foreach a asi 10 dalsich .NET vychytavok, z ktorych som bol na zaciatku nadseny, kym som nevidel, co za bordel v ramke tie featury robia.
Iste, na vyssie uvedene featury ide pouzit workaroundy, ale tym ja stracam cast nemienim. Ak ta featura nie je pouzitelna tak, ako ju pani dizajneri naprirodno stvorili, tak na to kaslem. Pokial nesprznia integer a pole , tak sa stale bude dat napisat rychly kod.
MOja pointa je, ze ked uz prasit kod, tak aspon nech je potom garantovane rychly, a nie vymyslat workaroundy na to, aby ta featura negenerovala garbage. Ja mam sledovat bytecode, aby som zistil, ci ta patricna featura generuje daky bordel alebo nie ?
Take hovadiny si mozem dovolit robit v robote, kde som za to plateny, ale isto nie na ukor volneho casu  |
|
Návrat nahoru |
|
 |
|