ПрограммированиеФорумОбщее

Вопросы про sprite sheet.

#0
21:07, 11 мая 2012

1. Движение. Персонаж движется: в различных направлениях (платформер, например, или изометрия); при воздействии на него чего-либо (например, заклинания). Все эти варианты движений упаковываются в один спрайтишит?

2. Взаимодействие. Персонаж взаимодействует с другим персонажем, например, силовым приемом (много вариантов приемов).
Все эти варианты взаимодействий (приемов) упаковываются в один спрайтшит, отдельный от спрайтшита движения?
Взаимодействие реализуется выводом при столкновении: спрайтшит персонажа1 (ударяет рукой в область живота) - спрайтшит персонажа2 (сгибается, будто получил в живот)?
У каждого персонажа рисуются варианты воздействия на него всех приемов и все упаковываются в один спрайтшит?

Т.е. в итоге делаем:
Спрайтшит всех вариантов движений персонажа.
Спрайтшит всех вариантов воздействий на персонажа и воздействий персонажа на кого-то (варианты ударов).

#1
21:58, 11 мая 2012

loonypy
> Все эти варианты движений упаковываются в один спрайтишит?
Как удобно, так и упаковываются. Если упаковывать каждую анимацию в свой спрайтшит, то это немного
удобнее, т.к. достаточно просто пробежаться по спрайтшиту от начала до конца (или по индексам из описания).
Если упаковывать всё в один спрайтшит, то где-то придётся описывать или хардкодить какие диапазоны
индексов какой анимации соответствуют.
Чем кстати спрайтшиты делаешь ?

#2
19:53, 12 мая 2012

Hybernaculum
> Как удобно, так и упаковываются.
Что затратнее: подгружать на каждый вид движения свой спрайтшит либо перемещаться внутри единого и показывать диапазон соответствующих кадров? Из-за этого спрашивал.

Hybernaculum
> Чем кстати спрайтшиты делаешь ?
Пока только хочу попробовать. Решил во zwobtex делать, но оказалось, что он только под макось, нашел TexturePacker, думаю в нем.


з.ы. т.к. в теме не разбираюсь, то будут еще вопросы про разрешение, размер, взаимодействие и технические - о том, в какой объект подгружать.

#3
20:05, 12 мая 2012

loonypy
>Что затратнее: подгружать на каждый вид движения свой спрайтшит
>либо перемещаться внутри единого и показывать
>диапазон соответствующих кадров? Из-за этого спрашивал.
Лучше перемещаться внутри единого, вместо большего числа отдельных т.к. будет меньше переключений текстур.
Желательно еще делать спрайтшит размером степени двойки.

#4
3:24, 13 мая 2012

> Лучше перемещаться внутри единого, вместо большего числа отдельных т.к. будет меньше переключений текстур.
Это сильно зависит от ....

Например, вряд ли у тебя в кадре будет 100500 г/г (чар игрока), да ещё и с разными фреймами анимации. А меньший размер текстур, вроде как == больше кэш-попаданий (актуально для дохлых видюх).

#5
7:46, 13 мая 2012

slava_mib
Согласен. Для 2d игр  спрайтшиты размером 1024*1024 будет достаточно.

#6
12:53, 13 мая 2012

slava_mib
> Это сильно зависит от ....
Я пока в этом ничего не понимаю - по какому "чеклисту" мне определять, какой способ выбрать?

VIP_Artemka
> спрайтшиты размером 1024*1024
При масштабировании до разрешения ретины - нормально будет?

#7
13:34, 13 мая 2012

loonypy
>по какому "чеклисту" мне определять, какой способ выбрать?
Например, может зависеть от устройства на котором запускается игра, так у iPhone ограничение 1024*1024

>При масштабировании до разрешения ретины - нормально будет?
А зачем масштабировать? Можно отрисовывать лишь необходимую часть или не добавлять полноэкраннын изображения в спрайтшит.

#8
16:14, 21 мая 2012

Готов получить гнилыми помидорами, но выбора нет, т.к. без чьего-либо терпеливого разьяснения я так и не выкарабкаюсь на уровень "знаю, что делать".
Итак, по предыдущим ответам: почти ничего не понял. :)

Что такое размер спрайтшита? Почему должен быть кратен 2? Имеет ли размер текстур отношение к размеру спрайтшита? Что такое кэш-попаданий?

#9
16:32, 21 мая 2012

> Что такое размер спрайтшита?
Размер текстуры, в которой находятся спрайты.

> Почему должен быть кратен 2?
Потому что если размер текстуры не картен степени 2, то могут быть косяки.

> Имеет ли размер текстур отношение к размеру спрайтшита?
Спрайтшит == текстура, в которой находятся сразу несколько спрайтов, а не один

> Что такое кэш-попаданий?
Как работает кэш процессора?

#10
19:59, 21 мая 2012

loonypy
> Почему должен быть кратен 2

Речь о степенях 2-ки, - 1,2,4,8,16,32,64,128,256,512,1024,2048  .  Как выше сказали,  возможные косяки, из-за особенностей реализации графических процессоров на аппаратном уровне, если размер текстуры будет отличаться. Хотя некоторые (большинство дискретных и малая часть встроенных) видеокарты и поддерживают NPOT текстуры. Так же требование к размеру текстуры, как степени двойки обусловлено применением для mip mapping'а пирамидальных текстур.

loonypy
> Имеет ли размер текстур отношение к размеру спрайтшита?

Должен быть меньше либо равен. Можно в одну текстуру вложить несколько "спрайтшитов", что в ряде случаев приведет к уменьшению накладных расходов.

ПрограммированиеФорумОбщее

Тема в архиве.