Развитие игровой вспышки
Текущее время: Ср апр 25, 2018 4:34 pm

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Phaser. Как подружить ScaleMode.RESIZE и retina
СообщениеДобавлено: Сб июн 03, 2017 12:18 am 
Не в сети

Зарегистрирован: Вт июн 19, 2012 7:50 pm
Сообщений: 312
Откуда: UA
Делаю игру с динамическим канвасом (что бы он подстраивался под размер экрана и не было черных полос по бокам). Собственно ScaleMode.RESIZE работает неплохо, пока дело не доходит до телефонов с pixelRatio > 1 (айфоны с retina, андроиды с FullHD) картинка получается очень размытой. Может кто сталкивался с таким, какие есть варианты решения проблемы?

P.S. Пробовал вручную задавать физический размер канваса:
Код:
canvas.width = window.innerWidth * window.devicePixelRatio
, а растягивать его через CSS:
Код:
canvas.style.width = window.innerWidth + 'px'

Такой подход неплохо работает когда игра запускается на Phaser.CANVAS, но он костильный и не оптимален, и практически не работает с Phaser.WEBGL.


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Phaser. Как подружить ScaleMode.RESIZE и retina
СообщениеДобавлено: Сб июн 03, 2017 11:41 am 
Не в сети

Зарегистрирован: Пт дек 23, 2016 10:21 pm
Сообщений: 36
Вы наверное удивитесь, но уже сейчас, очень большое количество настольных мониторов и ноутбуков имеют ratio > 1.
И то что картинка выглядит ужасно, тоже нормально. Нужно создавать растровый контент под каждое ratio отдельно.


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Phaser. Как подружить ScaleMode.RESIZE и retina
СообщениеДобавлено: Сб июн 03, 2017 2:49 pm 
Не в сети

Зарегистрирован: Вт июн 19, 2012 7:50 pm
Сообщений: 312
Откуда: UA
Ivan писал(а):
Вы наверное удивитесь, но уже сейчас, очень большое количество настольных мониторов и ноутбуков имеют ratio > 1.
И то что картинка выглядит ужасно, тоже нормально. Нужно создавать растровый контент под каждое ratio отдельно.

Отдельно создавать контент - не самый приятный вариант. На createJS вполне реально было создать канвас размером, например, 1920x1080, и с помощью CSS подогнать его под размер экрана устройства, и выглядело это очень даже неплохо, почти без мыла. Это отлично работало всего с одним набором контента.


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Phaser. Как подружить ScaleMode.RESIZE и retina
СообщениеДобавлено: Сб июн 03, 2017 3:18 pm 
Не в сети

Зарегистрирован: Пт дек 23, 2016 10:21 pm
Сообщений: 36
ploska4 писал(а):
Ivan писал(а):
Вы наверное удивитесь, но уже сейчас, очень большое количество настольных мониторов и ноутбуков имеют ratio > 1.
И то что картинка выглядит ужасно, тоже нормально. Нужно создавать растровый контент под каждое ratio отдельно.

Отдельно создавать контент - не самый приятный вариант. На createJS вполне реально было создать канвас размером, например, 1920x1080, и с помощью CSS подогнать его под размер экрана устройства, и выглядело это очень даже неплохо, почти без мыла. Это отлично работало всего с одним набором контента.

Я не будут объяснять азы, (ведь здесь нет новичков?) а скажу лишь, что лично я альтернатив не знаю, а мой мозг не обладает такими способностями, чтобы взять просто и на вскидку рассчитать алгоритм масштабирования при разном соотношении и ответить возможно ли это вообще.
Ну а вообще существуют специальные инструменты, которые в мире js. Одно НО, они не имеют gui и работать с ними можно только на уровне кода, а уровень знания платформы должен быть выше среднего. Но наверняка у того же adobe есть что-то для этого случая, ведь задача более чем актуальная.


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Phaser. Как подружить ScaleMode.RESIZE и retina
СообщениеДобавлено: Сб июн 03, 2017 4:09 pm 
Не в сети

Зарегистрирован: Пт дек 23, 2016 10:21 pm
Сообщений: 36
Часто замечаю, что даю советы, как-будто сидящим рядом посвященным в тему людям. В этот раз так же :)
Забудьте о разном наборе контента, это для более-менее средних игр, которые созданы, как коммерческие.

Вам нужно почитать статьи о подготовке контента для игр и что случается при масштабировании и позиционировании. И нужно смотреть на реальных устройствах, а не на симуляторах.


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Phaser. Как подружить ScaleMode.RESIZE и retina
СообщениеДобавлено: Вс июн 04, 2017 4:07 pm 
Не в сети
Аватар пользователя

Зарегистрирован: Пн янв 09, 2017 8:44 pm
Сообщений: 151
ploska4 писал(а):
P.S. Пробовал вручную задавать физический размер канваса:
Код:
canvas.width = window.innerWidth * window.devicePixelRatio
, а растягивать его через CSS:
Код:
canvas.style.width = window.innerWidth + 'px'

Такой подход неплохо работает когда игра запускается на Phaser.CANVAS, но он костильный и не оптимален, и практически не работает с Phaser.WEBGL.


А какие с проблемы с WEBGL возникают?


Вернуться наверх
 Профиль Отправить e-mail  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB