PDA

Просмотр полной версии : Расскажите мне о тайлах



icebear
12.06.2006, 16:32
Я не знаю, подходящий ли это раздел, посему модераторы, передвинте, если не туда написал.

Расскажите мне о тайлах. Что такое, как построены, как используются, а ещё лучше тыкните в урл (чем больше тем лучше).

Заранее спасибо.

goblinish
13.06.2006, 09:20
Тайлы - это, видимо то, что используется в изометрических игрушках?

Яндекс отменили? а Гугл наверное тоже...
попробуй в нем tile+graphics, мож что и нароешь, я года три назад кучу материала накопал, вроде даже туториалы были

Surfin_Bird
13.06.2006, 10:18
Тайлы - это "кафельная плитка". Эдакие кирпичики, из которых строится уровень 2д (иногда - 3д) игры.
Возьмём конкретную игру - Гомер Симпсон В России. Типичный пример использования тайлов. Тайлы в ней - изображения MxN знакомест (вроде, 2х2).
Ещё тайловые игры: Into The Eagle's Nest, Чёрный Ворон, Марио, многочисленные демки JPRG, Fire'n'Ice... Короче - 90% спектрумских игр, и 90% 2д-шных игр вообще.
Тайлы бывают "зацикленные" и "обычные".
Зацикленные (бесшовные) - это такие, заполнив которыми площадь (поставив их рядом), не будет видно швов между ними. Например - тайл травы, или тайл стены.
Есть изомерические тайлы (ромбик 2х1), шестиугольные тайлы (для стратегий) и т.д.
Что ещё?:) Я о тайлах знаю много всего:) И за свою жизнь нарисовал их целую, блин, кучу и на спектруме и на пц.
На сайте gas13 есть вкусный переводной туториал по пиксельарту (конкретно - по "золотому веку" JRPG - там в начале - как раз про рисование тайлов.

icebear
13.06.2006, 12:56
Спасибо за ответы, но я не совсем то имел в виду. Я хочу узнать об их организации и использовании, а не о том, как их рисовать. Гугл ничего внятного на этот счёт не говорит (яндекс - отстой), посему вдруг какие доки у кого есть - буду премного благодарен.

rg_software
13.06.2006, 15:44
Всё равно слабо понятно, если честно. Тайл -- это самая обыкновенная картинка. BMP-шка прямоугольная, если угодно. А на спектруме... гм :) Наверно, кто как хотел хранить в памяти эту картинку, так и хранил ;)

newart
13.06.2006, 17:04
Спасибо за ответы, но я не совсем то имел в виду. Я хочу узнать об их организации и использовании, а не о том, как их рисовать. Гугл ничего внятного на этот счёт не говорит (яндекс - отстой), посему вдруг какие доки у кого есть - буду премного благодарен.
Читай доки по консолям, например GBA.

icebear
13.06.2006, 18:14
Читай доки по консолям, например GBA.

Где взять или хотя бы на какой предмет искать? Читал в своё время по Сеге - много думал.

ng_dead
14.06.2006, 12:30
Я хочу узнать об их организации и использовании, а не о том, как их рисовать.
На разных платформах они юзаются по разному. Ищи по "MegaDrive (любая другая платформа) programming (development)". На буржуйском - много инфы. На русском, соответственно - мало, но тоже можно наковырять.
Например: http://www.zophar.net/tech/files/gennotes.txt - достаточно толковое, "быстрое" описание SegaMD. В часности есть и о тайлах.

icebear
14.06.2006, 13:58
На разных платформах они юзаются по разному. Ищи по "MegaDrive (любая другая платформа) programming (development)". На буржуйском - много инфы. На русском, соответственно - мало, но тоже можно наковырять.
Например: http://www.zophar.net/tech/files/gennotes.txt - достаточно толковое, "быстрое" описание SegaMD. В часности есть и о тайлах.

Спасибо конечно, но именно по МегаДрайву мне с этого форума кто-то давал хороший документик. Я его не в курил. Гугл по запросу "tile" начинает рассказывать о построении вэб-страниц (есть наример такая вещь, как SiteMesh, так вот там тоже используют тайлы). Меня интересуют больше вопросы работы с тайлами в коде (т.е. как их используют разработчики игр) .

