.[ ČeskéHry.cz ].
Ako optimalizovat rychlost hry pre dany procesor?

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



Založen: 13. 01. 2016
Příspěvky: 37
Bydliště: Slovensko

PříspěvekZaslal: 30. červen 2016, 11:01:30    Předmět: Ako optimalizovat rychlost hry pre dany procesor? Odpovědět s citátem

Zdravim, prednedavnom sa mi naskytol problem. Programoval som hru na staršom laptope (jeden z prvych i3 procesorov, 2 jadra) a prešiel som na destkop (i5-4jadro). Samozrejme som si neuvedomil zmenu v procesoroch a tak hra bežala dost rychlo-všetko sa hybalo priliš rychlo atd. (kedže timery boli nastavene na stary procesor). Ako predidem takym vecom? Aby hra bežala rovnako na roznych konfiguraciach?

Pozn. timery som použil v nekonečnom while cykle ako inkrementacie premennych


Napr. if(spawn>200){
game.spawnEnemy();
spawn=0;}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Deluxe



Založen: 31. 07. 2007
Příspěvky: 235
Bydliště: Oslavany

PříspěvekZaslal: 30. červen 2016, 11:13:30    Předmět: Odpovědět s citátem

Takhle to vypadá, že jsi měl čekání implementované pomocí "delay loop", nebo něčeho podobného - založeného na rychlosti CPU.
Tomu je potřeba se vyhnout a místo toho použít funkce OS, nebo nějaké knihovny pro měření reálného času: takže něco jako (clock_gettime - linux/posix - https://blog.habets.se/2010/09/gettimeofday-should-never-be-used-to-measure-time) nebo ve windows třeba GetTickCount (https://msdn.microsoft.com/en-us/library/windows/desktop/ms724408(v=vs.85).aspx), nebo lépe QueryPerformanceCounter/Frequency (https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408(v=vs.85).aspx)

Taky může pomoci mrknout na implementaci hlavní smyčky hry (http://gafferongames.com/game-physics/fix-your-timestep/) - s fixním časem na snímek se docela zjednoduší simulace a odpadnou některé problémy.

Tvůj příklad by se pak vyřešil např. tak, že si uložíš do promněnné čas za jaký má nastat spawn a pak v každém snímku hry od té promněnné odečteš reálný uplynulý čas - a když je hodnota <= 0 je čas na spawn (<= 0 je důležité, protože se krok simulace nemusí trefit přesně)

Mimochodem, pokud dám URL "https://msdn.microsoft.com/en-us/library/windows/desktop/ms724408(v=vs.85).aspx" do URL tagu zmizí celý text příspěvku...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



Založen: 18. 09. 2007
Příspěvky: 1488
Bydliště: u Prahy

PříspěvekZaslal: 30. červen 2016, 14:09:34    Předmět: Odpovědět s citátem

Deluxe napsal:
Mimochodem, pokud dám URL "https://msdn.microsoft.com/en-us/library/windows/desktop/ms724408(v=vs.85).aspx" do URL tagu zmizí celý text příspěvku...

OT: Protože tohle fórum je 11 let stará verze, tak to neumí nový věci, jako závorky v URL (kdybys jó chtěl, tak je můžeš ručně nahradit za procentové znaky). Ale nejjednodušší je na [url] kašlat, beztak všechno kromě IE a Edge umí otevírat i plaintext linky (vývoj IE už skončil a Edge nikdo nechce používat, tak je můžeš ignorovat).

Jinak OPův problém bych chápal před 10-15 lety, ale dnes, kdy každý má počítač, mnozí i víc jak jeden (např. doma a v práci) - a on to nikdy na jiném nespustil?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Pinsirus



Založen: 13. 01. 2016
Příspěvky: 37
Bydliště: Slovensko

PříspěvekZaslal: 30. červen 2016, 16:13:49    Předmět: Odpovědět s citátem

Deluxe vdaka, pustim sa do toho

Ladis No, nespustil som, pretože som si to neuvedomil Confused

Edit: dost mi pomohol tento link: http://www.koonsolo.com/news/dewitters-gameloop/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Č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