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

Новости сайта www.dyda.info

  Все выпуски  

DarkBASIC - легко создаем 3D миры и игры!


Информационный Канал Subscribe.Ru


БЕСПЛАТНО! Русский DarkBASIC демо + примеры и "фенечки"
  Ограничение по трафику
Номер 20/декабрь 2002
От редактора

   НОВАЯ УНИКАЛЬНАЯ услуга - получение новостей из Интернета на свой сотовый. Так что, если вы владелец сотового телефона - воспользуйтесь единственной возможностью - БЕСПЛАТНО! Плохого рекомендовать вам не буду! Так что - вам сюда!

  Во первых, искренне поздравляю всех с наступающим Новым 2003 годом! Желаю всем богатырского здоровья! Всем пользователям DarkBASIC успешной реализации своих идей! А фирме "Медиахауз" успехов в делах! :-)
  Кстати о "Медиахаузе". Долгожданный диск "ДБ. Архив" планируется выпустить в январе! Также компания вроде бы договорилась с Dark Basic Software Ltd. о помещении на данный диск полной версии программы Cartography Shop! Обзор этой программы был в N3 рассылки от июля 2002 года. Архив всех номеров рассылки вы найдете на моем сайте darkbasic.narod.ru. Так же на диске будут все демки и программы с оригинального "DB Archive", плюс, что-то из российских и в частности моя "Атмосфера". Михаил Новиков ("Медиахауз") призывает: если у вас есть что-то интересное - присылайте! Сборка диска еще не завершена.

  Информация для новых подписчиков! Если вы "не врубаетесь" о чем идет речь в рассылке - посмотрите предыдущие номера рассылки. И вам станет интереснее! :-) Также советую посетить оффициальный русский сайт www.darkbasic.ru и darkbasic.narod.ru

  Замирая в глубоком пардоне, Илья Середа.


Содержание номера:

      1. Статья Дмитрия Хороших (David Good) "Искусственный интеллект в компьютерных играх"

      2. Обзор "Jamagic" от компании Clickteam




Дмитрий Хороших (aka David Good)

ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ В КОМПЬЮТЕРНЫХ ИГРАХ

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

В этой статье мы обсудим следующие темы:

  • Как мыслят персонажи компьютерных игр

  • Алгоритмы Преследования и Уклонения

  • Шаблонные мысли

  • Случайные передвижения

  • Автоматы с конечными состояниями

  • Вероятностные автоматы

  • Память и обучение

  • Алгоритмы Поиска

  • Теория игр

КАК МЫСЛЯТ ПЕРСОНАЖИ КОМПЬЮТЕРНЫХ ИГР

Придет тот день, когда компьютерная программа с искусственным интеллектом станет таким же серьезным собеседником, как и лучшие человеческие умы. Однако сегодняшние программы искусственного интеллекта не обладают сложностью, необходимой для инициации мыслей и творческих процессов. Но на самом деле нас это и не должно волновать! Мы же делаем игры, а не роботов. В игре у нас присутствуют некоторые создания и объекты. Все, что нам нужно сделать, это придать им видимость способности разумного мышления. Играющий может ощущать себя помещенным на короткое время в некое пространство, где он думает, что вражеская атака реальна! Для осуществления этих целей мы должны проанализировать, каким разумом мы должны наделить наши игровые объекты. Сложность этого "разума" зависит от того, какую разновидность существ мы конструируем. К примеру, создания из "Pac Man" большую часть своего времени тратят на преследование или убегание от вас.

Если бы мы создавали игры, подобные "Космическим Захватчикам", придание видимости интеллекта вряд ли потребовало бы более пары дюжин строк в программе. Псевдокод выглядел бы примерно так:

1.   Продолжать движение персонажа компьютера в том направлении, в котором двигается персонаж пользователя - вдоль оси X

2.   Когда персонаж пользователя попадет на границу экрана, изменить направление персонажа компьютера и двигать вдоль оси Z

3.   Перейти к п. 1

Не шибко обширный набор "интеллектуальных" функций для игры, прибыль от которой за все время ее существования составила от 50 до 100 миллионов долларов.

Трехмерные игры нам интересны не потому, что они "умнее" обычных "плоских" игр. Объемность дает только повышенное ощущение реальности, а алгоритмы, наделяющие персонажей разумом, в них те же, что и в двухмерных играх. К примеру, "Quake" имеет действительно несложную систему искусственного интеллекта, примерно того же уровня сложности, что и в "Pac Man". Однако, при наличии трехмерной графики, вместе с качественным звуком, существа в игре кажутся вполне одушевленными.

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

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

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

АЛГОРИТМЫ ПРЕСЛЕДОВАНИЯ И УКЛОНЕНИЯ

Итак, приступим. Наиболее простыми игровыми алгоритмами искусственного интеллекта являются так называемый Алгоритм Преследования и его противоположность - Алгоритм Уклонения. В основном, они заставляют игровой объект или догонять пользователя, или убегать от него. Конечно, конфигурация игрового пространства также должна учитываться, чтобы преследователь даже и не пытался пройти сквозь стены. Давайте рассмотрим процесс, моделирующий погоню некоторого существа за игроком.

Преследование

Во-первых, нам необходимо знать расположение обоих объектов. У нас есть эти данные, так как мы знаем координаты игрока и игрового объекта, являющегося врагом.

Во-вторых, нам необходимо сконструировать алгоритм, который будет управлять поведением врага, преследующего игрока. Алгоритм 1.0. делает именно то, что мы от него и хотим:

1.0. Алгоритм Преследования


`Предположим, что px и pz - координаты игрока, а cx, cz - координаты противника которым управляет компьютер. Напомню, что координата Y отвечает за перемещение вверх и вниз.

Do

`Программный код

......

`Вначале рассматриваем перемещение по оси Х

if cx# > px# then inc cx#

if cx# < px# then dec cx#

`Теперь ось Z

if cz# > pz# then inc cz#

if cz# < pz# then dec cz#

`Программный код

......

Loop


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

  • Та же самая логика применима и к перемещению по вертикали.

Используя этот алгоритм, противник преследует игрока упорнее, чем Т1000 из Терминатора 2. Мы могли бы несколько облегчить его задачу путем добавления некоторой дополнительной логики, способствующей его движению к позиции нанесения удара. Однако, перед тем, как это делать, давайте посмотрим программу, моделирующую преследование.

В дальнейших листингах я не буду делать отступы, т.к. в HTML это проблематично.

Листинг программы 1.1. перемещает 2 шара по ландшафту: один зеленый (вы), а другой красный (компьютер). Что бы вы ни предпринимали, красный шар пытается настичь вас. Для движения (или, я бы сказал, драпа!) используются курсорные клавиши. Для выхода из программы нажмите "Esc".


`Стандартные настройки
set display mode 640, 480, 16
sync on autocam off

`Позиция игрока
px# = 100
pz# = 100
`Позиция врага
cx# = 900
cz# = 900
`Высота ландшафта
ground_height# = 0

`Зеленый шар пользователя
mdl_Player = 1
`Красный шар компьютера
mdl_Enemy = 2

`Создаем ландшафт
make matrix 1, 1000.0, 1000.0, 25, 25
randomize matrix 1, 20
set matrix 1, 1, 1, 1, 1, 1, 1, 1

`Создаем шар пользователя
make object sphere mdl_Player, 30.0
color object mdl_Player, rgb(0, 255, 0)

`Создаем шар компьютера
make object sphere mdl_Enemy, 30.0
color object mdl_Enemy, rgb(255, 0, 0)

`Получим высоту ландшафта под шаром пользователя
ground_height# =
get ground height (1, px#, pz#)
inc ground_height#, 20.0

`Помещаем шар пользователя
position object mdl_Player, px#, ground_height#, pz#

`Получим высоту ландшафта под шаром компьютера
ground_height# =
get ground height (1, cx#, cz#)
inc ground_height#, 20.0

`Помещаем шар компьютера
position object mdl_Enemy, cx#, ground_height#, cz#

`Наводим камеру на игровое поле
position camera 500, 1000, -200
xrotate camera 50.0

`Игра
Do

`Перемещение игрока
if upkey() = 1 and pz# < 900
inc pz#, 3.0
endif
if downkey() = 1 and pz# > 100
dec pz#, 3.0
endif
if leftkey() = 1 and px# > 100
dec px#, 3.0
endif
if rightkey() = 1 and px# < 900
inc px#, 3.0
endif

`Мозг :-) врага:
if cz# > pz#
dec cz#, 2.0
endif
if cz# < pz#
inc cz#, 2.0
endif
if cx# > px#
dec cx#, 2.0
endif
if cx# < px#
inc cx#, 2.0
endif

`Получим высоту ландшафта под шаром пользователя
ground_height# =
get ground height (1, px#, pz#)
inc ground_height#, 20.0

`Перемещаем шар пользователя
position object mdl_Player, px#, ground_height#, pz#

`Получим высоту ландшафта под шаром компьютера
ground_height# =
get ground height (1, cx#, cz#)
inc ground_height#, 20.0

`Перемещаем шар компьютера
position object mdl_Enemy, cx#, ground_height#, cz#

`Проверяем, настиг ли нас враг
if cx# = px# and cz# = pz#
`Сбрасываем игру на начало
wait 2000
cx# = 900
cz# = 900
px# = 100
pz# = 100
endif

`Рендерим картинку
sync

Loop


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

Продолжение следует.

(c) 2002 Дмитрий Хороших (aka David Good)
e-mail:
advcoder@mail.ru




Обзор "Jamagic" от компании Clickteam

Помнится в прошлый раз вы, посетители, сайта www.darkbasic.narod.ru впервые столкнулись с конструкторами игр, то есть программами, с помощью которых можно создавать игры абсолютно без знания программирования. Тогда это была Klik & Play, создание игры в которой сводилось к простым кликам мышки и по времени занимало около часа.

Сегодня же будет кое-что гораздо сложнее. И уже нельзя со 100% уверенностью сказать, что сегодняшний конструктор предназначен для создания игр абсолютно без знаний программирования, так как представленная сегодня программу уже не основана чисто на "клик-интерфейсе", а использует написанные скрипты, а это уже новый шаг на пути гэймдевелопинга... Итак поприветствуем наш следующий участник - Jamagic от Clickteam.

Те кто когда-нибудь до сегодняшнего дня сталкивался с конструкторами игр (учтите, что Dark Basic таким не является) наверняка слышал о компании Clickteam - ведь это лидер среди разроботчиков подобных программ. На ее счету десятки конструкторов игр: Amos, Stos, Klik&Play, The Games Factory, Click&Create, MMF Express, Multimedia Fusion, и наконец наш Jamagic или, как его еще называют Jama 3D.

Несмотря на такое название, не стоит думать, что эта программа предназначена только для создания 3D-приложений. Многие на ней делают и двухмерные игры, благо сама программа позволяет (имеется очень быстрый 2Д-движек). К тому же, благодаря языку скриптов, который использует программа существует возможность создавать простенькие программки для офиса, такие как калькулятор или МР3-плеер. А сами игры и программы, сделаные в Jamagic могут быть скомпилированы сразу для нескольких платформ (Win9x/2000, Linux, MacOS и другие). Именно эти возможности выводят ее вперед от других конструкторов 3Д-игр, типа 3D Game Studio или 3D GCS.

Сразу необходимо отметить, что существует несколько версий программы Demo, Studio, Standard и Pro.
Ниже приведена таблица различий между данными версиями, для того, чтобы вы смогли выбрать для себя лучшую.

  Demo Studio Standard Pro
Длительность работы 30 дней Бесконечно Бесконечно Бесконечно
Может сохранять ехе-приложения  

Высвечивает свой экран после закрытия ехе-приложений N/A    
Нужно указывать, что приложение сделано на Jamagic N/A N/A  
Выпуск игр без оплаты лицензии N/A
Поддержка мультиплатформенных пакетов (для выпуска игр на другие платформы)    
Поддержка PocketPC (при установке мультиплатформенных пакетов) N/A  
Поддержко внешних дополнений    
Support for user banks, in addition of standars banks  
Редакторование объектов для создания собственных редакторов  
Матричный объекты, для матричного вычисления  
Объект MooSocket, для сетевого  программирования низкого уровня  
Объект ProgressBar  
Объект QTime для поддержки форматов Quicktime  
Поддержка кватернионов  
Реестровая поддержка  
Объект RichEdit  
Объект Bank для манипуляции Bank во время игры.  
Объект SharedLibrary, чтобы вызывать внутренние функции внешних DLL-файлов  
Объект вращения  
Объект голоса для генерации голоса  
Объект TrayIcon, для добавление своих иконок на панель задач  
Дополнительный объект для профессионального использования      
Печатное руководство  
Доступный на французском
Доступный на английском  
Дистрибьютор Clickteam Micro-Application Clickteam Clickteam
Доступен до конеца 2002
Цена Бесплатно _49.95 $99 TBA

Разобравшись с характеристиками каждой из версий можно выбрать себе одну из них.

А теперь несколько полезных ссылочек.
Скачать демо-версию можно
здесь.
А если надумаете ее купить кликайте сюда.
Прочитать  о играх, делающихся на Jamagic можно тоже на сайте программы, здесь.

Кстати, сейчас вся Jamagic-общественность наблюдает за развитием двух крупных любительских проэктов: Michael Blade - ЗD-шутер, с возможностью играть splitscreen, а также римейк Desert Strike: Blood on the Desert (эти игры нельзя назвать лучшими из, тех что были сделаны на Jamagic (да и находятся они пока только на стадии бэток), их особенность в том, что все в них, в том числе текстуры, модели, уровни, звуки и прочая дребедень были сделаны собственноручно авторами, а не взяты уже готовыми). Скриншоты этих игр можно наблюдать ниже.

Если хотите, чтобы и за вашим проектом наблюдали люди - вперед на www.clickteam.com

Теперь разберемся с языком программирования Jamagic.
Clickteam, помимо туториалов приготовила для нас примеры кода разных игрушек, которые помогут не только тем, кто не сталкивался с написанием скриптов, а и тем, кто вообще не знает, что такое скрипты.
Итак:
BOULDER DASH - написание 2D-игры в Jamagic
HELLO WORLD - написание 3D-игры в Jamagic
SPEED CODE - максимальная оптимизация кода
ADVANCED SCRIPTING - продвинутое скриптование

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

За сим откланяюсь.

Заходите на www.gamecreating.narod.ru и вы всегда будете в курсе последних событий из мира Создания игр без программирования

Xion


Выпуск закончил 26 декабря 2002 года в 10:00 мск


(C) 2002 Илья Середа
http://darkbasic.narod.ru - это и так понятно :-)
    http://virland.narod.ru - "Домашняя киностудия"
     http://sereda.narod.ru - "ВАЗ 1111 ОКА"

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное