Pk » Вт янв 20, 2009 13:07
Как говорится, "Русские, подумав, открыли Изобретения"(с) Sid Meyer's Civilization.
Предлагаю к рассмотрению (пока что только здесть) ещё один вариант ИИ, на него оказало влияние как некоторый лоический опыт, так и одна прочитанная книжка.
Надеюсь, это будет достаточно просто в реализации, всё-таки только работа со строками.
ИИ м4. "Коллега"/"Сотрап"/"Ассистент"
Методика работы.
раз в n циклов "Ассистент" может выполнить одно действие: считать массив, модифицировать массив в памяти (1 операция/ход), передать массив.
Части "Ассистента"
- файл ".dll" - хранит общий код "Ассистента".
- файлы ".dat" - хранят конкретный код, алгоритмы и выполняет роль памяти "Ассистента" (*-ai.dat - код и свойства; *mem.dat - память; *dmp.dat - файл подкачки памяти).
- файл "ai-game.sys" - хранит протокол передачи данных (параметры эмуляции мышки и клавиатуры ИИ-игра и оптимизации видео и аудио данных игра-ИИ). Является частью игры, а не "Ассистента". Так же хранится болванка-Ассистент, без памяти (или минимально язык+навыки) для особых оказий или на случай проблем.
Примечание: * - некое имя, нужно для подцепления всех файлов ИИ. Имя "Ассистента" хранится в файле *-ai.dat.
(возможно, кто-то будет запускать на FAT16)
Так же, разные части Ассистента могут выставить "флаг" на их эксплуатацию: если ими не пользуются и они готовы - они требуют работы.
Цель "Ассистента".
Как любое порядочное создание "Ассистент" должен иметь цель в жизни. Предлагаю этой целью назначить "максимальный эффект" - он хочет получить каждый следующий раз больше/качественней чем в предыдущий. Не важно что - хоть ругаться, хоть машины соперника взрывать, хоть просто поезда гонять.
Это нужно только для автономной работы "Ассистента".
Работа "Ассистента"
Ассистент имеет 3 режима работы:
- Наблюдение.
- Работа.
- Отдых.
В режиме "Наблюдение" Ассистент анализирует только нужную ему часть данных (в памяти, в игре). После этого он принимает решение: игнорировать, запомнить*, работать. (* - ресурсоёмко! Требуется разрешение игрока в меню "Опции").
В режиме "Работа" Ассистент выполняет стандартные функции обработки данных, в которых так же могут использоваться алгоритмы и действия из памяти. В этом режиме он может как подготавливать комманду игре для модификации поверхности/покупки техники, так и "понимать".
Подрежим "понимание": Ассистент набирает кучу данных и пытается их забить в универсальный алгоритм, где нет случайных элементов (если что-то "не понято", то ИИ не сможет использовать непонятную часть алгоритма или же будет использовать её как "штамп", только если все условия совпадают).
Подрежим "Работа с памятью": во избежание переполнения памяти отработанные данные помечаются как "ненужные" и могут быть затёрты. Так же при нехватке объёма кэша ИИ может перекинуть часть данных в "память", где они хранятся долгосрочно, оставить "сноски" и позже запросить нужное.
Режим "Отдых" является штрафом игроку (см. "Дополнения"), при нём ИИ пропускает свой ход.
Вне "сознания" Ассистента работает его память: она так же пытается архивировать данные (если что-то совпадает, то память пытается это сжать, выдавая каталожные "номера" одинаковым сочетаниям и помечая старую запись как не нужную, затем копирует весь новый блок на место старого и успокаивается.
Если к памяти нет обращений, то проводит фоновую дефрагментацию данных.
Длина каталожного номера не ограничена, просто писать сейчас решение этой теоретической проблемы долго. Для указания "начало номера"-"конец номера" используются спец. символы.
Примечание: Для Ассистента работа с памятью и работа с Игрой выполняется одними и теми же инструментами !НО! "память" не требует работы по модификации, только архивирование, а "работа" требует работы в "реальном" мире.
Иначе у нас будет самый обычный сумасшедший.
Общение с "Ассистентом".
Игрок может поставить 2 режима работы/обучения "Ассистента"
- работа-по-требованию (кнопочка "сделай мне хорошо", как в "Adobe Photoshop")
- самостоятельная работа (ИИ будет сам искать чем он может заняться - орать в чате, копать землю).
Второй режим гораздо более тяжёл для компьютера, зато позволит отдать ему на откуп какую-нибудь рутину... Скажем, машинки перед переездом останавливать или на станции поезда разгонять когда пробка будет.
Игрок может обратить внимание ИИ на что-нибудь своё внимание. В этом случае ИИ закинет указанное в кэш на понимание.
Так же игрок может заставить обращать внимание ИИ только на указываемое игроком.
("указателем" можно сделать сочетание alt+левая кнопка мыши, при этом так же продолжают работать все действия и комбинации по левой кнопке).
Обратная связь.
Ассистент может сам (встроенная возможность, не-обучение) обратить внимание игрока на какой-то момент: в экран Игрока он открывает окошко, в котором выделяет не понятные ему моменты. Следующее действие игрока к ИИ будет запомнено им и ассоциировано как получится.
Чат для ассистента - примерно то же, что и для игрока. Если он не будет знать язык - ему на него пофиг, т.к. он не понимает написанное.
Компания и ассистент.
ассистент имеет полный доступ к компании (в т.ч. дочерней), исключая запрещённые моменты.
Запрещения выставляются 3-мя уровнями доступа.
Игра и Ассистент.
Игра открывает для ассистента новое окно, в которое отправляются все нужные данные (но не отрисовываются до требования!).
ИИ и Ассистент.
ИИ может нанять Ассистента так же, как и игрок, другой вопрос, что он его вряд ли чему научит. Зато может сплавить работу.
Примечание: Ассистент и Ассистент.
Если в ходе работы потребуется использование белее одного Ассистента, то они смогут общаться друг с другом только через чат или иные общедоступные каналы.
Сеть и Ассистент.
Если ассистент играет в одной компании с игроком для игры это один игрок.
Если ассистент играет не в той же фирме - то игра делает вид, что в ней 2 разных клиента.
---===---
Возможные дополнения.
Индивидуализация Ассистента.
Для разнообразия игры и для создания "слабых мест" у ИИ можно привязать его свойства к его аватаре, т.е. как он выглядит - так и действует.
Тёмные очки - не будет отчитываться перед игроком, если тот не потребует;
Золотая оправа - не будет браться за то, у чего относительно низкая прибыль;
и проч.
Поддополнение (сыро!)
Мужские персонажи более стремятся к разнообразию всего.
Женские персонажи стремятся всё решить одним способом.
Сторонние приложения.
Если похимичить, то было бы не плохо дать возможность для ассистента работать со сторонними приложениями, запуская их "под игрой" - например, можно будет затребовать с него фин. отчётность в блокноте/экселе. Да, надеюсь вы обратили внимания, что считать он по умолчанию не умеет?
---===---
Возможные проблемы:
Ассистенты могут начать выяснять друг с другом отношения в чате;
Медленная скорость работы Ассистентов;
Сумасшедшие Ассистенты и Ассистенты - психопаты из-за неправильного обучения.