Free Unity DevФорум

Живые NPC

Страницы: 1 2 Следующая »
#0
(Правка: 0:51) 0:48, 1 авг 2025

Для моего проекта важно это понятие и есть ряд наработок. Но я так же заметил, что уже было такое сообщество Живые NPC в single player RPG. И я хотел бы его немного оживить.

Попробуем переработать их идеи и структурировать.

Базовый спич

Планируем обсудить техническую реализацию каждого из умений NPC и в целом нашего будущего "NPC-движка". Движок должен быть сделать таким образом, чтобы любой желающий смог "прикрутить" его к своей игре.

Подразделы (то на что нужно надеть больше мяса, оно у меня для вас есть, но позже):
1. Экономическая активность NPC
2. Характер
3. Революции, перевороты

Кроме этого, дам ссылку на свой современный проект, в котором пытался и буду развивать сходные идеи:  Фирмачи.

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Есть более современная версия, но с ней я поделюсь в сентябре.

#1
(Правка: 1:06) 0:59, 1 авг 2025

Здесь выложу объяснение своих наработок по темам относящиеся к БОЕВЫМ СИСТЕМАМ

Особенности двух игр (JA3, Stranded Alien), чтобы сделать стреляющих юнитов

+ Показать

Система попаданий и система здоровья

+ Показать

Основы архитектуры стреляющих юнитов и использование дискретных карт

+ Показать

На канале есть больше роликов на тему RTS Game, но начать лучше с тех которые выделены тут. Но и надо иметь введу, что на данный момент для меня важнее экономическая активность юнитов.

#2
0:59, 1 авг 2025

Зарезервировано

#3
0:59, 1 авг 2025

Зарезервировано

#4
(Правка: 1:44) 1:24, 1 авг 2025

Итак, разберем тему Экономическая активность NPC

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

slatazan
> Ты затронул больную точку..
> течение игрушечного времени в игре.
> Я пока для своей РПГ не смог справиться с такой трудной фишкой и отказался от течения времени.
Не знаю, в чем там была трудность, но я опубликую полностью код для этого.

+ Показать

PolariusBear
> Алгоритмы потребления я скорее всего в любом случае сделаю и оттестирую.
Прошло 14 лет

Самое время было бы поинтересоваться и как прогресс :)? Но мы тут не за этим.

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

+ Показать
#5
(Правка: 2:15) 1:44, 1 авг 2025

Думаю, пока игры в одни ворота хватит - буду ждать партнеров, кто разберется в коде - тогда обсудим. Но среднестатистически на этом сайте, мне кажется я поделился уже больше, чем кто либо - когда либо ... но я же не зря писал про энтузиазм в С кем нам по пути? :) Вот демонстрирую конструктивность в обсуждении ))

Кстати, заметьте, что генетические алгоритмы, нейросети и прочую популярную муру очень просто заменить простой сортировкой по взвешенной стоимости. Вам не нужно ничего другого, чтобы решить задачу оптимизации.

#6
(Правка: 14:50) 14:26, 1 авг 2025

Возьмем вторую тему  Характер.

Большая конкретизация была мной выполнена в некоторых заброшенных проектах ,но это можно актуализировать Социальная модель - свойства личности и их связь с умениями.


Пока не знаю, есть такие свойства личности как:
1. Ответственность (Responsible,  склонность выполнять обязательства)
2. Уверенность (Confident, вера в свои силы)

это новые или в каком смысле уже дублируют те которые в таблице. Если новые, то у них должны быть антиподы.

  • Irresponsible (Безответственный, пренебрежение долгом)
  • Insecure (Неуверенный, зависимость от чужого мнения)
  • Deepseek считает что это все же новые, хотя в таблице есть близкие

    #7
    18:33, 2 авг 2025

    // - - -
    Живые купцы (NPC):
    персонажи, без прямого управления - игрок следит и влияет.

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

    Игрок построил рыбный рынок - добавим еды, в каталог еды..
    ++ [ рыба крутая, для богатых]
    ++ [ рыба средния, для средних]

    Игрок построил рыб-завод, и добавим еды, в каталог еды..
    ++ [ консервы богатые] // красная икра или типа того.
    ++ [ консервы дешовые]

    Большой каталог еды == вероятно, купцы будут довольны,
    и от этого _чего_то_зависит ...
    А если в каталоге нет продуктов для еды - игрок строил
    всякие кирпичные заводы - купцы начали подыхать - игра закончена.

    Промежуточный итог..
    Игрок играет в аквариум, и надо кормить рыбок.
    Кормёжка проходит _виртуально. Заказ не доставляют - просто
    тратим доступные деньги, и купец - наелся.
    Вероятно, можно привязать шансы повышэния свойств купца.
    Тоесть, каждое поедание - можт пробудить новое свойство-талант,
    либо повысить-понизить свойство, которое дали купцу, с рождения.

    Пока не ясно - нужно-ли купцам ходить _по_дорожкам тематического парка,
    чтобы натыкаться на очередную шаурму ?

    #8
    (Правка: 18:41) 18:34, 2 авг 2025

    (редактура: накосячил с циферками для свойства _отдых)

    // - - -
    Тема характера (тема персонификатора - набор меток).
    // Гугл-док: соц-модель со свойствами личности.
    В игре, свойства личности должны определять _кейсы,
    в которых купец будет залипать
    (входить в кейс-функцию, и шансово там что-то извлекать).

    Упомянуты параметры..
    1. дипломатия // вероятно, фактор сближэния с другими купцами.
    против
    2. интриг // наверно, стремление к разделению (выделить себя из толпы).

    3. умение-работяга
    против
    4. сила-дворянин

    5. личное мнение про кланы, включая тот, в котором купец ныне-тусуется.

    6. деньги на еду (и на повышалку характерных свойств).

    // [ числа] - это конст-масив, как единый параметр, для функций,
    // которые что-то меняют - например, подобный дин-масив, у купца, в голове.
    Например
    купец.добавить_характер( номерок_например_Гнев_5, масив_Гнев);
    
    
    // офсеты масива..
    [ дипломатия, интриги, умелость, силовитость, отдых]
    // отдых - если большой, то купец не сгорит на работе.
    // Если отдых _маленький, то это купец-фанатик - быстрей сдохнет, выгорит.
    //
    // Сэкси-Похоть[5] = { 0,1,0,0,0};
    (номер_1)Сэкси-Похоть = 0,1,0,0,0
    (минус1) Благо = 0,0,1,0,0
    Поиск по абсолют-номерку, чтобы не допускать добавку
    похоти и благонравия в набор свойств одного купца.
    
    (номер_2)Обжора = 0,0,-1,0,1 // давим умелость, но отдыхаем.
    (минус2) Сдержан = 0,0,1,0,1 // починит без лишних эмоций - большэ отдыхнёт
    
    (номер_3)Жадный = -1,0,0,0,-1 // жадный - часто меняют отдых на что-то ешё.
    (минус3) Шедрый  = 1,0,0,0,0
    
    Ленивый = -1,-1,-1,-1, 1
    Усердие = 1,0,1,0,-1
    
    мас_Гнев = -1,-1,0,1,0
    Спокоен = 1,0,0,0,1
    
    Терпила-выдержка = 0,0,1,0,0
    Торопыга    = 0,0,-1,0,-1
    
    Выскочка = 1,-1,0,0,0
    Смирный = 1,0,1,0,1
    
    Обман-веролом = -1,1,0,0,0
    Честный   = 1,-1,0,0,0
    
    Трус-малодуш = 0,1,0,-1,1
    Смелый = 0,0,0,1,-1 // смело вляпывается - некогда отдыхать
    
    Зажатость  = -1,0,1,0,0 //за-стенкой-отстранёный
    Певец  = 1,0,0,0,0
    
    Самолюб-павлин = 0,1,1,1,-1 // оптимизм // Амбиция
    Серый контент = 0,-1,1,0,1
    #9
    (Правка: 14:49) 14:25, 3 авг 2025

    slatazan
    Я не очень понимаю посыл, ты вроде рассказал, но как то упрощенно, но по своему как раз то, что у меня, еще правда не окончательно, но уже реализовано. Поэтому я не понимаю, т.е. ты послушал ролики/почитал документ мой и высказываешь (но тогда почему другими словами/терминами) или мы просто одинаково думаем, и по сути говорим об одном и том же, но разными словами?

    Например, это

    slatazan
    > Купцу выдали денежку (ежэдневно ему капают) - он потратил на еду ...

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

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

    slatazan
    > Тема характера
    Второй твой пост, тут очевидно, что ты говоришь о моем документе, неким образом его перестраивая, дорабатывая, но я не понимаю на шаг раньше. С какой цель? Что ты хочешь сделать, добавить, обсудить?

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


    Я спросил Deepseek, поэтому подтверди или опровергни его мысли :) ну или напиши свои

    + Показать
    #10
    23:00, 3 авг 2025


    tac
    Вероятно, говорим об одном и том же, но разными словами.

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


    // - - -
    Твой друг, Deepseek - дипломатичный чел. гы-гы.
    Я тупо пере-печатал твою таблицу, но там есть деталь..
    Перепечатана лиш первая страница.

    Тоесть, я бы выкинул то, что не уместилось, у тебя, в первую страницу.
    И твои сомнения отбрасываются..

    Вставлять-ли пару новых свойств ??
    Пока не знаю, но кажись, есть такие свойства личности как:
    1. Ответственность (Responsible,  склонность выполнять обязательства)
    2. Уверенность (Confident, вера в свои силы)

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

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

    #11
    23:00, 3 авг 2025

    // - - -
    Какие события мне видятся ?
    Условные нормативы распорядка дня..
    (в штуках, аля максимум, в день, хотя можт быть нуль).
    1. Прогулка = 3 шт. // игрок можт видеть _куда_то_идёт.
    2. Еда = 3 шт. // никогда не видно - когда купец жрёт.
    3. Сон = 2 шт (двумя кусками, часто, эти куски идут подряд).
    // Как игрок можт видеть: купец находится в списке какого-то дома,
    // и у этого купца - значок сна.
    4. Работа = 2 шт (условная нагрузка, двумя кусками, подобно сну).
    // Как игрок видит: мутно, но наверно, купец привязан в транспорт,
    // либо в дом-завод.
    // Пока, единственый пункт планировки, который требует доп-указок..
    // Специфика-профа., требуемая подготовка (школа-курсы) ...
    5. Танцы = 1 шт (условная встряска, в день - пробежался, либо сэкс).
    6. Гараж = 1 шт (условное хоби-увлечение, встреча с друзяшками).
    7. Сюрприз-нежданчик = 1 шт. (сбыча ближней хотелки, на что копил)

    Каждое событие можт вызывать несколько _добавлений.
    Например, событие _еда, можт кидать жребий..
    ? _а_не_прибавить_ли: Обжора ?

    Купец дотопал до клуба, и там случилось событие _танцы.
    Это кейс, который можт чего-то сверять-проверять,
    и там тож можт-быть жребий..
    ? _а_не_прибавить_ли: Похоть ?

    На прогулке - жребий выбрал купцу _точку, куда надо топать,
    и оказалось, рельс, образованый после поиска пути - проходил
    мимо храма - мимо-ходное событие..
    ? _а_не_прибавить_ли: Благо-нравие ?

    Ветер сильный дул - персонаж, наверно схватил дебаф _насморк,
    а у этого дебафа - раз в час, жребий..
    ? _а_не_прибавить_ли: Ленивый ? // как-будто слегка больной.

    Итого, помимо первично-выданых свойств, которые могут
    дополняться-дублироваться, буквально каждый день (в начале).,
    купца накачивают, через события.
    Свойство, которое дошло до 10, или до 20 = порождает
    явную реакцию-бзик от персонажа, заставив его делать
    какой-то фант _из_списка. Если Похоть достигла Пика,
    то персонаж явно озаботился, и возможно произошла драка.
    Вобшем, закидываем в топку констант_масивы, и какая-нить чаша
    переполняется, и происходят _поступки, иногда - сомнительные.
    Возможно, купца - арестуют. гы-гы.

    #12
    (Правка: 4:24) 3:52, 4 авг 2025

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

    Короче, вот что я предлагаю тогда оставить как базис:
    1. Жадность - Щедрость
    2. Лень - Усердие
    3. Вероломство - Честность
    4. Амбиции - Непритязательность
    5. Цинизм - Фанатизм

    этого хватит, чтобы построить 5 осей "характеров".

    Как эти свойства личности могут формироваться. Нам нужно по аналогии с тем как "генерируется мир", сделать функцию ФормированиеЛичности, где промоделировать "детство" персонажа, т.е. буквально пропустить ускорено через некоторые события якобы в детстве. Тогда персонаж станет уникальным, со своей историей почему он такой стал.

    У меня реализована похоже так с компетенцией в работе. Я просто отправляю "его в школу", пока у него не появится нужная компетенция для ведения бизнеса.

    Вот функция (ты читаешь код? я правильно понимаю, что ты программист?)

    + Показать


    Так вот, с характером может запускаться что-то аналогичное "МоделированиеДетства", только возможно, будет больше "ТиповыхСобытий" и они могут более накопительно менять характер. Где то на каждое свойство личности нужно придумать скажем 3 варианта событий. Вида почему можно стать ленивым? а фанатичным? и тогда как ты и описываешь на примерах, пробежаться и сформировать начальные характеры. А уже во время игры продолжить просто бегать по тому же алгоритму.

    #13
    4:21, 4 авг 2025

    slatazan
    > Вероятно, говорим об одном и том же, но разными словами.
    тогда это удивительно, я выложу ссылку на черновик диздока по игре "Фирмачи"

    Дизайн-документ игры "Фирмачи" (черновик) Версия: 0.1

    Там еще не полное описание, но как есть, лучше чем ничего.

    Если твоих "купцов" заменить на "фирмачей", то получится кажется очень близко. Как минимум вначале нужно найти что просто названо разными словами, а что реально отличается.

    #14
    20:42, 4 авг 2025

    // - - -
    Набросок под купцов (купец-NPC), которые _шляются_хаотично.

    Если представить, что игра (например, Фирмачи)
    будет чуть аркадней, с креном в имитацию онлайн-игры..

    1. Нужно будет подобрать течение времени, и как-то впихнуть
    игрока в _короткий_день, где боты-купцы лиш слегка ускорены,
    и у игрока - тож есть возможности потратить некие валюты
    (как-минимум, внутри-игровые денежки своего купец-персонажа)
    на экипировку шмоток, которые повышают скорость движухи.
    Вокруг бегают боты - кто-то быстро, а некоторые - лохи, тормозные.
    Если _аркадный_день будет около 5-10 минут, то игрок можт успевать
    сделать 2-3 тупых квэста, чтобы гарантировать своему персонажу
    какие-то минимальные условия жизни, внутри игры ...

    2. Игра остаётся _само_играйкой, и каждый день - начинается
    с авто-событий, затем идёт _врезка аркадности, и день завершается
    быстрой промоткой _вечерне-итоговых событий дня.
    Вобшем, игрок минимально управляет, и не исключено, что сначала
    читает сводку старого дня, и прикидывает - какие кнопки надо
    нажать для _само_играйки, а какие квэсты, и аркадные побегушки
    надо-бы суметь исполнить, в активные минуты дня.

    3. Требуется продумать квэсты - тупые, но вменяемые побегушки,
    либо собиратель грибов-ягод-руды, чтобы сдать _на_плантацию.
    При этом, не исключена перекупка ресурсов. А в минимальном виде,
    некие куриер-квэсты подай-принеси - дают награду, в ресурсах,
    и вот их можно накопить, и сдать туда-сюда, если вдруг,
    у твоего персонажа настали трудные времена ...

    4. Чтобы слегка поднять интерес со стороны игроков - внедрить
    возможности _романсить других купцов. Возможно,
    внедрить некую псевдо-почту, чтобы жмакать там галочки, вместе
    с другими приоритет-планировками (сиди дома - держи позицию).
    // любовные письма, шаблоновые.
    Часть романсинга - представить в активной фазе дня,
    но без эротики - просто купил анимацию хикс_танца, прибежал
    на свиданку (сумел-успел в назначеный час, или типа того),
    включил анимашку - якобы удивил подружку, и теперь - у неё
    над головой, значок любви ...
    // Можно увидеть, что подруга обгоняет, по деньгам - заромансить
    // её, чтобы помешать ей быть такой деловитой и успешной - подлость.

    Страницы: 1 2 Следующая »
    Free Unity DevФорум