Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
franz
Založen: 30. 07. 2007 Příspěvky: 1325
|
Zaslal: 22. březen 2011, 09:15:45 Předmět: hlavní smyčka, framerate a celkově |
|
|
Hello, používám následující schema smyčky při Application.Idle
kód: |
// DeltaTime = kolik uplynulo času od minulého ticku
GameTick(DeltaTime); //pohnu herní logikou
Render();
|
To vše je v pohodě při 1000 FPS, 300 FPS nebo 60 FPS, jakmile se ale dostanu pod 60, začnou se herní objekty cukat. Ale 60 FPS je stále dost, jiné hry běží dobře i na 30, tak mne napadá, že se asi ten managing GameTicku a renderingu řeší naprosto jinak, no a to je již otázka  |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 22. březen 2011, 09:36:33 Předmět: |
|
|
clovek jmenem Chjoodge to kdysi publikoval celkem pekne PDF o smyckach v hernich projektech - zkus pohledat |
|
Návrat nahoru |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 22. březen 2011, 10:25:28 Předmět: |
|
|
franz: Zkus interpolovat pozici objektů mezi dvěma posledními snímky na základě frakce času od posledního aktualizovaného snímku (interpolační proměnná = čas od posledního snímku/čas na snímek; interpolační proměnná je tak vždy v <0; 1) ). Sice ti vznikne zhruba jednosnímkový lag, ale pohyb bude plynulejší. Taky bys mohl extrapolovat, ale to nedoporučuju. _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 22. březen 2011, 11:32:48 Předmět: |
|
|
nechapem ako pomoze interpolovat. to pomoze snad len vtedy ak ma hernu logiku nastavenu na nejake pevne FPS napriklad 30Hz. vtedy interpolacia pomoze. ale ak pri kazdom render() prepocitava pozicie? _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 22. březen 2011, 14:32:50 Předmět: |
|
|
Predovsetkym by trebalo vidiet, ze ako sa to zadrhava, lebo pod tento pojem vies schovat tak asi 5 roznych problemovych situacii.
Kedysi davno sa mi pri nizsich frameratoch "zatriasli" objekty a prisiel som na to, ze som za istych okolnosti pouzival cas noveho framu a nie predosleho framu, ale len v istych castiach kodu, cize niektore objekty sli v pohode a ine nie.
Skus si to rozdebugovat, ci od zaciatku do konca framu pouzivas vzdy ten isty cas, resp. ci nepouzivas iny pri interpolacii a iny pri renderovani (kedy mozno ratas (nechtiac) nejake nove pozicie).
Tiez si pozri ci cirou nahodou niekde nepretypovavas float na int - copy&paste obcas zradi
A uplne najlepsie pomaha switchnut context Vypnut visualko, sadnut k tomu o dva dni a za 5 minut sa plesnut po papuli
A ak uz nepomaha vobec nic, hod tam Blur, to je dnes moderne - to spolahlivo zakryje vacsinu artefaktov  |
|
Návrat nahoru |
|
 |
satik
Založen: 06. 05. 2010 Příspěvky: 161 Bydliště: Krkonose
|
Zaslal: 22. březen 2011, 15:58:35 Předmět: |
|
|
nemohlo by to byt taky tim, ze uz mas frekvenci nizsi nez je frekvence monitoru?
EDIT: idealni by bylo to nekam upnout, aby jsme se mohli kouknout  |
|
Návrat nahoru |
|
 |
franz
Založen: 30. 07. 2007 Příspěvky: 1325
|
Zaslal: 22. březen 2011, 16:11:10 Předmět: |
|
|
satik> to by souhlasilo, frekvenci mám 60 Hz..
Pokud vyházím zbytečné FBO procesy a shadery a dostanu se třeba na 80, tak to jede bez problémů.
Avšak jiné hry, třeba závodní Nail'd nebo aquadelic běží 30 FPS a tváří se plynule s požitkem rychlé jízdy bez cukání |
|
Návrat nahoru |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 22. březen 2011, 16:45:06 Předmět: |
|
|
Definitivně to bude bug v kódu, jelikož už 24 fps se jeví oku jako plynulé. Cokoliv nad 24 je velmi dobré a nevidím důvod proč by se to mělo zadrhávat. Podíval bych se spíše na kód, kde dochází k přepočtům s časem mezi snímky a fps (a dle toho se aplikuje fyzika na těleso, apod.). _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
 |
Houp
Založen: 28. 07. 2007 Příspěvky: 672
|
Zaslal: 22. březen 2011, 16:52:38 Předmět: |
|
|
a měříš FPS v idle fci? ono já bych to v ní nepočítal, ale to je možná má neznalost
Vilem Otte : to platí pro konstantní framerate, u nekonstantního to může rušit _________________
 |
|
Návrat nahoru |
|
 |
VladR
Založen: 30. 07. 2007 Příspěvky: 1322 Bydliště: Greater New York City Area
|
Zaslal: 22. březen 2011, 17:47:05 Předmět: |
|
|
Mas vypnuty VSync ? Pri zapnutom byvaju prepady fps dost drasticke a to potom drhaju nechutne aj AAA tituly (o lagu nehovoriac).
Plynulost subjektivne zavisi od toho, o kolko pixelov objekt poskoci na obrazovke - cize hra moze byt plynula aj pri 5 fps, ak sa objekt hybe pomalicky, po jednom pixeli.
Rovnako, taky Quake 3 drha aj pri 100+fps, kedze pocas rychlej otocky o 180` sa ti stena pred tebou poskoci o celych 1280 (zavisi od rozlisenia) pixelov pocas ~1 sekundy, cize skace po zhruba 10 pixelov, co vnimas ako sekanie, aj ked mas fps 100.
O akom type hry a akej kamere sa vlastne bavime ? |
|
Návrat nahoru |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 22. březen 2011, 19:14:22 Předmět: |
|
|
nou napsal: |
nechapem ako pomoze interpolovat. to pomoze snad len vtedy ak ma hernu logiku nastavenu na nejake pevne FPS napriklad 30Hz. vtedy interpolacia pomoze. ale ak pri kazdom render() prepocitava pozicie? |
Aha, pevné snímkování jsem považoval za samozřejmost. _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
 |
gindar

Založen: 05. 10. 2007 Příspěvky: 86
|
Zaslal: 22. březen 2011, 19:46:22 Předmět: |
|
|
Plácnu jen takovou kravinu, nepomohlo by rozdělit to do dvou vláken? Logika/Render? |
|
Návrat nahoru |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 22. březen 2011, 20:53:30 Předmět: |
|
|
citace: |
Plynulost subjektivne zavisi od toho, o kolko pixelov objekt poskoci na obrazovke - cize hra moze byt plynula aj pri 5 fps, ak sa objekt hybe pomalicky, po jednom pixeli.
Rovnako, taky Quake 3 drha aj pri 100+fps, kedze pocas rychlej otocky o 180` sa ti stena pred tebou poskoci o celych 1280 (zavisi od rozlisenia) pixelov pocas ~1 sekundy, cize skace po zhruba 10 pixelov, co vnimas ako sekanie, aj ked mas fps 100. |
Toto se snad řeší per-pixel motion blurem? I když otázka je, zda jej dotyčný program používá... _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 22. březen 2011, 21:33:07 Předmět: |
|
|
ze je 24 snimkov za sekundu dostatok tak to je mytus. 241 snimkov staci vo filme pretoze tam funguje uz spominany motion blur. problem 3D grafiky je ze je prilis ostra. v normalnej kamere funguje motion blur
http://www.100fps.com/how_many_frames_can_humans_see.htm _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
Zaslal: 22. březen 2011, 22:18:54 Předmět: |
|
|
#nou - já samozřejmě předpokládal per-pixel motion blur, který obecně je většinou nutný. Dneska to snad na kartě pomocí vygenerování velocity bufferu v nějakém fbo a dle něj pak provést per-pixel rozmazání takový problém není.
Další možností je pak mít dostatečně pomalou kameru ... _________________ Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. |
|
Návrat nahoru |
|
 |
|