Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2007, 19:39   #21
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
Счастье Разъяснения

Цитата:
Сообщение от mutabor Посмотреть сообщение
Функция Randomize не просто предшествующая строка, а передача в рандоматор текущего времени. И использовать ее надо когда нужно, а не как многие думают, в обязательном порядке перед вызовом Random.
Совершенно верно. Randomize-функция, в более простом понимании, и реализует "непредсказуемость", иначе, после запуска все Random-функции ведут себя аналогично, как и в предыдущем. Рекомендуется упоминать Randomize один раз, или в случае набора процедур (с множеством Random-функций) в их начале.

Будем все показывать на примерах. Начинающие могут открыть новый проект, добавить Timer и Edit, ...на таймере нужна вот такая процедура:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Edit1.Text:=IntToStr(Random(10));
end;

Установите Interval таймера 2000, откомпилируйте программу и запустите. Попробуйте запомнить последовательность нескольких цифр, что показывает Edit, затем закройте программу и запустите снова. Обнаружится точно такая же последовательность.

Теперь напишите так:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Randomize;
Edit1.Text:=IntToStr(Random(10));
end;

...запускайте несколько раз и делайте выводы.

И вообще, для чего все это нужно в играх?
Допустим, ИИ сделал расчет, и должен поступить некоторым образом. Когда он делает в определенных условиях одно и то же, это становится скучным, а иногда просто раздражает, или даже бесит. Разнообразить поведение ИИ можно только с использованием радноматора, некоторого алгоритма или группы алгоритмов, основанных на генераторах случайных чисел. Можно вычислять сразу несколько приемлемых вариантов, и через рандоматор выбирать один из них.
Скажем, атака некоторым оружием на разных дистанциях не должна быть статичным числом – всегда должен быть элемент удачи\неудачи, т.е. к числовому значению атаки нужно прибавлять случайное число из некоторого диапазона, например (-2; 2).
Так же, все что должно появляться спонтанно и с разными параметрами, должно быть выполнено на генераторах случайных чисел, стандартных или самостоятельно разработанных.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 27.12.2007, 21:47   #22
pre_pod
Пользователь
 
Аватар для pre_pod
 
Регистрация: 30.11.2007
Сообщений: 19
По умолчанию

Это все для меня? Круто! Спасибо! Вот теперь я понял, что некоторая случайность в действиях игровых персонажей нужна для разнообразия. Например: когда враг стреляет, он может и попасть в меня и промазать.

Я правильно понял? Я-то сам в игры мало играю, поэтому почти не представляю как должен себя вести персонаж. Не обращал на это внимания.

Это примеры для какого языка?

Я когда на Спектруме программировал, там случайное число бралось из ПЗУ. Или там была зависимость от времени прошедшего с начала включения компьютера. Или я что-то путаю, не помню.
pre_pod вне форума Ответить с цитированием
Старый 27.12.2007, 22:05   #23
SG13
Форумчанин
 
Аватар для SG13
 
Регистрация: 09.12.2007
Сообщений: 110
Радость

Цитата:
Сообщение от pre_pod Посмотреть сообщение
Это примеры для какого языка?
Это Delphi!
Для того чтобы получше изучить поведение персонажа советую поиграть в классику RPG например в Diablo или Diablo II. Там это очень хорошо показано!
Не забывайте что программирование это искусство!
SG13 вне форума Ответить с цитированием
Старый 27.12.2007, 22:30   #24
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от Beermonza Посмотреть сообщение
Когда он делает в определенных условиях одно и то же, это становится скучным, а иногда просто раздражает, или даже бесит.
разве? я всегда считал, что на то он и ИИ, чтобы делать все максимально "идеально". Как говорится: стабильность - признак мастерства

Цитата:
Сообщение от pre_pod Посмотреть сообщение
Я правильно понял? Я-то сам в игры мало играю, поэтому почти не представляю как должен себя вести персонаж. Не обращал на это внимания.
самое главное - пойти по верному пути, а не вогнать себя в заблуждение. Прежде чем начать писать свою (пусть даже простенькую) игру с псевдо-интеллектом рекомендую изучить спец. литературу по алгоритмам игр и ИИ в частности.
Поняв, что вам нужно на самом деле - воплотить это в код уже не составит труда.

