![]() |
|
||||||||||
|
|||||
|
[+4 06.05.14]
|
Товарищи, думаю здесь много людей, кто занимался разработкой игр на данном движке. В интернете статей качественных я не нашел, все только на примитивах - создание сетки и т.п. Нет нигде более развернутой информации, если есть сообщите.
Вопросы : 1) На сколько я понял основная карта это большой битмап, аля бекграунд, а не сетка IsoSprites - иначе будут жуткие тормоза. ISOSprites используются только для объектов карты, которые взаимодействуют со средой, например участвуют в поиске пути и т.п. 2) Сейчас возник вопрос о прокрутке карты ( допустим битмап 3000*3000). Первое , что пришло в голову по Mouse_Move - выявлять где находится курсор ( 4 угла и стороны - 8 напралвений ), затем подписываться на Enter_Frame - и двигать контейнер с картой и объектами в нужном направлении. А как делаете вы? Может мой путь заведомо ресурсоемкий и неверный? 3) Создание сетки нажатий ( имеется ввиду область где возможно двигать юнита ). Стандартно, по скольку у нас изометрия сетка как *треугольник* , допустим, лепиться к верхнему краю, но нам нужно задействовать ВСЮ квадратную область, соответсвенно получается, что нужно делать сетку БОЛЬШЕЙ чем сама карта в N раз и двинуть объект в точку 0,0 уже не получится, будут совсем другие координаты. Карту же повернуть под квадрат нельзя? Вообщем тут я немного запутался, расскажите основы 4) Скрытие элементов карты. Очень интересный вопрос, как раз об оптимизации, который ставится в первую очередь. Допустим у нас, как я и сказал битмап 3000*3000. Мы сразу же генерируем карту, расставляем объекты в начале игры на нужных координатах в этой области, и у каждого юнита, например имеется AI, соответственно находятся они в области видимости или нет - все равно работают, выполняют действия и соответственно жрут ресурсы. Чем вы руководствуетесь производя оптимизацию в этом ключе? Возможно все объекты не находящиеся в зоне видимости у вас visible=false или что то другое, может быть вообще это ни как не оптимизируется. Заранее всем спасибо за ответы! Костя ( case ) - В скайпе тебя какой день нет, ты помоему игры на этом движке писал, расскажи свое видение всех этих проблем. Спасибо.
__________________
Марк Tween |
|
|||||
|
Регистрация: Nov 2013
Сообщений: 18
|
у меня похожая задача, тоже было бы интересно узнать решение этих задач.
|
|
|||||
|
Регистрация: Sep 2010
Сообщений: 90
|
Цитата:
1) разбил у себя все тайлы на статические - рисуемые в один общий фон (все динамические объекты ВСЕГДА над ними) и сортируемые - те, которые участвуют в сортировке по глубине на уровне с остальными объектами. Также врисовываю все "столбцовые" тайлы в один общий самый нижний, ибо расчитывать для каждого из них сортировку смысла нет - коллизии для персонажей будут считаться всеравно по одному целому столбцу из этих тайлов (в результате, для бокса из тайлов, например, 10х10х10 получаем всего 100 тайлов, вместо тысячи). Ну, и соответственно, никаких потайловых столкновений - их делаю отдельными виртуальными блоками на группы тайлов. 2) Так как я не использую мувики (копипикселз онли), то двигаю относительно виртуальной камеры (Point(x,y)) весь рисуемый канвас, в общем-то можно использовать ту же логику и для контейнера. Выпадающие за границы тайлы и объекты, естественно, не рисуются 3) Не совсем понял вопроса. Если правильно понял - тебе надо создать кликабельную поверхность? Я делаю для этого плиточную маску, по которой можно задавать движение персонажу. 4) Само собой, что выпало из вида - не рисуется, логику обновления тоже можно упрощать, например, снижать точности каких-нибудь рейкастов, упрощать поиск пути или вообще снижать частоту обновления, допустим, с 30 кадров до 10. Еще могу посоветовать разобраться с побитовыми операциями и исключить вызовы тригонометрических функций хотя бы из постоянных обновлений (использовать LookUp таблицы) - это может капитально повысить производительность, что для изометрии крайне важно, побольше расчетов в геттерах/сеттерах, меньше вызовов методов, никаких созданий поинтов, векторов и проч. на лету в обновлениях, кэширование всего, по возможности только умножения вместо делений и прочие маленькие нюансы, повышающие быстродействие - получиш фору на рендер) Последний раз редактировалось HorusWM; 13.12.2013 в 14:57. |
|
|||||
|
спасибо, полезный ответ
|
![]() |
![]() |
Часовой пояс GMT +4, время: 04:53. |
|
|
« Предыдущая тема | Следующая тема » |
|
|