Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Скроллинг карты в игре (http://www.flasher.ru/forum/showthread.php?t=69062)

Silense 12.09.2005 20:54

Скроллинг карты в игре
 
Привет всем!
Вот и мне понадобилась помощь=)
Есть изометрическая карта(она же 2,5-мерная) по типу карты
того же Diablo или Fallout ну или то же Red Alert2..На карте давольно большое количество объектов. Карта представлена в виде картинки, на которую и наложены объекты. Как лучше организовать скроллинг карты вместе с объектами?(целиком на экран не лезет) Может кто-нибудь сталкивался с подобным, хотелось бы узнать существует ли какой-нибудь оптимальный вариант или за это вообще браться не стоит т.к. будет неимоверно тормозить, а придумать что-нибудь попроще?..

Silense 13.09.2005 12:17

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

Silense 13.09.2005 12:25

Придумал пока что несколько способов...
1. перерисовывать все объекты на новом месте, т.е. со сдвигом, и оновременно двигать саму карту, но я уверен что тут будут тормоза.. если бы 1-2 объекта перерисовать то еще нечего,а вот если 200-500-1000... то уже не катит

2. Разбить карту на области, и отображать не всю карту целиком, а просто подгружать соответствующую область вместо старой.

3.Было бы неплохо если бы можно было сделать что-то типа программного принт-скрина, т.е. слить карту и неподвижные объекты на ней в одно целое. Тогда бы проблема с тормозами исчезла, и неподвижные объекты типа зданий и деревьев двигались бы скроллом 1 картинки. А поверх бы уже можно было наложить движущиеся объекты.

Да и вообще можно ли организовать слитие скажем 20 мувиков в 1 мувик?

Silense 13.09.2005 19:24

Мдя.. ответов-море..=)И все до ужаса информативные. Ну ниче, продолжим беседу..=)
Судя по всему никто ниче не знает..
Вообщем первый вариант решения отпал, за него браться даже не стоит. Нашел тут как раз по теме скроллинга http://www.tonypa.pri.ee/tbw/start.html, в подверждение моим домыслам..
Похоже что придется остановиться на втором варианте ввиду невозможности реализации остальных(первый способ конечно можно реализовать но для мизерного числа объектов)..

Samodelkin 13.09.2005 19:40

Вообще флешка отрисовывает относительно быстро...
долго с данными возится
граффик есть на 100000 значений рисуется секунды за 2-3, медленно?
мне 3 вариант нравится :) нереально однако хотя ...
про градиент можно вообще забыть а тогда какое ж 2.5?

Silense 13.09.2005 20:47

Согласен, отрисовывает довольно быстро. Скажем отрисовать 10 кустиков это пустяки, но вот орисовать 100-200-n ячеек, в каждой из которых по 5 параметров, и в некотрых разные объекты будет уже проблематичнее..а при этом некоторые объекты еще и движутся.. да даже если бы за секунду все это отрисовывалось то в лучшем случае я бы получил достаточно шустрое слайдшоу =)
3 вариант мне тоже очень нравится, но боюсь с его реализацией выйдут проблемы%)..

А вот причем тут градиент я четно говоря не понял.=)Всмысле тормоза будут? они и так будут, и без градиента:))

7thsky™ 13.09.2005 22:41

flash8, cacheAsBitmap, BitMap class и т.д. на 7 будет тормозить, на 8 есть вероятность что все будет шустрее быстрее и т.д. потом еще все зависит от того какое у тебя поле, клеточное или нет и т.д.

Silense 14.09.2005 00:26

Хз..сомневаюсь я что 8-ка поможет, но все же будем надеяться. Лучше бы проц разгрузили через плеер, больше возможностей бы повилось..=)А то все процессором обрабатывать конечно тормоза будут..

amphetamine 14.09.2005 01:17

могу тебе предложить разкомпилить flash из онлайн игры на
www.timezero.ru - если найдешьв куче кода, там подобны скролиг сделан без тормозов и прекрасно работает

Silense 14.09.2005 02:30

Можно попробовать, вдруг че и пригодится=). Но там вроде бы объектов не так уж и много.. Хм, спасибо, гляну.

