![]() |
|
||||||||||
|
|||||
|
Интересуют статьи и рецепты, к тому как сделать ИИ к гонкам..
__________________
Code Different |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 5
|
Вот тебе прототип:
fla: http://***********/7449521 swf: http://***********/7449527 Некое подобие sensor AI. Я бы сделал как-то так. Естественно вариант не конечный. Можно сделать и level editor на самом Flash. Делал на Flash CS3, AS2, Flash 9.0. Может поможет моя идея. =) |
|
|||||
|
Нет, это не то.... тут у тебя просто обьект реагирует на столкновение со стенками и меняет свой угол.... это несовсем ИИ...
__________________
Code Different |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 5
|
Это называется сенсорный ИИ. Посмотри примеры AGEIA PhysX (физический движок). Таким способом они и делают машинку. Фейково да, но в некоторых случаях сработает.
|
|
|||||
|
Регистрация: Jul 2008
Сообщений: 5
|
Можно конечно сделать нечто вроде следования за кривой Безье (по принципу waypoint'ов - "движемся как можно ближе к кривой", стремимся к ней). И для гонок даёт неплохие результаты, судя по демкам.
http://www.youtube.com/watch?v=QSP36H8_AbU - вот тут и сделано через waypoints. |
|
|||||
|
ИМХО вейпоинты оптимальный вариант
Если заинтересует - здесь можно скачать исходники( и бинарник тож (: ) на Delphi и глянуть как я это делал. http://igdc.ru/viewpage.php?page_id=33 Представь себе трассу, вейпоинты идут точно по середине дороги. Есть машинка. Можно легко определить, какой вейпоинт ближайший к машинке. Так же легко найти следующий за ним. То есть фактически мы имеем вектор, куда следует двигаться машинке будь она посередине дороги. Машинка может поворачивать налево и направо, верно? (: Мы можем найти требуемый угол поворота машинки, чтобы она шла по найденному выше вектору. Зная текущий угол поворота машинки и требуемый мы может определить, куда следует поворачивать в данный момент - вправо, влево, или просто ехать прямо. Также легко посчитать расстояние машинки от центра дороги - достаточно погуглить на тему расстояние от точки до прямой. Если это расстояние больше четверти ширины дороги, то корректируем требуемый вектор движения в нужную сторону - чтобы машинка держалась ближе к центру. Здесь нет учета других машин. То есть ИИ едет как бы сам по себе. Могу ошибаться, это всего лишь мой способ решения проблемы.
__________________
while(1) {} |
|
|||||
|
Есть ряд проблем:
1. ИИ должен быть рандофицырованым, что значит что будет 4 машинки и они должны думать рандомно 2. ИИ должен изходить из того что машину будут всё время подрезать, и толкать...
__________________
Code Different |
|
|||||
|
1. Это довольно легко реализуется. Думать совсем по-разному они не будут, но некоторые различия сделать можно. Я делал для кажой машинки различные коэфициенты, которыми она руководствовалась при езде. То есть например минимальный угол отклонения от необходимого курса, при котором машинка начнет поворачивать. Максимальное расстояние от центра дороги(при его привышении машинка начнет подруливать к центру). Можно ещё сделать притормаживание при резкой смене курса, тоже у каждой машинки с разными параметрами. То есть простор для размышлений есть.
2. Сделай сначала чтобы они хоть как-то ездили (: Потом уже начнешь думать. Быть может тебя устроит то как они ведут себя на дороге, не зная ничего о противниках. Потом если таки не устроит ты хотя бы будешь знать какие именно аспекты следует включить в их ИИ. Ну удачи (:
__________________
while(1) {} Последний раз редактировалось Division; 24.07.2008 в 20:23. |
|
|||||
|
[+1 08.01.09]
[+1 24.02.09] |
Интересно а где можна найти этот метод в более подробном описании?
|
|
|||||
|
А что именно здесь не понятно? Мне не попадались статьи по этому делу. Думаю можно попробовать поискать книги по ИИ.
__________________
while(1) {} |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|