Цитата:
Сообщение от pre_pod Посмотреть сообщение
Я когда на Спектруме программировал, там случайное число бралось из ПЗУ.
Randomize - как уже говорилось - вызывает генерацию относительно текущего времени(системного).
Alex21 вне форума Ответить с цитированием
Старый 27.12.2007, 23:13   #25
SG13
Форумчанин
 
Аватар для SG13
 
Регистрация: 09.12.2007
Сообщений: 110
По умолчанию

Цитата:
Сообщение от Alex21 Посмотреть сообщение
разве? я всегда считал, что на то он и ИИ, чтобы делать все максимально "идеально". Как говорится: стабильность - признак мастерства
В данном случае я считаю, что ИИ должен имитировать поведение человека т.е. быть разнообразным и оригинальным, чем больше будет путей реакции ИИ на ту или иную ситуацию тем просто напросто будет интереснее играть!

А делать всё идеально ИИ должен в таких играх, например как шахматы!
Не забывайте что программирование это искусство!
SG13 вне форума Ответить с цитированием
Старый 28.12.2007, 08:27   #26
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от SG13 Посмотреть сообщение
В данном случае я считаю, что ИИ должен имитировать поведение человека т.е. быть разнообразным и оригинальным, чем больше будет путей реакции ИИ на ту или иную ситуацию тем просто напросто будет интереснее играть!
Видимо "мы" что то недопонимаем...
Разберитесь с определением ИИ. И определите, что вы хотите - разработать систему ИИ или ввести в игру систему случайности?
Т.к. это диаметрально противоположные вещи.

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

Простой пример - чат-боты. Если бы они говорили невпопад - какой от них былбы смысл?
Вот интересный пример.

Последний раз редактировалось Alex21; 28.12.2007 в 08:31.
Alex21 вне форума Ответить с цитированием
Старый 28.12.2007, 09:35   #27
SG13
Форумчанин
 
Аватар для SG13
 
Регистрация: 09.12.2007
Сообщений: 110
Счастье

Цитата:
Сообщение от Alex21 Посмотреть сообщение
Поведение человека, является очень даже предсказуемым, на то оно и контролируется разумом (безумцев в расчет не брать ) - это вам скажет любой психолог.Вот интересный пример.
Не согласен поведение человека является очень даже не предсказуемым, человеку свойственно ошибаться, нестандартно подходить к решению тех или иных задач
Цитата:
Простой пример - чат-боты. Если бы они говорили невпопад - какой от них былбы смысл?
Почему обязательно невпопад? просто ответ нужно разнообразить!
Простой пример - если чат-боты говорили бы одно и тоже! Чтобы было?
Не забывайте что программирование это искусство!
SG13 вне форума Ответить с цитированием
Старый 28.12.2007, 09:40   #28
SG13
Форумчанин
 
Аватар для SG13
 
Регистрация: 09.12.2007
Сообщений: 110
Счастье

Основные понятия искусственного интеллекта
Термин интеллект (intelligence) происходит от латинского intellectus — что означает ум, рассудок, разум; мыслительные способности человека. Соответственно искусственный интеллект (artificial intelligence) — ИИ (AI) обычно толкуется как свойство автоматических систем брать на себя отдельные функции интеллекта человека, например, выбирать и принимать оптимальные решения на основе ранее полученного опыта и рационального анализа внешних воздействий.

Интеллектом называется способность мозга решать (интеллектуальные) задачи путем приобретения, запоминания и целенаправленного преобразования знаний в процессе обучения на опыте и адаптации к разнообразным обстоятельствам.

