Четверг
25.04.2024
20:01
Категории раздела
Блог разработчиков [22]
Блог разработчиков
Поиск
Вход на сайт
Логин:
Пароль:
Календарь
«  Май 2009  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
25262728293031
Архив записей
Мини-чат
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Проект "Ангор"

Дневник


01:24
Теория мозга ИИ
От автора:

Добрый день. Совсем недавно я описывал теорию (и несовсем) инстинктов, написаное не совсем коректно вышло, но теперь я решил написать полную теорию мира ангоров, в большинстве ИИ. Хотел бы предупредить сразу, я пишу что я зделал/зделаю/делаю для своего мини-проекта, а то что тут пишу, лиш предложение для внедрения в игру. Редактор о котором я буду далее писать впринципе могу дать.

Вступление:

Итак пожалуй начнём с самого начала. Когда каждый человек рождаеться, он только и знает как орадь да "гадить", но со временем он получает навыки жизни, некоторые страхи, к чему-то имунитеты, в целом развиваеться человек постоянно. поэтому я решил зделать подобное и с юнитами в игре. Юнит должен раждаться на свет практически ничего не зная, ведь так? Скажем при рождении он будет иметь пару примитивных инстинктов, и несколько умений(типа: рыдать, ползать). Со временем ему нужно будет развиваться, развиваться он тоже не с пустого места будет. Он сможет обучаться примерно такими путями:
1. Его кто-то обучит
2. Он сам ето узнает (методом тыка так сказать)
3. Он где-то об етом узнает (ну прочитает книгу или есчё что-то)
Но он сможет и терять навыки, например из-за очень редкого использования, или просто от ненужности. Все достижения (как научные, так и религиозные) не будут как-бы "достижение страны/цивилизации/клана/и всё такое" у каждого юнита будет список своих знаний, умений, достижений и всё такое, таким образом юниты будут развиваться практически независемо друг от друга, и в тоже время довольно тесно зависимыми. Так как юниты смогут передавать свои знания, они, возможно, будут с каждым поколением улучшаться и улучшаться, до тех пор, пока юнит не станет более умным существом, и не научеться строить дома и всё такое, и так далее.

Мозг:

Ну теперь, пожалуй, немного собсно о его "мозге" более конкретно. у юнита пока-что будет несколько списков:
1. Инстинкт - это список простых "мыслей" (не знаю как по-другому написать)юнита, в нём описуеться всё самое простое, примерно такое:
Если я рядом с водой, и жажда не в норме, то я буду более преймуществено думать о том чтобы попить воды, ну а если я отойду далеко или напьюсь, то моя жажда попить воды сново уменшиться. Тоесть ето как-бы функция с простым условием, простым Эфектом, и таким же простым условием конца действия эфекта.

2. Умения - с умениями куда сложнее, это список того, что юнит умеет делать (хотя практически всё предводительно нужно будет записывать в движке игры, всёже вариант "методов реализации" будет довольно обширный, да и исходные действия могут быть куда более разные). По сравнению с Инстинктами у умений етсь всего 1 условие и 1 эфект, но те более сложные по своей структуре. Условие как и действие по сути ето 2 функции, в них будут проводиться операции по исчеслению, проверки выражнеий и всё такое. Пример приведу по тойже воде: Если я хочю попить и приоритет на питьё воды достаточно высок да при этом я нескем не дерусь, не особо занет делами (бле-бле-бле и так далее условия) то я активирую действие умения. Далее действие умения. Если я голоден, меня некто не атакует. Если вода у моих ног то я выполняю действие питья воды (тут должно добавиться действие в список выполняемого у юнита). Если вода не у моих ног, то я выполняю поиск воды, иду к ней, и пью ее (аналогично ето всё прибавляеться к списку действий). Думаю не стоит особо всё расписывать, поэтому для теории хватит этого.
3. Знания - Тоже не мало важный момент, знания нужны чтобы юнит знал кого как бояться, с кем лучше дружить, что сьедобно, что нет, что он любит есть, что не любит и так далее. как реализоувать ее я есчё особо не задумывался (так как по сути это прилагаемое), но можно примерно так: чтоб у знания было несколько параметров, допустим параметр "имя" будет примерно такой "пища хлеб", показатель - список строк, в которых будет описнао что да как, например "Предпочтение + 25", "Сытность + 10", и потом, каждый рас при выполнении действия питания, если ето прописано, то юнит будет просматривать что у него самое более любимое, и при этом не слишком сытное/или наобород.
4. Память - один из важнейших частей, по сути где-то 70% памяти будет в других частях "мозга"(тоесть в выше описаных), например как давно он последний рас использовал то или иное действие и так далее. Но будет и чисто своё так сказать. Например если другой юнит приказал данному что-то зделать, этот юнит может и забыть о приказе, ровно как и его хоязин. Ну а записываться оно должно на усмотрение програмиста, как ему проще, так пусть и пишет. Я бы писал примерно так: Название "<имя> приказал мне ловить рыбу", дата последнего вспоминания, дата приказа, приблизительное максимально время которое он будет помнить (лучше на каждую писать своё, более динамично будет выглядеть), ну и есчё кое-что, естесно особо и это не обдумывал, моё дело в теории.

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

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

Редактор:

Редактор я планирую писать полнофункциональный, в нём я зделаю 2 мода, админ-мод и любительский. Зачем это нужно? Да затем что в админ-моде будет доступ к изменению списков самих скриптов, так как всё будет строиться на них, списки скриптов, знаков всяких, условий, типов значений и всё такое. Если это всё будет в обычном моде, то человек может даже ненароком изменить что-то, а код-то не поймёт ненароки, и игра пойдёт ко всем чортям!

Итак что будет в редакторе(имеетьса введу обычный мод):

1. Редактор инстинктов
2. Редактор Знаний
3. Редактор Умений
4. Редактор Памяти
5. Редактор "Предпологаемых зданий" (об этом не совсем охото писать, вообще всё что "предпологаемое" описывать не буду, если нужно, опишу в другой теме)
6. Редактор "Предпологаемых предметов"
7. Редактор Расс, класов, имён, названий кланов (и название как оно называеться (тоесть может быть слово не "Клан", а "Караг"))

Конец:

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

Категория: Блог разработчиков | Просмотров: 1895 | Добавил: sSwSs
Всего комментариев: 191 2 »
1 Gexon  
круто smile

2 neoascetic  
"Умения - с умениями куда сложнее, это список того, что юнит умеет делать (хотя практически всё предводительно нужно будет записывать в движке игры, всёже вариант "методов реализации" будет довольно обширный, да и исходные действия могут быть куда более разные)"
Теоретически, можно и не записывать в движок. Скажем, каждый объект имеет набор свойств - действий, которые над ним можно проделать. А ангоры методом научного тыка (ничего смешного, на самом деле ученые, в частности, химики прошлого и нанотехнологи настоящего, так и делают в своей области знаний) перебирает все возможные варианты и запоминает успешные, из чего и формируются знания.
Кроме того, как было сказано, да, алгоритмы можно хранить во внешнем файле, который можно изменять из самой программы. А свойства объектов тоже не обязательно прописывать все, только базовые. А производные из них наследуют свойства от родителей. К примеру, дерево может гореть, стекло - биться. Стало быть, дом из дерева и стекла можно как поджечь, так и разбить. :) Есть еще кое-какие идеи. :)

9 Gexon  
про набор свойств объектов, согласен полностью!
это я и собираюсь внедрять в новой версии от 01 июля 2009г.

3 sSwSs  
Насчёт дерева и стекла конечно правельно, но для такой реализации понадобиться уйму времени, и пока, я думаю, это точно небудет.

Начсчёт умений - я имел введу что в движке будут описаны скрипты, а на внешнем файле будет написан скриптовый код определёного умения, и выйдет так, что 1 по сути одинаковое умение можно будет реализовать разными методами, и если не полениться то можно даже делать по несколько "методов реализации" одного умения (тоесть несколько умений по сути одинаковых) и выйдет некоторое разнообразие.

Хотя в игре разнообразие как и схожости малозаметны, в динамике даже при малоразнообразном, но коректном ИИ игрок не заскучает. Вот к примеру мой проет текущий, там ИИ тупее тупого, купляет вещи по тупому алгоритму, когда дерёться может отбежать на несколько метров, и сново в атаку (ето баг, но выглядит прикольно biggrin ) но в динамике, при большом их числе выглядет очень даже ничего! А если есчё и доработать ИИ, то выйдет бомба! wacko


4 neoascetic  
А у вас вообще физический, графический и искуственного интеллекта движки разделены? В идеале, конечно, лучше чтобы были разделены.
Скрипты, чтобы, изменив пару параметров, не компилить заново, лучше запускать, используя Питон. Вам знаком такой язык? Где-то читал, что для ИИ скриптов самое то. Вон в Батлфилде втором используется.
sSwSs, так у вас, как я понял, совершенно другой проект? Ссылочкой не поделитесь или демку поюзать? Очень интересно.

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

Насчёт ИИ: Ты меня наверно не правельно понял, хранить скрипты в файле для того, чтобы во-первых по желанию изменить чего-либо чтоб не копаться в коде, а быстро это изменить в спец редакторе. Во-вторых можно будет делать своего рода аддоны для игры, изменя практически всё (сам ИИ, вещи и так далее), хотя аддоны не подойдут к даному проэкту, так как он онлайн. biggrin

Все умения будут загружаться 1 рас, при загрузки игры, потом они все будут уже в памяти, файл уже не будет затронут. cool


6 neoascetic  
Ты видать мну тоже не понял. :) Я говорю про динамически изменяемую память. Чтобы изменялись не только характеристики отдельных существ, но и алгоритмы поведения.
Словом, ссылку в студию! Хотел бы поюзать! :)
Если в команду сюда не возьмете, начну мутить че-нить свое, уж больно мне эта сфера интересна. ;)

10 Gexon  
в команду возьмем.
только напиши мне в личку.

7 sSwSs  
Динамически изменять алгоритм поведения - НЕВОЗМОЖНО. Это всёрамно что создать самообучающийся на 100% не зависим не от чего ИИ, а этого пока нигде вообще нету. и нету не потому что ненадо никаму, а потому что это пока никто не может зделать + компы слабые.

11 Gexon  
Вот так новость!!!
А как ты думаешь наши ангоры будут тут развиваться?
родился полоумным и ничего не умеющим, и помер таким-же... smile

8 neoascetic  
"Динамически изменять алгоритм поведения - НЕВОЗМОЖНО"
Буду считать это вызовом. :)

12 Gexon  
Статья эта, как я понял, в основном описывает скрипты.
Я противник скриптов. Поэтому данный метод не подходит нашему проекту.
Я уже выкладывал описание новой версии. прошу ознакомиться: http://angor.3dn.ru/news/2009-05-15-27

13 sSwSs  
Скрипты отменил, а что будет - не сказал. Тут без скриптов туговато будет...

1-10 11-14
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]