Проблема с отрисовкой тайлов.

Темы, связанные с проектированием и программированием roguelike-игр

Модераторы: Sanja, Максим Кич

Ответить
gil00
Сообщения: 8
Зарегистрирован: 06 май 2020, 09:09

Проблема с отрисовкой тайлов.

Сообщение gil00 » 06 май 2020, 09:33

Доброго времени суток!

Скачал один тайлсет, решил его попробовать, сделав из тайлов фигурку, которую вы можете видеть ниже.
Скрытый текст: ПОКАЗАТЬ
Скрин1.png
Скрин1.png (54.04 КБ) 8495 просмотров
И там же вы можете увидеть, что на концах между столбцами появляются швы, которые портят картинку, хотя в центре все гладко и никаких швов нет. Рисовал фором, смещение, естественно, везде одинаковое.

Высылаю также отдельную плитку, там тоже никаких лишних линий нет.
Скрытый текст: ПОКАЗАТЬ
Скрин.png
Плитка
Скрин.png (5.6 КБ) 8495 просмотров
Буду благодарен, если кто-нибудь поможет мне с этим разобраться.

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: Проблема с отрисовкой тайлов.

Сообщение Apromix » 06 май 2020, 09:59

Думаю проблема в тайле. Может масштабирование? А если взять другой тайл? Можно глянуть код? Каков размер тайла в пикселях?

gil00
Сообщения: 8
Зарегистрирован: 06 май 2020, 09:09

Re: Проблема с отрисовкой тайлов.

Сообщение gil00 » 06 май 2020, 11:22

Прошу извинения за индусский код, писал на скорую руку, постараюсь сделать максмально понятным;

Код: Выделить всё

y = 25
col = 1
#Цикл для верхней части
for j in range(10):
    x = int(1080 / 2 - col * 16)+j
    for i in range(col):
     	#Отрисовка на позиции (x,720-y). Кокос почему-то использует декартову систему координат (y=0 внизу),
     	#поэтому и 720-y.
        sprite = cocos.sprite.Sprite('resources/tiles/dungeon_tile1.png',rotation=0,position=(x,720-y))
        scene1.add(sprite)
        x += 31
    y += 27
    col += 2 #Кол-во тайлов в ряду.
    
#Цикл для нижней части
for j in range(11):
    x = int(1080 / 2 - col * 16)+(9-j) 
    for i in range(col):
        sprite = cocos.sprite.Sprite('resources/tiles/dungeon_tile1.png',rotation=0,position=(x,720-y))
        scene1.add(sprite)
        x += 31
    y += 27
    col -= 2
На механизм построения фигуры не обращайте внимание, ибо с банальной линией из тайлов такой же косяк. Суть вот в чем: смещение по иксу - 31, по игреку - 27, размеры верхней части тайла (без висюлек, только крышка) - 32х28 (я знаю, что лучше бы его сделать квадратным, но сомневаюсь,что это поправит проблему). Как-то так.

gil00
Сообщения: 8
Зарегистрирован: 06 май 2020, 09:09

Re: Проблема с отрисовкой тайлов.

Сообщение gil00 » 06 май 2020, 11:37

Apromix писал(а):
06 май 2020, 09:59
А если взять другой тайл?
Ничего хорошего. Взял простейший тайл травички (48х48) из другого тайлсета (48х48):
grass-tile.png
grass-tile.png (2.11 КБ) 8482 просмотра
Двумя вложенными циклами

Код: Выделить всё

y = 250
for j in range(10):
    x = 250
    for i in range(10):
        sprite = cocos.sprite.Sprite('resources/tiles/grass-tile.png',rotation=0,position=(x,720-y))
        scene1.add(sprite)
        x += 47
    y += 47
нарисовал прямоугольничек:
Скрытый текст: ПОКАЗАТЬ
Скрин.png
Скрин.png (451.29 КБ) 8482 просмотра
Как видите, все по-прежнему - кое-где швов нет, а кое-где очень даже есть(
Вверху все хорошо, а внизу - не очень.

Аватара пользователя
karagy
Сообщения: 1271
Зарегистрирован: 10 янв 2007, 14:13

Re: Проблема с отрисовкой тайлов.

Сообщение karagy » 06 май 2020, 12:14

у вас размер тайла 48, а приращиваете вы, почему-то, 47.
Найдите тайлы с таким рисунком, на которых огрехи стыковки (и недостык и перехлёст) будут видны сразу глазом.

gil00
Сообщения: 8
Зарегистрирован: 06 май 2020, 09:09

Re: Проблема с отрисовкой тайлов.

Сообщение gil00 » 06 май 2020, 12:38

karagy писал(а):
06 май 2020, 12:14
у вас размер тайла 48, а приращиваете вы, почему-то, 47.
Ага. Потому что если приращивать 48, то получится вот такое:
Скрытый текст: ПОКАЗАТЬ
Скрин.png
Скрин.png (475.91 КБ) 8473 просмотра
Неправославный он какой-то, этот кокос. Нужно будет попробовать в Pygame, если там будет работать, значит дело в кокосе.

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: Проблема с отрисовкой тайлов.

Сообщение Apromix » 06 май 2020, 13:34

Зачем 720-y, просто y. Даже лучше i*48, j*48.

gil00
Сообщения: 8
Зарегистрирован: 06 май 2020, 09:09

Re: Проблема с отрисовкой тайлов.

Сообщение gil00 » 06 май 2020, 14:49

Так в кокосе система координат нехристианская) Как в математике, начало координат - нижний левый угол)

