| Маски - сакс, массивы рулят |
|
DreamRunner
| Дата: Суббота, 10.06.2006, 06:05 | Сообщение # 1 |
Админ
Группа: Админы
Сообщений: 1382
Статус: Offline
|
Ну вот. Вчера мне подумалось - а какого х я ещё не попробовал поюзать массивы на виде сбоку, когда использовал их уже и на виде сверху и на изометрии. Марк нам капитально забил голову своими платформами с блоками масок и только сейчас мой разум освободился полностью от этого заблуждения И поюзал. Теперь вместо перебора (причём обычно за степ мы перебираем несколько раз) 2500 блоков дающие 15фпс из 60 мне требуется несколько раз глянуть в массив. Память жрёт? Да и х с ней - её не может не быть, а вот уровни можно делать просто немерянные. Сегодня полностью попробую перевести свой платформер на это дело, у меня всёравно остаётся массив проходов после генерации уровня. ЗЫ: Значит так.. все права на создание туториала по этой теме беру себе ЗЫЫ: Цветы, шампанское потом Мы на пороге величайшей революции, тавагищи! Прилагаю файл с примером: http://vl.hoha.ru/myexamp/array_collision.zip
Сообщение отредактировал DreamRunner - Воскресенье, 18.06.2006, 08:32 |
| |
| | |
|
Mic-[DM]
| Дата: Суббота, 10.06.2006, 07:40 | Сообщение # 2 |
|
Всех уже задолбал
Группа: Высший Советник
Сообщений: 888
Статус: Offline
|
Видно, мой разум все еще под влиянием. DreamRunner, нельзя ли как-нибудь на пальцах объяснить, что за хитрость содержится в твоих массивах?
|
| |
| | |
|
Bartok
| Дата: Суббота, 10.06.2006, 08:04 | Сообщение # 3 |
Молчун
Группа: Пользователь
Сообщений: 24
Статус: Offline
|
Я тоже ничерта не понел.
|
| |
| | |
|
DreamRunner
| Дата: Суббота, 10.06.2006, 08:21 | Сообщение # 4 |
Админ
Группа: Админы
Сообщений: 1382
Статус: Offline
|
Ну во первых... Bartok, убавь количество юзер баров до 1+ можно подпись Ладно. в двух словах, остальное в туторе. Что есть карта уровня? это пустота, блоки с масками, тайлы... и всё это дело размещается в узлах сетки обычно. Нужен массив в котором 0=проходимая часть, 1=непроходимая. Т.е. блоки с масками выкидываем и сопостовляем их место с соответствующей ячейкой. К примеру ячейка (3,4) равная 1 будет аналогична блоку поставленному в (3*64,4*64) , где 64 - размер сетки и блока и скорее всего тайла. Теперь вместо проверки коллизии со всеми этими блоками в точке (например) (123,642), мы просто смотрим какое значение у ячейки для данного квадрата, т.е. masks[floor(123/64),floor(642/64)]. Вот так. Конечно это применимо для уровней, где все маски привязаны к сетке (а обычно так оно и есть). Можно сделать разные значения ячеек для масок с разными свойствами, типа 2=лестница, 3=выход_из_уровня.
|
| |
| | |
|
Bartok
| Дата: Суббота, 10.06.2006, 08:32 | Сообщение # 5 |
Молчун
Группа: Пользователь
Сообщений: 24
Статус: Offline
|
это тебе во сне приснилось?
|
| |
| | |
|
Fint_ru
| Дата: Суббота, 10.06.2006, 09:22 | Сообщение # 6 |
Хоть палкой гони
Группа: Высший Советник
Сообщений: 545
Статус: Offline
|
Что-то философское. Пока не вкуриваю, но починю примус и займусь. Дриму нобеля!!!
смешные статусы для qip'a ^_^ "Во мне поселилась жестокая сволочь, которая не прощает мои слабости о_О" © мое
|
| |
| | |
|
Mic-[DM]
| Дата: Суббота, 10.06.2006, 10:35 | Сообщение # 7 |
|
Всех уже задолбал
Группа: Высший Советник
Сообщений: 888
Статус: Offline
|
| Quote (Fint_ru) | | Дриму нобеля |
Динамиту ему. Я вроде понял, идея понравилась. А если маска не прямоугольной формы? Скажем, есть пол, но он наклонный. Получится, что половина ячейки - пол, а другая половина - пустота? Как тогда быть. Вообще, удобный метод. Можно различное окружение реализовать (вода, еще что-то).
|
| |
| | |
|
PaVeLius
| Дата: Суббота, 10.06.2006, 11:16 | Сообщение # 8 |
|
Хрен заткнешь
Группа: Страж
Сообщений: 436
Статус: Offline
|
идея неплохая, но тогда все колижены придеться самому обрабатывать, хотя, учитывая тот факт, что, например у меня, у объектов есть только два события(Create и Draw), где я все равно юзаю place_free и т.д., мысль вполне здправая. Проведи тестирование, как оно со скоростью получится.
"In theory, theory and practice are the same. In practice, they are not." — Albert Einstein
http://twitter.com/suilevap https://plus.google.com/103540372433348301959
|
| |
| | |
|
Fint_ru
| Дата: Суббота, 10.06.2006, 11:17 | Сообщение # 9 |
Хоть палкой гони
Группа: Высший Советник
Сообщений: 545
Статус: Offline
|
Как я понимаю это для песа ведь весь код будет, но ведь и противники тоже его юзать должны. Уже больше обращений. Или я не вкуриваю ничего.
смешные статусы для qip'a ^_^ "Во мне поселилась жестокая сволочь, которая не прощает мои слабости о_О" © мое
|
| |
| | |
|
Jeners
| Дата: Суббота, 10.06.2006, 11:25 | Сообщение # 10 |
Каждый 5й пост мой
Группа: Проверенные
Сообщений: 1619
Статус: Offline
|
Не наю я вкурил только прочитав первые строки в посте Dream'a Вобщем он хочет юзать не обьекты Блоки на карте.. а напрямую юзать массив: 1.Для отображения уровня 2.Для коллизии игрока с етимм "визиуальными" блоками. Добавлено (10.06.2006, 11:25) --------------------------------------------- Хотя я подумал.. рисование ппц как много будет жрать.. если только Dream не будет юзать тайлы...
Интернет католог строителей
Сообщение отредактировал Jeners - Суббота, 10.06.2006, 11:47 |
| |
| | |
|
CH@$ER
| Дата: Суббота, 10.06.2006, 11:50 | Сообщение # 11 |
Всех уже задолбал
Группа: Высший Советник
Сообщений: 1088
Статус: Offline
|
Я врубился как: эти массивы содержат только указатель, что в ячейке что-то есть и все. А уже можно написать скрипт, который смотрит от положения объекта, если в массиве есть 1 в этой точке, значит столкновения. А по скорости это будет намного быстрее, т.к. стандартные столкновения циклом все объекты проверят на столкновения. Тоесть если у вас 16 объектов, то циклов будет 16, а проверок 16^2, а так всего одна. Jeners, тайлы точно также рисуются как и объекты - посути, тайлы и есть объекты, просто они не являются объектами ГМ
Создание 3D FPS · Онлайновые таблицы рекордов · Многое другое!
|
| |
| | |
|
Jeners
| Дата: Суббота, 10.06.2006, 11:55 | Сообщение # 12 |
Каждый 5й пост мой
Группа: Проверенные
Сообщений: 1619
Статус: Offline
|
| Quote | | Jeners, тайлы точно также рисуются как и объекты - посути, тайлы и есть объекты, просто они не являются объектами ГМ | CH@$ER, Может и являються обьектами.. но их отоброжение в раз 20 быстрее так что юзать тайлы вместо рисования ето лучше.(и не спорь со мной ето знает каждый ГМ'щик  ) | Quote | | А по скорости это будет намного быстрее, т.к. стандартные столкновения циклом все объекты проверят на столкновения. Тоесть если у вас 16 объектов, то циклов будет 16, а проверок 16^2, а так всего одна. | Гм... а ты уверен что столкновение проверяеться в реальном времени?.. просто я в етом сам лично не уверен.
Интернет католог строителей
|
| |
| | |
|
CH@$ER
| Дата: Суббота, 10.06.2006, 12:00 | Сообщение # 13 |
Всех уже задолбал
Группа: Высший Советник
Сообщений: 1088
Статус: Offline
|
Jeners, просто у тайлов не обрабатываются события столкновений, стипов и т.д. как у объектов;) А что насчет столкновений - просто не у всех объектов столкновения включены. Если есть событие столкновения, значит оба объекты включаются в этот список.
Создание 3D FPS · Онлайновые таблицы рекордов · Многое другое!
|
| |
| | |
|
Jeners
| Дата: Суббота, 10.06.2006, 12:03 | Сообщение # 14 |
Каждый 5й пост мой
Группа: Проверенные
Сообщений: 1619
Статус: Offline
|
CH@$ER, Ну дык в чем проблема? юзай программное столкновение. Так что CH@$ER, фитча уровня "массивом" в том что просто не создавать обьекты (каждый обьект занимает память не зависимо от его "полноты") этим и привлекательно "Масивнное" постороение уровня
Интернет католог строителей
|
| |
| | |
|
CH@$ER
| Дата: Суббота, 10.06.2006, 12:05 | Сообщение # 15 |
Всех уже задолбал
Группа: Высший Советник
Сообщений: 1088
Статус: Offline
|
Jeners, да нет, ты не то говоришь. Впрочем чего спорить? Дождемся DreamRunner'a и он все скажет! Хотя я и так знаю, что он скажет.
Создание 3D FPS · Онлайновые таблицы рекордов · Многое другое!
|
| |
| | |
|
Jeners
| Дата: Суббота, 10.06.2006, 12:07 | Сообщение # 16 |
Каждый 5й пост мой
Группа: Проверенные
Сообщений: 1619
Статус: Offline
|
CH@$ER, Да я считаю что спорить вооще не имеет смысла.. по крайней мере нам у нас разный взгляд на задачи.
Интернет католог строителей
|
| |
| | |
|
CH@$ER
| Дата: Суббота, 10.06.2006, 12:08 | Сообщение # 17 |
Всех уже задолбал
Группа: Высший Советник
Сообщений: 1088
Статус: Offline
|
Кстати, DreamRunner, используй списки - они быстрее  (Причем это было сказано в хелпе)
Создание 3D FPS · Онлайновые таблицы рекордов · Многое другое!
|
| |
| | |
|
Jeners
| Дата: Суббота, 10.06.2006, 12:15 | Сообщение # 18 |
Каждый 5й пост мой
Группа: Проверенные
Сообщений: 1619
Статус: Offline
|
DreamRunner, еще можно сделать проверку в проверке так сказать проверка на дальнотсть массива от игрока.. Так как проверка на дальность (я думаю) работает быстрее проверки collision Типо: | Code | for (i=0;i<=room_height/32;i+=1) { for (n=0;n<=room_width/32;n+=1) { if distance_to_point(n*32,i*32)<320 { if collision_rectangle(n*32,i*32,n*32-32,i*32-32,object_index,0,0) gravity=0 } } } |
Интернет католог строителей
|
| |
| | |
|
DreamRunner
| Дата: Суббота, 10.06.2006, 12:29 | Сообщение # 19 |
Админ
Группа: Админы
Сообщений: 1382
Статус: Offline
|
млин.. великие идеи всегда встречали великое непонимание | Quote (Mic-[DM) | | ]А если маска не прямоугольной формы? Скажем, есть пол, но он наклонный. Получится, что половина ячейки - пол, а другая половина - пустота? Как тогда быть. | тогда ты присваиваешь ячейке наклон_влево=11 Иф ячейка под ногами=11 y= (формула наклонной линии) Ну это грубо говоря. | Quote (PaVeLius) | | но тогда все колижены придеться самому обрабатывать | Вся обработка заключается в: Посмотреть клетку (ячейку массива) куда мы собираемся ступить. Никаких переборов! Типа if map[(x+hspeed)/64,y/64]=1 hspeed=0 | Quote (PaVeLius) | | Проведи тестирование, как оно со скоростью получится. | Провёл на своей Jane. Задал карту 30x5X30x5. Получил 10500 блоков-стен, столько же тайлов+тайлы внутренних помещений уровня(кирпичный фон). С коллизиями фпс=2 , через массив фпс=53-59 из 60ти. Я тут офигеваю просто. Ниже скрины в архиве. На втором план уровня с дебажной инфой. Одна точка на плане=квадрат 64х64. Что это за мегауровень представить сложно. Можно неделю бегать без карты, искать выход. | Quote (Fint_ru) | | Уже больше обращений |  ага больше. С коллизиями это +10000*кол-во_врагов, в массивом понятно сколько ) Есть "некоторая" выгода | Quote (Jeners) | Вобщем он хочет юзать не обьекта Блоки на карте.. а напрямую юзать масив: 1.для отображения уровня 2.Для коллизии игрока с етимм "визиуальными" блоками. | Я юзаю массив для расстановки тайлов в начале игры, а далее для узнавани, где там у нас стена.
|
| |
| | |
|
Jeners
| Дата: Суббота, 10.06.2006, 12:31 | Сообщение # 20 |
Каждый 5й пост мой
Группа: Проверенные
Сообщений: 1619
Статус: Offline
|
DreamRunner, Млин мне кажиться ты ето строчил в офлайне Стоко уже нового написали )
Интернет католог строителей
Сообщение отредактировал Jeners - Суббота, 10.06.2006, 12:31 |
| |
| |
|
|