В этом определении под термином "знания" подразумевается не только ту информацию, которая поступает в мозг через органы чувств. Такого типа знания чрезвычайно важны, но недостаточны для интеллектуальной деятельности. Дело в том, что объекты окружающей нас среды обладают свойством не только воздействовать на органы чувств, но и находиться друг с другом в определенных отношениях. Ясно, что для того, чтобы осуществлять в окружающей среде интеллектуальную деятельность (или хотя бы просто существовать), необходимо иметь в системе знаний модель этого мира. В этой информационной модели окружающей среды реальные объекты, их свойства и отношения между ними не только отображаются и запоминаются, но и, как это отмечено в данном определении интеллекта, могут мысленно "целенаправленно преобразовываться". При этом существенно то, что формирование модели внешней среды происходит "в процессе обучения на опыте и адаптации к разнообразным обстоятельствам".

Мы употребили термин интеллектуальная задача. Для того, чтобы пояснить, чем отличается интеллектуальная задача от просто задачи, необходимо ввести термин "алгоритм" — один из краеугольных терминов кибернетики.

Под алгоритмом понимают точное предписание о выполнении в определенном порядке системы операций для решения любой задачи из некоторого данного класса (множества) задач. Термин "алгоритм" происходит от имени узбекского математика Аль-Хо резми, который еще в IX веке предложил простейшие арифметические алгоритмы. В математике и кибернетике класс задач определенного типа считается решенным, когда для ее решения установлен алгоритм. Нахождение алгоритмов является естественной целью человека при решении им разнообразных классов задач. Отыскание алгоритма для задач некоторого данного типа связано с тонкими и сложными рассуждениями, требующими большой изобретательности и высокой квалификации. Принято считат ь, что подобного рода деятельность требует участия интеллекта человека. Задачи, связанные с отысканием алгоритма решения класса задач определенного типа, будем называть интеллектуальными.

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

Поэтому представляется совершенно естественным исключить их класса интеллектуальных такие задачи, для которых существуют стандартные методы решения. Примерами таких задач могут служить чисто вычислительные задачи: решение системы линейных алгебраических уравнений, численное интегрирование дифференциальных уравнений и т. д. Для решения подобного рода задач имеются стандартные алгоритмы, представляющие собой определенную последовательность элементарны х операций, которая может быть легко реализована в виде программы для вычислительной машины. В противоположность этому для широкого класса интеллектуальных задач, таких, как распознавание образов, игра в шахматы, доказательство теорем и т. п., напротив э то формальное разбиение процесса поиска решения на отдельные элементарные шаги часто оказывается весьма затруднительным, даже если само их решение несложно.
Не забывайте что программирование это искусство!
SG13 вне форума Ответить с цитированием
Старый 28.12.2007, 09:40   #29
SG13
Форумчанин
 
Аватар для SG13
 
Регистрация: 09.12.2007
Сообщений: 110
По умолчанию

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

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

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

Следует иметь в виду, что существуют и другие, чисто поведенческие (функциональные) определения. Так, по А. Н. Колмогорову, любая материальная система, с которой можно достаточно долго обсуждать проблемы науки, литературы и искусства, обладает интеллектом. Другим примером поведенческой трактовки интеллекта может служить известное определение А. Тьюринга. Его смысл заключается в следующем. В разных комнатах находится люди и машина. Они не могут видеть друг друга, но имеют возможность обмениваться информацией (например, с помощью электронной почты). Если в процессе диалога между участниками игры людям не удается установить, что один из участников — машина, то такую машину можно считать обладающей интеллектом.

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

Можно сказать, что именно этот путь используют практически все системы ИИ. Ведь понятно, что практически невозможно заложить все знания в достаточно сложную систему. Кроме того, только на этом пути проявятся перечисленн ые выше признаки интеллектуальной деятельности (накопление опыта, адаптация и т. д.).
Не забывайте что программирование это искусство!
SG13 вне форума Ответить с цитированием
Старый 28.12.2007, 19:37   #30
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
Подмигивание Уточнение.

Вот простой пример. У нас бот, относящийся к типу "Тролль". По-поведению он просто "безмозглый болван" с огромной силой, ...и что, он должен себя вести в тактике как гроссмейстер, играющий 12 индийских партий? ...отнюдь. В плане компьютерных игр, "совершенствование ИИ" сводится к максимальному копированию поведения определенных типов персонажей, ...речь не может идти об "Абсолютном ИИ", и это факт.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц