Перейти к контенту
Dennis_Chikin

Gameplay - как сделать ЭТО, чтобы ОНО всем нравилось ;)

Рекомендуемые сообщения

Тема предназначена для разработчиков, а не для пользователей. Модерирование будет крайне жестким. Прежде, чем что-либо писать - прочитайте первый пост и примеры обсуждения. Изменено пользователем Dennis_Chikin
  • Не нравится 1
Ссылка на комментарий

lv = npc:vertex_in_direction( lv, diff, len )

А ты уверен, что она работает корректно? Я вот нет, потому что

1. Она работает только для монстров (судя по движку, могу ошибаться, однако статья на вики подтверждает ее "нерабочесть").

2. Одноименная функция из пространства имен level работает почти так же, так вот она абсолютно точно не работает, если на пути встретится пустота, где нету нодов, камень там стоит или еще что.

3. Так же не будет возвращать корректный результат, если монстру нельзя пойти в стартовый вертекс.

Нашел мой пост полуторагодовалой давности, прочтите чтоли.

Левел вертекс по определению на ноде.

В моих сообщениях есть противоречия этому? Ты сказал, у тебя есть вектор, вектор это 3 координаты - xyz. Надо найти по ним левелвертекс, что я пытался сделать в ссылке.

Забыл начало, вот.

Изменено пользователем Desertir

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

Патрулируют (walker и patrol). Сидят у костра. Подбирают шмотки/обшаривают трупы. Оттаскивают трупы. Самолечение в бою - убегают от врага ЗА ПРЕПЯТСТВИЕ,и пьют там яд.

Везде в количестве npc:vertex_in_direction() и npc:accessible_nearest().

 

Что я делаю не так ?

Ссылка на комментарий

В чистом ТЧ нету ни одного использования npc:vertex_in_direction() (кроме xr_attendant.script) только level.vertex_in_direction(), т.к. они по сути идентичны. Что в модах сделано, я не знаю, правки движка, свои шаманские действия или просто корректное использование, разбираться недосуг. Более того, я спросил, уверен ли ты, что она работает? Если уверен, флаг в руки, свои сомнения я перечислил.

А вот npc:accessible_nearest() вполне юзается везде, и про нее я не говорил, что она не рабочая, ее я просто не знаю, и я об этом писал

2. Методы game_object. 2.1. accessible_nearest(const vector&, vector&)

И писал кстати неверно. Изменено пользователем Desertir

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

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

 

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

 

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

 

Что до оффлайн-боёв - это тоже можно оставить и подправить. В оригинале NPC при выборе смарта не учитывают соотношение уже находящихся в нём дружественных/враждебных сил (а также просто находящихся поблизости), поэтому постоянно попадают в переделки. Ну а то, что они возле переходов между уровнями попадают в пробку и устраивают в ней побоище - это скорее проблема навигации между уровнями, чем offline alife. Увеличение количества переходов (доступных для NPC, а не только для игрока) частично решит эту проблему. Частично - потому что при наличии нескольких точек перехода с уровня A на уровень B повлиять на выбор точки перехода скриптами не так-то просто.

  • Согласен 1
  • Полезно 1
Ссылка на комментарий

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

 

Больше игрок ни о чем в принципе сейчас узнать не может.

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

 

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

Но, опять же, зачем для этого 10тышь строк, если можно обойтись десятком ?

 

И, в общем-то, пока у нас вся Зона будет плясать вокруг "как бы еще ущучить игрока" - убить монстром, убить радиацией, удалить ему все вещи, удалить все файлы с жесткого диска, сжечь нафиг компьютер - так оно и будет.

 

Альтернатива - когда Зона пляшет сама по себе, а игрок как-то вмешивается в процесс. Но это будут уже совсем другие скрипты.

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

@Dennis_Chikin, просто не надо мотаться из крайности в крайность. Если щучим ГГ, то щучим точно так-же и всех остальных (а не как Сяк). Т.е. не делать из него немощного криворукого идиота, а сделать такого-же как и все. Что-бы Зона плясала сама по себе тут конечно нужно будет кода налопатить довольно много, с сопутствующим переписыванием всего, что можно. Но ведь нет ничего невозможного.

 

