Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];

Вниз

DelphaX   Найти похожие ветки 

 
cyclope (#-)   (2002-10-30 04:44) [0]

Всем private, кульные перцы местного форума! Не откажите в помощи милы человеки...
В одном PictureCollectionItem`е(PCI) есть туева хуча террэйновых ячеек, но чтобы не прорисовывать каждый frame все по ячейке (это ж гемор какой :~( ), я хочу сбагрить нужный мне набор, содержащий изображение текущей карты в отдельный PCI. Рез-тат: у дисплея мертвые с косами стоят, черным-черно, и тишина... (*-). Как все-таки наиболее быстро перенести graph`у с одного PCI на другой?


 
Mirovodin   (2002-10-30 11:00) [1]

Программирование это вообще "гемор какой" :) Так что лучше этим вообще не заниматься...

По поводу вопроса, cyclope (#-) ты считать совсем не умеешь.

Смотри: есть карта 128x128 ячеек. размер спрайта 32 pix. Размер карты - 128x32=4096 pix. Это просто background карты - размер 4096x4096x24 bit ~50 МБ. Не слобо так. Загружается такое чудо хрен знает сколько, а уж про скроллинг я и не говорю. Так ни кто не делает. Про создание карт читай статьи на http://delphigfx.mastak.ru/2d.htm



 
Владимир Васильев   (2002-10-30 12:15) [2]

Идея не нова и эксплуптируется довольно активно.
Есть несколько узких моментов : Вся карта "одномоментно", так сказать, тебе не нужна - если у тебя , конечно не 170" монитор :).

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





 
Mirovodin   (2002-10-30 16:47) [3]

2 Владимир Васильев ©

Я кстати по этому поводу то же думал, т.е. построение карт именно не ячейками, а рисовать ее всю. Метод похоже был реализован в Ice Wing (булдер гейтс). Я выдергивал из ресурсных файлов огромные карты и отдельно карты проходимости поверхностей. Можно попробовать реализовать, правда сложно будет сделать именно ПЛАВНЫЙ переход между областями. Лучше всего грузить сразу все соседние экраны:

000
0X0
000

x - наше место положение.

Кстати если разделить эти экраны на равные участки, например составит всю карту из 800x600 кубиков и пронуменрвать их - переход к ним будет практически мгновенен - Seek по ресурсному файлу.


 
cyclope (#-)   (2002-10-31 10:22) [4]

Mirovodin ©
Тебе, Дима, вообще отдельный поклон. За твои замечательные статьи, а также другие подвиги перед Отечеством по пути освоения "ОЙ КАКОГО гемора" (@-). Кстати, считать я умею, просто САМЫЕ большие карты у меня 640х480х4(экрана)х2(байта)/1024(B_per_Kb)~ 2400 Kb. Вот и усе, а ты боялась, только юбочка помялась... (ничего личного, так, к месту пришлось ;) ). И на то, что это лишь бэк тоже есть ответ: спрайты будут накладываться поодиночке, сверху, штабелями... Уболтал, подробности ищи на мыле mirovodin@delphigfx.mastak.ru :)
К остальным
И все же, дамы и господа, будьте добры, ответьте на исходный вопрос, plea.ea..ea..ea...ea....se!!!


 
Mirovodin   (2002-10-31 23:36) [5]

cyclope

Конечно если использовать маленькие карты, проблем нет храни все в памяти. Как их состряпать из массива спрайтов : 2-мя вложенными циклами":

Перебираем весь массив карты:

for I:=0 to X do
for J:=0 to y do

Смещение вычисляем как

dx=I*SpriteSize - размер спрайта по X и Y
dy=dx

и потом вызываем какой ни будь DRAW со смещением dx, dy. (BitBlt, BltFast и т.д. )


 
cyclope (#-)   (2002-11-06 05:20) [6]

Позвольте еще, еще, и все же еще несколько уточнить вопрос...
Как наиболее быстро перенести graph`у с одного PictureCollectionItem`а на другой?


 
Mirovodin   (2002-11-06 10:11) [7]

Самый простой и быстрый способ - копирование памяти. Как вариация различные BLTXXX



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
1-19611
АлеКо
2003-03-25 09:08
2003.04.07
Работа с CharToOEM


14-19846
Vlad Oshin
2003-03-21 10:18
2003.04.07
У нас воздушная тревога :)


4-19935
Sliski Slimak
2003-01-24 18:15
2003.04.07
Подсказки в стиле WinXP


1-19549
Matvey
2003-03-26 23:43
2003.04.07
Invalid Pointer operation при работе с функцией.?


3-19477
zom
2003-03-19 15:25
2003.04.07
Как можно использовать TDBComboBox ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский