Четверг, 28 Марта 2024, 11:47

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Марио 2D. Вопросы.
Марио 2D. Вопросы.
8Observer8Дата: Среда, 12 Августа 2015, 09:38 | Сообщение # 21
заслуженный участник
Сейчас нет на сайте
Посмотрите на каком я сейчас этапе (управление - стрелками, прыгать - пробел): SuperMario_1.2.0 (win)

Добавлено (12 августа 2015, 09:38)
---------------------------------------------

Цитата KamiRonin ()
делай куст целым спрайтом и ставь ручками в сцену..

Это очень долго. Как я узнаю точное положение объектов? Мне нужно будет создать точные копии всех уровней Марио.


Сообщение отредактировал 8Observer8 - Среда, 12 Августа 2015, 09:19
KamiRoninДата: Среда, 12 Августа 2015, 10:11 | Сообщение # 22
почти ветеран
Сейчас нет на сайте
не не.. ты посмотри на кромки в тайлсэте.. там все решение!
можно оставить и тайловую схему генерации.


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
8Observer8Дата: Среда, 12 Августа 2015, 17:21 | Сообщение # 23
заслуженный участник
Сейчас нет на сайте
Что интересно эти кромки попадают на тайл с соседнего тайла. Не пойму в чём дело.

Добавлено (12 августа 2015, 13:14)
---------------------------------------------
Цитата KamiRonin ()
Добавлено:
Все, посмотрел исходный тайлсет - это на нем зазоры!! Там у картинки самой в рамку спрайта (ну скажем правого склона горки) влезает прозрачная кромка.. По моему - это причина глюка.. Попробуй на кочке - в фотошопе затри зазоры, посмотри как будет рисовать..

Случайно заметил добавление. Пока не понятно, что за кромка. Посмотрю в фотошопе.

Добавлено (12 августа 2015, 14:45)
---------------------------------------------
Я ещё задал свой вопрос здесь на кривом английском. Пишут, что нужно добавить "padding", так как близлежащие текстуры влияют друг на друга. Появляется эффект "bleed" - смазывание. Не понимаю, почему это отключить нельзя. Я так понял padding - это зазор между тайлами. Какой программой можно добавить padding?

Добавлено (12 августа 2015, 16:42)
---------------------------------------------
У меня "Pixel Per Unit" = 1. Наверное, в этом проблема.

Добавлено (12 августа 2015, 17:21)
---------------------------------------------
Я нашёл решение этой проблемы. Я из общего тайлсета создаю более маленькие для каждого объекта в Tilled Map Editor, но с большим зазором в один тайл. Экспортирую в png и теперь Sprite Editor нормально разделяет:





Сообщение отредактировал 8Observer8 - Среда, 12 Августа 2015, 14:48
KamiRoninДата: Среда, 12 Августа 2015, 17:24 | Сообщение # 24
почти ветеран
Сейчас нет на сайте
не, ради эксперимента поставь вместо поинт сглаживания в тайлсете любое другое - и посмотри на результат! вот то же самое происходит в поинт режиме только масштаб мизерный.
в общем они предложили тайлсет разрезать и вставить по пикселю между всеми спрайтами.. тогда они будут без рудементов отображаться.. (у меня фотошоп погнал с цветовым профилем, поэтому показалось что такие пиксели как раз уже есть и попадают в рамку спрайта у тебя)..

Цитата 8Observer8 ()
Я нашёл решение этой проблемы.

ну вот и молоток.. но достаточно одного пикселя зазора.


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.


Сообщение отредактировал KamiRonin - Среда, 12 Августа 2015, 17:26
8Observer8Дата: Среда, 12 Августа 2015, 20:22 | Сообщение # 25
заслуженный участник
Сейчас нет на сайте
Цитата KamiRonin ()
они предложили тайлсет разрезать и вставить по пикселю между всеми спрайтами

Я почти так и сделал, только вставляю по 16 пикселей между спрайтами. Так быстрее. Но есть другой вариант. Хотел в Paint'е сделать, но он прозрачность убирает. Тогда придётся потом фотошопом делать фон прозразный. Наверное, этот вариант лучше. Лучше пусть будет по одному пикселу. Столько времени придётся убить, чтобы добавить зазоры в тайлсет.