В общем я Полтергейста поддерживаю, с тайниками кстати хорошо придумал.

  • Согласен 1
Ссылка на комментарий

 

 

Либо в некоторых местах есть мясорубка (скрытая от игрока), либо мясорубки нет

Оттого, что мясорубки не будет в оффлайне, она никуда не исчезнет. Она будет постоянно возобновляться при приближении игрока и прекращаться при его уходе на большое расстояние. От этого как раз и создаётся впечатление, что все вокруг "пляшут вокруг игрока" и совершают какие-либо действия только когда игрок рядом. Особенно сильно это заметно при частом респавне.

Кроме тех способов разруливания этой ситуации, о которых я писал выше, можно ещё попытаться улучшить ведение игровой статистики и увеличить её влияние на поведение NPC. Например - собирать информацию о плотности населения в смартах, количестве "мясорубки" в каждом из них. На основании этих данных NPC могут сообразить, куда можно пойти, куда ходить опасно, а куда вообще никогда лучше не соваться. Опять же, здесь сильно мешают ограничения движка - нельзя штатным способом проверить вхождение в рестриктор в оффлайне, но при наличии нужных костылей или правок движка и это реализуемо.

 

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

Ссылка на комментарий

@Полтергейст, а по каким таким алгоритмам ты реализуешь нужные и не нужные НПС вещи? Это уже какие-то отсылки к тому самому, где бескрайние локации и удивительный ИИ. А так нам придется говорить неписю куда ему идти, зачем ему идти, и с кем ему идти, в зависимости от этого формировать рюкзак, пробегатся по известным ему ближайшим схронам, и если схрон подходит нам, то можно идти чистить. Допустим на 7 движке можно еще и вменяемую аи схемму сделать что-бы они это и в онлайне делали.

 

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

Ссылка на комментарий

 

 

а по каким таким алгоритмам ты реализуешь нужные и не нужные НПС вещи?

В примитивном виде это сделано в amk_offline_alife, но там просто задано неизменное ограничение на количество предметов. Если же эти ограничения сделать динамическими (например - в зависимости от количества еды и денег у NPC), может что-то и получится более-менее реалистичное. Если это ещё и будет влиять на выбор маршрута передвижения, будет ещё лучше.

 

 

 

а что если делать возможным сохранится только возле своего схрона?

Можно поступить проще - разрешить сохранение в любом месте, которое защищено от выброса, и при условии отсутствия врагов рядом. А что до тайников, тут надо подумать о том, каким должно быть отношение NPC к тому, чтобы украсть чужое. При этом оно должно быть одинаковым ко всем, включая игрока. Если всё общее и кто что хочет, тот и берёт - тогда игрок тоже сможет брать чужое, если нет - тогда и беспокоиться о сохранности вещей в людных местах не нужно. Можно сделать промежуточный вариант, чтобы была небольшая вероятность того, что кто-то незаметно для всех заберёт чужие вещички. И ещё добавить общие ящики, куда NPC будут складывать то, что им не очень нужно, но может понадобиться другим.

Ссылка на комментарий

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

 

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

Ссылка на комментарий

 

 

Если только не сделать такой вариант, что если у него плохая репутация то его захотят застрелить

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

 

 

 

Игроку разумеется можно брать чужое

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

Ссылка на комментарий

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

Что еще ? Ну и сам метод их "создания" был бы небезинтересен.

 

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

 

Кстати, на счет дружественных... Есть вариант, что как раз дружественные - могут присмотреть. А вот плохие отношения и низкая "общая" репутация - да, могут обчистить. Типа "а кто ему поверит ?".

В основном же если кто может чистить тайники - любые - это бандиты и иже с ними. Нашли - обчистили. Но, естественно, не сканом всей локации, а только то, что в непосредственной близости, и в "плохих местах".

 

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

 

P.S. По неписям, кстати, в итоге опять же идем к "торговле между неписями". ;)

  • Нравится 1
Ссылка на комментарий

Что еще ? Ну и сам метод их "создания" был бы небезинтересен.

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

 

