Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Как самому создать компьютерную игру #11


Служба Рассылок Subscribe.Ru проекта Citycat.Ru
Как самому создать компьютерную игру
Выпуск 11

Сайт рассылки - скоро будет ;-) 
Адрес для обратной связи - gamemaker@pisem.net

Приветствую всех, кто читает эту рассылку!

Сегодня в выпуске:
1. Искусственный интеллект.
2. Наши друзья.
3. Темы следующих выпусков.



     
Искусственный интеллект.

      . Итак, искусственный интеллект. Пожалуй, это один из тех вопросов, о котором нельзя сказать немножко и кратко. Если все-таки попытаться рассказать о нем в двух-трех словах, то лучше просто промолчать. Потому что сказать, что это определенные правила, согласно которым компьютер самостоятельно может принимать те или иные решения - это значит ничего не сказать. Наверное, любой, кто хотя бы немного знаком с компьютером где-нибудь уже сталкивался с разными реализациями компьютерного разума. Причем в качестве примера достаточно взять любую игру, где Вам противостоит компьютер. Так что же это такое, искусственный интеллект? Прежде, чем ответить на этот вопрос, рассмотрим простенькие примеры. Как всегда, начнем двигаться от простого к сложному. Первая модель - это два объекта, роль которых в нашем случае будут играть точки. Первая из них управляется человеком, вторая компьютером. Одна из них убегает, другая догоняет. Причем поле действия ограниченно некоторой, наперед заданной областью. В нашем случае это будет прямоугольник. Банально, неправда ли? И алгоритм действий компьютера тоже лежит на поверхности. Кротчайшее расстояние между двух точек - прямая. Поэтому двигаемся по этой прямой в направлении второй точки. Ну а теперь самую малость усложним эту модель. Пусть некоторые области служат препятствиями на пути наших точек. Движение через них невозможно. Что меняется в этом случае? Рассмотрим ситуацию, когда на пути догоняющего, т.е. на прямой между двумя нашими точками, возникает какое-то препятствие. С какой стороны его лучше обойти? Ответ на этот вопрос в общем случае дать нельзя. Все зависит от конкретной ситуации. Вот, уже здесь у нас возникает ситуация, когда от компьютера требуется принять какое-то решение. Каким оно должно быть? Во-первых правильным. :) Но пока что критерия правильности у нас нет, попробуем сформулировать наши требования к принятому решению на простом и очень доступном языке. У нас цель - минимизировать расстояние между двумя точками. В такой постановке задача решается путем расчета двух огибающих траекторий, для последующего их сравнения. Далее идти по кратчайшему пути, а в случае, если они равны, то по любому, случайно выбранному. Да, в такой постановке ответ очевиден. Но здесь стОит проявить немного творчества. Вспомним, какие у нас были первоначальные требования. Одному объекту нужно догнать другой. Причем догнать означает сближаться с ним до тех пор, пока расстояние между ними не будет меньше наперед заданного числа. Итак, задача догнать. Теперь попытаемся немного отвлечься и посмотреть на все происходящее глазами игрока. Он, видя направление, выбранное компьютером, тоже, в свою очередь, попытается изменить направление движения. Не исключено, что после этого кратчайшим направлением обхода препятствия будет уже другое. Поэтому даже в этой безобидной ситуации наш первоначальный алгоритм не подходит. Поэтому попробуем сформулировать некоторые правила, которые нам помогут в дальнейшем при составлении программ. Для того чтобы с компьютером было интересно играть, потребуем выполнение первого, может быть не самого важного с точки зрения программиста, но необходимого, с точки зрения пользователя. Итак:
1. Действия компьютера должны быть непредсказуемыми.
Попробую пояснить, что это значит. В нашей первой модели без препятствий, алгоритм всегда сходился. Т.е. по истечению какого-то времени алгоритм успешно завершиться. Во втором случае этого уже нельзя сказать. Поэтому, почему бы не просчитать некоторые действия игрока наперед? В динамической игре это очень важно. Например, если объект движется какое-то время прямолинейно в заданном направлении, то велика вероятность того, что еще какой-то промежуток времени он будет двигаться в этом же направлении. Рассуждая также, получим, что если объект движется уже очень долго, что велика вероятность того, что в ближайшее время он сменит направление. Причем "очень долго" обычно не фиксированное время, зависящее от конкретной модели. Теперь попробуем получить информацию от модели. У нас есть препятствия, значит, при приближении к любому из них есть вероятность изменения движения. Причем чем расстояние до препятствия меньше, тем больше эта вероятность. Далее, смотрим на положение догоняющего. Убегающий, т.е. игрок, при смене своего направления движения будет руководствоваться еще и положение компьютера. И, с большей вероятностью, продолжит движение от компьютера, хотя и другой вариант полностью исключать нельзя. Поэтому при выборе траектории движения вокруг препятствия следует, также, руководствоваться направлением движения игрока. Таким образом, решения, принимаемые компьютером, должны быть непредсказуемыми для игрока. Теперь самое время еще немного усложнить модель. Сделаем препятствия разными. Одни будут снижать скорость объекта при взаимодействии с ним, другие увеличивать, третьи необходимо обходить. Например, если попытаться "оживить" нашу модель, можно провести аналогию с детворой, играющей в салки на коньках. Тогда первый тип препятствий будет снегом, а третий прорубем. Для второго типа в данном представлении аналогии нет. Кстати, в книжке "Си для профессионалов" был разобран пример игры салочки. Причем очень даже неплохо все объяснено. В скором времени эта книга будет на сайте и, в случае необходимости, этот код можно разобрать в рассылке.
      На этом прервем рассказ об искусственном интеллекте до следующего выпуска. Если Вы хотите что-либо добавить или просто высказать свое мнение, чем-нибудь поделиться, пишите. gamemaker@pisem.net


Наши друзья.


      Вот несколько рассылок, которые заслуживают Вашего внимания. Если Вам интересны темы этих рассылок, то советую на них подписаться. И, надеюсь, Вы не пожалеете!
Рассылки Subscribe.Ru
G-PLAY: информация об играх
      Также, возможно, Вам будет интересно посмотреть на сайт этой рассылки: www.g-play.ru.

     Следующая рассылка посвящена хостингу. Тут Вы найдете ответы на любые вопросы, касающиеся хостинга. Выбирайте место для Вашего сайта вместе с этой рассылкой!
Рассылки Subscribe.Ru
Хостинг: Место для вашего сайта. Обзоры, Вопросы,Ответы

      Теперь, что касается программирования. Хотите научиться программировать на VB? Нет проблем! А поможет в этом следующая рассылка:
Рассылки Subscribe.Ru
Программирование на Visual Basic и Active Server Pages

      Cледующая рассылка предложит Вам кучу головоломок.
Рассылки Subscribe.Ru
Головоломки для умных людей

      А кроме головоломок Вы можете порешать интересные задачки... Достаточно ли Вы сообразительны?
Рассылки Subscribe.Ru
Логические задачи на сообразительность

      Ну и, конечно, еще две рассылки, которые Вы уже знаете...
Рассылки:
Кодировка:
Формат:
Ваш E-Mail:
Выберете рассылку:
Мир компьютерных и настольных РПГ
Мир 3d-Action Games




Темы следующих выпусков.


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



SlyMagic.

"Как самому создать компьютерную игру" (с) 2001
Использование любых материалов рассылки возможно только с разрешения автора.
Тираж 5350 экземпляров.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться Рейтингуется SpyLog

В избранное