Vysoké rozlišení u XNA hry na WP8

Vývoj her v XNA
Odpovědět
Uživatelský avatar
Tomáš Slavíček
častý přispěvatel
častý přispěvatel
Příspěvky: 264
Registrován: stř srp 19, 2009 7:09
Zařízení: Nexus 5, Galaxy S3, Nokia X, iPad mini

Vysoké rozlišení u XNA hry na WP8

Příspěvek od Tomáš Slavíček » ned pro 30, 2012 11:52

kpetanek napsal:

Zdravím,
Chci se zeptat, jak je možné použít vysoká rozlišení ve WP8?

V iPhone SDK jsou prý Retina obrázky extrémě jednoduché, stačí za název obrázku přidat @2x a o zbytek se nestarat. Je to možné podobně udělat i u WP8?

Hledal jsem na různých fórech, ale lepší radu než použít;
PreferredBackBufferWidth = 720;
PreferredBackBufferHeight = 480;
Pro 16:9 jsem nenašel, snad jen použít MonoGame, na který bych ale celkem nerad přecházel a taky jsem na něj zatím nenašel návod na ty rozlišení.

Už opravdu nevím, jako První mě samozřejmě napadlo detekovat rozlišení a podle něj nastavit PrefferedBackBuffer, jenže pokud jej nastavím na 1280x720, nebo 768, zůstane 800x400...
Děkuji.

Odpověď:

Ahoj, tohle je trochu složitější...

Děláš to jako hru v XNA, s SDK verze 7.1? Tam se k vyššímu rozlišení nijak nedostaneš (pokud se nic nezměnilo). Hra běží jen v určitém režimu WP7 kompatibility. Ať nastavíš PreferredBackBufferWidth/Height jakkoliv, hra poběží vždy v rozlišení 800x480 (tj. např. na HTC 8X bude mít pokaždé černé pruhy nahoře a dole). Bohužel Microsoft XNA Framework prakticky odepsal, nechce ho už podporovat ani na WP8, ani na WinRT, vývojový tým XNA už neexistuje... XNA projekt z SDK 7.1 nejde upgradovat na SDK pro WP8.

Pokud chceš, aby ti hra běžela v nativním rozlišení, asi jediným řešením bude opravdu MonoGame :) Já jsem zatím pro WP8 žádnou hru nezačal portovat, takže nevím, jestli už ta WP8 verze knihoven je nějak finální a funkční... Ale věřím, že by se tomu už dalo věřit. Vůbec bych se toho nebál, MonoGame je úžasný projekt, sice má různé chybky, ale makají na tom hodně... A pak se přistihneš, že neděláš jen pro WP, ale portuješ i pro Win8, na Android a tak... :) O tom, jak portovat hru na Win8, jsem povídal na MS Festu, viz záznam: http://www.wug.cz/zaznamy/113-MS-Fest-2 ... -Windows-8. Pro WP8 to předpokládám bude podobné...

Ohledně automatického načítání obrázků v menším / nebo větším rozlišení... Třeba C#/XAML (Silverlight) to má řešené pěkně, tam se to děje podobně, jako na iOS nebo Androidu (vybere se automaticky správná velikost). XNA a MonoGame takovouhle podporu nemá, musí si to vývojář řešit sám. Ale jak popisuji v té přednášce z MS Festu, stejně většinou např. pro pozadí chceme použít jen jeden obrázek (který potom roztáhneme), pro některou grafiku budeme mít připraveno víc obrázků (a víc souborů typu SpriteFont apod.). Je to dost individuální.

Snad jsem pomohl, kdyžtak se ještě ptej :)

kpetanek
nováček
nováček
Příspěvky: 12
Registrován: ned led 22, 2012 20:02
Zařízení: iPhone 3G

Vysoké rozlišení u XNA hry na WP8

Příspěvek od kpetanek » ned pro 30, 2012 12:42

Díky. :)
Jen bych se rád zeptal, kde seženu template MonoGame pro WP8, nebo alespoň nějaké návody? V instalačce bety 3.0 je jen pro W8.

Uživatelský avatar
Tomáš Slavíček
častý přispěvatel
častý přispěvatel
Příspěvky: 264
Registrován: stř srp 19, 2009 7:09
Zařízení: Nexus 5, Galaxy S3, Nokia X, iPad mini

Vysoké rozlišení u XNA hry na WP8

Příspěvek od Tomáš Slavíček » ned pro 30, 2012 13:03

Instalačku nepoužívat, tam jsou staré zdrojáky. Je potřeba si stáhnout z GITu aktuální zdrojáky, z branche develop3D (stačí nahoře kliknout na download zip): https://github.com/mono/MonoGame

Pak je potřeba stáhnout ještě obsah téhle složky a umístit do ThirdParty/Libs: https://github.com/kungfubanana/MonoGame-Dependencies

Šablona do Visual Studia se přidá tak, že se vybere obsah složky MonoGame/VisualStudio2012/WindowsPhone, zazipuje se a umístí do složky Dokumenty/Visual Studio 2012/Templates/ProjectTemplates/Visual C#. Potom stačí založit ve Visual Studiu nový projekt a vybrat ho...

Ještě tam budou zlobit asi závislosti na MonoGame Frameworku - proto v Solution Explorer zvol Add Existing Project a vyber soubor MonoGame/MonoGame.Framework/MonoGame.Framework.WindowsPhone.csproj

Potom do svého projektu přidej referenci na tenhle přidaný projekt. Mělo by to chodit.

kpetanek
nováček
nováček
Příspěvky: 12
Registrován: ned led 22, 2012 20:02
Zařízení: iPhone 3G

Vysoké rozlišení u XNA hry na WP8

Příspěvek od kpetanek » ned pro 30, 2012 16:00

Perfektní, díky znovu!
Ještě bych měl otázku, pokud si rozlišení zjistím pomocí

public string GetResolution()
{
string resolution = "WVGA";
var content = App.Current.Host.Content;
Type type = content.GetType();
PropertyInfo prop = type.GetProperty("ScaleFactor");
if (prop != null)
{
int value = (int)prop.GetValue(content, null);
switch (value)
{
case 100:
resolution = "WVGA";
break;
case 150:
resolution = "720p";
break;
case 160:
resolution = "WXGA";
break;
}
}
return resolution;
}

A následně například pomocí if, nebo switch/case vyberu příšlušný obrázek, zobrazí se už správně (1:1, jestli mě chápeš), nebo ne? A pokud ne, jak toho v MonoGame docílím?

A vůbec, do MonoGame nejde importovat Content Project, jak tedy načítat v LoadContent položky a kam je ukládat?

Jestli tě zajímá můj projekt, tak
http://FB.com/MagicFrogsGame" onclick="window.open(this.href);return false;
Projekt se trochu zpozdil, ale už je hotov, jen to předělat do vyššího rozlišení a přidat achievementy a tak dále. Když jsme u toho, změnilo se něco u XBOX LIVE certifikátu? Stále je tak nedostupný? A pokud budu chtít už poslat XAP do Store, stačí nahoře nastavit Release, vedle ARM a pak už jen dát Build? Bude v tom XAPu vše potřebné včetně toho MonoGame?

A ještě bych chtěl říct, že je skvělé že máme tak skvělou a ochotnou vývojářskou komunitu! :)

Uživatelský avatar
Tomáš Slavíček
častý přispěvatel
častý přispěvatel
Příspěvky: 264
Registrován: stř srp 19, 2009 7:09
Zařízení: Nexus 5, Galaxy S3, Nokia X, iPad mini

Vysoké rozlišení u XNA hry na WP8

Příspěvek od Tomáš Slavíček » ned pro 30, 2012 16:21

Já jsem pro WP8 ještě hru neportoval, takže přesně ti to nepotvrdím :) Musel bych to zkusit. S MonoGame jsem si zatím hrál jen na Win8 a na Androidu.