Der Grossen 14.09.2005 09:47

Уже который раз постю эту ссылку: http://www.tonypa.pri.ee/
Удачного дня :)

Silense 14.09.2005 13:53

Цитата:

Сообщение от Der Grossen
Уже который раз постю эту ссылку: http://www.tonypa.pri.ee/
Удачного дня :)

спасибо, но :)

Цитата:

Сообщение от Silense
Вообщем первый вариант решения отпал, за него браться даже не стоит. Нашел тут как раз по теме скроллинга http://www.tonypa.pri.ee/tbw/start.html, в подверждение моим домыслам..

Так что то я уже читал, хороший ресурс.

john 14.09.2005 15:32

ну сейчас делать подобную игру нужно только на восьмерке - десятикратный прирост производительности при использовании динамических битмапов и кеширования обеспечен.
к тому же твоя задача элементарно решается билд-ин методами - 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.

Leezard 14.09.2005 18:01

Сливать все объекты в один мувик и двигать его под маской.
пример: 3sider.com

Silense 15.09.2005 00:17

2 john
О! Кажись то что нужно! К тому же сейчас восьмерку качаю, уже наслышан о новых возможностях=)Хорошо что движок для игры только частично написан и передать легко будет...

2 Leezard
Хм, можно будет попробовать и так.. в 8 флеше=)

Leezard 15.09.2005 13:18

8 еще дождаться надо.

Silense 15.09.2005 13:44

Цитата:

Сообщение от Leezard
8 еще дождаться надо.

ха=) наверное это шутка?
Читай=)
http://www.flasher.ru/forum/showthread.php?t=69074

Leezard 15.09.2005 14:37

Ну бета, а когда рабочая будет?
И кстати, что такое scrollRect это фича 8?

Silense 15.09.2005 15:38

Цитата:

Сообщение от Leezard
Ну бета, а когда рабочая будет?

Какая бета? ты вообще читал что там написано?=) А на сайте макромедии был?Там написано Flash 8 Professional..

>И кстати, что такое scrollRect это фича 8?
Я еще не смотрел, но по описанию то что нужно, надо 8-ку докачать и уже там все проверить..судя по повышенной производительности 8-ки это именно то что нужно..

Leezard 15.09.2005 15:46

Ну восьмерка, восьмеркой, а матчасть учить надо :)
Я сравнил метод с http://www.tonypa.pri.ee/, вариант где используется отсечение невидимой области и карты скролируемой под маской, скорость примерно одинаковая. Карта 30Х30, растровые тайлесы. Так что имхо овчинка выделки не стоит. Если в восьмерке действительно имеется возможность сливать мувик в растр, тогда это действительно решает проблему, одиночный растр будет скроллится нормально даже на нынешнем Flashе.

Stone 15.09.2005 18:18

я бы делал из кусков и скрулил только видимые.
не думаю что даже в восьмерке ты будешь успевать перерисовывать карту целиком при каждом изменении.
а еще тебе нужно будет двигать солдатиков (стратегию задумал же???) и еще кучу всего отслеживать.

Silense 15.09.2005 19:41

Цитата:

Сообщение от Stone
а еще тебе нужно будет двигать солдатиков (стратегию задумал же???) и еще кучу всего отслеживать.

нет, не стратегию=)

Weaver 17.10.2005 00:18

На flash такого делать не приходилось, но сталкивался на J2ME (java для мобильных устройств). Там в связи с ограниченными ресурсами любая игра делается практически так как сказал Stone. Т.е. изображение строится из кусочков, а сама карта хранится в текстовом формате.

Например:

0010100204440
1011050401101
и т.п. Где цифири - код элемента на карте.

seeker2005 17.10.2005 12:30

http://gorod.ircenter.ru/download

Silense 17.10.2005 13:10

Хы..надо же, моя тема всплыла снова=)..
забил на игру, появилась работа поэтому фигней страдать некогда, но все равно спасибо, может когда-нибудь вернусь к игрушке..


Часовой пояс GMT +4, время: 08:42.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.