ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
» О применимости чат-ботов в игровых вселенных (Single Player) | страница 1 |
|
|
|
Канал Игры Мечты: «О применимости чат-ботов в игровых вселенных (Single Player)» |
|
|
Jerry Rezet
581 EGP
  Рейтинг канала: 5(113) Репутация: 86 Сообщения: 3365 Откуда: Санкт-Петербург. Зарегистрирован: 01.04.2005
 |
|
Тут возник вопрос... или даже не вопрос, а скорее так, просто идейка... вопрос хотелось бы обсудить в плане "нужно - не нужно" такое в космосиме (ну... или в любом другом жанре. Но тогда вопрос встаёт в плане "в каком жанре это более применимо"...)
А идея рождалась так...
Сидел я как-то в баре, когда на Сириусе служил фрилансером (читал билборд добираясь до статуса "элита"/просматривал сообщения, когда искал задания про ксенонов/нужное подчеркнуть/ненаписанное - вставить) и разговаривал с тамошними персами (так же известными под обобщённым названием "неписи"). Только что-то все фразы какие-то одинаковые у нас были и поговорить особо было не о чём, кроме всякой фигни вроде "У меня есть для тебя задание - полетишь туда-то и убъёшь там всех к чертям свинячьим".
В связи с этим и подумалось - а ведь есть же такая вещь, как "чат-боты", - база данных по словам и фразам, их взаимосвязям, их применимости к тем или иным введённым пользователем вопросам/фразам, - так почему бы не использовать подобную технологию в играх при той же "болтовне в баре"? Даже хотя бы в сильно упрощённом виде - например десять вариантов ответов помноженных на несколько эмоциональных окрасок (типа злобный/дружелюбный/ироничный хотябы). Ну или, конечно, можно чтобы эти варианты были не "жёсткими" (то есть - всегда одни и те же), а варьировались в зависимости от "накала страстей беседы" или даже может быть чтобы была возможность какие-нибудь "составные" фразы строить из этих нескольких "вариантов ответов", ну и у неписей чтобы тоже "словарный (точнее - фразовый) запас" был побогаче, и тоже "составной" - и в результате беседы, к примеру, чтобы можно было например слетать куда-нибудь вместе (охрана/эскорт/круиз/эксплоринг/крафтинг/киллинг ), чтобы, предположим было возможно чтобы тебе предложили задание, или самому предложить.
Да и в космосе тоже иногда хотелось сказать простое пилоцкое "Спасибо" мимопролетающему пилоту-нпц, помогшему отбиться от нахалов-пиратов (а иногда и выразить оное спасибо в денежном эквиваленте - типа за такое можно и репу поднимать ), или чтобы если ввяжешься в драку между группой пилотов после победы чтобы "Спасибо, дружищще!" сказали тебе... - мелочь, а приятно ведь, правда?
И потом - чтобы таким образом можно было "завести друзей" в игровой вселенной, пусть они даже будут и неписями (но об этом - другой разговор) - я, почему-то, считаю неправильным, что все, с кем близко знаком игрок жёстко определяются сюжетом игры и все остальные имена служат не более чем идентификатором вражеского корабля (ибо "дружеские" в почти любой игровой вселенной (имеется ввиду одиночная игра) - это те, кто не обращает на тебя внимания).
И, насколько я понимаю, для внесения в игру таких возможностей нет необходимости в особых "извращениях", да к тому же написание сетки взаимосвязанных фраз - всего лишь дело фантазии (а лишённый фантазии человек вряд ли будет писать игру ).
Вопросов на обсуждение пока выносится не много:
1: Стоит ли вводить в игровое пространство подобную вещь
2: По каким причинам это стоит/не стоит делать?
3: Если стоит - то в каком виде это должно присутствовать в игре (например - только в виде вариантов ответов, чтобы не заморачиваться с печатанием, или наоборот - в виде "внутриигровой аськи", чтобы любому неписю можно было сказать всё, что ты о нём думешь , или ещё какой-нибудь способ - больше мну ничего в голову не лезет...)
P.S.: ВотЪ...
_________________ - Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]
Последний раз редактировалось: Jerry Rezet (14:56 20-05-2007), всего редактировалось 1 раз |
|
|
Digited
271 EGP
   Рейтинг канала: 4(99) Репутация: 49 Сообщения: 932
Зарегистрирован: 24.08.2004
 |
|
Применимость продуманной технологичной чатовой системы, сращенной со скриптовой, вполне высока. Больше всего интересует реакция на события и взаимодействие.
Пример 1: к станции подлетает чуть ли не флот нпц-пиратов. Вы - на грузовике. Задача для нпц-пиратов:
- вам сказать сбросить груз и валить отсюда
- сбросить груз и перечислить на их счет столько-то денег и валить отсюда
- передавать привет на том свете
В двух вышеуказанных вариантах + время на ответ, при отсутствии ответа по истечении времени - атака.
Варьирование оформления фразы, несущей в основе один из чат-скрипт-стандартов, варьировать согласно некоторым характеристикам говорящего нпц-пирата (эмоц. окраска, несколько стандарт. оформлений с микро рандомом деталек).
Ваши действия:
- стукнуть в асю соседнему нпц-грузовику с эскортом, что надо вместе отбиваться, вместе получится. Слушать ответ.
- ответить пиратам свое решение единой фразой, одной из стандартных: ок/пнх или богаче, в зависимости от проработки этой системы.
Пример 2: пират - вы. Пристыковались к полулегальной станции. За вашу голову кое-что назначено. Облава полиции, бежать опасно. Вам предлагают сдаться, на ответ - 10 сек, иначе атака. За отказ считается: после отстыковки от станции включение любого автопилота или маневра, кроме сближения с полицией. По окончании сближения с вами стыкуются и забирают из шипа, везут в тюрьму, из которой через некоторое время освободят при побеге или атаке пиратов.
В основе такого взаимодействия:
1. Скриптовый движок на сценарной основе
2. Чат-движок ака обертка над скриптовыми директивами при диалоге, берущий инфу для разнообразия оберточных фраз из характеристик нпц-персонажа.
3. Игромир на событийной основе. Скажем, косвенное управление на основе целеуказания и автопилотов.
Надо бы это запрототипировать, те сделать предельно просто тестовый макет с минимальным интерфейсом и затратами.
Идеи, добровольцы?
|
|
|
Jerry Rezet
581 EGP
  Рейтинг канала: 5(113) Репутация: 86 Сообщения: 3365 Откуда: Санкт-Петербург. Зарегистрирован: 01.04.2005
 |
|
Digited : |
Надо бы это запрототипировать, те сделать предельно просто тестовый макет с минимальным интерфейсом и затратами.
Идеи, добровольцы?
|
Ты имеешь ввиду, что уже имеешь место, куда собираешься такое применять?
Насчёт "Примера 2" и "ведут в тюрьму" - это полный "ГЕЙМ ОВЕР", если конечно не найдёшь способа сообщить подельникам, чтобы они отбили тебя ещё на этапе конвоя в тюрягу - потому что срок до 15 лет за пираццтво отрабатывать скриптовой демкой - "не кузяво".
Далее - ты не мог бы объяснить подробнее по поводу последних трёх пунктов, ты их слишком общими словами описал, и я не вполне понял что ты имел ввиду - если п. 2 ещё мне понятен, то 1 и 3 - хотелось бы разъяснений, что именно ты имел ввиду.
_________________ - Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c] |
|
|
Digited
271 EGP
   Рейтинг канала: 4(99) Репутация: 49 Сообщения: 932
Зарегистрирован: 24.08.2004
 |
|
Jerry Rezet : |
Ты имеешь ввиду, что уже имеешь место, куда собираешься такое применять?
|
Да.
Jerry Rezet : |
Насчёт "Примера 2" и "ведут в тюрьму" - это полный "ГЕЙМ ОВЕР", если конечно не найдёшь способа сообщить подельникам, чтобы они отбили тебя ещё на этапе конвоя в тюрягу - потому что срок до 15 лет за пираццтво отрабатывать скриптовой демкой - "не кузяво".
|
Постоянные (с периодом, зависящим от кол-ва игроков-заключенных) атаки пиратов на тюрьмы + возможность уйти под залог свой или вдруг появившихся родственников/нпц-друзей. Способ быстро и всегда автоматом вытаскивать из тюрьмы найти можно.
Digited : |
1. Скриптовый движок на сценарной основе
|
Имеется ввиду такой AI для нпц, который умеет действовать по плану-скрипту (задачно, событийно) и сам составлять подобные простые по шаблонам. Например, работа автопилота стыковки:
1. Спросить разрешение на стыковку, передав в параметре свой формат докпорта и указатель на себя (проверка свой-чужой и более сложные). Если разрешено, то получить ссылку на девайс докпорта, если нет, прервать сценарий с ошибкой.
2. Приблизиться (автопилот приближения) к [цель]
3. Лететь в точку пространства, опредленную докпортом цели
4. Ориентироваться (повернуться нужным образом)
5. Стыковаться
Это низкий уровень, возможны и более высокие, для элементов которых можно применить автосоздание более простных сценариев, а также указать входные точки исполнения по событиям в процессе работы. Вложенность целей и ветвление по возврату и событиям дают невероятные возможности, а ведь вполне реализуемы. (найду обсуждения с разработчиком сервера - добавлю сюда.)
Пример высокого уровня: полицейский патруль:
1. лететь к [станция]
2. скан судов.
3. Возврат успеха.
Событие: обнаружен пират: старт скрипта типа арест, если успех - возврат в сценарий.
Суть: скрипт - текстовый файл и/или его объектное представление.
парсер - текст в объектное и обратно.
АИ - действия по текущему скрипту, если не осталось, выбор в соответствие с настройками или возврат на установленную базу.
Digited : |
3. Игромир на событийной основе. Скажем, косвенное управление на основе целеуказания и автопилотов.
|
Управление космолетами - на основе целеуказания, как автопилоты во Фриле и IW2. Событийная основа - механизм возникновения событий в игровых зонах на основе происходящего там (влет корабля, пираты, облава полиции, незаконный бой, нашествие пилотов) + обработчики, связанные с AI.
Все это - составная и связанная система, но ее можно и потихоньку по частям и прототипам начать делать. Буквально на пальцах и отдельных частях. Если кому интересно, могу со своей стороны определить этапы работы, технологии и сделать несколько тз. Что получится, можно запользовать в любой подходящей игре.
Интереснее всего взаимодействие. Пример: концепция пиратства - взаимодействие пиратов на боевых кораблях и контрабандистов на грузовиках. Пираты ищут добычу и ведут бой при необходимости, когда есть груз и нет рядом врагов, запускают в эфир (клановый пиратский чат) такую фразочку практически консольную: _pirate. Всем в клане приходит _pirate Name Sector ID Если живые игроки-контрабандисты не откликаются, пульнув _ok ID, то через установленный промежуток времени AI проверяет доверие клана к отправившему пилоту и при достаточном уровне и наличии свободных нпц-контрабандистов дает им срочный скрипт и от их имени пуляет принятие вызова. Задача пирата - прикрывать грузовики контрабандистов, пока они подлетают и грузят добычу, а также прикрыть отход до гиперпрыжка/ухода в межпланетный режим полета. Все получилось - рейтинг вверх и премиальные, нет и грузовики забили - противоположно. В процессе можно отдать в эфир (клановый чат) _runaway, типа ситуация опасная, всем сматываться. То есть вот такой набор системок в действии.
Upd имелось ввиду, я подключусь в реализацию только при наличии помощи здесь, тк пока занят другим срочным, чтобы делать все самому. Иначе будем делать позже и не здесь. Чем лучше здесь и вместе - результат в свободное пользование любому пилоту.
Последний раз редактировалось: Digited (14:50 21-05-2007), всего редактировалось 1 раз |
|
|
Digited
271 EGP
   Рейтинг канала: 4(99) Репутация: 49 Сообщения: 932
Зарегистрирован: 24.08.2004
 |
|
Для начала, например: чат-бот: оформление нескольких основных реакций/ответов (отдавай груз/сдавайся/вали отседова/давай нападем на [цель]/превед/пасиб) в зависимости от характеристик персонажа говорящего и принадлежности к структуре: полиция, флот, правительство, независимый, станция, горняк или пират, и снебольшим рандомом от собственно бота.
|
|
|
Jerry Rezet
581 EGP
  Рейтинг канала: 5(113) Репутация: 86 Сообщения: 3365 Откуда: Санкт-Петербург. Зарегистрирован: 01.04.2005
 |
|
Так... Понл... Тогда получается надо делать ещё вставки-ссылки на что-то вроде переменных, типа %TIME%, %COORDS%, %SHIP_ID%, %NAME%, %РУГАНЬ%, %ОБЗЫВАТЕЛЬСЬВО%, %MISSION_TYPE%... Вставляем их в нужных местах фраз (или их составляющих) и в зависимости от ситуации движком присваиваем им значение (случайное или заранее определённое).
Для примера - параметр %MISSION_TYPE% должен принимать значения что-то вроде %эскорт% (сопровождение определённого корабля, определяемого, скажем, в передаваемой скриптом переменной %SHIP_ID%), %грабёж% (только для пиратов - вроде должен состоять из подскриптов определяющих последовательные действия типа поиск_цели/сканирование_на_предмет_ценных_грузов/Если_да_-_в_отаку!/если_нет_-_поиск цели), ну и, там, ещё много всего можно придумать...
Переменная типа %РУГАНЬ% выдаёт случайное ругательное словцо (а может и не одно), которым можно обматерить другана/супостата
Итак, в итоге строка должна состоять из нескольких параметров:
(ИД_строки)_(эмоциональный накал по 10бальной шкале - дружелюбный/враждебный, для выбора предпочтительного ответа в том же тоне или формирования определённой реакции на фразу, вплоть до атаки)_(собственно строка с ответом и включёнными в неё переменными)_(связь этой строки с другими строками по их ИД - какими фразами можно отвечать на данное послание)_(действия, которые должны/могут произойти после ответа).
Что я ещё забыл?
_________________ - Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c] |
|
|
Kalembas
1335 EGP
     Рейтинг канала: 2(24) Репутация: 263 Сообщения: 18999 Откуда: Санкт-Петербург Зарегистрирован: 21.03.2003
 |
|
Ну так в чем трабла то? Зря что ли LUA изобрели?
LUA сращивается с движком на С++, скажем, и вот вам готовое взаимодействие движка со скриптами, в зависимости от написанных скриптов движок делает, что ему приказано. Тут вам и чат боты, и бот чаты, и готты и жмотты, и хрен в панаме
_________________ Делаешь – не бойся, боишься – не делай, а сделал – не сожалей... |
|
|
TpuCTaH
63 EGP
 Рейтинг канала: 1(4) Репутация: 8 Сообщения: 128 Откуда: Харьков Зарегистрирован: 12.06.2006
 |
|
Kalembas : |
Ну так в чем трабла то? Зря что ли LUA изобрели? Улыбка
|
зря чтоли питон изобрели? С помощью буста можно встроить я думаю достаточно быстро.
http://www.boost.org/libs/python/doc/index.html
_________________ Если вы считаете, что C++ труден, попытайтесь выучить английский.(с)Bjarne Stroustrup
С++&&DirectX |
|
|
Kalembas
1335 EGP
     Рейтинг канала: 2(24) Репутация: 263 Сообщения: 18999 Откуда: Санкт-Петербург Зарегистрирован: 21.03.2003
 |
|
Совершенно верно. Просто мне привычнее работать в связке LUA + C++
_________________ Делаешь – не бойся, боишься – не делай, а сделал – не сожалей... |
|
|
Jerry Rezet
581 EGP
  Рейтинг канала: 5(113) Репутация: 86 Сообщения: 3365 Откуда: Санкт-Петербург. Зарегистрирован: 01.04.2005
 |
|
А я вообще не представляю что есть питон и луа, блин, и как их в этом разрезе применять...
Хм... Тогда напрашивается вопрос: если это так просто - почему этого почти нигде нет? По крайней мере я не видел ни одной игры, где это было бы хоть сколько-нибудь вменяемо реализовано...
_________________ - Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c] |
|
|
TpuCTaH
63 EGP
 Рейтинг канала: 1(4) Репутация: 8 Сообщения: 128 Откуда: Харьков Зарегистрирован: 12.06.2006
 |
|
Jerry Rezet : |
По крайней мере я не видел ни одной игры, где это было бы хоть сколько-нибудь вменяемо реализовано...
|
Civ4 и помоему 3. Если ты имеешь ввиду внедрение скрипт движка.
Космосима с посадкой на планету кроме елиты тоже нету .
_________________ Если вы считаете, что C++ труден, попытайтесь выучить английский.(с)Bjarne Stroustrup
С++&&DirectX |
|
|
Kalembas
1335 EGP
     Рейтинг канала: 2(24) Репутация: 263 Сообщения: 18999 Откуда: Санкт-Петербург Зарегистрирован: 21.03.2003
 |