Ověř si nějakým výpisem na displej, že ti hra vždycky běží v nativním rozlišení (tj. vypiš si hodnotu PreferredBackBufferWidth/Height). Té tvé podmínce bych do budoucna moc nevěřil... Ale asi by to mělo fungovat, takhle poznat rozlišení :) Podle této podmínky by sis měl na začátku nejspíš to PreferredBackBufferWidth/Height nastavit na 800x480, 1280x720, nebo 1280x768.

Pokud tvoje hra může běžet na výšku i na šířku, nezapomeň na nějakou událost ve stylu Window.ClientSizeChanged, tam by sis měl opět doplnit nastavení velikosti těchto bufferů. Na Win8/MonoGame se dalo vytáhnout nativní rozlišení displeje z položky Window.ClientBounds (typu Rectangle). Podle jeho šířky a výšky jsem si vždycky nastavil ty parametry PreferredBackBufferWidth/Height. To mělo stačit... (graphics.ApplyChanges(); se na konci ani volat nemuselo, ale tohle zrovna měla každá verze MonoGame trochu jinak, odzkoušej si to).

Uživatelský avatar
Tomáš Slavíček
častý přispěvatel
častý přispěvatel
Příspěvky: 264
Registrován: stř srp 19, 2009 7:09
Zařízení: Nexus 5, Galaxy S3, Nokia X, iPad mini

Vysoké rozlišení u XNA hry na WP8

Příspěvek od Tomáš Slavíček » ned pro 30, 2012 16:47

Ohledně Content projektu... V MonoGame zatím není Content Pipeline :) Pro zkompilování obrázků/textu/hudby potřebuješ stále XNA. Vytvoř si normálně v MonoGame projektu složku Content, do té si překopíruj už převedené .xnb soubory. Nastav jim Build Action na Content, Copy to Output = Copy if newer.

Ohledně zabalení MonoGame do XAPu: jo, bude tam všechno. Teoreticky, když uděláš MonoGame hru pro normální Windows, měl by ses obejít i bez jinak nutné instalace balíčku XNA Redistributable (to jsem ale zatím nezkoušel... přeci jen plnému XNA pořád věřím víc; kde je to možné, tam používám to ;)

Ohledně Xbox LIVE... Raději nemluvit :) Ten je pořád vyhrazený jen pro extra vybrané hry. Snaží se to v Microsoftu uměle omezovat, tj. vydávat jen jednu hru týdně. Můj názor je, že jim to dost škodí... Co jsem s nimi naposledy zkoušel komunikovat (jestli by tam prošel můj Glow Arkanoid), tak mi hru zamítli, protože je už podobná nějaké jiné (hmm... prý Bullet Asylum). Divil jsem se, jaké je s tím obrovské papírování. Trvalo několik týdnů, mnoho e-mailů a vyplňování různých dotazníků, než jsme se někam dostali a na hru se mi vůbec podívali. Posuzují to čistě z business hlediska - jestli už podobná hra existuje, jestli má dostatečný obsah na danou cenu... Také mně v tu dobu říkali, že teď přijímají jen hry, které budou originální na Windows Phone (a nebudou třeba rok dostupné na jiných platformách). Přednost mají také hry, které jsou třeba adaptace filmu, od velkého studia apod. A také to, že her už stejně mají na půl roku dopředu plno, že by mi ji dříve nevydali (na tomhle prý krachlo i schvalování Rune Legend nebo ARMED!, že prostě ti vývojáři na to nechtěli přistoupit). O tom, jaký by jako publisher chtěli podíl, k tomu jsme se už nedostali :) Jinak - k těm dotazníkům, co mi pokládali... Jeden měl asi 14 stran a ptali se tam i na takové otázky, jako jak si myslím, že bude hra oblíbená mezi holčičkami 10-12 let v Indii a podobně :D

Ale jinak to zkusit můžeš... Stačí jim napsat na ten jejich mail. Jen se obrň velkou trpělivostí... A měj připravenou kvalitní hru, vč. screenshotů, ukázkového traileru, odpovědí na otázky typu "podrobně nám popište hlavní zajímavé zvraty ve hře a jakými na hráče budou působit emocemi"... No, rozhodně zajímavá zkušenost :)

