Четверг, 26 Декабря 2024, 10:49

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Появляется видимая сетка между тайлами
Raven84Дата: Суббота, 09 Мая 2015, 15:28 | Сообщение # 1
старожил
Сейчас нет на сайте
Вообщем суть такова. Посмотрите на скриншот.

Как видно со скриншота, между тайлами возникают пробелы в виде горизонтальных и иногда вертикальных полос. Дефект появляется только в HTML5-версии. В Windows-версии такой проблемы нет. Как выяснилось дефект выявляется только при зуме или движении вида в игре. Погуглив в Интернете нашел статью описывающую причину возникновения и способ ее устранения.
Ссылка на статью на английском
В этой статье (хочу заметить с официального сайта) предлагается в ручную к каждому тайлу пририсовать во все 4-е стороны повторяющиеся пиксели. Чтобы не делать этого в ручную я даже нашел программу Tileset Champion (она все дорисовывает автоматически).
И теперь мне в почти готовой игре нужно поменять сами тайлсеты на измененные (с пририсованными пикселями) и заново с помощью них отрисовать все уровни! wacko

Проблема чисто техническая и на всех Англоязычных форумах она датируется 2012-м годом. С тех пор вышло множество обновлений для GMS. Так вот вопрос: можно ли избежать всей этой каши, что я описал выше и исправить проблемму внутренними средствами, т.к. на одном из форумов заикались, что выйдет обновление для GMS, исправляющее этот баг. Может где-то в настройках нужно что-то изменить или еще что-то? Мои поиски не увенчались успехом. А только добавили для меня кучу новых вопросов,т.к. в настройках столкнулся с непонятными для меня опциями. К примеру, так и не понял для чего нужны галочки в настройках спрайта Texture Settings (Tile:Horizontal,Tile:Vertical и Used for 3D)?


Super Knight Story (в разработке)
Idolzzz - игра доступна в Steam и Play Market
Oliver's Adventures in the Fairyland


Сообщение отредактировал Raven84 - Суббота, 09 Мая 2015, 15:30
YellowAfterlifeДата: Суббота, 09 Мая 2015, 19:41 | Сообщение # 2
Сейчас нет на сайте
Факт того, что видны лишь вертикальные "зазоры", вызывает у меня вопрос - округлены ли координаты вида? Если изображения рисуются на дробных координатах, зачастую "стыкуются" они не очень хорошо.
Если это не помогает, для избежания перестановки тайлов на уровнях можно на старте комнаты пройтись по всем "клеткам" с помощью tile_layer_find, и поменять им координаты в фоне (tile_set_region) для соответствия правкам Tileset Champion.
Другое решение - нарисовать все интересующие тайлы на поверхность, и рисовать на экран уже ее. На HTML5 это так же неплохо помогает с производительностью, но трюк нужно повторять при движении камеры (когда на экране должна появится пока еще не нарисованная в поверхность полоска тайлов).
Tile:Horizontal, Tile:Vertical на спрайтах делают вещи аналогичные действиям Tileset Champion для тайлов - они определяют, каким образом будут добавлены "рамки" вокруг изображений в странице текстур для избежания наблюдаемых глюков. "Use for 3D" дает изображению отдельную страницу текстур (это полезно лишь для непосредственного 3D, где может возникнуть потребность рисовать замощенную текстуру).


rgs_hakerДата: Суббота, 09 Мая 2015, 22:19 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Цитата Raven84 ()
Ссылка на статью на английском

И еще из справки Designing Tiles


_____
Raven84Дата: Суббота, 09 Мая 2015, 23:52 | Сообщение # 4
старожил
Сейчас нет на сайте
YellowAfterlife,
Цитата
Tile:Horizontal, Tile:Vertical на спрайтах делают вещи аналогичные действиям Tileset Champion для тайлов - они определяют, каким образом будут добавлены "рамки" вокруг изображений в странице текстур для избежания наблюдаемых глюков.

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


Super Knight Story (в разработке)
Idolzzz - игра доступна в Steam и Play Market
Oliver's Adventures in the Fairyland


Сообщение отредактировал Raven84 - Суббота, 09 Мая 2015, 23:53
YellowAfterlifeДата: Воскресенье, 10 Мая 2015, 10:18 | Сообщение # 5
Сейчас нет на сайте
Цитата Raven84 ()
Почему-то так и подумал. Тогда возникает вопрос: почему эта штука не работает, а ручная дорисовка даёт положительный эффект?

Потому что tile:* добавляет "рамки" вокруг фона в целом, а не отдельных тайлов в нем. Если бы каждый тайл был отдельным фоном, это бы помогло.
`Global Game Settings - /HTML5\ - /Graphics\ - /Texture Pages\ - [Preview]` чтобы посмотреть на генерируемую страницу текстур.


Raven84Дата: Воскресенье, 10 Мая 2015, 13:14 | Сообщение # 6
старожил
Сейчас нет на сайте
YellowAfterlife,
Цитата
Потому что tile:* добавляет "рамки" вокруг фона в целом, а не отдельных тайлов в нем.

Ну я так и предполагал. Тогда смысл в этих функциях я вообще не вижу.
Цитата
Факт того, что видны лишь вертикальные "зазоры", вызывает у меня вопрос - округлены ли координаты вида?

Ну линии не только вертикальные, но и горизонтальные. Все зависит от направления движения вида (вверх-вниз или влево-вправо). По поводу координат, тут скорее всего они дробные,т.к. вид следит за статуей, а она в свою очередь передвигается явно по дробным координатам. Но если сделать целыми, то движение вида будет заметными рывками, разве нет?
Спасибо за советы, но все же думаю прийдется все делать руками. wacko

Кстати, вы смотрю очень хорошо подкованы в знаниях GMS. Может сразу подскажете зачем нужны Texture Pages (или как их там). Зачем нужно разбивать, нужно ли вообще, на сколько влияет на производительность и т.д. Вкратце так сказать. Поверхностно я понимаю, но не до конца. У меня все спрайты, бэкграунды и прочее стоят на одной странице default. Ее размер около 2000*2000. При том что есть около 3-4 бэков которые уже в совокупности превышают этот размер полотна, а у меня еще и куча спрайтов. Но игра работает. И нормально вроде. Критично ли это? Какие могут возникнуть подводные камни так сказать?


Super Knight Story (в разработке)
Idolzzz - игра доступна в Steam и Play Market
Oliver's Adventures in the Fairyland
LunarPixelДата: Воскресенье, 10 Мая 2015, 14:04 | Сообщение # 7
старожил
Сейчас нет на сайте
Raven84, Грубо говоря, работает это так: вся графика в игре хранится на этих самых текстурных листах. Когда размеры контента превышают размеры листа (как в твоем случае), то создается новый лист и таких листов может быть сколько угодно, в зависимости от объемов контента. Когда требуется тот или иной графический элемент, эти текстурные листы подгружаются и перебираются, в поисках нужного элемента. Не факт, что все необходимые элементы будут на одном листе, так что листы грузятся и грузятся, пока вся нужная графика не будет найдена. Texture Pages осмысленно разделяет графику по разным листам, тем самым позволяя не забивать память неиспользуемой в данный момент графикой. Есть у тебя, например, графика для меню, которая больше нигде не используется. Заводишь для нее отдельную группу в текстурных листах и теперь, во время появления меню, у тебя не будут перебираться все листы с ненужной в данный момент графикой, так как теперь четко указано, где весь необходимый контент находится. Для оптимизации весьма полезная штука, советую использовать.

Raven84Дата: Воскресенье, 10 Мая 2015, 14:17 | Сообщение # 8
старожил
Сейчас нет на сайте
LunarPixel, Короче смысл в том, чтобы к примеру в каждом отдельно взятом уровне (экране) использовать свой лист с определенным набором спрайтов, используемых только там (для самой оптимальной работы).
Но опять же вопрос: если к примеру спрайты и бэки того же меню у меня помещены на один отдельно взятый текстурный лист, а он все равно не умещает все в себе,то GMS автоматически создаст второй лист и переместит все на него? Тогда "перебирание" этих самых листов в одном лишь меню все равно будет происходить? Т.е. обязательно нужно учитывать размер всех спрайтов и бэков и выставлять размер этого самого полотна так, чтобы он вмещал их все в себя, иначе смысла не будет?
На сколько это вообще может повысить производительность? Ощутимо ли? И если это самое полотно намного больше по размеру, чем входящие в него спрайты (т.е. остается много свободного пространства с альфа-каналом)? Это отрицательно скажется на производительности? Или откровенно говоря по фиг? Так же кол-во этих самых текстурных листов как влияет? Где-то в справке я вроде мельком видел, что не всегда полезно иметь несколько листов и это может сыграть не в пользу.


Super Knight Story (в разработке)
Idolzzz - игра доступна в Steam и Play Market
Oliver's Adventures in the Fairyland


Сообщение отредактировал Raven84 - Воскресенье, 10 Мая 2015, 14:17
LunarPixelДата: Воскресенье, 10 Мая 2015, 14:59 | Сообщение # 9
старожил
Сейчас нет на сайте
Raven84, да, если ты создал группу, определил туда графику, но она на один лист не помещается, то создается еще один, в той же группе. Суть в том, что без группы у тебя может быть десяток таких листов и все их нужно будет перебрать, а с группой будет, скажем, только 2. Так что размеры учитывать не обязательно, чтобы под один лист подстроить, смысл в делении на группы все равно будет и большой.

Но, само собой, если учесть размеры листа и графики, и умудриться сократить количество листов - то это плюс. Чем больше листов и чем больше эти листы, тем больше затрачивается ресурсов. Если вся графика умещается на 1-2 листа, то большого смысла в ее разделении на группы нет, но если графики много, и, как следствие, много листов, то деление на группы, иногда, может быть даже критичным моментом. У меня доходило до того, что без деления на группы игра тупо вылетала на мобильном девайсе, так как тот был не в состоянии все листы просматривать.


  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг