Необходим алгоритм отрисовки мира. Пока хотя бы просто травы. Идеи?
Алгоритм отрисовки
Сообщений 1 страница 7 из 7
Поделиться22013-09-24 23:41:47
Собирать из тайлов? Возможно? (я про траву)
Поделиться32013-09-25 00:20:46
Ну да) Это довольно логично) Я имел ввиду чуть ближе к телу, в каком виде хранить "карту", рисовать прямые квадраты и потом "поворачивать" или сразу просчитывать уже повернутые и тд и тп.
Поделиться42013-09-25 17:56:05
Карта - двумерный массив с описанием тайлов, нэ?
Поделиться52013-09-25 18:42:02
Я это тебе сегодня утром говорил...)) Давай тогда по другому вопрос поставим: вот у тебя есть массив с картой, что нужно сделать, чтобы игрок увидел картинку? Что нарисовать? Сколько нарисовать? Куда повернуть?
Собственно мой грубый набросок:
Верхний класс - это Scene (Сцена). Сцена состоит из кучи (массива или листа) слоев (Layer). Есть методы Нарисовать, Отчистить, добавить слой, удалить слой и тп.
Есть класс Layer(слой) с которым идет работа (из-за целой кучи причин, на прямую с квадратами OpenGl не работаем).
Класс Layer - это инкапсулированный массив квадратов(тайлов) которые видимы в данный момент (находятся в обзоре "камеры"). Как сказал ранее - мы к этим квадратам доступа на прямую не имеем.
Слой определяется "куском карты"
Итак, пример работы:
1. Создается сцена (то что видит игрок в данную секунду).
2. Создается слой допустим ландшафт.
3. Ландшафту в конструктор идет массим допустим 20х20 (размер видимой зоны, совпадает с размером сцены).
4. Добавляем ландшафт к сцене.
5. У сцены вызываем метод Нарисовать и собственно рисуется все.
Вникаем, додумываем, дополняем.
Поделиться62013-09-25 23:16:13
Чуть-чуть переделал.
Вершина иерархии - класс Локация(Location). Это набор тайлов с методами для отрисовки и прочего.
Состоит из слоев(Layer). Например, ландшафт, неподвижные объекты, и тд. Слой добавляется к локации и отрисовывается ее методами.
Вся локация загружается и отрисовывается сразу, камера просто "елозит" по ее поверхности вслед за персонажем.
Поделиться72013-09-26 00:06:27
Залил на СВН каркас будущей графической модели. Так же запилил в проект поддержку Юникода. Предлагаю заняться реализацией предложенного мной контракта.