Comments 9
Хитро.
вероятно я буду странно звучать, но каким образом красная копия вашего здания помогает вам определять кто выше кто ниже? из статьи я это не уловил
а, это перевод, игра не поддерживает русский язык, тогда вопрос снимается.
Там не сплошной красный, а градиенты, чем темнее цвет, тем "ниже" пиксель
а если точнее, это вообще не красный.
В файле просто хранятся значения от 0 до 255, где 255 - максимальная высота.
Но так получилось, что хранить такую информацию в формате картинки удобно, т.к. можно ещё и визуально посмотреть, что там.
В большинстве графических форматов, цвета хранятся в виде RGBA каналов. В данном случае эта информация высоты просто хранится в красном канале (по этому на картинке она красная), но для игры "красный" ничего не значит. Там просто шейдер грузит данные с числами высоты и ими оперирует.
Проверка тоже элементарная, при рисовании каждого пикселя проверяется if newPixelHeight >= currentPixelHeight. (тут сравнивается как раз R канал с буфером кадра). Если условие прошло - рисуем. Если нет - игнорируем.
не совсем понятно как это сопоставляется с персонажем например и получается если у нас будет пересекаться в одной точке 488 текстур, то будет 488 сравнение происходить?
да, каждый из персонажей имеет свою спрайт-маску (картинку). Каждый пиксель спрайта имеет значение высоты (прочитанный из R канала). И каждый пиксель сравнивается с пикселем в буфере (который находится в том же самом месте).
Видеокарты это делают очень быстро, сотни миллионов таких вычислений можно спокойно делать 240 раз в секунду для 4k буфера.
Если я не ошибаюсь это называется Overlap.
Объекты могут накладываться друг на друга, как будто это почти 3D-модели или воксели.
В итоге ни то, ни другое, получились точки с цветом в 3д простаранстве, смотрящие на камеру под заранее выбранным углом, почему бы тогда сразу не сделать 3д?
Ни поворота камеры, ни зума не сделать.
Зачем так себя ограничивать, и с творческой точки зрения, и в техническом плане я решительно не понимаю.
Карты высот для пиксельной игры с видом сверху