.[ ČeskéHry.cz ].
hlavní smyčka, framerate a celkově
Jdi na stránku 1, 2  Další
 
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
franz



Založen: 30. 07. 2007
Příspěvky: 1325

PříspěvekZaslal: 22. březen 2011, 09:15:45    Předmět: hlavní smyčka, framerate a celkově Odpovědět s citátem

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 Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 22. březen 2011, 09:36:33    Předmět: Odpovědět s citátem

clovek jmenem Chjoodge to kdysi publikoval celkem pekne PDF o smyckach v hernich projektech - zkus pohledat
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



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

PříspěvekZaslal: 22. březen 2011, 10:25:28    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
nou



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

PříspěvekZaslal: 22. březen 2011, 11:32:48    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 22. březen 2011, 14:32:50    Předmět: Odpovědět s citátem

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 Smile

A uplne najlepsie pomaha switchnut context Smile Vypnut visualko, sadnut k tomu o dva dni a za 5 minut sa plesnut po papuli Smile


A ak uz nepomaha vobec nic, hod tam Blur, to je dnes moderne - to spolahlivo zakryje vacsinu artefaktov Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
satik



Založen: 06. 05. 2010
Příspěvky: 161
Bydliště: Krkonose

PříspěvekZaslal: 22. březen 2011, 15:58:35    Předmět: Odpovědět s citátem

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 Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
franz



Založen: 30. 07. 2007
Příspěvky: 1325

PříspěvekZaslal: 22. březen 2011, 16:11:10    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 22. březen 2011, 16:45:06    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
Houp



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

PříspěvekZaslal: 22. březen 2011, 16:52:38    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 22. březen 2011, 17:47:05    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



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

PříspěvekZaslal: 22. březen 2011, 19:14:22    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
gindar



Založen: 05. 10. 2007
Příspěvky: 86

PříspěvekZaslal: 22. březen 2011, 19:46:22    Předmět: Odpovědět s citátem

Plácnu jen takovou kravinu, nepomohlo by rozdělit to do dvou vláken? Logika/Render?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 22. březen 2011, 20:53:30    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
nou



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

PříspěvekZaslal: 22. březen 2011, 21:33:07    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 22. březen 2011, 22:18:54    Předmět: Odpovědět s citátem

#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
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
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
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