![]() |
Скроллинг карты в игре
Привет всем!
Вот и мне понадобилась помощь=) Есть изометрическая карта(она же 2,5-мерная) по типу карты того же Diablo или Fallout ну или то же Red Alert2..На карте давольно большое количество объектов. Карта представлена в виде картинки, на которую и наложены объекты. Как лучше организовать скроллинг карты вместе с объектами?(целиком на экран не лезет) Может кто-нибудь сталкивался с подобным, хотелось бы узнать существует ли какой-нибудь оптимальный вариант или за это вообще браться не стоит т.к. будет неимоверно тормозить, а придумать что-нибудь попроще?.. |
Вот те на.. первый раз обратился с вопросом и никто походу ниче не знает и подобного не делал..
|
Придумал пока что несколько способов...
1. перерисовывать все объекты на новом месте, т.е. со сдвигом, и оновременно двигать саму карту, но я уверен что тут будут тормоза.. если бы 1-2 объекта перерисовать то еще нечего,а вот если 200-500-1000... то уже не катит 2. Разбить карту на области, и отображать не всю карту целиком, а просто подгружать соответствующую область вместо старой. 3.Было бы неплохо если бы можно было сделать что-то типа программного принт-скрина, т.е. слить карту и неподвижные объекты на ней в одно целое. Тогда бы проблема с тормозами исчезла, и неподвижные объекты типа зданий и деревьев двигались бы скроллом 1 картинки. А поверх бы уже можно было наложить движущиеся объекты. Да и вообще можно ли организовать слитие скажем 20 мувиков в 1 мувик? |
Мдя.. ответов-море..=)И все до ужаса информативные. Ну ниче, продолжим беседу..=)
Судя по всему никто ниче не знает.. Вообщем первый вариант решения отпал, за него браться даже не стоит. Нашел тут как раз по теме скроллинга http://www.tonypa.pri.ee/tbw/start.html, в подверждение моим домыслам.. Похоже что придется остановиться на втором варианте ввиду невозможности реализации остальных(первый способ конечно можно реализовать но для мизерного числа объектов).. |
Вообще флешка отрисовывает относительно быстро...
долго с данными возится граффик есть на 100000 значений рисуется секунды за 2-3, медленно? мне 3 вариант нравится :) нереально однако хотя ... про градиент можно вообще забыть а тогда какое ж 2.5? |
Согласен, отрисовывает довольно быстро. Скажем отрисовать 10 кустиков это пустяки, но вот орисовать 100-200-n ячеек, в каждой из которых по 5 параметров, и в некотрых разные объекты будет уже проблематичнее..а при этом некоторые объекты еще и движутся.. да даже если бы за секунду все это отрисовывалось то в лучшем случае я бы получил достаточно шустрое слайдшоу =)
3 вариант мне тоже очень нравится, но боюсь с его реализацией выйдут проблемы%).. А вот причем тут градиент я четно говоря не понял.=)Всмысле тормоза будут? они и так будут, и без градиента:)) |
flash8, cacheAsBitmap, BitMap class и т.д. на 7 будет тормозить, на 8 есть вероятность что все будет шустрее быстрее и т.д. потом еще все зависит от того какое у тебя поле, клеточное или нет и т.д.
|
Хз..сомневаюсь я что 8-ка поможет, но все же будем надеяться. Лучше бы проц разгрузили через плеер, больше возможностей бы повилось..=)А то все процессором обрабатывать конечно тормоза будут..
|
могу тебе предложить разкомпилить flash из онлайн игры на
www.timezero.ru - если найдешьв куче кода, там подобны скролиг сделан без тормозов и прекрасно работает |
Можно попробовать, вдруг че и пригодится=). Но там вроде бы объектов не так уж и много.. Хм, спасибо, гляну.
|
Уже который раз постю эту ссылку: http://www.tonypa.pri.ee/
Удачного дня :) |
Цитата:
Цитата:
|
ну сейчас делать подобную игру нужно только на восьмерке - десятикратный прирост производительности при использовании динамических битмапов и кеширования обеспечен.
к тому же твоя задача элементарно решается билд-ин методами - MovieClip.scrollRect The scrollRect property allows you to quickly scroll movie clip content and have a window viewing larger content. Text fields and complex content scroll much faster, because pixel level copying is used to scroll data instead of regenerating the entire movie clip from vector data. To see the performance gain, use scrollRect in conjunction with a movie clip that has cacheAsBitmap set to true. The movie clip is cropped and scrolled with a specific width, height, and scrolling offsets. The scrollRect properties are stored in the movie clip's coordinate space and are scaled just like the overall movie clip. The corner bounds of the cropped window on the scrolling movie clip are the origin of the movie clip (0, 0) and the (scrollWidth, scrollHeight) point. These points are not centered around the origin but use the origin at the upper-left corner. A scrolled movie clip always scrolls in whole pixel increments. If the movie clip is rotated 90 degrees and you scroll it left and right (by setting the scrollRect.x property), it scrolls up and down. If set to a flash.geom.Rectangle object, the movie clip is cropped to a certain size and scrolled. |
Сливать все объекты в один мувик и двигать его под маской.
пример: 3sider.com |
2 john
О! Кажись то что нужно! К тому же сейчас восьмерку качаю, уже наслышан о новых возможностях=)Хорошо что движок для игры только частично написан и передать легко будет... 2 Leezard Хм, можно будет попробовать и так.. в 8 флеше=) |
8 еще дождаться надо.
|
Цитата:
Читай=) http://www.flasher.ru/forum/showthread.php?t=69074 |
Ну бета, а когда рабочая будет?
И кстати, что такое scrollRect это фича 8? |
Цитата:
>И кстати, что такое scrollRect это фича 8? Я еще не смотрел, но по описанию то что нужно, надо 8-ку докачать и уже там все проверить..судя по повышенной производительности 8-ки это именно то что нужно.. |
Ну восьмерка, восьмеркой, а матчасть учить надо :)
Я сравнил метод с http://www.tonypa.pri.ee/, вариант где используется отсечение невидимой области и карты скролируемой под маской, скорость примерно одинаковая. Карта 30Х30, растровые тайлесы. Так что имхо овчинка выделки не стоит. Если в восьмерке действительно имеется возможность сливать мувик в растр, тогда это действительно решает проблему, одиночный растр будет скроллится нормально даже на нынешнем Flashе. |
я бы делал из кусков и скрулил только видимые.
не думаю что даже в восьмерке ты будешь успевать перерисовывать карту целиком при каждом изменении. а еще тебе нужно будет двигать солдатиков (стратегию задумал же???) и еще кучу всего отслеживать. |
Цитата:
|
На flash такого делать не приходилось, но сталкивался на J2ME (java для мобильных устройств). Там в связи с ограниченными ресурсами любая игра делается практически так как сказал Stone. Т.е. изображение строится из кусочков, а сама карта хранится в текстовом формате.
Например: 0010100204440 1011050401101 и т.п. Где цифири - код элемента на карте. |
|
Хы..надо же, моя тема всплыла снова=)..
забил на игру, появилась работа поэтому фигней страдать некогда, но все равно спасибо, может когда-нибудь вернусь к игрушке.. |
| Часовой пояс GMT +4, время: 08:42. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.