Добавлено (12 августа 2015, 20:22)
---------------------------------------------
Я нашёл решение здесь!

Сообщение отредактировал 8Observer8 - Среда, 12 Августа 2015, 17:33
seamanДата: Среда, 12 Августа 2015, 23:35 | Сообщение # 26
старожил
Сейчас нет на сайте
Если интересно, - про паддинг я говорил тут в начале третьей минуты.


Сообщение отредактировал seaman - Среда, 12 Августа 2015, 23:38
dreenlineДата: Четверг, 13 Августа 2015, 00:51 | Сообщение # 27
постоянный участник
Сейчас нет на сайте
Цитата 8Observer8 ()
Как сделать, чтобы камера плавно передвигалась, как в Марио? Как это называется, чтобы поискать? Может у кого есть ссылка на хороший туториал?

Что-то типо этого? На самом деле, тут как-то сложно разобраться, я не смог, но может поможет.
У меня вопрос. Как у вас в Tiled получается выдерживать пропорции уровня? Сколько там не копался, не могу понять, где сделать платформу короче, где длиннее. Есть какой-то способ удалять лишние блоки в юнити?
8Observer8Дата: Четверг, 13 Августа 2015, 08:53 | Сообщение # 28
заслуженный участник
Сейчас нет на сайте
seaman, спасибо! То есть вот этот инструмент Cheetah Texture Packer

У вас в танчиках та же самая проблема, как у меня, на границе между тайлами. Как вы собираетесь её решать? Вы не могли бы решить проблему и обновить репозитарий?

Проблема:


Цитата dreenline ()
На самом деле, тут как-то сложно разобраться, я не смог, но может поможет.

Импортируйте скрипт 2D/CameraFollow. Киньте на камеру. Player'у поставьте тег "Player". Настройте минимальную и максимальную точки для камеры в инспекторе.

Цитата dreenline ()
Как у вас в Tiled получается выдерживать пропорции уровня?

Пропорции определяются опцией "Pixel Per Unit" на спрайтах. Я ставлю 1. Тогда и камере придётся ставить размер, например, 150.

Я так делают:
- открываю Tiled Map Editor
- добавляю фоновый рисунок уровня (который буду обводить тайлами)
- выставляю фоновому рисунку прозрачность 50%
- добавляю слой для тайловой карты
- кидаю TileSet на окно TileSet выставив 16x16 пикселей на тайл
- обвожу всёю карту
- экспортирую id тайлов и их положения через меню File->Export CVS
- теперь есть карта расположения тайлов и их ID
- открываю оригинальный TileSet в Unity. Разбивает на тайлы в "Sprite Editor"
- мы можем создать прифабы и вставлять их в цикле в положения которые мы получили от редактора Tiled


Сообщение отредактировал 8Observer8 - Четверг, 13 Августа 2015, 10:34
seamanДата: Четверг, 13 Августа 2015, 12:50 | Сообщение # 29
старожил
Сейчас нет на сайте
Цитата
Как вы собираетесь её решать?

У меня проблемы нет. Как я ее решил - я сказал в видео. Сделал зазор 1 пиксель.
8Observer8Дата: Четверг, 13 Августа 2015, 18:36 | Сообщение # 30
заслуженный участник
Сейчас нет на сайте
Цитата seaman ()
У меня проблемы нет. Как я ее решил - я сказал в видео. Сделал зазор 1 пиксель.

Я показал за сполером выше. Там проблема не в один пиксел, гораздо меньше. Щель между тайлами. Я заметил, что в вашем клоне танчиков, проблему не видно на разрешении 800x600, а на 1024x728 её видно.

Добавлено (13 августа 2015, 13:00)
---------------------------------------------
Цитата seaman ()
Сделал зазор 1 пиксель.

Эту проблему "с засвечиванием соседнего тайла" я решил, тем, что тоже сделал зазор в один пиксел, но только с помощью этого плагина для GIMP'а

Добавлено (13 августа 2015, 13:10)
---------------------------------------------
seaman, проблема в том, что у вас между тайлами есть щели в некоторых местах. Вот я и спрашиваю, как её решить? У меня сейчас точно такая же проблема.



Добавлено (13 августа 2015, 18:36)
---------------------------------------------
Давайте пока проблему с щелями отложим. Искал я много в интернете, и пока ничего не нашёл.

Не нашёл я и решение следующей проблемы. Марио проваливается в предмет, то есть коллайдеры пересекаются и это здорово заметно:



Сообщение отредактировал 8Observer8 - Четверг, 13 Августа 2015, 22:00
seamanДата: Четверг, 13 Августа 2015, 21:55 | Сообщение # 31
старожил
Сейчас нет на сайте
Как убрать совсем? Как здесь у меня уже несколько лет назад было описано:
Альфа маска
Делаем зазор больше - как минимум два пиксела. Вокруг спрайта делаем обводку тем же цветом, что соседние пиксели самого спрайта. Получаем нечто такое:
...
Т.е. картинка 34*34 а спрайт того же размера 32*32
Результат:
...
Сверху без такой обводки. Снизу с ней.
Сорри, картинки потерялись sad


Сообщение отредактировал seaman - Понедельник, 14 Сентября 2015, 22:49
8Observer8Дата: Понедельник, 17 Августа 2015, 15:49 | Сообщение # 32
заслуженный участник
Сейчас нет на сайте
Делать в захлёст! А это идея! Посмотрю по ранее озвученным инструментам, так как это дело нужно максимально автоматизировать.

Добавлено (14 августа 2015, 18:04)
---------------------------------------------
Мне одному кажется, что игра немного подтормаживает или нормально? SuperMario_1.3.0 (win).7z

Добавлено (17 августа 2015, 15:49)
---------------------------------------------
Я проверил притормаживает ли Марио на более мощной машине. Оказывается, нет. Это всё из-за того, что я генерирую все префабы с тайлами сразу. Я вижу один простой выход. Раз уровень хранится в двумерном массиве, то я могу разбить его на минимальные куски. Подгружать постепенно новые куски карты и уничтожать те, что пройдены.

По поводу решения с просветом между тайлами, которое предложил seaman выше. Я не нашёл готовых программ, которые бы преобразовывали тайлсеты так, чтобы тайл увеличивался на два пикселя в каждую из 4-х сторон. Возможно у меня получится написать плагин для GIMP. Сначала рассматривал вариант на скриптах C# с помощью GIMP#, но проект с 2012 года не развивается и работает только с GIMP 2.4. Остаётся вариант Python-Fu. У меня есть небольшой опыт скриптинга на Python BGE. Тем более опыт написания плагинов для GIMP может пригодится.


Сообщение отредактировал 8Observer8 - Понедельник, 17 Августа 2015, 16:06
KamiRoninДата: Понедельник, 17 Августа 2015, 17:08 | Сообщение # 33
почти ветеран
Сейчас нет на сайте
Цитата 8Observer8 ()
преобразовывали тайлсеты так, чтобы тайл увеличивался на два пикселя в каждую из 4-х сторон

можно написать скрипт на шарпе прямо в юньке... использовать Texture2D, GetPixel, SetPixel


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
8Observer8Дата: Вторник, 18 Августа 2015, 13:37 | Сообщение # 34
заслуженный участник
Сейчас нет на сайте
А я смогу потом нарезать полученную текстуру с помощью "Sprite Editor"? Будет ли это сложнее, чем написать плагин для GIMP?

Пока что я понял, как работать с GIMP'ом через Python. Это довольно просто. Есть консоль, которую можно отрыть так: в меню выбрать "Filters" -> "Python-Fu" -> "Console"

В консоле есть кнопка "Browse...". При нажатии отрывается справка, где можно искать API функции, читать описания. Например, можно навести на кнопку с пипеткой и увидеть её название: "Color Picker". Ввести это название в поиске окна "Browse...". Найдётся функция: gimp-color-picker. Можно прочитать её описание и какие аргументы она принимает. Если выделить функцию и нажать кнопку "Apply", но в консоль скопируется следующее:
Цитата
color = pdb.gimp_color_picker(image, drawable, x, y, sample_merged, sample_average, average_radius)


У меня такая идея. Сначала применить этот скрипт, чтобы сделать расстояние между тайлами в 5 пикселей. А потом в своём скрипте брать пипеткой цвет на краю тайла и рисовать с помощью функции gimp.pencil рядом ещё два таких пиксела. И так для каждого крайнего пиксела.


Сообщение отредактировал 8Observer8 - Вторник, 18 Августа 2015, 13:39
basistДата: Вторник, 18 Августа 2015, 16:25 | Сообщение # 35
пациент Flight Dream Studio
Сейчас нет на сайте
8Observer8,
Цитата 8Observer8 ()
могу разбить его на минимальные куски. Подгружать постепенно новые куски карты и уничтожать те, что пройдены

А разве встроенный ocllusion culling не пойдёт для 2d?

Вот нарыл халяву, но не юзал.
тыц


Сообщение отредактировал basist - Вторник, 18 Августа 2015, 16:38
8Observer8Дата: Вторник, 18 Августа 2015, 18:17 | Сообщение # 36
заслуженный участник
Сейчас нет на сайте
Большое спасибо, что напомнил о Ocllusion Culling. Обрати внимание, что на видео, хотя и дата 2015 года, но используется старый подход, когда эта опция входила в Pro версию. Я прочитал в документации, что для включения опции нужно поставить для объектов "Occludee Static", потому что у меня объекты не перекрывают другие. Всё равно так же подтормаживает перемещение камеры, но что интересно FPS не просидает ниже 70. А ещё я попробовал убрать галочки "Occludee Static" и FPS остался на том же уровне.

Сообщение отредактировал 8Observer8 - Вторник, 18 Августа 2015, 18:19
basistДата: Среда, 19 Августа 2015, 05:34 | Сообщение # 37
пациент Flight Dream Studio
Сейчас нет на сайте
8Observer8,
Цитата 8Observer8 ()
А ещё я попробовал убрать галочки "Occludee Static" и FPS остался на том же уровне.

Так правильно, это же комп, да ещё и игрушка с таким графоном. А представь себе игру с графонистым графонием smile да на слабой мобилке. От тебя эта мобилка убежит smile А на счёт 70 FPS Это что-то в скриптах перемудрил. Я делаю 3д платформер, проверял на слабом и мощном железе и там и там ниже 90 не снижалось.
На счёт подтормаживания камеры, это дело опять же в скрипте самой камеры. На ассет стор есть отличный "Standard Assets" там есть пример 2д платформера, всё отлично и как надо работает. Возьми скрипт камеры оттуда.
ассет
8Observer8Дата: Среда, 19 Августа 2015, 20:53 | Сообщение # 38
заслуженный участник
Сейчас нет на сайте
Цитата basist ()
На ассет стор есть отличный "Standard Assets" там есть пример 2д платформера

Скрипт я оттуда и взял. Называется CameraFollow.

Цитата basist ()
Это что-то в скриптах перемудрил.

Я посмотрю внимательнее.

Я написал скрипт на Python для GIMP:

add-pixels-to-tiles.py


который вот это изображение:


преобразует в это:


Скрипт работает 8 минут 25 секунд. Попробую сначала переписать его для Photoshop на JavaScript.
Если будет так же долго, то буду писать плагин для Unity.
Если и это не поможет, то буду делать алгоритм оптимальнее.

Добавлено (19 августа 2015, 19:25)
---------------------------------------------
Я решил пока не терять время с плагинами. Работает, пусть и медленно. Но мне же один раз нужно обработать TileSet.

По поводу Occlusion Culling. Здесь я узнал, что объекты должны скрываться даже на Scene. Для построения сетки нужно чтобы все объекты были на сцене.

Я создал пустой объект CreateWorld_1_1. Повесил на него скрипт с тем же именем, в котором в Start'е создавал уровень. Но теперь я Start переименовал в CreateWorld. Создал скрипт World_1_1_Inspector, который унаследовал от Editor. Теперь я могу построить уровень до запуска игры:

Код
using UnityEngine;
using System.Collections;
using UnityEditor;

[CustomEditor(typeof(CreateWorld_1_1))]
public class World_1_1_Inspector : Editor
{
        private CreateWorld_1_1 world;

        void OnEnable()
        {
            world = (CreateWorld_1_1)target;
            world.CreateWorld();
        }

        public override void OnInspectorGUI()
        {
            if (GUILayout.Button("Hello"))
            {

            }
        }
}



Попробую теперь реализовать Occlusion Culling.

Добавлено (19 августа 2015, 20:14)
---------------------------------------------
Оказывается, для работы Occlusion Culling нужен "Mesh Renderer", а не "Sprite Renderer".

Добавлено (19 августа 2015, 20:53)
---------------------------------------------
У меня вот здесь ошибка:
Код
    void OnEnable()
       {
           world = (CreateWorld_1_1)target;
           world.CreateWorld();
       }


Нужно по кнопке мир создавать. А то в OnEnable у меня столько копий насоздавалось.

Опция Occlusion Culling работает только для 3D. Есть выход - использовать этот самодельный, который предложил basist.


Сообщение отредактировал 8Observer8 - Среда, 19 Августа 2015, 20:55
KamiRoninДата: Четверг, 20 Августа 2015, 09:21 | Сообщение # 39
почти ветеран
Сейчас нет на сайте
Цитата 8Observer8 ()
Occlusion Culling работает только для 3D

Жееесть!! Неужели для уровня длинной в 30 секунд бега Марио так актуальна тема окклюзинга??!? Тут что-то ОЧЕНЬ СИЛЬНО не то, раз такой вопрос вообще возникает! Если наипростейшая локация "тормозит" - значит что-то в подходе к решению задачи конкретно не так!! У меня на старой юньке один раз сцена с двумя кубами, коллайдерами, и от камеры в мышь - рейкастом тормозил адски.. Новичок был, думаю - "как так то?! это же.. юнити! он должен легко справляться!". Дело все было в том что в апдейте я поставил Debug.Log() по координатам рейкаста - и выдавая тысячи логов редактор тормозил безбожно вообще.. Надо найти логический загруз в методике работы локации, а не окклюзинг туда лепить!!


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.


Сообщение отредактировал KamiRonin - Четверг, 20 Августа 2015, 09:28
8Observer8Дата: Пятница, 08 Апреля 2016, 23:12 | Сообщение # 40
заслуженный участник
Сейчас нет на сайте
Зафиксирую в одном сообщении решение проблемы с бликами на границах нарезки спрайтов.

И так, проблема:



Решение:

add-pixels-to-tiles.py


Для установки, скрипты нужно поместить в директорию: /GIMP 2/lib/gimp/2.0/plug-ins
После копирования, скорее всего, нужно перезапустить GIMP

Первый скрипт появится в меню: Filters -> Map -> TileSet -> "Add spacing and margin"
Второй скрипт появится в меню: Filters -> Map -> AddPxToTiles

Решение показано на рисунке:


Добавлено (08 апреля 2016, 23:12)
---------------------------------------------
По поводу моего сообщения выше: проблема с просветами и бликами на границе тайлов/спрайтов. И о её решении с помощью добавления одного или двух пикселей по периметру тайла/спрайта

Оказывается (сам сегодня обнаружил), проблема решается проще, чем писать свой скрипт на Python для GIMP. Блики и просветы можно убрать одним и тем же плагином

Я на сриншоте покожу эти два пункта: первый пункт "Add spacing and margin" добавляет расстояние от края (то есть Margin, это как Offset в Unity) и расстояние между тайлами (то есть Spacing, это как Padding в Unity), а второй пункт "Fill Spaces" добавляет по периметру, например, один пиксель

Вот эти пункты меню:


Далее, в Unity нужно указать соответсвующие Offset и Padding:


Сообщение отредактировал 8Observer8 - Пятница, 08 Апреля 2016, 23:27
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Марио 2D. Вопросы.
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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