gil00
Сообщения: 8
Зарегистрирован: 06 май 2020, 09:09

Re: Проблема с отрисовкой тайлов.

Сообщение gil00 » 06 май 2020, 16:31

Попробовал в pygame, там все фурычит нормально. Но в pygame работать не хочется. Может, кто знает, чем можно создать тайловый рогалик (не обязательно на python)?

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Re: Проблема с отрисовкой тайлов.

Сообщение Максим Кич » 06 май 2020, 17:21

gil00 писал(а):
06 май 2020, 16:31
Попробовал в pygame, там все фурычит нормально. Но в pygame работать не хочется. Может, кто знает, чем можно создать тайловый рогалик (не обязательно на python)?
Практически чем угодно, что умеет выводить спрайты. Из того, что я помню навскидку и скорее всего пробовал:

JavaScript: Pixi.JS, phaser
Lua: LÖVE, Corona SDK
С#: Monogame
С++: SDL
Упороться по хардкору, Rust: Amethyst, Piston

Наконец, чтобы выводить квардатики можно напрямую дёргать API какого-нибудь Вулкана на том языке, который вам больше по вкусу.

Чего бы я не рекомендовал, так это использовать специализированные движки вроде Unity или Godot. Потому что они специализированы, но не под рогалики.
Dump the screen? [y/n]

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: Проблема с отрисовкой тайлов.

Сообщение Apromix » 06 май 2020, 19:37

gil00 писал(а):
06 май 2020, 16:31
Попробовал в pygame, там все фурычит нормально. Но в pygame работать не хочется. Может, кто знает, чем можно создать тайловый рогалик (не обязательно на python)?
Можно дожать на cocos2d:
https://habr.com/ru/post/120438/
https://github.com/liamrahav/cocos2d-python-tutorials

Или использовать BLT. На многих языках (в т.ч. и на питоне).

gil00
Сообщения: 8
Зарегистрирован: 06 май 2020, 09:09

Re: Проблема с отрисовкой тайлов.

Сообщение gil00 » 07 май 2020, 13:03

Apromix писал(а):
06 май 2020, 19:37
gil00 писал(а):
06 май 2020, 16:31
Попробовал в pygame, там все фурычит нормально. Но в pygame работать не хочется. Может, кто знает, чем можно создать тайловый рогалик (не обязательно на python)?
Можно дожать на cocos2d:
https://habr.com/ru/post/120438/
https://github.com/liamrahav/cocos2d-python-tutorials

Или использовать BLT. На многих языках (в т.ч. и на питоне).
За туториалы, конечно, спасибо, но проблема с сеточкой никуда не делась.
Зы. Установил MonoGame, VS его не видит. Может, кто знает, что сделать?

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Re: Проблема с отрисовкой тайлов.

Сообщение Максим Кич » 08 май 2020, 11:48

gil00 писал(а):
07 май 2020, 13:03
Зы. Установил MonoGame, VS его не видит. Может, кто знает, что сделать?
«Не видит» — это как? У меня были проблемы с версиями .Net в настройках, но я уже точно не помню, какие именно.
Dump the screen? [y/n]

gil00
Сообщения: 8
Зарегистрирован: 06 май 2020, 09:09

Re: Проблема с отрисовкой тайлов.

Сообщение gil00 » 08 май 2020, 16:11

Максим Кич писал(а):
08 май 2020, 11:48
gil00 писал(а):
07 май 2020, 13:03
Зы. Установил MonoGame, VS его не видит. Может, кто знает, что сделать?
«Не видит» — это как? У меня были проблемы с версиями .Net в настройках, но я уже точно не помню, какие именно.
Установил его, захожу в VS, "новый проект", а там нет ни вкладки C#, ни, тем более, шаблонов MonoGame.

Аватара пользователя
Максим Кич
Администратор
Сообщения: 1642
Зарегистрирован: 03 дек 2006, 20:17
Откуда: Витебск, Беларусь
Контактная информация:

Re: Проблема с отрисовкой тайлов.

Сообщение Максим Кич » 09 май 2020, 13:27

gil00 писал(а):
08 май 2020, 16:11
Установил его, захожу в VS, "новый проект", а там нет ни вкладки C#, ни, тем более, шаблонов MonoGame.
А, вспомнил, они могут оказаться в папке для неправильной версии VS. Вообще по "missing monogame templates" гугл выдаёт целую кучу вариантов. Но начать надо с того, чтобы убедиться, что шаблоны легли туда, где надо.
Dump the screen? [y/n]

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость