To první platí spíš pro webovky, hry na mobily nebo enginy typu Unity, kde to tolik řešit nemusíš a většinu za tebe vyřeší engine, ale pořád dost herních studií používá nějaký vlastní, hlavně pro ty větší hry a tam ti nezbejvá, než paměť řešit sám.ninjin_cz píše:Věř tomu, že vývojáři málokdy tuší, jak se věci chovají na tak nízké úrovni jako je správa paměti.
Tím spíš, pokud se používají enginy, frameworky nebo knihovny třetích stran, nebo obecně píšou v jazyce který se o správu paměti stará sám. A kolikrát ani 100% vlastní kód nemají zdaleka pod kontrolou.
A i když třeba používáš knihovnu pro textury, tak pořád ti je většinou jen načte do RAM a ty určuješ, kdy ji pošleš do VRAM nebo kdy ji z VRAM (i RAM) vymažeš, případně kdy ji přes tu knihovnu do VRAm načteš / vymažeš.
Samozřejmě tuhle část (ohledně kde a kdy loadujou/unloadujou textury) řeší jen část developerů, která má danej subsystém na starosti, ostatní devs to pak využívaj jako blackbox - prostě to funguje samo od sebe podle toho, jaký objekty jsou ve scéně a v dosahu.
Většinou ne, ale někde občas dělají to, že sednou nad to a nějakou dobu optimalizují/refaktorují, typicky nějakou dobu před vydáním, kdy už se dá čekat, že se nic v designu systému té hry nebude drasticky měnit.ninjin_cz píše:Nedělej si iluze, že se tímhle lidi, kteří ten kód píšou, zabývají nějak proaktivně. Ti se k tomu dostanou jen pokud jim to někdo (QA, support, end customer) zpětně omlátí o palici protože se to v reálu chová blbě.
O detailech nemají, proto taky často bývají nějak rozdělení, třeba část dělá především networking, část rendering, část věci kolem gameplaye, jeden třeba fyziku, jeden animace... (aspoň tak je to u nás), ale to neznamená, že nemůžeš mít hrubej přehled o tom, jak fungujou ostatní části.ninjin_cz píše:Jo, jasně, vývojář se do toho podívá, a když se dobře vyspí tak se mu možná povede danou věc optimalizovat/opravit, ale tam to končí. Kombinace rychlého context switchingu a vysoké komplexity SW projektů je zlo, vývojáři nemůžou a nemají přehled o všem napříč všemi vrstvami.
Tohle je i o vývojářích, já si třeba taky prošel (v zaměstnání) skoro všema částma - od fyziky, networkingu, zvukovýho subsystému nebo psaní renderingu přímo v C++ s directX a nějakých základních shaderů a ve volným čase napsal pár enginů do svých her.
Pokud tě zajímají detaily, tak jo. Ale tohle co jsem popisoval ohledně streamování dat a uvolňování podle využití mi přijde jako dost běžná věc, protože v podstatě moc jiných řešení není.ninjin_cz píše:Jestli o takto low-level věcech někdo něco ví, resp. o tom jak se na dané úrovni produkt chová v reálném světě, tak je to ten kdo to primárně po tom vývojáři musí troubleshootovat nebo testovat.
Buď načteš do paměti celou scénu hned na začátku, to se používalo hlavně dřív, ale dneska už ty scény jsou velký a umíme načítat data bez sekání během hry, takže pak už zbývá jen streamování dat - a buďto je ta hra postupně načítá a zahodí až třeba na konci levelu nebo vypnutí hry a nebo umí načítat i zahazovat průběžně.
J, typicky se na začátku dají nějaký specifikace, na kterých by to třeba mělo běžet na nějaký detaily 60 fps a podle toho se pak podle potřeby optimalizuje, případně upraví specifikaceninjin_cz píše:Dokud to jakž takž funguje a běží to plus mínus v normě (nepřekračuje to HW požadavky, nezpůsobuje to (příiš časté) problémy ve specifických situacích, atd.), tak se tímhle fakt nikdo nezabývá, a když už tak hodně povrchně.