ng_dead
14.06.2006, 15:05
Меня интересуют больше вопросы работы с тайлами в коде (т.е. как их используют разработчики игр) .
Тебя похоже вводит в ступор термин "тайл". Объясню "на пальцах". Тайл - картинка, которая хранится в определенном формате. Они [тайлы] обычно объединяются в наборы. Например на Спеке в качестве набора тайлов часто используют перерисованые шрифты. Т.е. переисованый шрифт и есть набор тайлов, где один символ (8 на 8 пикселей) - тайл. Из них можно составлять спрайты, можно игровое поле рисовать (банально печатаем символы, хоть из Бейсика).
На Сеге - немного сложнее. Там размер тайла тоже 8х8 пикселей, но каждый пиксель представлен 4мя битами (16 цветов) т.о. строка пикселей (8 штук) - 4 байта, таких строк - 8, итого тайл занимает 32 байта. Далее составляется таблица тайлов (грубо: номер - адрес) где все тайлы пронумерованы, и таблица спрайтов где хранится информация о том из каких тайлов состоит спрайт (номера из таблицы тайлов). Есть там еще карта экрана (screen map) которую можно скроллировать аппаратно, которая также строится из номеров тайлов.

newart
14.06.2006, 15:24
Из них можно составлять спрайты, можно игровое поле рисовать (банально печатаем символы, хоть из Бейсика).
Имхо сила тайлов в том что их можно зеркалить в любом направлении, что они имеют палитру (следовательно легко и быстро делаются цветовые эффекты), перерисовка даже целой тайловой карты занимает очень мало тактов
(потайловый скроллинг дается почти даром).
Идеально когда карта тайлов (таблица их номеров) имеет несколько больший размер чем видимая область экрана.
Например на 16 пикселей шире и выше чем видимая область, и это поле имеет координаты 0-15 меняя которые и обновляя столбец или строку тайлов получается попиксельный фреймовый скролл, так сдалано на всех приставках.
На денди таким образом даже делали псевдо многослойность, по сути аналог спековского мультиколора, проц следит за лучем и после отрисвки по вертикали нужного колва тайлов (или даже пикселей) менял координаты карты, так в одном из Бэтменов сделано небо, на денди смотрелось очень эффектно.
А на сеге есть крутая игрушка про дельфина, ECCO так там таких извратов еще больше.
К сожалению почти все ранние консоли имели только тайловые экраны, а растровых не было. Из-за чего гонки, симуляторы да и просто 3D было реализовать крайне сложно, да и картинки, заставочные тоже приходилось резать на тайлы.
Также немаловажная особенность тайлов это экономие памяти, во первых за счет малого колва цветов (обычно <=16 на тайл), во вторых за счет наличия зеркальности.

demon_zx
14.06.2006, 16:54
тайл необязательно размером 8х8, он может быть любым, и банально это спрайт.
советую сходить по ссылке www.gamedev.ru

newart
15.06.2006, 00:11
тайл необязательно размером 8х8, он может быть любым, и банально это спрайт.
советую сходить по ссылке www.gamedev.ru
Самый убогий сайт по Геймдеву, удивляюсь что до сих пор жив. =)
Сидят там одни тридешники, в основном зеленые юнцы.

hi_soft
15.06.2006, 05:49
Имхо сила тайлов в том что их можно зеркалить в любом направлении, что они имеют палитру (следовательно легко и быстро делаются цветовые эффекты), перерисовка даже целой тайловой карты занимает очень мало тактов
(потайловый скроллинг дается почти даром).
Вот эдесь что то не понятно ..
перерисовка карты это как ??

к примеру на ПЦ под дос все экраны(разрешения) разделены на
видио стр. - речь об этом?

Я так же знаю что - Многие игры написаны сразу на 3 видео страницы..(тот же мега-мен на ПЦ и Olly & Lissa 1 на спектруме (если присмотреться то можно увидеть как нарисована картинка))
что весьма долго и муторно в плане всего..

Видио стр. и есть Тэйлы или это все же спрайты?
По англ. как это переводится(замостить?)

Прикол видео стр. в том что они быстро выводятся на экран..
Почти мгновенно в отличаи от вывода пикселей на видео страницу..

newart
15.06.2006, 08:18
к примеру на ПЦ под дос все экраны(разрешения) разделены на
видио стр. - речь об этом?
Нет, то о чем ты говоришь это буферизация.
Если проводить аналогию тайлов с технологиями ПЦ, то текстовый режим очень похож на тайловый экран (с минимумом возможностей).

Быстрота тайлов конечно заключается в первую очередь в том что их выводит на экран видеопроцессор, а обычный процессор работет уже не с байтами графики (данными спрайтов), а всеголишь с номерами тайлов (спрайтов).

ng_dead
15.06.2006, 10:32
Быстрота тайлов конечно заключается в первую очередь в том что их выводит на экран видеопроцессор, а обычный процессор работет уже не с байтами графики (данными спрайтов), а всеголишь с номерами тайлов (спрайтов).
Ты забыл добавить "специально обученный видеопроцессор" :) И относится это в основном к приставкам. На компах (где нет специально обученных видеопроцессоров, например на Спеке) с тайлами работают программно, поэтому грань между тайлом и спрайтом весьма тонка.

...или это все же спрайты?
Однако это [тайл и спрайт] разные вещи. Спрайт состоит из тайлов (может спрайт состоять из 1 тайла). Например на рисунке показан спрайт порезанный на тайлы.

newart
15.06.2006, 10:37
Ты забыл добавить "специально обученный видеопроцессор" И относится это в основном к приставкам. На компах (где нет специально обученных видеопроцессоров, например на Спеке) с тайлами работают программно, поэтому грань между тайлом и спрайтом весьма тонка. Однако это [тайл и спрайт] разные вещи. Спрайт состоит из тайлов (может спрайт состоять из 1 тайла). Например на рисунке показан спрайт порезанный на тайлы.
Если я правильно понял Icebearu интересна класическая реализация.
А спек, пц, мобилы это уже програмная эмуляция и термин тайлов тут приобретает очень условное значение.

icebear
15.06.2006, 12:56
Если я правильно понял Icebearu интересна класическая реализация.
А спек, пц, мобилы это уже програмная эмуляция и термин тайлов тут приобретает очень условное значение.

Ты меня правильно понял. Я уже нашёл один хороший сайт, правда по поводу написания игр на флэше, но там довольно нормально рассказывается о тайлах. Значит что я понял до сих пор, если неправильно, то пожалуйста поправьте:
- тайл - это одна картинка
- тайлы используются для ускорения работы с графикой, т.к. один и тот же тайл можно показывать в различных участках экрана, например при помощи всего одного тайла можно сделать поле травы, или кирпичики. Кстати, в ArtStudio кисти видать были построены по такому принципу (типа нарисовал круг, залил его кирпичиками).
- а качестве примерного описания тайлов можно например взять рамки из ДОСовского знакогенератора, при помощи которых оформлены NC, Far и подобные программы

Есть ещё пара вопросов - подвижные части экрана (типа главного героя игры и т.п.) можно также выполнить в виде тайлов. Но как происходит потом скроллирование таких тайлов?

ng_dead
15.06.2006, 14:02
Есть ещё пара вопросов - подвижные части экрана (типа главного героя игры и т.п.) можно также выполнить в виде тайлов. Но как происходит потом скроллирование таких тайлов?
На приставках за это дело берется видеопроцессор. Например, на Сеге определяем (в таблице спрайтов) из каких тайлов состоит спрайт, затем "говорим" видеопроцессору (через специальные регистры) переместить этот спрайт и он послушно его перемещает, проверяя заодно коллизии.
Там где нет аппаратных средств для этого (Спек), то приходится делать это "ручками". Скроллировать каждый тайл по отдельности.

icebear
15.06.2006, 14:04
На приставках за это дело берется видеопроцессор. Например, на Сеге определяем (в таблице спрайтов) из каких тайлов состоит спрайт, затем "говорим" видеопроцессору (через специальные регистры) переместить этот спрайт и он послушно его перемещает, проверяя заодно коллизии.
Там где нет аппаратных средств для этого (Спек), то приходится делать это "ручками".

Вот как раз в перемещении вопрос. Как перемещает, попиксельно? Т.е. каждый тайл имеет пиксельный координаты или всё-таки экран поделен на эдакий знакоместа?

ng_dead
15.06.2006, 14:18
Т.е. каждый тайл имеет пиксельный координаты или всё-таки экран поделен на эдакий знакоместа?
Экран поделен. На сеге это называется сеткой и там два режима (зависит от разрешения): 32х28 "клеток" (256х224 пикс.) и 40х28 (320х224 пикс.)
Но каждый спрайт имеет свои пиксельные координаты, они хранятся в таблице спрайтов.

icebear
15.06.2006, 14:27
Да именно экран поделен. На сеге это называется сеткой и там два режима (зависит от разрешения): 32х28 "клеток" (256х224 пикс.) и 40х28 (320х224 пикс.)

Тогда каждая клетка сетки хранит в себе номер тайла? Наоборот быть не может, тайл может использоваться в нескольких клетках сетки. Хорошо, вот допустим главный герой выполнен в виде одного тайла (самоё простое), находится в клетке (0,0). Как его передвинуть (скроллировать) попиксельно в клетку (1,0)?

ng_dead
15.06.2006, 15:30
Я тебя похоже запутал :) Спрайты к сетке не привязаны, у них абсолютные координаты. Т.о. чтобы передвинуть спрайт в другую позицию просто указываем ему другие координаты.
А фон (на Сеге есть три слоя background, lay A, lay B) привязан к сетке. Слои А и В можно скроллировать, независимо друг от друга, несмотря на то что они к сетке привязаны.

icebear
15.06.2006, 15:48
Я тебя похоже запутал :) Спрайты к сетке не привязаны, у них абсолютные координаты. Т.о. чтобы передвинуть спрайт в другую позицию просто указываем ему другие координаты.
А фон (на Сеге есть три слоя background, lay A, lay B) привязан к сетке. Слои А и В можно скроллировать, независимо друг от друга, несмотря на то что они к сетке привязаны.

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

ZEK
15.06.2006, 16:09
Может и запутал. Т.е. тайлы неподвижны и двигать их нельзя. Можно только сказать, что кусок экрана такой-то отображает картинку такую то, так? Про спрайты отдельно поговорим
Можно пару тайлов разместить их смежно рядом и скролить по пиксельно из одного тайла в другой

icebear
15.06.2006, 16:30
Можно пару тайлов разместить их смежно рядом и скролить по пиксельно из одного тайла в другой

Так тайлы подвижные или неподвижные?

ZEK
15.06.2006, 16:33
Так тайлы подвижные или неподвижные?
Не это знакоместа как в текстовых режимах, не видел прикол в нортоне делали бегущую строку попиксельно, выглядело прикольно если нортон был не руский

ng_dead
15.06.2006, 16:39
Можно только сказать, что кусок экрана такой-то отображает картинку такую то, так?
Да.

ng_dead
15.06.2006, 16:48
Так тайлы подвижные или неподвижные?
Спрайты - подвижные. Слои фона - подвижные. Тайлы - нет, не подвижные.
Это тоже самое, что построить дом на колесах из кирпичей, и говорить что кирпичи подвижные :) Они конечно двигаются, но мы же не двигаем каждый кирпич по отдельности... мы двигаем дом (фон, спрайт).

icebear
15.06.2006, 16:56
Да, но тайлы - это и есть фон по идее, или не так?

ng_dead
15.06.2006, 17:15
Да, но тайлы - это и есть фон по идее, или не так?
Нет, фон - состоит из тайлов. т.е. мухи отдельно - котлеты отдельно. Тайлы хранятся в одном поле памяти, прорисованная часть фона в другом (видеопамять).
Все операции по скроллингу происходят в видеопамяти и никак не затрагивают тайлы.

ZEK
15.06.2006, 17:18
Это тоже самое, что построить дом на колесах из кирпичей, и говорить что кирпичи подвижные
А если у тебя область отведенная под карту тайлов превышает физически то что на экран влазит, и ты задаеш окно которое на экран выводится.

Тут коректней выражение что координаты тайлов в пиксельном эквиваленте постоянны

ng_dead
15.06.2006, 17:36
Тут коректней выражение что координаты тайлов в пиксельном эквиваленте постоянны
Во! Точно! :)

hi_soft
16.06.2006, 05:21
Я понял сл.
пиксели это тоже тэйлы только маленькие..