Расчёт характеристик монстров

  • Автор темы Автор темы Gigi
  • Дата начала Дата начала

Gigi

Прославленный
Проверенный
Легенда Истоков
Старожил I степени
Сообщения
322
Розыгрыши
0
Решения
2
Репутация
163
Реакции
93
Баллы
1 403
Хроники
  1. Master Class
Сборка
Mobius
Вечная проблема с расчётом статов для монстров. Может есть хоть приблизительный калькулятор или формула по имеющимся данным, на пример хп/мп, уровень, базовые статы CON/DEX/INT/MEN....(не берём в счёт умения) как то установить их P.atk / M.atk / P.def / M.def, есть ли где то связанная логика
 
У нц есть. Но точной формулы ни у кого из фришек нет. Астерку и скрайд еще не проверял, но и там врядли.
Там еще связанные формулы эксп и дропа должны быть
И так никто и не отписался, что подобным занимается на достаточно серьезном уровне
 

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

Я вот к примеру в хмлках с нпс храню именно базовые значения хп/мп, атаки/защиты, как и в нпсдате офф сервера
и просто при загрузке данных пересчитываю как раз это все по формулам - по сути просто для экономии, чтобы постоянно это не делать когда значения нужны для дальнейших расчетов.
Java:
        // в xml мы храним базовые значения mp/hp/patk/matk/pdef/mdef, так что перед использованием из них надо вычислить конечные значения
        for (NpcTemplate npc : _npcs)
        {
            if (npc == null)
                continue;

            double lvlMod = LevelBonusDataHolder.getData(npc.getLevel());
            double conMod = StatBonusDataHolder.getBonus(BaseStatType.CON, npc.getStats(null).getCON());
            double menMod = StatBonusDataHolder.getBonus(BaseStatType.MEN, npc.getStats(null).getMEN());
            double strMod = StatBonusDataHolder.getBonus(BaseStatType.STR, npc.getStats(null).getSTR());
            double intMod = StatBonusDataHolder.getBonus(BaseStatType.INT, npc.getStats(null).getINT());

            npc.setHpMax(npc.getBaseHpMax() * conMod);
            npc.setMpMax(npc.getBaseMpMax() * menMod);
            npc.setPAtk(npc.getBasePAtk() * strMod * lvlMod);
            npc.setMAtk(npc.getBaseMAtk() * intMod * intMod * lvlMod * lvlMod);
            npc.setPDef(npc.getBasePDef() * lvlMod);
            npc.setMDef(npc.getBaseMDef() * menMod * lvlMod);

            if (npc.isShowOnMap())
                _showOnMap.add(npc.getId());

            if (!npc.getClanData().isNone())
                npc.getClanData().getIgnoreIds().stream().filter(_id -> !isExists(_id)).forEach(_id -> warn("Ignore NPC [" + _id + "] for NPC [" + npc.getId() + "] not found."));

            if (npc.getMinionData().size() > 0)
                npc.getMinionData().stream().filter(data -> !isExists(data.getId())).forEach(data -> warn("Minion NPC [" + data.getId() + "] for NPC [" + npc.getId() + "] not found."));

            if (npc.getDisplayId() > 0 && npc.getDisplayId() != npc.getId() && !isExists(npc.getDisplayId()))
                warn("Template NPC [" + npc.getDisplayId() + "] for NPC [" + npc.getId() + "] not found.");
        }
 
базовые формулы по сути неизменны с первых хроник, просто на них постепенно навешивают все больше разных модификаторов
в случае с мобами по сути чтобы получить из базовых значений заданных в нпсдате те, которые используются в дальнейшем уже для всех остальных расчетов, юзаются древнейшие формулы, которые можно взять в том же прима гайде для С1.

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

Автор не о том. он о том, как получить табличные значения, которые в НПЦдата. Сейчас все пользуются просто копипастом, подгонкой костылями итогового результата на тестах. формулы про которые он спрашивает - это как раз часть из базовой мат-модели игры, которую не реверсили, и результаты которой даже в исходниках представлены просто как готовые посчитанные таблицы. Если отбросить балансировку таймТуКилл моба, балансировку эквипа к лвлу персонажа, и балансировку скорости прокачки, то для получения моба, ты даешь массиву формул свои пожелания, в виде лвл, базовых статов (у большинства мобов одинаковые, нц тут схалтурила), и дальше кучу модификаторов по вкусу - иксованность, доп скилы, групповость, социальность и т.д.. и из этого получаешь статы моба, хп, пдеф, мдеф, эксп, дроп (еще отдельная большая тема по рассчету и распредлению), и тд..
Но как я понял, ни у кого данной системы целиком нет, а есть отдельные костыльные формулы для примерной балансировки на глаз, экстраполяцией из имеющихся мобов. Так как по сути полная система уравнений задаст тебе все содержимое для любой аналогичной ММОРПГ, и все взаимосвязи в ней, от среднего времени "прохождения", до ТТК и связанной динамики боя, от кучности мобов на полянке, до количества и грейда дропа и его типа в этих мобах на полянке. Да по сути все, каждый чих в игре зависит от нее
 
Автор не о том. он о том, как получить табличные значения, которые в НПЦдата. Сейчас все пользуются просто копипастом, подгонкой костылями итогового результата на тестах. формулы про которые он спрашивает - это как раз часть из базовой мат-модели игры, которую не реверсили, и результаты которой даже в исходниках представлены просто как готовые посчитанные таблицы. Если отбросить балансировку таймТуКилл моба, балансировку эквипа к лвлу персонажа, и балансировку скорости прокачки, то для получения моба, ты даешь массиву формул свои пожелания, в виде лвл, базовых статов (у большинства мобов одинаковые, нц тут схалтурила), и дальше кучу модификаторов по вкусу - иксованность, доп скилы, групповость, социальность и т.д.. и из этого получаешь статы моба, хп, пдеф, мдеф, эксп, дроп (еще отдельная большая тема по рассчету и распредлению), и тд..
Но как я понял, ни у кого данной системы целиком нет, а есть отдельные костыльные формулы для примерной балансировки на глаз, экстраполяцией из имеющихся мобов. Так как по сути полная система уравнений задаст тебе все содержимое для любой аналогичной ММОРПГ, и все взаимосвязи в ней, от среднего времени "прохождения", до ТТК и связанной динамики боя, от кучности мобов на полянке, до количества и грейда дропа и его типа в этих мобах на полянке. Да по сути все, каждый чих в игре зависит от нее
Эти формулы имеют хоть какой-то смысл, только если писать свою игру с нуля. В случае L2 дева, уже есть результат вычисления формул, про которые ты говоришь и он полностью представлен в виде оригинального ПТС датапака. Восстановить исходные формулы, по которым изначально балансилось все это добро, напрямую из датапака, путем реверс-инжинирига, невозможно. По одной простой причине - слишком много неизвестных. Ты никогда достоверно не узнаешь, на глаз ли ГД тыкали мобов на данную конкретную поляну или с помощью какой-то тулзы и по каким-то конкретным формулам. Вполне может быть, что это все делалось не в одну итерацию и то, что сейчас в есть в датапаке, это результат многих лет тонкой настройки, а не разовой генерации.

Ты не забывай, что мы можем видеть только срезы игры, которые привыкли называть хрониками. По факту же, для разработчиков, линейка не дискретная игра, а просто один цельный проект, который непрерывно развивался от альфы до текущих дней, подстраиваясь под конкретную игровую ситуацию на основе мониторинга, логов и телеметрии. Это как пытаться восстановить внешность человека по отпечатку протектора шины его автомобиля.
 
Эти формулы имеют хоть какой-то смысл, только если писать свою игру с нуля. В случае L2 дева, уже есть результат вычисления формул, про которые ты говоришь и он полностью представлен в виде оригинального ПТС датапака. Восстановить исходные формулы, по которым изначально балансилось все это добро, напрямую из датапака, путем реверс-инжинирига, невозможно. По одной простой причине - слишком много неизвестных. Ты никогда достоверно не узнаешь, на глаз ли ГД тыкали мобов на данную конкретную поляну или с помощью какой-то тулзы и по каким-то конкретным формулам. Вполне может быть, что это все делалось не в одну итерацию и то, что сейчас в есть в датапаке, это результат многих лет тонкой настройки, а не разовой генерации.

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

Согласен со многим, кроме аналогии, она не является аргументом)
мое видение, что если сейчас занимаешься л2, то есть смысл этим заниматься только в разрезе как раз создания собственной игры. Так как по моему мнению Л2 все больше и больше теряет аудиторию и превращается в автофарм как раз из-за кучи базовых ошибок, которые чтобы исправить - надо по сути сделать новую игру. просто с визуалом и кинематикой л2. а вот геймплей переделать космически.
Ну и реверс исходных формул сделать реально в достаточной точности. для этого из математики еще помним, что количество неизвестных должно быть равно или меньше количества уравнений) а мобов для проверки куча. причем есть методы, как упростить эту задачу. И даже если результат будет не идеально точен формулам НЦ, он будет с пренебрежимой погрешностью, и более чем, а то и лучше, чем у НЦ. и я да, я прекрасно понимаю, что корявый хлам под названием Л2 после исходных расчетов закидывали поверх тоннами шпаклевки в виде ручных правок, чтобы это битое корыто было не таким страшным )
 
Согласен со многим, кроме аналогии, она не является аргументом)
мое видение, что если сейчас занимаешься л2, то есть смысл этим заниматься только в разрезе как раз создания собственной игры. Так как по моему мнению Л2 все больше и больше теряет аудиторию и превращается в автофарм как раз из-за кучи базовых ошибок, которые чтобы исправить - надо по сути сделать новую игру. просто с визуалом и кинематикой л2. а вот геймплей переделать космически.
Ну и реверс исходных формул сделать реально в достаточной точности. для этого из математики еще помним, что количество неизвестных должно быть равно или меньше количества уравнений) а мобов для проверки куча. причем есть методы, как упростить эту задачу. И даже если результат будет не идеально точен формулам НЦ, он будет с пренебрежимой погрешностью, и более чем, а то и лучше, чем у НЦ. и я да, я прекрасно понимаю, что корявый хлам под названием Л2 после исходных расчетов закидывали поверх тоннами шпаклевки в виде ручных правок, чтобы это битое корыто было не таким страшным )
В узнаваемость бренда л2 суммарно вбухали бабла наверное не сильно меньше, чем в бренд кока-колы xD Любая другая игра не будет иметь такого бэкграунда и комьюнити, без сопоставимых затрат на маркетинг.

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

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

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

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