forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=28)
-   -   Dexeik (http://forum.boolean.name/showthread.php?t=935)

Diplomat 23.05.2006 14:12

Доброе время суток, господа, дамы и товарищи!

Презентую Вам на суд свою новую разработку: алгоритм поиска пути DExeik, воплощенный тэк-скээть в бетаверсию подключаемой к Блицу ДЛЛ-библиотеки.

Тестите, рецензируйте и юзайте на здоров!
Сообщите мне, пожалуйста, о всех багах, глюках, крешах и катастрофах, возникших при работе с библиотекой, а также о своих идеях по их- библиотеки или даже самого алгоритма- улучшению. Буду просто дико рад такой поддержке.

____________
Архив удален. Обновления см. ниже.

impersonalis 23.05.2006 14:25

Учитесь как надо делать демки-тесты. Всё работает.
Только вот у меня не всегда удалялись меши-вейпоинты маршрута бота

pax 23.05.2006 18:48

Неплохо :super:

А можно в библиотеку добавить еще упрощенный алгоритм передвижения в четырех направлениях (исключить передвижение по диагоналям)?

Нашел один глюк: при попытке направить игрока в мертвую зону несколько раз, игрок бежит к неизчезнувшим кубикам прямо через стены и идет по ранее пройденному пути, который не исчез.

Diplomat 24.05.2006 20:11

Цитата:

А можно в библиотеку добавить еще упрощенный алгоритм передвижения в четырех направлениях (исключить передвижение по диагоналям)?
Done!

Цитата:

Нашел один глюк: при попытке направить игрока в мертвую зону несколько раз, игрок бежит к неизчезнувшим кубикам прямо через стены и идет по ранее пройденному пути, который не исчез.
Fixed!


Спасибо за помощь!
Обновление качать там же.

pax 24.05.2006 22:47

Работает :) . Респект за библиотеку! :super:

А можно эту библиотеку потом в Bombers3D использовать?...


Вобщем есть пожелание: заменить функции ExeikSetMap%(X%,Z%,Value%) и ExeikFillMapBank%(Bank*) на ExeikSetMapBank%(Bank*). В этом случае по мойму не будет ограничений в размере карты... хотя незнаю (честно пока незнаю как с банками работать не в блитце...) Если не трудно, то в двух словах объясни как он в памяти организован (банк)... буду очень признателен :)

jimon 24.05.2006 23:02

прикольно :)
алгоритм мне вроде как понятен ;) но иногда его колбасит

pax 24.05.2006 23:19

Странный баг: игрок останавливается в тунеле недойдя до конца пути... да... в примере все еще остаются вейпоинты при направлении на новое место...

Diplomat 25.05.2006 00:14

Цитата:

А можно эту библиотеку потом в Bombers3D использовать?...
Можно конечно! Для чего ж я ёё и выкладывал! :)
Только лицензии на Пурик у меня нет (пока нет), так что если решишь продать игру- как-то ночью могут приехать на черном "воронке".
Впрочем, возможно ли отличить либу на платном Пурике от либы на бесплатном ДевС- доподлинно неизвестно.

Цитата:

заменить функции ExeikSetMap%(X%,Z%,Value%) и ExeikFillMapBank%(Bank*) на ExeikSetMapBank%(Bank*). В этом случае по мойму не будет ограничений в размере карты...
Нет, ограничение по размерам от этих ф-й не зависит: они сделаны просто как два различных независимых метода заполнения карты- один удобный и универсальный, другой быстрый. А вообще, ограничение по размерам крайне условно: я использую переменные и массивы word (так называется int в Пурике- от -32767 до +32767), а не, скажем, long, что экономит память вполовину, но и алгоритму не дает работать с большим количеством клеток.
Но если нужно, я могу изменить десяток строк и максимальный размер карты выростет до... щас... э-э-э... 46000х46000. Беда одна: для обработки понадобится что-то около 16Гб оперативной памяти :))

Цитата:

но иногда его колбасит
Ну, это очень глупый алгоритм. Колбасня- это его верный друх и жыздненный спутнег. Но если поставить высококачественный режим поиска- 1 или даже 0 (впрочем, это излишний перегиб), колбасить будет поменьше...
Цена ДЕкзейка (да и Екзейка тоже) ведь в его скорости: 8мс на карте 128х128- ИМХО неплохо. Помню как несколько лет назад мы вострогались либой на ассемблере, которая считала карту 32х32 за 2мс. :)

Цитата:

Странный баг: игрок останавливается в тунеле недойдя до конца пути...
:( Ёй-ёй. Не должно так быть. И бага у меня не воспроизовдится. Расскажи, пожалуйста, поподробнее... Где, как, в каком режиме поиска, на какой карте?.. И как, ёё воспроизвести.

Цитата:

в примере все еще остаются вейпоинты при направлении на новое место...
Так они не остаются: они просто не перемещаются. Это ведь просто декорация для наглядности: создаваемый вначале примера массив из моделей кубиков, где количество элементов равно максимальной указанной пользователем длинне курса. Когда курс проложен, кубики расставляются вдоль пути. В результате, в случае, если проложенный функцией курс оказывается короче максимального указанного- ну добрались уже до точки, некуда дальше прокладывать- часть "лишних" кубиков просто остается на старых местах. К процессу поиска и прохождения пути модельки вейпоинтов отношения не имеют.

ZanoZa 25.05.2006 11:07

а как запустить-то :@

Diplomat 25.05.2006 14:08

2 PAX: Бага найдена. Полностью рабочую библиотеку выложу на днях.

2 ZanoZa: Просто помести "DExeik.decls" в папку "Userlibs" Блица и запускай "Sample.bb".

P.S. Сори, что не выкладываю патч сегодня: поймал какого-то виря. Температура ядра мозга поднялась с 36.6 до каких-то невиданных высот... Сейчас ищу антивирус и кряк к нему. Как только верну себе умение ориентироваться в пространсве и связно мыслить- закончу работу над либой. :)
В любом случае- пишите. И спасибо за помошь в доводке.

pax 25.05.2006 15:18

Цитата:

Originally posted by Diplomat@24.5.2006, 23:14
Цитата:

заменить функции ExeikSetMap%(X%,Z%,Value%) и ExeikFillMapBank%(Bank*) на ExeikSetMapBank%(Bank*). В этом случае по мойму не будет ограничений в размере карты...
Нет, ограничение по размерам от этих ф-й не зависит: они сделаны просто как два различных независимых метода заполнения карты- один удобный и универсальный, другой быстрый.

А можно не заполняя массив из банка просто пользоваться этим банком? просто если на карте будет одновременно 10-20 врагов, то боюсь каждый раз заполнять массиб будет проблематично... можно ли непосредственно с банком из блитца работать?


Цитата:

Можно конечно! Для чего ж я ёё и выкладывал!
Только лицензии на Пурик у меня нет (пока нет), так что если решишь продать игру- как-то ночью могут приехать на черном "воронке".
Впрочем, возможно ли отличить либу на платном Пурике от либы на бесплатном ДевС- доподлинно неизвестно.

А мой проект бесплатный ;) я же от него исходники выложил :)

Да забыл про баг... в предидущем примере по умолчанию карта Map2.bmp, в первом длинном тунеле останавливается... на 1-ускоренном цикле и 2- упрощенном по четырем направлениям цикле. На 0-полном цикле все нормально...

pax 25.05.2006 20:33

Вот еще одно пожелание:

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

Примерно так:

ZanoZa 25.05.2006 21:35

Как я понимаю это алтернатива A*, так?

Diplomat 10.06.2006 18:12

Вложений: 4
Наконец родимая Булка снова в строю!

Итак, примеры, которые я не успел запостить раньше.

В прикрепленно файле DExeik.rar - стандартный сампл с колобком и лабиринтом. Функция обновлена и работает лучше (см. intro.txt)

Архив Tanks.rar содержит маленькую игрушку-пример, описывающую нелегкие будни танкистов и являющую собой примитивнейший пример практического применения ДЕкзейка.

Цитата:

А можно не заполняя массив из банка просто пользоваться этим банком? просто если на карте будет одновременно 10-20 врагов, то боюсь каждый раз заполнять массиб будет проблематично... можно ли непосредственно с банком из блитца работать?
По идее проблеммы возникать не должны. Возможно пример tanks.rar поможет.

Цитата:

Можно усовершенствовать алгоритм (чтобы включалось опционально) так, чтобы "игрок" обходил углы под прямым углом.
К сожалению, только в режиме поиска по 4 направлениям. :(

Цитата:

Как я понимаю это алтернатива A*, так?
Ни в коей мере не собирался создавать "убийцу Астара", или "конкурента ВолновогоАлгоритма" ! У ДЕкзейка своя специфика, своя область применения и свои недостатки. ИМО, он просто немного дополняет полупустую нишу алгоритмов, которые могут производить поиск пути на больших картах с регулярной сеткой относительно быстро и относительно правильно.

Diplomat 12.06.2006 00:50

Аууу! Люди! :)
За два дня так никто ни разу не скачал, и даже не зашел!


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot