Dennis_Chikin 3 658 Опубликовано 30 Января 2015 Автор Поделиться Опубликовано 30 Января 2015 (изменено) "Вскрытие показало, что больной умер от вскрытия."Тема для "крупной формы", то есть, на уровне скриптов целиком или больших частей оных скриптов. "Что у него внутри, зачем оно там, и что с этим можно сделать ?" Изменено 30 Января 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Полтергейст 37 Опубликовано 7 Октября 2015 Поделиться Опубликовано 7 Октября 2015 smart_terrain я пытался переписывать. Многократное заполнение npc_info, малопонятные алгоритмы распределения работ и сохранение работ не там, где надо - это только то, что на поверхности. Если копать глубже, там целый ворох проблем, связанных с особенностями передвижения NPC. Там и move_mgr придётся сильно дописывать, и xr_logic править, и много что ещё. Для полной синхронизации онлайн/оффлайн надо вообще в движок лезть. И по-хорошему, надо читать параметр type как несколько разделённых запятыми строк, а не как одну. Чтобы, как и задумывалось изначально, можно было не плодить дубли смартов (на подобии esc_fabrika_bandit и esc2_st_fabric), а просто при выдаче infoportion перейти от одного типа к другому. Это намного удобнее, чем все эти номерные состояния, работающие черте как. Ко всему прочему, для улучшения производительности при загрузке игры надо переписывать файлы gulag_***.script и делать склейку строк через table.concat. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 7 Октября 2015 Автор Поделиться Опубликовано 7 Октября 2015 (изменено) Так посмотри уже по ссылке. Глядишь - полегчает. А что касается type, то оно, как те брюки, почти превратилось в имя. Так что запятые там точно - не. Что надо добавить, так это нормальное переназначение, но на самом деле - просто не нужно эксклюзивами злоупотреблять. Они не для заполнения смартов неписясми, а именно что для назначения уникальных неписей. Изменено 7 Октября 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Zander_driver 10 333 Опубликовано 8 Октября 2015 Поделиться Опубликовано 8 Октября 2015 я у себя вообще оставил только один тип - 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. Ссылка на комментарий
Карлан 1 049 Опубликовано 8 Октября 2015 Поделиться Опубликовано 8 Октября 2015 Для тех кто хочет заняться посоветую порядок (так делал я, и так на мой взгляд (который опирается на движок) верно): курим 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 сюжетная требуха, она в каждом моде (сюжетном) я предполагаю будет уникальной. И эта поведенческая фигня я точно не понял, то-ли у меня комп слабый и он просто все прогрузить не успевает, то-ли так действительно есть, нужно тестировать на многих компах с разным железом, а у меня такой возможности нет, так что пока точно сказать не могу как все реально там грузится. Попрошу своих тестеров скинуть логи с такой инфой, если что-то будет отличатся от моего - отпишу. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 8 Октября 2015 Автор Поделиться Опубликовано 8 Октября 2015 (изменено) а все остальные 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 - разбор ПЫСовского как бы языка, который из черточек, знаков препинания и прочих кракозябр, на котором записано то, что нормальные люди пишут в конфигах словами. Изменено 8 Октября 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Карлан 1 049 Опубликовано 8 Октября 2015 Поделиться Опубликовано 8 Октября 2015 Я ничего не понял. Понимать тут и не надо, это из оперы "как я сказал - так и есть", чтоб понять надо сидеть вникать в движковый лог, где движок понятно с чьими правками. Прикола ради можно инфу дампить попутно, только опять же зачем - не ясно. xr_sound - не нужен, но по порядку он стоит именно там, справедливости ради я должен был упомянуть, это все правится по желанию. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 8 Октября 2015 Автор Поделиться Опубликовано 8 Октября 2015 Из всего перечисленного, движок имеет отношение ТОЛЬКО к smart_terrain и к se_respawn. Как дергающий иниты и апдейты объектов соответствующих классов. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Карлан 1 049 Опубликовано 8 Октября 2015 Поделиться Опубликовано 8 Октября 2015 @Dennis_Chikin, а причем тут вообще движок? Я про скрипты пишу. Про движок я помянул указывая на то, что все это я не с потолка беру. И кстати тестеры мне скинули логи, у них тоже самое, видимо так сделана архитектура скриптов, и на нее как минимум надо ориентироваться. А на деле наверное надо вообще смарткаверы написать, по оказии, но сейчас не до АИ, хотя монстров потихоньку правлю, там не сильно времязатратно. Ссылка на комментарий
Zander_driver 10 333 Опубликовано 8 Октября 2015 Поделиться Опубликовано 8 Октября 2015 Вообще-то "все остальные" - имеют смысл с точки зрения размера файла А ты думаешь, я всю ту разношерстную и самусебеподобную ерунду, что была во всех этих остальных, взял и засунул в один файл 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. Ссылка на комментарий
Полтергейст 37 Опубликовано 8 Октября 2015 Поделиться Опубликовано 8 Октября 2015 (изменено) Так посмотри уже по ссылке. Глядишь - полегчает. Там большая часть с оригинала, соответственно, многие глюкобаги остались. 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]. Изменено 8 Октября 2015 пользователем Полтергейст Ссылка на комментарий
Карлан 1 049 Опубликовано 8 Октября 2015 Поделиться Опубликовано 8 Октября 2015 (изменено) Ню-ню, я тебе уже говорил не раз о тучах на горизонте от этого самого gulag_general, в подобном контексте надо делать что-то типа смарткаверов (даже не типа, а именно их), с существующей системой чудовищное количество танцев с бубном которые руками упоришся делать (но тебя это никогда не смущало), и которые, под конец спектакля, все равно дадут голый вассер (я не убеждаю, это факт), да и с подобной системой даже до ЧН как до китая в известной позе. Подобное сегодня - ересь. В любом случае все эти системы теряют всякий смысл ровно на этом (если, конечно, понятие "новый" движок я верно для себя растрактовал): Я кстати пытался Судьбу Зоны на новый движок пересадить) после всяческих танцев с бубном по обрывочным или просто отсутствующим инструкциям, игра рушится с нигде не описанными, неинформативными вылетами. Не говоря о прилегающем софте вроде СДК, который тоже, мягко говоря, будет не рад. Думаю стоит прислушаться практически к тому что @Полтергейст говорит. В ТЧ действительно много идиотизма по АИ, по крайней мне так кажется когда я монстров понемногу доделываю. В частности обеими руками его поддерживаю по поводу необходимости создания дубликатов лагерей. Это явно что-то такое, что придумала какая-то партия зла, или партия тупости. И еще поддержу по поводу некого дуализма пути разработки, если делать скрипто-динамичную зону, то следует ампутировать, либо написать вменяемые функции дубликаты указания поинтов нпс и мобам через левел вертексы (отсюда мы можем устанавливать и по позиции поинты), но в этом случае тяжело придется СДК-юзерам, поэтому на вскидку придется переписать все схемы и зацепить несколько функций в движке. По моему так будет удобнее. Изменено 8 Октября 2015 пользователем Dennis_Chikin Ссылка на комментарий
Полтергейст 37 Опубликовано 8 Октября 2015 Поделиться Опубликовано 8 Октября 2015 (изменено) Это явно что-то такое, что придумала какая-то партия зла, или партия тупости. Как мне кажется, просто сами себя переиграли. Вынесли 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 = ... но получилось то, что получилось. Изменено 8 Октября 2015 пользователем Полтергейст Ссылка на комментарий
Карлан 1 049 Опубликовано 8 Октября 2015 Поделиться Опубликовано 8 Октября 2015 @Полтергейст, кстати можешь проследить эволюцию логики от кордона до чаэс и сделать вывод почему они эту систему не доделали. Вывод в целом на поверхности, пришлось бы геймдизайнерам все переделывать (возможно в n-ый раз ). Они даже не переделывали старые варианты на лучшие новые варианты по аи-схемам, так что то о чем мы тут судачим вообще вряд-ли имеет смысл какой-то для обсуждения. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 8 Октября 2015 Автор Поделиться Опубликовано 8 Октября 2015 Вообще, если лезть в движок, то очевидно, ВСЕ это - сносить полностью, и делать хотя бы банально "поиск области с радиусом n, где меня ни кто не увидит, отсюда и до обеда", "идти туда", "дошел-ли я до этой области", "бродить по этой области, или тупо стоять, если не задано". Как бы, все. Остальное пока оставить схемам, благо, они и без смартов отлично работают. эволюцию логики от кордона до чаэсЧем дальше - тем страшнее ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Zander_driver 10 333 Опубликовано 8 Октября 2015 Поделиться Опубликовано 8 Октября 2015 Ню-ню, я тебе уже говорил не раз о тучах на горизонте от этого самого 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. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 8 Октября 2015 Автор Поделиться Опубликовано 8 Октября 2015 (изменено) Что-то я подзабыл. напомни? Дык, эта... "Мы все умрем". Как минимум раз в неделю кто-нибудь где-нибудь да напишет. Между тем, на дворе шел 2015-й год, но все продолжают сидеть на террейнах, причем, в самом диком первозданном виде. И будут сидеть, минимум до появления первого оттестированного экзешника в паблике. Изменено 8 Октября 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Карлан 1 049 Опубликовано 8 Октября 2015 Поделиться Опубликовано 8 Октября 2015 Ага, а потом опять затележишь за то что я рассекретил великие идеи жутко тайного общества . Не, я теперь вообще лучше говорить и выкладывать ничего не буду, вон движок костылю понемногу, тут вроде меня обвинить не в чем (хотя вдруг ты уже и до движка добрался, и я там сижу сейчас твои супер-идеи реализовываю, которые непременно нагло украл? А как только попытаюсь выложить меня сожгут, или заплюют, какие у вас там методы...) У каждого понятие "нормальная работа" - свое, и каждый сам пишет то что ему нужно, так что не думаю что уместно кого-то в чем-то упрекать. @Dennis_Chikin, чтобы тестировать - необходимо играть, я тут такой темы не нашел, но поднял своих тестеров из могил, и, тьфу-тьфу, процесс пошел. Сейчас релоадил двиг и делаю все еще поумнее, смотрится нормально, но к сожалению в рендере, например, я чайник со свистком, и пока осилил только 2д, а хотелось-бы что-нибудь еще прикрутить, да не абы как. Буду ждать пока всеведущие снизойдут. Ссылка на комментарий
Zander_driver 10 333 Опубликовано 9 Октября 2015 Поделиться Опубликовано 9 Октября 2015 (изменено) Вот кстати о тех же смартах и гулагах... в 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... это в моей голове вообще не укладывается. Зачем, почему... Почему нельзя создать столько объектов, сколько действительно нужно? В общем, это скорее в курилку пост... смарты и гулаги в игре создаются зачем-то по два раза, а то и по три. Реакторы свои я переделал так чтоб сначала проверялась уникальность имени, а потом уж создание, если такого еще не было. а смарты оставил как было, может это зачем-то кому-то надо. Изменено 9 Октября 2015 пользователем 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. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 9 Октября 2015 Автор Поделиться Опубликовано 9 Октября 2015 Вообще-то это могут быть просто одинаковые имена в олспавне. И это, кстати, очень плохо: чревато непредсказуемыми глюками, если смарт зачем-то пытаются получить по имени. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Zander_driver 10 333 Опубликовано 9 Октября 2015 Поделиться Опубликовано 9 Октября 2015 ах да, окей... я тебе голову даю на отсечение, что у меня в олспавне одинаковых имен смартов нет тем более в количестве 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. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти