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

Прозекторская


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

"Вскрытие показало, что больной умер от вскрытия."

Тема для "крупной формы", то есть, на уровне скриптов целиком или больших частей оных скриптов. "Что у него внутри, зачем оно там, и что с этим можно сделать ?"

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

smart_terrain я пытался переписывать.

Многократное заполнение npc_info, малопонятные алгоритмы распределения работ и сохранение работ не там, где надо - это только то, что на поверхности. Если копать глубже, там целый ворох проблем, связанных с особенностями передвижения NPC. Там и move_mgr придётся сильно дописывать, и xr_logic править, и много что ещё. Для полной синхронизации онлайн/оффлайн надо вообще в движок лезть.

 

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

 

Ко всему прочему, для улучшения производительности при загрузке игры надо переписывать файлы gulag_***.script и делать склейку строк через table.concat. 

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

Так посмотри уже по ссылке. Глядишь - полегчает.

 

А что касается type, то оно, как те брюки, почти превратилось в имя. Так что запятые там точно - не.

 

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

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

я у себя вообще оставил только один тип - gulag_general. соответственно дописал как мне надо gulag_general.script, а все остальные gulag_XXX.script выбросил на помойку.

  • Нравится 1

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

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

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

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

Для тех кто хочет заняться посоветую порядок (так делал я, и так на мой взгляд (который опирается на движок) верно):

 

курим xr_gulag

smart_terrain (в целом можно попутно с xr_gulag)
se_respawn
se_что-то_там
--// по желанию менеджеры под обновленные se_что-то_там (сюда же выплывает xr_sound)
smart_terrain_params
xr_gulag
gulag_general
gulag_что-то_там
xr_logic
gulag_tasks
--// дальше аи-схемы в которых тоже много чудесного
Вообще до самого старта игры (Intro start) пишется всякая поведенческая фигня, и еще цепляется on demand сюжетная требуха, она в каждом моде (сюжетном) я предполагаю будет уникальной. И эта поведенческая фигня я точно не понял, то-ли у меня комп слабый и он просто все прогрузить не успевает, то-ли так действительно есть, нужно тестировать на многих компах с разным железом, а у меня такой возможности нет, так что пока точно сказать не могу как все реально там грузится. Попрошу своих тестеров скинуть логи с такой инфой, если что-то будет отличатся от моего - отпишу.
Ссылка на комментарий

а все остальные gulag_XXX.script выбросил на помойку.

Вообще-то "все остальные" - имеют смысл с точки зрения размера файла и, соответственно, удобства редактирования.

Хотя формат - да, стоит поменять на плоский: то есть, чтобы 150 однотипных функций не перебиралось, а сразу грузилось в одну таблицу.

 

посоветую порядок

Я ничего не понял. smart_terrain - практический такой же (почти) объект, как непись, монстр или буханка хлеба.

Соответственно, когда при загрузке сэйва доходит до него, он инитится, и потом апдейтится.

Для se_respawn он нужен только в смысле чтения конфига( ну вот так вот эти самые конфиги организованы, per rectum) и для проверки: есть ли место свежезаспавненному монстру.

 

xr_sound не нужен точно.

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

 

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

 

gulag_general/что_попало - опять же, как бы, разделили.

 

gulag_tasks - обертка, ради вящей ООПшности, по тому что типа так модно, и в ней же - загрузка "тестовых" гулагов.

 

xr_logic - разбор ПЫСовского как бы языка, который из черточек, знаков препинания и прочих кракозябр, на котором записано то, что нормальные люди пишут в конфигах словами.

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

 

 

Я ничего не понял.

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

 

xr_sound - не нужен, но по порядку он стоит именно там, справедливости ради я должен был упомянуть, это все правится по желанию.

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

Из всего перечисленного, движок имеет отношение ТОЛЬКО к smart_terrain и к se_respawn. Как дергающий иниты и апдейты объектов соответствующих классов.

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

@Dennis_Chikin, а причем тут вообще движок? Я про скрипты пишу. Про движок я помянул указывая на то, что все это я не с потолка беру. И кстати тестеры мне скинули логи, у них тоже самое, видимо так сделана архитектура скриптов, и на нее как минимум надо ориентироваться.


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

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

 

 

Вообще-то "все остальные" - имеют смысл с точки зрения размера файла

А ты думаешь, я всю ту разношерстную и самусебеподобную ерунду, что была во всех этих остальных, взял и засунул в один файл gulag_general.script? :)

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

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

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

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

Ссылка на комментарий
Так посмотри уже по ссылке. Глядишь - полегчает.

Там большая часть с оригинала, соответственно, многие глюкобаги остались.

Smart_terrain создавался для двух целей:

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

В оригинальном варианте, с одной стороны, много всего лишнего, а с другой - нет того, чего надо. Лишнее - это добавление рангов за посещение smart_terrain, обращения к sim_statistics при вызове (un)register_npc, чтение capacity из custom_data, сохранение npc_info, эксклюзивности и работ в самих объектах smart_terrain, всякий хлам вроде idle_after_death вместо нормального освобождения работ при вызове серверного колбека on_death.

