Всього залишено коментарів: 7

Alex
Грудень 3, 2014 о 14:32

Гарна стаття.
Ярославе, а як оптимізовувати ситуацію коли використовується чистий растр в ігровій анімації (png – сиквенції)? Мається на увазі те, що графіка трохи “дрижить” та якщо придивитись видно пікселі.

Ярослав Федорак
Грудень 3, 2014 о 15:21

Я ніколи не використовува традиційні атласи та секвенції, тому навряд чи можу бути достатьно компетентним у цьому питанні, але, наскільки мені відомо, дрижання виникає через те, що растр не передбачає використання дробових чисел для позиціонування на сцені. Особливо це помітно при повільному русі об’єктів (об’єкт скаче між пікселями, а проміжні положення не відображаються).

Один з виходів – зробити так, щоб об’єкти в кожен момент позиціонувалися виключно з цілим значенням пікселів. Тоді дрижання не повинно бути.

Пікселі, в свою чергу, видно тоді, коли ми намагаємося змінювати кут чи розмір оригінального растрового зображення. У деяких випадках допомагає згладжування (для об’єктів bitmap його можна вмикнути через код, а щодо png-зображень – не знаю). Але згладжування не є панацеєю, оскільки воно “замилює” картинку. Єдиний вихід – кешувати проміжні положення при поворотах та зміні розміру.

У наступній статті я постараюся розповісти про кешування анімацій, можливо, це дасть відповідь на деякі Ваші запитання.

Виталий
Грудень 3, 2014 о 22:51

Привет! По растеризации есть хорошие материалы у Антона Карлова. У него же, если я не ошибаюсь есть класс для растеризации мувиклипов.

Ярослав Федорак
Грудень 4, 2014 о 10:44

Звичайно, я знаю про блог Антона Карлова. Саме в нього і вчився! )

Олександр
Грудень 11, 2014 о 14:58

Дякую за статтю. Для мене вона дуже корисна.. хотілося б ще прочитати статтю про пул об”єктів, думаю ця тема буде цікава для багатьох.

Ярослав Федорак
Грудень 12, 2014 о 13:28

Пул об’єктів реалізований у багатьох ігрових двигунах, але, чесно кажучи, я поки-що не бачу про що там писати цілу статтю. Якщо коротко, то суть в тому, що при завантаженні Ви створюєте типізовані масиви (Vector) із ігровими об’єктами, які будуть часто використовуватися. І коли об’єкт знадобиться у грі – Ви просто берете його із масиву, замість того щоб створювати новий. Коли об’єкт більше не потрібен – Ви повертаєте його у масив.

Нові об’єкти створюються тільки в тому випадку, якщо Ви вичерпали всі запаси із масиву.

Богдан
Грудень 15, 2015 о 10:38

Еще про пул хочу добавить, то что Ярослав не дописал.

Суть данных манипуляций заключается в том что бы просо, оставить ссылку на объект, для того – чтобы Сборщик мусора не захотел его удалить. Просто манипуляции с ссылками на нужный объект.

Поділіться своєю думкою