Mafia-Game Forum

Mafia-Game Forum (https://mafia-game.ru/forum/index.php)
-   Модификации (https://mafia-game.ru/forum/forumdisplay.php?f=9)
-   -   Mafia Freeride Extended Mod (https://mafia-game.ru/forum/showthread.php?t=21)

Firefox3860 20.02.2022 16:10

alex5995, В моде я стараюсь уменьшать количество акторов (людей, машин и т.п.), потому что кажется, что мафия плохо переносит их большое количество в одной миссии. Например, сохранение игры ломалось в связи с этим. Насколько я помню, в Walk in the City довольно много акторов, поэтому я не уверен, что она всё потянет. Но попробовать стоит, если хочешь, опыт здесь будет полезен. В крайнем случае можно будет взять какую-то промежуточную версию мода, с меньшим количеством объктов.

adminmike 13.04.2022 06:54

Цитата:

мод классный, видно что огромная работа была проделана. А как основа для создания своего сюжетного мода Freeride Extended просто идеален. Любители моддинга это наверняка оценили.
Классный-то классный, но Сити Барс в своё время, да и теперь тоже, не менее классный был... И как, основой для создания стал "сюжетного мода", аиньки? А, любители моддинга? И не любители моддинга, а мододрочеры, так точнее про всех.
Цитата:

твой мод со своим Walk in the City
А сам как думаешь?
Цитата:

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

Pelerin 06.02.2023 01:58

Цитата:

Сообщение от Firefox3860 (Сообщение 16631)
User, А, ну это как обычно, движок мафии не может все ресурсы железа использовать, поэтому не тянет эту тяжёлую карту с нормальным fps.

Возможно я что-то не знаю, но ведь должен быть механизм LODов в движке? Для трафика он точно есть. Возможно и для статичных объектов типа зданий тоже есть? По идее если в качестве лоу поли модели на дальних растояния использовать оригинальные меши города то движку станет проще?

Firefox3860 08.02.2023 05:40

Цитата:

Сообщение от Pelerin (Сообщение 19525)
Возможно я что-то не знаю, но ведь должен быть механизм LODов в движке? Для трафика он точно есть. Возможно и для статичных объектов типа зданий тоже есть? По идее если в качестве лоу поли модели на дальних растояния использовать оригинальные меши города то движку станет проще?

Механизм лодов есть для всех объектов, но не все его используют. В машинах лоды есть, а в зданиях, например, нет. И в большинстве объектов нет. Модели города там и так почти везде оригинальные, я же их не переделывал. Только присоединил к ним сельскую местность и локации - тоже оригинальные.
Да и есть у меня давно подозрение, что падение fps связано не столько с полигонами, сколько с количеством акторов в миссии. Чем их больше, тем больше тормозов... Какая-то особенность движка непонятная. Надо как-то с этим справляться.

Pelerin 08.02.2023 20:40

Цитата:

Сообщение от Firefox3860 (Сообщение 19532)
Механизм лодов есть для всех объектов, но не все его используют. В машинах лоды есть, а в зданиях, например, нет. И в большинстве объектов нет. Модели города там и так почти везде оригинальные, я же их не переделывал. Только присоединил к ним сельскую местность и локации - тоже оригинальные.
Да и есть у меня давно подозрение, что падение fps связано не столько с полигонами, сколько с количеством акторов в миссии. Чем их больше, тем больше тормозов... Какая-то особенность движка непонятная. Надо как-то с этим справляться.

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

На счет количества акторов очень даже может быть. Как я понимаю акторы которых ты добавляешь вручную и которые не контроллируются пуллингом трафика - они все пытаются рендериться даже если не попадают в кадр. На сколько я помню даже в АПИ скриптов есть функция отключить редерер актора. Соответственно можно написать кастомный скрипт в котором запихать всех кастомных акторов в список и потом раз в N кадров пробегаться по нему и включать выключать в зависимости от дистанции. Получается такой самописный окклюдер / лод менеджер

Добавлено через 8 минут
При чем кастомных акторов можно разбить на несколько категорий/списков и для каждой категории использовать свой порог дистанции. Так дома могут включаться раньше а персонажи позже... тачки где-то посередине между домами и персами

grandshot 08.02.2023 22:46

Pelerin, при описанном способе в игре будут проявляться подвисания, когда акторы будут подгружаться скриптами в зависимости от расстояния. А так этот функционал можно даже в chg файлы засунуть.

Pelerin 09.02.2023 00:06

Цитата:

Сообщение от grandshot (Сообщение 19539)
Pelerin, при описанном способе в игре будут проявляться подвисания, когда акторы будут подгружаться скриптами в зависимости от расстояния. А так этот функционал можно даже в chg файлы засунуть.

Тут есть нюанс. Одно дело когда при "подгрузке и выгрузке" происходит загрузка и выгрузка ресурсов (геометрии, текстур и т.д.) в оперативку - тут да будут подвисания.
Другое дело это включение/выключение рендеринга: ресурсы остаются в памяти но не отправляются на видео карту для отрисовки (соответственно они не учавствуют в рендер пайплайне - всякие сортировки геометрии, расчет источников освещения и т.д.) - в таком случае мы облегчаем жизнь видухе + ЦП (скорее всего в случае старого движка как у Мафии там очень много делается на стороне ЦП).
Возвращаясь к той функции что есть в АПИ скриптов - я хз как она реализована но что-то мне подсказывает что она именно про рендеринг. К сожалению не могу вспомнить как она называется а доки по скриптам под рукой нету.

Второй момент. Если акторов слишком много то да мы можем упереться в скорость форыча по списку. В таком случае этот обход можно размазать по кадрам - например обходить только половину или четверть акторов за один кадр. Тогда это будет незаметно для игрока но в фоне будет обрабатывать объекты.

Конечно это все надо тестировать и пробовать. Так сразу и не угадаешь..

grandshot 09.02.2023 01:22

Pelerin, Геометрические лоды это рендер, точно. А вот для скриптовых персонажей есть подозрения что динамической подгрузки не предусмотрено. Моделька может и не рендерится когда акторы "скрыты", но как энтити вероятно просчитываются. На это намекает разделение уровней на отдельные "сцены", где в каждой миссии только лишь небольшой участок локации имеет повышенную детализацию в виде интерьера или населен неписями.

Pelerin 09.02.2023 02:43

Кажись нашел в доке GOLOD55. Это старая дока (давно качал еще на мафия пабе)

Развернуть для просмотра


frm_seton xx, yy

спрятать или показать объект

xx == номер фрэйма объекта
yy == 1-видно, 0 - не видно
[свернуть]


Вообще... Может это я конечно америку открываю... Но все комманды которые относятся к "фреймам" мне напоминают работу с нодами в современных движках... или с теми же гейм обжектами в Unity... Соответственно выключение ноды выключает всю ее иерархию... А значит по логике если актор это верхняя нода объекта то там внутри должна быть нода отвечающая за рендер и она тоже отключится...

Добавлено через 20 минут
Цитата:

Сообщение от grandshot (Сообщение 19542)
Pelerin, Геометрические лоды это рендер, точно. А вот для скриптовых персонажей есть подозрения что динамической подгрузки не предусмотрено. Моделька может и не рендерится когда акторы "скрыты", но как энтити вероятно просчитываются. На это намекает разделение уровней на отдельные "сцены", где в каждой миссии только лишь небольшой участок локации имеет повышенную детализацию в виде интерьера или населен неписями.

Опять таки если терминами Юнити: актор это префаб или корневой гейм обжект а фрейм это трансформ с дочерними гейм обжектами, то когда я выключаю родительский фрейм или корень префаба - то все дочерние тоже вырубаются и у них отключается обработка. Но это в Юнити.. Как в Мафии хз.. Вроде как скрипты на акторах продолжают работать но это не то чтобы сильно грузило игру. Нам надо оптимизировать клиппинг рендеринг и физику. А это скорее всего отключается...

По поводу населенности и неписей. Трафик и пешеходы - это обычный пулинг. Их количество задается как размер пула. Они спавнятся вокруг игрока и деспавнятся соответственно при удалении от игрока. Но они не удаляются из памяти а остаются.
По этой причине во фри райде количество гангстеров ограничено и если долго стоять на одном месте и всех расстреливать то рано или поздно они закончатся: трупы лежат и ждут пока игрок уйдет чтобы задеспавниться и вернуться в пулл, а в пуле нет свободных объектов и соответственно они больше не появляются.

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

Остальное - лоды и разная детализация моделей в зависимости от того насколько часто и близко игрок их видит... + статическая геометрия (те же дома и стены) + лайтмапы как оптимизация света...

Добавлено через 54 минуты
Кстати по поводу окклюжен куллинга - он обычно работает только для статичных объектов - просто потому что сцена заранее разбивается на сектора и объекты заранее присваиваются секторам, а во время игры просто проверяется какие сектора видит камера и соответственно отправляет или нет на рендеринг только то что видит. Для динамических объектов обычно пуллинг + лоды, а это то что относится к нашим кастомным объектам

grandshot 09.02.2023 20:56

Pelerin, разумеется есть сходства. Многие движковые архитектуры были продуманы еще в 90-х, и все это время поступательно эволюционировали. К сожалению двиг мафии за это время не эволюционировал. В нем есть очень много лимитов, которые может быть и была бы возможность расширить, проведи кто-нибудь полный реверс движка в духе GTA 3 RE. И я очень надеюсь что это осуществиться. А пока имеем что имеем, с не лучшей оптимизацией да еще и проблемами совместимости.


Текущее время: 18:04. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.11 Release Candidate 2
Copyright ©2000 - 2025, vBulletin Solutions Inc. Перевод: zCarot