Jinak, jestli sis všimnul, na WP Marketplace se teď změnilo řazení u nových aplikací... Je to spíš "new and noteworthy", než jen čistě new. Některé hry tam visí klidně dva týdny a mají i stovky hodnocení, určitě dost stažení. Tohle by teď mohla být zajímavá příležitost... Vydat hru a zkusit co nejrychleji nahnat stahovanost pomocí článků na webu atd. Taky se teď o to budu pokoušet, dokončuji novou verzi Glow Arkanoidu a konečně i mobilní verzi nových HexaLines...

Jestli budeš mít jakékoliv poznatky, budu za ně rád.

kpetanek
nováček
nováček
Příspěvky: 12
Registrován: ned led 22, 2012 20:02
Zařízení: iPhone 3G

Vysoké rozlišení u XNA hry na WP8

Příspěvek od kpetanek » ned pro 30, 2012 17:11

Díky, určitě dám vědět jak pochodím. Mě Magic Frogs nechválili, že prý "Neočekávaně padala na HTC 8X" kvůli rozlišení. A v tu dobu jsem měl jen Windows 7 a tedy žádné SDK8 a tak mám vlastně už 2 měsíce zbytečně bylvojářskou licenci. Na druhou stranu, byla ve slevě za 8$... Jinak koukni na to prezentační video s moji sestrou. Podobný je snad jen Frogger a to poměrně vzdáleně.

Uživatelský avatar
Tomáš Slavíček
častý přispěvatel
častý přispěvatel
Příspěvky: 264
Registrován: stř srp 19, 2009 7:09
Zařízení: Nexus 5, Galaxy S3, Nokia X, iPad mini

Vysoké rozlišení u XNA hry na WP8

Příspěvek od Tomáš Slavíček » ned pro 30, 2012 17:50

Na sestru už jsem koukal :) Jako nápad super. To video bylo ale docela dlouhé, z té hry tam také nebylo moc ukázáno. Docela rušila hlasitá hudba (nebylo moc rozumět)... A hlavně to nebylo namluvené v angličtině.

Ale jinak provedení pěkné. Jen to zkrátit na cca 1 min (max. 1:30), klidně tam na chvíli ukázat tu hru přes celou obrazovku, doplnit třeba i nějaké nápisy hlavních vlastností (jako "online skóre", "30 levelů a 20 achievementů", "originální gameplay")...

S tím neočekávaným padáním na HTC 8X... To si prostě neumím vysvětlit, co tam vyvádí. Měla být zaručena absolutní kompatibilita aplikací z WP7 na WP8 (ale např. moje Handwrite Notes se také zobrazují špatně). No, je pravda, že kvůli kompatibilitě WP8 bylo prý dokonce skryto z marketplace asi 15 Xbox Live her.

kpetanek
nováček
nováček
Příspěvky: 12
Registrován: ned led 22, 2012 20:02
Zařízení: iPhone 3G

Vysoké rozlišení u XNA hry na WP8

Příspěvek od kpetanek » ned pro 30, 2012 18:04

Jojo. Lepší video bude. Jak prezentační tak trailer. To víš. Dělalo se s rannou verzí hry a pak to moc nejde. Doufám že pak tady někdo udělá i recenzi. :) Určitě to budu chtít prosadit i v zahraničí... (WPCentral,...)

kpetanek
nováček
nováček
Příspěvky: 12
Registrován: ned led 22, 2012 20:02
Zařízení: iPhone 3G

Vysoké rozlišení u XNA hry na WP8

Příspěvek od kpetanek » ned pro 30, 2012 21:31

Tak funguje to skvěle, ale taková drobnost... nedaří se mi změnit orientaci displeje... Změna v GamePage.xaml, ani PrefferedBackBuffer, ani graphics.SupportedOrientations nezabrali... Nevíš co s tím?

Uživatelský avatar
Tomáš Slavíček
častý přispěvatel
častý přispěvatel
Příspěvky: 264
Registrován: stř srp 19, 2009 7:09
Zařízení: Nexus 5, Galaxy S3, Nokia X, iPad mini

Vysoké rozlišení u XNA hry na WP8

