Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax > Модули для BlitzMax

Ответ
 
Опции темы
Старый 13.03.2011, 20:45   #1
Черный крыс
 
Сообщений: n/a
Быстрая коллизия

Привет!

Стандартные БМ коллизии меня по многим причинам не устраивали, он жрет много памяти, работает очень медленно и.т.д...
Представляю Вам свое творение - модуль проверки столкновений. Он ничего внутри себя не хранит ( кроме одной переменной ), и работает заметно шустрее, имеет 2 вида проверок - отложеное и непосредственное, в отложенном методе возвращает только один обьект с которым столкнулся в последний раз, можно, конечно сделать что бы он возвращал массив, но передо мной такой задачи не стояло, все с открытыми исходниками, поэтому кому нужен массив, тот переделает.

Но есть одно ограничение : проверка возможна только точка->картинка.

Модуль полностью задокументирован, поэтому сложностей вызвать не должен.
Также имеется два примера, один из примеров крэш-тест, сравнивающий разницу в производительности со стандартным коллизионным движком, что называется "почуствуйте разницу".

ЗЫ Все последующие обновления движка я буду выкладывать на адрес, указанный в подписе.
Вложения
Тип файла: rar collision.mod.rar (85.1 Кб, 671 просмотров)
 
Ответить с цитированием
Старый 13.03.2011, 21:11   #2
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Быстрая коллизия

Почему то у меня подозрение что ты не умеешь использовать коллизии макса правильно. Ты по-видимому сталкиваешь картинки друг с другом по одной?
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Randomize (13.03.2011)
Старый 13.03.2011, 21:20   #3
Черный крыс
 
Сообщений: n/a
Ответ: Быстрая коллизия

Сообщение от SBJoker Посмотреть сообщение
Почему то у меня подозрение что ты не умеешь использовать коллизии макса правильно. Ты по-видимому сталкиваешь картинки друг с другом по одной?
Сначала я их пишу в слой writemask, после этого вытаскиваю массив вызвав функцию CollideRect с параметром collidemask.

ты это имеешь виду? если я не прав, прошу Вас меня просветить...
 
Ответить с цитированием
Старый 13.03.2011, 21:42   #4
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Быстрая коллизия

Ну почти так.
Сначала с помощью CollideImage картинки заносят со своим скейлом и положением в слой соответствующих требуемой группе однотипных объектов.
После чего с помощью этой же функции но в режиме чтения производится сталкивание с требуемым изображением. В результате чего получаем список всех столкнувшихся объектов.

Прошу заметить что производится попиксельное столкновение с учетом всех параметров. Если у тебя такое же по качеству и скорости решение то это круто.
__________________
(Offline)
 
Ответить с цитированием
Старый 13.03.2011, 22:38   #5
Черный крыс
 
Сообщений: n/a
Ответ: Быстрая коллизия

Сообщение от SBJoker Посмотреть сообщение
Прошу заметить что производится попиксельное столкновение с учетом всех параметров. Если у тебя такое же по качеству и скорости решение то это круто.
Значит я крут!
 
Ответить с цитированием
Старый 14.03.2011, 01:47   #6
Черный крыс
 
Сообщений: n/a
Ответ: Быстрая коллизия

Сообщение от SBJoker Посмотреть сообщение
Сначала с помощью CollideImage картинки заносят со своим скейлом и положением в слой соответствующих требуемой группе однотипных объектов.
После чего с помощью этой же функции но в режиме чтения производится сталкивание с требуемым изображением. В результате чего получаем список всех столкнувшихся объектов.
Я эти "официальные" коллизии как то давно изучал. Там ужаснутся можно КАК эти коллизии сделаны. - Создается софтварный буфер в который заносится инфа о картинке при записи, потом из него же читается, и все это на проце - способ жутко медленный. У меня была в одно время идея заменить этот буффер, на стенсильный или же на D\W буффер видеокарты, тогда прирост производительности был бы ощутимо многократным, но как то не сложилось.

Думаю всем известно, что Max2D - модуль очень мудацкий.

Мой модуль коллизии можно ускорить еще на порядок быстрее, но в таком случае пришлось бы изменять официальные мудо-модули, что привело бы к потере совместимости со стандартным БМаксом, этого мне не хотелось. Вот и пришлось плясать с бубном на перевес сочиняя свой колизионный движок, и при этом ограничивая себя той писаниной "супер-проггера" по имени Марк Сибли. =)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
SBJoker (14.03.2011)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com