| « Поставить закладку » « Сделать стартовой » | |||
|
|||
| Статьи:: Delphi :: Игры. Построение игр. :: ИИ с чего начать ?
ИИ с чего начать ?
Игровой искусственный интеллект (ИИ) - определенно одна из наиболее интересных областей искусственного интеллекта. Его написание доставляет слишком много трудностей многим людям, так что эта статья поможет рассмотреть на некоторые пути, для преодоления этих трудностей. В статье мы рассмотрим несколько подходов: непрограммируемый, программируемый, использующий существующие игры, и программируемый нуля. Непрограммируемый: на примере игры MindRover MindRover - игра, произведенная крмпанией CogniToy, в которой игрок выбирает вездеход, добавляет компоненты и соединяет их с помощью проводов, для выполнения некоторой задачи: чего-нибудь взорвать, выиграть гонку, управлять схемой или все сразу! MindRover это превосходная платформа для экспериментов с игровым искусственным интеллектом, потому что она не требует умения программирования. Все «программирование» сделано через графический интерфейс (на рисунке). Выбираем транспорт, добавляем радар, управляющие компоненты и оружие. После, соединяем компоненты так, чтобы при обнаружении чего-либо радаром, транспорт стрелял по цели и двигался к ней. Итак запускаем сценарий и находим, что вездеход в порядке, но если противник выстреливает медленно летящую ракету, радар обнаруживает ее и поворачивается к ней. Это не совсем то, что нам надо, поэтому возвращаемся назад и добавляем IFF (опознаватель "свой-чужой") фильтр на радаре, и отфильтровываем все, что не является врагом. Запустим сценарий, теперь вездеход работает намного лучше. В MindRover роботы могут быть гораздо более сложными чем этот и содержать много компонентов (до 30). Они могут быть связаны через логические выходы, радиопередачи (один элемент включает несколько), переключатели (разрешают и запрещают события), и тд. MindRover основан и является графической оболочкой для языка программирования ICE. Ниже - кусок кода, который сгенерирован схемой вездехода, показанного в вышеупомянутом скриншоте. class DkrPursuit extends Vehicle sys as VehicleSystemObject Filter_IFF1 as Filter_IFF MediumEngine1 as MediumEngine Steering1 as Steering BumpSensor1 as BumpSensor Filter_IFF2 as Filter_IFF LongRangeRadar1 as LongRangeRadar MediumRadar1 as MediumRadar MediumRadar2 as MediumRadar MediumRadar3 as MediumRadar MediumRadar4 as MediumRadar Broadcast1 as Broadcast TurnLeft as Broadcast Timer1 as Timer ' class functions are here... end class 'DkrPursuit В этой статье мы не будем касаться программирования на ICE, его возможности гораздо шире чем в графическом интерфейсе и описывать их очень долго. В настоящее время есть группа программистов на ICE, которые расширяют набор компонентов в игре, типа более продвинутых логических выходов, компоненты, которые эмулируют память СППЗУ и более другие вещи. Так что, если вы еще не знаете высокоуровневый язык программирования, обратите внимание на MindRover. По мере того, как вы будете входить в суть, сможете программировать дополнительные компоненты и более интеллектуальные вездеходы. Создание модов. Программируемый С появлением игр типа Quake II, разработчики обратились к созданию легко расширяемых игр. Весь код Quake II был в DLL, которые грузились во время загрузки игры. ID Software (разработчики Quake) выложили исходники, позволив любому изменить оружие, аспекты процесса игры, физику и, что наиболее важно (для нас), искусственный интеллект. Изменять ИИ для игр такого типа относительно легко, начиная с изменения значения параметров, изменения функциональных возможностей ИИ и заканчивая внедрением новых особенностей ИИ. На скриншоте один из результатов моего Quake II mod, который улучшен в плане искусственного интеллекта, весьма значительно. На нем вы видите солдата, подпрыгнувшего над выстрелом, нацеленного ему в ноги, и стреляющего при этом. Этот мод имеет следующие параметры: • Уворачивание. Враг уворачивается, только когда необходимо. • Некоторые враги подпрыгивают, когда выстрелы направлены им в ноги. • Монстры могут плавать. По умолчанию монстры в Q2 не плавают, • монстры не будет стрелять, когда один из них – мешает обстрелу. • Экспериментировал со взрывчаткой. • Экспериментировал с алгоритмами поиска пути. Уворачивание просто требовало подбора числа. В конечном счете я научился вычислять время, требуемое для уворачивания от выстрела. Что означает, что стало очень трудно уничтожить кого-нибудь из бластера. Функция прыжка появилась несколько позже, когда я стал более свободно разбираться в исходных текстах, так как нужно было изменить игровые структуры. Я использовал мультипликацию от уворачивания, но запустил врагов в воздух, чтобы прыжок был более реалистичным! Так как враги стали после этого увертываться, прыгать и отступать после атаки игрока, первый уровень стал очень труднопроходимым, без дополнительного оружия. Плавание также требовало много модификаций, так как большинство монстров не умеют плавать. Так, я нашел, что монстры после попадания в воду не двигались, пока они не поражали пол. В общем я добавил специальный флажок, что разрешило им плавать и ходить по земле! Изменяя ИИ вы можете получить абсолютно непохожую на оригинал игру. Другие игры типа Unreal, HalfLife и Quake III также позволяют изменять код. Так что, если у вас есть, какая-нибудь из этих игр и вы знаете C/C++ - модифицируйте их на здоровье! (ну а мы как-нибудь на Delphi перебьемся ;) ) С нуля... Настольные игры - превосходный выбор для написания ИИ, так как они имеют очень простую графику (которая может многократно использоваться в других играх) и правила - необходимую часть ИИ. Вот некоторые из настольных игр, с указанием уровня сложности реализации ИИ: • Pente (средний) • Крестики-Нолики (легкий) • Othello (легче среднего) • Шашки (средний) • Шахматы (тяжелый) • Connect 4 (легкий) • Go (тяжелый) • 3D Крестики-Нолики (легче среднего) Написание настольных игр - наилучший путь к изучению принципов искусственного интеллекта, так как довольно сильные противники могут быть созданы, через использование простой эвристики (см. Простой ИИ Настольной игры) без использования сложных методов. Можно расширить ИИ игры "игровыми деревьями" и "минимаксным" алгоритмом. Выгодное отличие в создании игры с нуля это, то что вы сами решаете насколько простым или сложным будет алгоритм, и вы можете постоянно менять его. Конечно, написание любой игры может утомить, поэтому не ставьте перед собой заоблачные планы. Будет гораздо интереснее добавлять и расширять возможности работающей игры, чем ковыряние в супер алгоритме незаконченной пре-альфы. Рубрика: Игры. Построение игр.
XML документация в C#.
Сегодня речь пойдет об одной интересной и полезной возможности языка С#, которая поможет нам в документировании кода. Она называется «XML документация» или «Документирующие комментарии XML». Это такие специальные теги XML, которые содержаться в комментариях и описывают свойства или методы в конкретном файле. Так вот, есть по крайней мере три веских причины, почему всегда следует заполнять XML комментарии.
Подробнее... |
Рубрика: XML в .NET
| Добавлено: 08.10.2008
Курсоры в MySQL 5.
Начиная с 5-ой версии, MySQL имеет возможность создавать курсоры. Курсор — это виртуальная таблица, предоставляющая альтернативный способ просмотра табличных данных. Курсор не содержит данных, а лишь ссылается на них из других таблиц. Из этого вытекает ряд особенностей, но об этом ниже.
Подробнее... |
Рубрика: MySQL
| Добавлено: 08.10.2008
Microsoft опубликовала подробности о сессиях Windows 7.
Подробнее... |
Рубрика: Мероприятия
| Добавлено: 08.10.2008
Остальные статьи:
Microsoft делится подробностями о том, что будет после Windows
Тестируем новый javascript от нового браузера Google
MySQL Query Cache
Использование провайдеров компиляции в Asp.net
Чего мы ждем от C# 4.0
Delphi 2009 и C++Builder 2009
Джоэл Спольски и Джеф Этвуд запустили новый вебсайт для программистов - StackOve...
Поиск кода Google /* что нового? */
10 jQuery скриптов для улучшения интерфейса
Генераторы отчетов FastReport 4 и QuickReport 5: версии 2008 года
День программиста — набор стерeотипов
Индусские програмисты
Вышел Django 1.0
Портативная версия Google Chrome Portable
Исходные коды .Net Frameword 3.5 SP1 для отладки в Visual Studio
Пишем правильный online WYSIWYG-редактор |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|