|
Jerry Rezet : |
Тогда напрашивается вопрос: если это так просто - почему этого почти нигде нет? По крайней мере я не видел ни одной игры, где это было бы хоть сколько-нибудь вменяемо реализовано...
|
Звёздные Волки 1-2
_________________ Делаешь – не бойся, боишься – не делай, а сделал – не сожалей... |
|
|
Digited
271 EGP
   Рейтинг канала: 4(99) Репутация: 49 Сообщения: 932
Зарегистрирован: 24.08.2004
 |
|
Jerry Rezet : |
а ведь есть же такая вещь, как "чат-боты"
|
Пример + код можно организовать или будем делать сами?
|
|
|
Crimson
560 EGP
    Рейтинг канала: 4(83) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
2Розеткин - Классические чат-боты при общении друг с другом имеют тенденцию сваливаться в зацикливание. http://www.elite-games.ru/conference/viewtopic.php?p=1532659#1532659
Для игры легче организовать что-то типа дерева вопросов-ответов, где куски разговора будут выбираться в соответствии с параметрами, ситуацией, рандомом и т.п.
|
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Чат боты были еще в Визардрай 8. Но система
Crimson : |
дерева вопросов-ответов, где куски разговора будут выбираться в соответствии с параметрами, ситуацией, рандомом и т.п.
|
намного лучше, ИМХО. Как для реализации так и для гейплея (Сделать нормальный геймплейный чат бот.. Нуу.. Легче сделать хорошую систему графов диалога, чем более-менее вменяемый чат бот)
_________________ MOV topka, C++ |
|
|
Jerry Rezet
581 EGP
  Рейтинг канала: 5(113) Репутация: 86 Сообщения: 3365 Откуда: Санкт-Петербург. Зарегистрирован: 01.04.2005
 |
|
2Кримсон - В заголовке я уже упомянул, что речь идёт о СинглПлэер-режиме. Поэтому стравливать чат ботов нет ни смысла ни возможности - они, по идее, должны "общаццо" только с игроком (по крайней мере - в присутствии игрока, когда он может в их чат вмешаться).
А про "куски разговора по соответствию с параметрами, ситуацией и рэндомом" - затем и завёл эту тему, чтобы прояснить, насколько целесообразен тот или иной подход...
_________________ - Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c] |
|
|
Crimson
560 EGP
    Рейтинг канала: 4(83) Репутация: 130 Сообщения: 3041
Зарегистрирован: 03.09.2003
 |
|
Jerry Rezet : |
Поэтому стравливать чат ботов нет ни смысла ни возможности - они, по идее, должны "общаццо" только с игроком (по крайней мере - в присутствии игрока, когда он может в их чат вмешаться).
|
А... я думал ты предлагал сделать ботов которые бы друг с другом общались, а не только с игроком. "Оживить эфир" таксзать...
Бот не хранит слова и их взаимосвязи. Он скорее пытается найти в твоей фразе ключевые слова, на которые можно было бы отреагировать фразой из своей обоймы. Есть "самообучающиеся" боты, которые пытаются пополнять словарный запас, слушая диалоги людей. Но все равно осмысленных бесед с ними не получится. Максимум может эпизодически ввернуть удачную фразу в тот же чужой диалог.
Так что в любом случае придумывать варианты фраз и ответов придется самому и заранее. Ограничен ты в этом плане только своей фантазией.
|
|
|
vampo
571 EGP
  Рейтинг канала: 1(6) Репутация: 81 Сообщения: 450 Откуда: Тулун Зарегистрирован: 16.06.2004
 |
|
Чат боты вещь интересная, а с озвучкой как в таком случае быть?
|
|
|
Digited
271 EGP
   Рейтинг канала: 4(99) Репутация: 49 Сообщения: 932
Зарегистрирован: 24.08.2004
 |
|
Например, никак.
|
|
|
TpuCTaH
63 EGP
 Рейтинг канала: 1(4) Репутация: 8 Сообщения: 128 Откуда: Харьков Зарегистрирован: 12.06.2006
 |
|
ггг майкрасофтовский спич движок прикрутить
_________________ Если вы считаете, что C++ труден, попытайтесь выучить английский.(с)Bjarne Stroustrup
С++&&DirectX |
|
|
|
|
|
Канал Игры Мечты: «О применимости чат-ботов в игровых вселенных (Single Player)» |
|
К списку каналов | Наверх страницы |
Цитата не в тему: Трезвый сплит - это не сплит - это замаскированный пьянный аргонец (Koshmar Undead)
|
» О применимости чат-ботов в игровых вселенных (Single Player) | страница 1 |
|