Game Resolution - Scaling

Pokud si nevíte s něčím rady ohledně tvorby v Game Makeru - pište sem!
Odpovědět
Uživatelský avatar
Dxnxex
Příspěvky: 92
Registrován: srpen 5, 2011, 11:11 pm

Game Resolution - Scaling

Příspěvek od Dxnxex » říjen 11, 2017, 3:30 pm

Ahoj,

chtěl bych se zeptat, jakou metodou nejlépe vyřešit SCALING hry.

1. Metoda
Udělám hru o rozlišení 1200x1920 a ve hře si nastavím 1200x1920 (view), ale porty si nastavím podle daného zařízení (+okraje aspekt ratia). Nebude tato metoda náročná na FPS, když se hra bude hrát na slabším mobilu ?

2.Metoda (Tato metoda se nedá použít vždy)
Hru vytvořím na jedné mapě která má rozlišení 4K (3840 x 2160), ale protože se vše odehrává v jednom prostoru (řeknu třeba typu Clash Royale), nebude lepší udělat hru s dynamickým rozlišením?
Myslím tím, že základní pracovní rozlišení bude tedy 4K, ale mám výpočet na Downscaling, vypočtu si rychlosti (protože nemůže na menší "mapě" jet stejnou rychlostí jako na velké "mapě"), udělám scaling spritů, atd.. prostě se vše sníží a dosadí dle dosavadního zařízení.

Toto si myslím, že se nedá použít na hry typu RPG, protože tu mapu si vytvoříte předem a tam nemůžete zmenšit rychlosti či sprity.

3.Metoda
Už jsem na toto narazil. Není lepší udělat hru třeba ve 1280x720 a udělat to podobně jako u metody 1, ale bez možnosti upscalu či downscalu?
Není zase toto ošklivé na větších tabletech s FULL HD rozlišením ?

Poradíte mě jaká metoda je nejlepší, nebo jakou vlastní metodou to děláte Vy?

Děkuji <3
Strašně rád bych také pomáhal, ale ještě nemám dostatek zkušeností :)

Uživatelský avatar
ipq
Příspěvky: 918
Registrován: srpen 15, 2011, 7:31 pm
Bydliště: Petržalka

Re: Game Resolution - Scaling

Příspěvek od ipq » říjen 13, 2017, 1:10 am

Pokiaľ robíš retrohru, môžeš použiť tú 3. metódu a nechať, nech sa to zväčšuje samo ale ako tvrdíš, môže to vyzerať škaredo a hlavne ak sa to samo začne rozmazávať miesto toho aby to ostalo len rozpixelované(toto som ani ja neznášal že chýbala možnosť vypnúť interpoláciu obrazovky, muselo sa to riešiť cez grafický ovládač, čo bolo otravné a hlavne bez knižnice).

Druhú metódu by som asi radšej vynechal i keď spraviť downscaling nieje zlé, len sa musí už nadefinovať na view portoch menšie rozlíšenie lebo ak sa neurobí, GM síce zmenší okno ak je väčšie než rozlíšenie displeja, bude to mať blbý vplyv na kurzor myší či dotykovú obrazovku(tiež poznám keď som robil v GM, nastavil som si väčšie rozlíšenie než bol monitor a všimol som si, že kurzor mi ďalej nedočiahol ale keď som to nastavil cez view, už to fungovalo).

Pokiaľ robíš normálnu hru s bežnou grafikou, tak si tam ponechaj rozlíšenie také, aké na tú hru bude pasovať ale bude potreba nastaviť, že nech sa tie view porty prispôsobia na to dané rozlíšenie, na akom to bude bežať.

Neviem ako má hra Angry Birds nastavené rozlíšenie ale viem, že sa prispôsobuje danému rozlíšeniu na danom zariadení, na ktorom beží t.j. natívnemu rozlíšeniu vrátane scalingu takže napr. na eyefinity/surround bude vidno celý level a je možné si obraz zväčšovať i zmenšovať napriek tomu, že hra používa bitmapové obrázky s pevným rozlíšením, takže na veľkých displayeoch s priblížením bude trochu vidieť rozmazanie ale je to robené tak, aby to šetrilo video pamäť(alebo zdielanú na mobiloch) a aby to graficky bolo zakryté. Podobne to je vidieť i u Raymana, kde tiež sú bitmapové textúry ale vie si poradiť s natívnym rozlíšením vrátane scalovania a pomeru strán.