Тормозной алгоритм назначения смартов для эксклюзивных npc вместо обработки в функциях se_stalker/se_monster:update списка смартов, прописанных в customdata в секции smart_terrains. Какой-то совершенно непонятный критерий выбора смартов неэксклюзивными NPC, потенциально способный привести к слишком частой смене смартов.

 

Не хватает изменяемого type (через запятую список секций, затем в каждой секции параметр-condlist), динамического списка разрешенных группировок (который можно реализовать через смену type), Также не помешало бы изменить способ хранения работ и соответствющих им объектов в таблице Job. Вместо Job[number] могло бы быть что-то вроде Job[section][number].

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

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

 

В любом случае все эти системы теряют всякий смысл ровно на этом (если, конечно, понятие "новый" движок я верно для себя растрактовал):

Я кстати пытался Судьбу Зоны на новый движок пересадить) после всяческих танцев с бубном по обрывочным или просто отсутствующим инструкциям, игра рушится с нигде не описанными, неинформативными вылетами.

 

Не говоря о прилегающем софте вроде СДК, который тоже, мягко говоря, будет не рад.

 

Думаю стоит прислушаться практически к тому что @Полтергейст говорит. В ТЧ действительно много идиотизма по АИ, по крайней мне так кажется когда я монстров понемногу доделываю.

 

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

 

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

Изменено пользователем Dennis_Chikin
Ссылка на комментарий
Это явно что-то такое, что придумала какая-то партия зла, или партия тупости.

Как мне кажется, просто сами себя переиграли. Вынесли class "gulag" отдельно, чтобы в него написать всё, что необходимо для работы одного type. Предполагалось, что smart_terrain : gulag - это один ко многим. Зачем-то стали писать алгоритмы распределения работ в этот самый xr_gulag.gulag (хотя надо было в сам smart_terrain), и в итоге намудрили так, что не осилили свою же начальную идею "многогулаговости".

 

Вероятно, планировалось как-то так:

 

 

[smart_terrain]

type = gulag1, gulag2, gulag3

;capacity = 12

 

[gulag1]

;Эта секция кое-где ещё осталась в all.spawn

communities = stalker, dolg

cond = {+info1}

squad = ...

group = ...

 

[gulag2]

communities = bandit, monolith

cond = {-info1}

squad = ...

group = ...

 

 

но получилось то, что получилось.

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

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


Они даже не переделывали старые варианты на лучшие новые варианты по аи-схемам, так что то  о чем мы тут судачим вообще вряд-ли имеет смысл какой-то для обсуждения.

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

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

 

Как бы, все. Остальное пока оставить схемам, благо, они и без смартов отлично работают.

эволюцию логики от кордона до чаэс

Чем дальше - тем страшнее ?
Ссылка на комментарий

 

 

Ню-ню, я тебе уже говорил не раз о тучах на горизонте от этого самого gulag_general

Что-то я подзабыл. напомни?

 

 

В любом случае все эти системы теряют всякий смысл ровно на этом (если, конечно, понятие "новый" движок я верно для себя растрактовал):

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

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

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

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

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

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

Что-то я подзабыл. напомни?

Дык, эта... "Мы все умрем". Как минимум раз в неделю кто-нибудь где-нибудь да напишет. Между тем, на дворе шел 2015-й год, но все продолжают сидеть на террейнах, причем, в самом диком первозданном виде.

И будут сидеть, минимум до появления первого оттестированного экзешника в паблике.

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

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

 

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

 

@Dennis_Chikin, чтобы тестировать - необходимо играть, я тут такой темы не нашел, но поднял своих тестеров из могил, и, тьфу-тьфу, процесс пошел. Сейчас релоадил двиг и делаю все еще поумнее, смотрится нормально, но к сожалению в рендере, например, я чайник со свистком, и пока осилил только 2д, а хотелось-бы что-нибудь еще прикрутить, да не абы как. Буду ждать пока всеведущие снизойдут.

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

Вот кстати о тех же смартах и гулагах...

в xr_gulag в методе __init класса gulag, вставил такую строку

    self.Task_Reactor = task_creator.Task_Reactor(self)

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

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

И в отладочных целях в логе подсчитывается всякая статистическая инфа по созданию этих объектов...

 

Ну так вот по результатам этого действа, побочным образом обнаружилось следующее:

smart_terrain - метод __init вызван 194 раза, объектов смартов создано - 194.

xr_gulag - метод __init вызван 194 раза, объектов гулагов создано - 194.

task_creator - создание вызывалось так же 194 раза. но объектов с уникальными именами получилось 90, и в итоге имеем 90 записей в se_stor.

 

т.е. на самом деле "по-настоящему нужных", уникальных смартов-гулагов в игре 90. но зачем-то создание объектов вызывается по 2-3 раза... я бы понял если бы было 90 * 2 = 180 вызовов. Но 194... это в моей голове вообще не укладывается. Зачем, почему...

Почему нельзя создать столько объектов, сколько действительно нужно? :)

 

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

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

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

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

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

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

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

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

ах да, окей...

я тебе голову даю на отсечение, что у меня в олспавне одинаковых имен смартов нет :) тем более в количестве 104 штуки...

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

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

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

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

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

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

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

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

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

Войти

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

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

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