могут присмотреть

Кстати хорошая идея, я еще бы так сделал, если смотрит ветеран, а тырит новичок, то хабар на месте типа ветеран дал пинка воришке, а если наоборот то новичек сливает имя ветерана, и мы его уже ищем где хотим (тут можно диалоги сделать уже скриптовые). Либо у каких-нибудь техников просить что-бы метку на пда вора поставили, ну и раскрутить короче можно..

 

С общаком можно вообще правдоподобно сделать, с каждой ходки обязан скидывать что-нибудь нуждающимся, либо бабками, либо товаром. В каждом лагере дружественной группировки есть и раненые и голодные, и больные, ну и в каждом есть кто-то вроде Волка. Такими темпами мы с вами тут можем дойти и до полного технического переоснащения лагерей с помощью ГГ и оффлайфа :D

 

Кхм, вот мне интересно, а делом кто-нибудь займется? Ну это так...

Изменено пользователем Struck
Ссылка на комментарий

"Делом" занимается "кто-нибудь". ;) Но пока - по-мелочи.

 

Новичек-ветеран - а принципе, без разницы. Если уж сталкеры - "группировка" - друг друга не стреляют и не грабят - значит, и тайники  - в какой-то степени - дело общее. Черную метку получает любая "крыса", и вылетает из сталкеров в "крысы".

Просто если зарекомендовал себя как "ну еще сразу не стреляют" - так и за хабаром присматривать вряд-ли кто будет.

 

Под метки я, кстати, для начала собираюсь переделать пресловутые "замки на рюкзаки". И использовать идею "сталкерской сети". То есть, не какой-то идиотский замок, а маячок банальный, с которого ПДА, подключенный в сеть, снимает данные. Вот вам и "черная метка" сразу. Если тайник покойника - "черная метка" не ставится.

Бандитам на эту ЧМ, естественно, пофиг, вот они и грабят.

Благо, делов - пару диалогов поправить,  и бандюкам "метку" не проверять.

 

Да, обмен тайников на водку придется порезать. ;) Как награды - оставить.

 

 

Оборудование убежищ - как это в коде сделать - я знаю. Как это должно для игрока выглядеть - вот в чем вопрос.

Ссылка на комментарий

Как это должно для игрока выглядеть - вот в чем вопрос.

Банально, выводим статик домика. В начале игры рассказываем туториалом что это за статик домика (единственный момент, где придется юзать апдейт). Там спим, сейвимся, работаем с общаком.

 

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

 

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

 

Подобный модуль уже без других квестов будет вполне интересен.

  • Согласен 1
Ссылка на комментарий

Ребята, подскажите пожалуйста, возможно ли создать новый слот для определённых вещей? Допустим один слот для одежды, другой для бронежилетов.

 

Только правкой движка. См. OGSE про экзоскелеты отдельно от костюмов и http://www.amk-team.ru/forum/index.php?showtopic=10339

dc

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

У меня скоро нервный тик будет от таких ответов...

А если я хочу число определенных предметов в рюкзаке узнать, мне итерацию инвентаря запускать, да? И так каждый раз как приспичит чего-нибудь посчитать. А потом удивляемся почему в большинстве модов все сделано через одно место. Люди делают так, как им на форуме сказали.

@fedorman, не спешите хвататься за первый ответ и/или отчаиваться по поводу сложностей связанных с движком. Потерпите и спустя время я вам свой ответ дам, если все еще интересно будет.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Зачем же каждый раз ? Даже и одного не нужно.

 

Но ему надо полноценный слот, или что ? Если слот, то штука чисто движковая. (Мда, на счет "полноценности" здесь возможны разные мнения.)

 

upd:

Это мы-то агрессивные ?

 

А для сферовакуумного незнайкм с аптечками в соседней теме разжевано ну я даже уже не знаю до куда.

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

А если я хочу число определенных предметов в рюкзаке узнать, мне итерацию инвентаря запускать, да?

Можно итерацию, можно ловить на колбеках take/drop. Всё зависит от задачи, если пару раз за игру надо узнать - можно и итерацией ограничиться.
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...