Ja by som to spravil takto, zatiaľ čo hra by mala nadefinované dané rozlíšenie, spravil by som jednu inicializačnú room s malým alebo veľmi malým rozlíšením a čiernou plochou a tam nastavil cez script, ktorý detekuje aké je tam rozlíšenie a potom spraví výpočetný scaling, na ktorý hru prispôsobí vrátane pomeru strán(trochu roztiahne view buď na šírku alebo výšku aby vyplnil čierne rohy).

Uživatelský avatar
Dxnxex
Příspěvky: 92
Registrován: srpen 5, 2011, 11:11 pm

Re: Game Resolution - Scaling

Příspěvek od Dxnxex » říjen 13, 2017, 11:13 am

Mno děkuju,

Něco málo jsem z informací využil a udělal jsem si z toho engine, teď to funguj takhle:

Použil jsem metodu 2 (tím pádem se nedá použít vždy):

1. Zapsal jsem si vývojářské hodnoty: 1920 x 1440 (Schválně takový aspect).
2. na základě Native rozlišení (řeknu že mám třeba např.1280x720), si z těchto hodnot vypočítá vždy aspect ratio (Momentálně 16:9 pokud se nepletu)

3. Nastaví se Scale aspektu W a H
Jelikož scale aspektu W bude vždy 100%, tak se to může vynechat
P.S. Proč bude vždy Scale aspektu W vždy 100% - Protože engine si vypočítá že 1280x720 je vlastně 1920 x 1080 (účel aby to takhle počítalo do 1920 x ?) a tedy 1920 aspektu W je stejné jako vývojářská hodnota W 1920.

4. Nastaví se Scale resolution
Zde už se nastaví zmenšení právě z hodnoty 1920x1080 na 1280x720 .. -Tato výsledná hodnota se používá na úpravu pozadí ( či něčeho co ještě nevím (*)), protože upraví rozměry jen o hodnotu Scale Resolution, pro lepší pochopení:
Všechny pozadí či * se musí dělat v Vývojářských hodnotách (1920x1440), pak se vypočítá aspekt ratio a obraz se jen posune neupraví rozměry) a pak se upraví rozlišení na základě 4.

5. Nastavení Scale resolution a aspektu dohromady ("Merge")
-Toto je vlastně výpočet dohromady a je používám po základní sprity, protože se upraví i o hodnotu aspektu i resolution tzn. Máme třeba obraz 500x500 ale obrazovka je 1280x720, jenže je to dělané na rozlišení Vývojářské, tak se musí zmenšit o hodnotu aspektu i resolution najednou.
Proč? Když se udělá výpočet aspektu z 4:3 na 16:9, tak se obrazovka zúží, ale nikoliv obrázek, pak se upraví rozlišení obrazovky, ale nikoliv obrázek.
Jelikož máme 2x nikoliv, tak to musíme zmenšit "Merge" hodnotu.

Ověření je trošku složitější? Když dáte print screen v rozlišení 1920x1200 a pak v hodnotě 1280x720 na kterém bude stejný obrázek Scaled touto metodou, bude procentuálně stejně velký (Tedy jen hodnota W), protože jak je obraz užší tak hodnota H bude mít jiné procentuální zastoupení.

Zúžený obraz zapříčiňuje, že se třeba objekty musí pohybovat rychleji či se musí vyspawnovat jinde (to se vypočítá %,ale musí se vědět kdy dosadit jenom 3 či hned 5 nebo 4)

Mno zatím se tam chyby nenašel v enginu (určitě nějaký budou). Svůj projekt jsem vyzkoušel na obrazu 1920x1200, 1920x1080 či 1280x800, ale mám i v projektu nastaveno TEST hodnoty kde třeba zkouším 1024x498 (aspekt 18.5:9) či 1280x720 a tak různě, abych zjistil jestli to funguje i na divných rozlišeních a aspektech mno a zatím to funguje.

Děkuji jinak :)
sc_1.png
P.S. Na obrázku můžete ještě vidět úpravu rychlostí, protože objekt musí dojet z leva doprava za stejný čas (pokud je to vyžadováno) na obrazovce 1920x? a taktéž i na třeba 1024x498
Strašně rád bych také pomáhal, ale ještě nemám dostatek zkušeností :)

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host