Příspěvek od Tomáš Slavíček » ned pro 30, 2012 21:55

Nestačí jen prohodit hodnoty PreferredBackBufferWidth a Height? Na Androidu i Win8 mi to chodí... Možná snad, jestli nebude potřeba ještě něco přepnout v properties projektu, příp. v tom XAML souboru. Můžeš jim kdyžtak zkusit napsat na fórum MonoGame (nebo na jejich Twitter), poradí ti.

kpetanek
nováček
nováček
Příspěvky: 12
Registrován: ned led 22, 2012 20:02
Zařízení: iPhone 3G

Vysoké rozlišení u XNA hry na WP8

Příspěvek od kpetanek » pon pro 31, 2012 11:40

Nestačí, nehne se to...

kpetanek
nováček
nováček
Příspěvky: 12
Registrován: ned led 22, 2012 20:02
Zařízení: iPhone 3G

Vysoké rozlišení u XNA hry na WP8

Příspěvek od kpetanek » pon pro 31, 2012 13:04

Asi budu muset "prasácky" vykreslovat vše z boku... Ale nejprve udělám W8 verzi asi. Pokud něco zjistíš, budu rád.

Uživatelský avatar
Tomáš Slavíček
častý přispěvatel
častý přispěvatel
Příspěvky: 264
Registrován: stř srp 19, 2009 7:09
Zařízení: Nexus 5, Galaxy S3, Nokia X, iPad mini

Vysoké rozlišení u XNA hry na WP8

Příspěvek od Tomáš Slavíček » pon pro 31, 2012 15:09

No, "vykreslovat vše z boku"... To už jsem od pár vývojářů slyšel a pěkně se jim to nevyplatilo :) Hodně práce, užitek malý. Jedině, že bys všechno normálně vykresloval do nějaké textury a pak ji jen otočeně vykreslil (nenapadá mě teď rychlé řešení). Ale každý obrázek zvlášť otáčet, každé posuzování kolizí dělat extra... To ti akorát znepřehlední kód.

Zkus jim ještě napsat, příp. jim to přímo zadat jako issue na GIT. Určitě ti odpoví, takhle by se MonoGame standardně chovat nemělo.

kpetanek
nováček
nováček
Příspěvky: 12
Registrován: ned led 22, 2012 20:02
Zařízení: iPhone 3G

Vysoké rozlišení u XNA hry na WP8

Příspěvek od kpetanek » čtv led 03, 2013 17:28

Tak jsem se po delším zamyšlení nakonec rozhodl hru přepsat do Silverlightu... :)
Jen jestli můžu mít ještě odázku, jak jsi udělal on-line skóre v Galaxy Jet? Taky chci do hry přidat on-line žebříček, jen nevím jak na to? Přes FTP? Hledal jsem návody na FTP na WP, ale zdá se jej nepodporuje?

Uživatelský avatar
Tomáš Slavíček
častý přispěvatel
častý přispěvatel
Příspěvky: 264
Registrován: stř srp 19, 2009 7:09
Zařízení: Nexus 5, Galaxy S3, Nokia X, iPad mini

Vysoké rozlišení u XNA hry na WP8

Příspěvek od Tomáš Slavíček » čtv led 03, 2013 18:37

No, do Silverlightu... Do další mrtvé technologie :grin:

Online skóre v Galaxy Jet (a ve hře Glow Arkanoid) mám řešené přes službu http://mogade.com. Bohužel ta služba už nejde použít na nové hry, byla uzavřena. Je možné si ale stáhnout zdrojáky a nasadit si to na vlastní server.

Obecně na online skóre bych využil už nějakou hotovou službu, nepsal bych se s tím od začátku (je s tím moc práce, musíš platit server atd.). Aktuálně funkční služba je např. http://scoreloop.com (je také zdarma). Můžeš se na to podívat a zkusit to využít (jen pozor v případě Scoreloopu, kdybys chtěl portovat hru do MonoGame na Android, tak pro MonoDroid ještě nemají knihovny a udělat wrapper není moc jednoduché).

Odpovědět

Zpět na „XNA“

Kdo je online

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