1. Движение. Персонаж движется: в различных направлениях (платформер, например, или изометрия); при воздействии на него чего-либо (например, заклинания). Все эти варианты движений упаковываются в один спрайтишит?
2. Взаимодействие. Персонаж взаимодействует с другим персонажем, например, силовым приемом (много вариантов приемов).
Все эти варианты взаимодействий (приемов) упаковываются в один спрайтшит, отдельный от спрайтшита движения?
Взаимодействие реализуется выводом при столкновении: спрайтшит персонажа1 (ударяет рукой в область живота) - спрайтшит персонажа2 (сгибается, будто получил в живот)?
У каждого персонажа рисуются варианты воздействия на него всех приемов и все упаковываются в один спрайтшит?
Т.е. в итоге делаем:
Спрайтшит всех вариантов движений персонажа.
Спрайтшит всех вариантов воздействий на персонажа и воздействий персонажа на кого-то (варианты ударов).
loonypy
> Все эти варианты движений упаковываются в один спрайтишит?
Как удобно, так и упаковываются. Если упаковывать каждую анимацию в свой спрайтшит, то это немного
удобнее, т.к. достаточно просто пробежаться по спрайтшиту от начала до конца (или по индексам из описания).
Если упаковывать всё в один спрайтшит, то где-то придётся описывать или хардкодить какие диапазоны
индексов какой анимации соответствуют.
Чем кстати спрайтшиты делаешь ?
Hybernaculum
> Как удобно, так и упаковываются.
Что затратнее: подгружать на каждый вид движения свой спрайтшит либо перемещаться внутри единого и показывать диапазон соответствующих кадров? Из-за этого спрашивал.
Hybernaculum
> Чем кстати спрайтшиты делаешь ?
Пока только хочу попробовать. Решил во zwobtex делать, но оказалось, что он только под макось, нашел TexturePacker, думаю в нем.
з.ы. т.к. в теме не разбираюсь, то будут еще вопросы про разрешение, размер, взаимодействие и технические - о том, в какой объект подгружать.
loonypy
>Что затратнее: подгружать на каждый вид движения свой спрайтшит
>либо перемещаться внутри единого и показывать
>диапазон соответствующих кадров? Из-за этого спрашивал.
Лучше перемещаться внутри единого, вместо большего числа отдельных т.к. будет меньше переключений текстур.
Желательно еще делать спрайтшит размером степени двойки.
> Лучше перемещаться внутри единого, вместо большего числа отдельных т.к. будет меньше переключений текстур.
Это сильно зависит от ....
Например, вряд ли у тебя в кадре будет 100500 г/г (чар игрока), да ещё и с разными фреймами анимации. А меньший размер текстур, вроде как == больше кэш-попаданий (актуально для дохлых видюх).
slava_mib
Согласен. Для 2d игр спрайтшиты размером 1024*1024 будет достаточно.
slava_mib
> Это сильно зависит от ....
Я пока в этом ничего не понимаю - по какому "чеклисту" мне определять, какой способ выбрать?
VIP_Artemka
> спрайтшиты размером 1024*1024
При масштабировании до разрешения ретины - нормально будет?
loonypy
>по какому "чеклисту" мне определять, какой способ выбрать?
Например, может зависеть от устройства на котором запускается игра, так у iPhone ограничение 1024*1024
>При масштабировании до разрешения ретины - нормально будет?
А зачем масштабировать? Можно отрисовывать лишь необходимую часть или не добавлять полноэкраннын изображения в спрайтшит.
Готов получить гнилыми помидорами, но выбора нет, т.к. без чьего-либо терпеливого разьяснения я так и не выкарабкаюсь на уровень "знаю, что делать".
Итак, по предыдущим ответам: почти ничего не понял. :)
Что такое размер спрайтшита? Почему должен быть кратен 2? Имеет ли размер текстур отношение к размеру спрайтшита? Что такое кэш-попаданий?
> Что такое размер спрайтшита?
Размер текстуры, в которой находятся спрайты.
> Почему должен быть кратен 2?
Потому что если размер текстуры не картен степени 2, то могут быть косяки.
> Имеет ли размер текстур отношение к размеру спрайтшита?
Спрайтшит == текстура, в которой находятся сразу несколько спрайтов, а не один
> Что такое кэш-попаданий?
Как работает кэш процессора?
loonypy
> Почему должен быть кратен 2
Речь о степенях 2-ки, - 1,2,4,8,16,32,64,128,256,512,1024,2048 . Как выше сказали, возможные косяки, из-за особенностей реализации графических процессоров на аппаратном уровне, если размер текстуры будет отличаться. Хотя некоторые (большинство дискретных и малая часть встроенных) видеокарты и поддерживают NPOT текстуры. Так же требование к размеру текстуры, как степени двойки обусловлено применением для mip mapping'а пирамидальных текстур.
loonypy
> Имеет ли размер текстур отношение к размеру спрайтшита?
Должен быть меньше либо равен. Можно в одну текстуру вложить несколько "спрайтшитов", что в ряде случаев приведет к уменьшению накладных расходов.
Тема в архиве.