Пятничные факты #335 — Изменения сценария, фильтрация эффектов урона

опубликовал Klonan

Изменения режима производства команд

Улучшение PVP режима командного производства было предложено в этой публикации Reddit. Командное производство было сделано еще в 2016 году для тестирования многопользовательской сети в обновлении 0.14 с большим количеством игроков без необходимости иметь большой завод. С тех пор это не получало должного внимания

Итак, после 4 лет накопления знаний, я начал делать некоторые общие улучшения.

Выбор команды

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

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

Поэтому я добавил маленькие цветные панели запуска!

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

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

Генеральная уборка

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

Я также потратил некоторое время на то, чтобы сделать задачи более предсказуемыми, а логика раньше могла сильно отличаться от сложности производственных задач и усложнять баланс. Одна проблема, которую я вижу в будущем, заключается в том, что производственные задачи «жестко заданы» для основной игры. Если я найду еще какое-то время спустя, я мог бы поработать над системой для более процедурного создания целей.

Изменения защиты от волн

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

Ну а после игрового тестирования в выходные дни я понял, что все не так просто …

Больше кусак; больше денег

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

Решение этого довольно резкое, я просто убираю награду с юнитов, и это делает дизайн лучше в моих глазах:

  • Награда зарабатывается только на спаунерах и червях.
  • Вы не можете сидеть в своих стенах и зарабатывать деньги на улучшения; Вам нужно активно выходить из своей базы, чтобы зарабатывать апгрейды.
  • Игроки могут создавать бесконечные денежные фермы, создавая лагеря для кусак; Это больше невозможно.

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

Предсказуемые места атаки

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

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

Большая мощность волны; тот же размер волны

Еще одно наблюдение, которое я сделал, заключается в том, что, хотя я увеличил «мощность волны», количество кусак все еще ограничивалось количеством соседних производителей. Отчасти это было связано с тем, что я был умным с оптимизацией и не хотел делать группы слишком большими. Короче говоря, спаун будет работать примерно так:

  1. Определить мощность волны, основываясь на таких факторах, как количество волн, количество игроков, сложность.
  2. Определить, сколько спаунеров мы спауним, обычно от 4 до 15.
  3. Для каждого спаунера выберите случайное количество кусак, которые будут появляться, от 20 до 30.
  4. Создать кусак и убрать их «стоимость» из силы волны. Если у нас больше нет силы волны, мы останавливаемся.
  5. Как только мы пройдем через все спаунеры, мы закончим (даже если осталось много силы волн).

Проблема здесь заключается в том, что мы ограничены количеством спаунеров и юнитов. Даже если мощность волны была в 10 раз выше, логика все равно могла бы просто решить породить 50 маленьких кусак с 4 баз и назвать это выполненным.

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

  1. Определить мощность волны, основываясь на таких факторах, как количество волн, количество игроков, сложность.
  2. Определите, от какого количества спаунеров мы спауним от 5 до 20, как правило.
  3. Разделите силу волны на количество спаунеров.
  4. Держать юниты у спаунеров, пока вся сила волны не будет израсходована.

Таким образом, если у нас будет в 10 раз больше силы волны, независимо от того, сколько баз мы заспауним, волна будет в 10 раз мощнее.

Вариант бесконечной карты

У меня было несколько запросов на это, и это было не так сложно добавить. Если эта опция включена, карта защиты волн будет бесконечной, а не островом, и единственный способ победить — запустить ракету.

Новый сценарий — Ракетная гонка

Добавление нового сценария на данном этапе развития является неожиданным, но, надеюсь, желанным. Концепция этого заключается в том, что вы находитесь на «космической платформе», и вы готовитесь к приземлению на поверхности, и однажды на планете вам нужно запустить ракету как можно быстрее. Вы начинаете со всех разблокированных технологий, и немного денег, чтобы купить стартовое оборудование.

После того, как вы и ваши друзья готовы, вы отправляетесь на панель запуска, чтобы начать.

И это в значительной степени так: вы телепортируетесь на поверхность и играете в игру как обычно. Мы можем позволить себе добавить этот сценарий, потому что он настолько мал по объему и настолько прост, и для создания этого нового сценария потребовалось меньше времени, чем для обновления того, что у нас уже есть. Возможно, это не лучшая вещь , но я надеюсь, что мои небольшие инвестиции в несколько выходных, по крайней мере, дадут некоторым игрокам еще несколько часов удовольствия. Мне было бы интересно добавить больше «простых сценариев малого масштаба» в ближайшие месяцы, если у нас будет достаточно времени. Если у вас есть идеи, которые могут соответствовать этому определению, пожалуйста, дайте мне знать (но без обещаний).

Фильтрация эффектов повреждения

Это классическая проблема, мы оптимизируем систему так, чтобы она была в 5 раз быстрее, а затем мы используем ее в 5 раз больше. На этот раз дело касается огнеметов и частиц. С 0.18 мы добавили эффекты урона для сущностей, и нам в целом нравится, как это работает. Однако когда это сочетается с огнеметами, мы сталкиваемся с некоторыми проблемами.

Сначала вы можете сказать: «Не имеет смысла, что горящий кусака будет брызгать кровью», и я бы согласился. Во-вторых, вы можете сказать: «Это много крови», и я бы тоже с этим согласился. На самом деле это 1416 единиц повреждений, вызванных частичками крови. Работа огнеметов в настоящее время означает, что они очень часто наносят небольшой урон, в отличие от гранаты, наносящей большой урон за одно действие. Даже при всех оптимизациях частиц производительность снова будет ухудшаться из-за огромного количества создаваемых частиц.

Таким образом, Rseding продвинулся вперед и убил 2/3 птиц одним камнем, а также добавил фильтрацию типов повреждений к поврежденному объекту и триггерным эффектам объекта. Это означает, что для насущной проблемы кровавых горящих кусак мы можем просто отфильтровать эффект повреждения, чтобы он не возникал, если тип повреждения — огонь, что решает его отлично. В более долгосрочной перспективе преимущества еще больше, так как теперь у нас есть возможность, например, создавать собственные эффекты смерти при наведении, повреждении лазером, смерти от яда и т. Д.

Хорошо, что это решает половину проблемы, но все же, 1400 случаев повреждения все еще будут вызывать проблемы в других случаях. Большая часть этого исходит от «огненной наклейки», которая наносит урон каждый тик. Так как он живет в течение 30 секунд, это 1800 повреждений. Итак, приятное изменение, которое сделала posila, это добавление «интервала повреждения» к наклейке, чтобы урон наносился только каждые n тиков. На данный момент мы установили огненную наклейку так, чтобы она наносила 10-кратный урон, но только каждые 10 тиков, уменьшая количество общих событий для этой наклейки с 1800 до 180, что намного более разумно. (Обратите внимание, что изменение этой частоты может повлиять на балансировку урона, поскольку система сопротивлений в Factorio имеет абсолютное снижение и процентное снижение. В нашем случае объекты, затронутые огненной наклейкой, не имели абсолютной огнестойкости, поэтому результат такой же .)

Все изменения, которые вы видите здесь, должны быть выпущены в ближайшее время, мы находимся в ритме выпуска 1 релиза каждую неделю (обычно во вторник), и все, что вы видите здесь, в значительной степени сделано (но все может измениться!).

Comments: