В интернете полно руководств по обучению числовому проектированию. Но зачастую те, кто не может его освоить, так и не учатся, даже через несколько лет продолжая восхищаться «великими мастерами». Те, кто решается попробовать, либо постепенно углубляют свои знания, получая контроль над процессом, либо, воскликнув: «Черт, это же так просто!», продолжают двигаться вперед.
Прежде всего, стоит отметить, что сложность числового проектирования различается в зависимости от игры. Стратегии в реальном времени (SLG) сложнее, чем башенные обороны; «умные» RPG сложнее, чем RPG «на автопилоте». Кроме того, зарубежные одиночные игры обычно строятся на уровне сложности, а числовая составляющая является вторичной, в то время как в китайских онлайн-играх числовое проектирование часто определяет сами уровни. Поэтому изучение числового проектирования — это обширная тема, и нет универсального подхода.
Не стоит чрезмерно восхищаться теми, кто демонстрирует сложные числовые формулы и громоздкие таблицы. Составление таких таблиц — задача легче, чем у бухгалтера. Сложность числового проектирования заключается не в составлении таблиц, а в проектировании и проверке. Сначала разрабатывается структура, затем идет проверка. Если числовое проектирование уже разработано, то числовой проектировщик просто выполняет задачи, как исполнитель. Если же числа не проверены, особенно если работа выполняется впервые, это всего лишь фантазии.
Когда я только начал заниматься числовым проектированием, я любил создавать сложные таблицы, думая, что это что-то грандиозное, но на самом деле это было глупо и безумно. Мои ранние таблицы давно утрачены с поломанным жестким диском, но я оставлял шутливые комментарии в соцсетях, так что у меня сохранились миниатюры, которые я нашел.
Большинство вещей в мире подчиняются определенным закономерностям. В играх около 80% содержимого может быть автоматически сгенерировано программой, оставляя 20% на ручное заполнение. Это не уменьшает увлекательности игры, ведь в реальной жизни тоже так. Основная часть работы числового проектировщика — создание таблиц, которые программа сможет автоматически заполнить.
Любой игровой дизайнер может стать числовым проектировщиком, различия заключаются лишь в уровне специализации. Когда кто-то говорит, что числовое проектирование слишком сложно, обычно причина одна из трех: 1) страх перед неизвестным, 2) лень, 3) пугающие сложные формулы и громоздкие таблицы, созданные другими.
Но на самом деле это не так сложно. Например, числовые таблицы для повышения уровня персонажа в RPG включают базовые параметры: уровень игрока, максимальное время на прокачку, время на убийство монстров, количество убийств, опыт за монстра, опыт для повышения уровня и так далее. В этом нет ничего сложного. Главное — знать базовые параметры. Остальное — это работа с таблицами и расчетами, проверка рациональности дизайна и правильности расчетов в реальной разработке.
Чтобы действительно изучить числовое проектирование, необходимо практиковаться. Оставаясь только на уровне фантазий, вы не научитесь ничему. Только опыт реальной работы, когда вы разрабатываете систему, тестируете ее и корректируете, помогает понять все тонкости. Если нет возможности работать напрямую, постарайтесь взять на себя какие-то числовые задачи, начиная с расчетов в уже существующих таблицах, затем переходя к их созданию и, в конце концов, к проектированию.
Что касается работы числового проектировщика, можно говорить об этом целую ночь. С точки зрения передачи знаний, давайте рассмотрим пример числового проектирования для боевой системы в сетевой RPG (сражения и экономика обычно представляют две основные категории). Эти знания нельзя просто почерпнуть, рассматривая уже готовые таблицы, сделанные другими числовыми проектировщиками.
Прежде всего, числовое проектирование включает три основные части: проектирование, создание и расчеты.
Процесс проектирования числовой системы:
Шаг 1: Определение условий, опыта и параметров числовой системы. В первую очередь, нужно определить режим боевых действий: правила очередности ходов, стратегические принципы (например, выбор действий в зависимости от противника, своих возможностей, состояния окружающей среды и так далее). Хотя эти моменты на этом этапе не играют роли, они определяют стиль игры и влияют на последующее проектирование. Затем следует решить, хотите ли вы стабильный или ускоряющийся темп боя, как распределить пространство для улучшения экипировки и насколько важна сама механика сражений.
Опишите возможные сценарии (например, PvE, PvP, подземелья), а также боевой опыт персонажа в каждом сценарии (учитывая возможную поддержку питомцев). Это позволит определить вторичные характеристики и установить связь между первичными и вторичными характеристиками.
После того как вы определите основные вторичные характеристики для каждого сценария, опишите, какие различия между игроками и какой игровой опыт вы ожидаете от этих различий. Опишите цели и предположительные достижения каждого модуля способностей.
Определите ключевые параметры для боевого опыта: продолжительность боя, возможности восстановления, шансы на критические удары, уклонение и другие базовые параметры.
Пример проектирования:
Разделите игру на низкоуровневое PvE, высокоуровневое PvE и PvP.
Низкоуровневое PvE: Это сражения с обычными монстрами в открытом мире. Проектирование включает:
Время на убийство монстра. Игрок должен убивать монстров за 5–12 секунд. Чем выше уровень монстра, тем дольше его убивать.
Потери здоровья игрока. На ранних этапах восстановления здоровья с помощью предметов должно перекрывать урон от двух монстров, а на поздних уровнях — чуть превышать урон одного монстра. По мере повышения уровня урон от монстров по отношению к здоровью игрока снижается.
Критические удары. Критический урон составляет 200% обычного урона. Шанс критического удара уменьшается с уровнем, но критические очки можно получать, привязывая их к уровню, чтобы игроки на низких уровнях не получали высокий шанс критического удара.
Шанс уклонения и точность. Успешность атак рассчитывается на основе исходной точности атакующего. Точность увеличивает шансы на попадание (с верхним пределом), а уклонение снижает эти шансы (с нижним пределом). В обычных условиях игрок будет уклоняться от атак монстров примерно 1 раз из 10. Шанс уклонения у монстров остается низким.
Автоматические бои. Игроки должны иметь возможность увеличить свою защиту, чтобы опыт сражений с монстрами, которые не могут пробить эту защиту, позволял эффективно использовать автоматические бои.
Мана и здоровье. Поскольку сражения длятся недолго, мана и здоровье играют незначительную роль.
Такое проектирование помогает создать таблицы вторичных характеристик, определить их значимость, уровень сложности их достижения и различия в опыте пользователей.
Высокоуровневое PvE:
Для сражений с боссами в подземельях и на открытых территориях необходимо более детальное проектирование:
Процесс боя. Высокоуровневые сражения обычно требуют участия как минимум трех игроков, включая воина (танка), мага (наносящего урон) и целителя, образующих «железный треугольник».
Боеспособность. Боеспособность оценивает все параметры игрока: характеристики, экипировку, питомцев и навыки. Высокоуровневые игроки с более высоким уровнем боеспособности имеют значительное преимущество над бесплатными игроками, но при этом общее впечатление от игры для бесплатных игроков не должно страдать. Для этого определяются стандарты боеспособности монстров, и игроки с высоким уровнем боеспособности получают бонусы к урону по этим монстрам (но не более 50%).
Защита от элементальных атак. Боссы и монстры высокого уровня могут наносить элементальный урон. Игроки могут получать предметы для защиты от элементальных атак в подземельях. Сложность защиты увеличивается с уровнем, и предметы с низкоуровневых подземелий могут быть полезны в более сложных.
Контроль и сопротивление контролю. Игроки могут использовать навыки контроля, чтобы временно лишить монстров возможности атаковать. Продолжительность контроля увеличивается за счет характеристик контроля, но монстры также могут обладать сопротивлением контролю. Прокачка характеристик контроля обычно сложнее, чем прокачка обычных характеристик.
Поглощение и игнорирование поглощения. Игроки могут снижать получаемый урон, улучшая параметры поглощения урона (физического и магического). Боссы высокого уровня могут иметь свойства игнорирования поглощения, что делает эти параметры особенно важными на поздних этапах игры.
Сражения с боссами. Для победы над боссом требуется от 3 до 5 игроков, включая как минимум одного воина и одного целителя. Боссы обладают повышенными шансами на критический урон и уклонение, а также часто используют элементальные атаки.
PvP (Игрок против игрока):
Процесс боя. В PvP-сражениях рекомендуется направлять игроков к тому, чтобы сначала уничтожить питомцев противника, а затем атаковать самих персонажей.
Продолжительность боя. При равных условиях, с использованием лечебных предметов, сражение между двумя группами игроков с питомцами должно завершаться примерно за 20 секунд (без учета суперударов).
Здоровье и восстановление здоровья. Лечебные предметы имеют время перезарядки (CD). Скорость восстановления здоровья должна быть примерно равна урону от двух монстров в секунду. С увеличением уровня игроков влияние этих предметов на исход боя становится менее значительным.
Мана и восстановление маны. Восстановление маны также имеет время перезарядки. По мере роста уровня игроков лечебные предметы становятся менее эффективными, и игрокам приходится уделять больше внимания прокачке маны, чтобы дольше оставаться в бою.
Контроль и сопротивление контролю. У каждого класса есть хотя бы один навык контроля, который может временно лишить противника возможности действовать. Продолжительность эффекта контроля можно увеличить за счет характеристик контроля, в то время как противник может уменьшить этот эффект за счет характеристик сопротивления контролю. Эти характеристики можно улучшить только через специальные драгоценные камни. После достижения 70-го уровня в наборы экипировки вводятся характеристики контроля и сопротивления.
Навыки контроля, такие как оглушение, страх или превращение в овцу, имеют определенное время действия (например, оглушение — 3–7 секунд, страх — 5–9 секунд, превращение в овцу — 7–11 секунд). Повышение уровня навыка увеличивает его точность, но с ростом уровня персонажа это преимущество уравновешивается.
В PvP-сражениях предполагается, что навыки контроля окажут значительное влияние на исход боя, чтобы мотивировать игроков с высоким уровнем прокачки вкладываться в улучшение этих характеристик. Камни для улучшения контроля и сопротивления должны быть распределены по разным частям экипировки.
Поглощение и игнорирование поглощения. Базовая поглощаемость составляет 20%, и ее можно улучшить с помощью камней. Максимальное значение поглощения урона — 50%. Игроки могут повышать параметры физического и магического поглощения, чтобы уменьшить урон от противников, а противники, в свою очередь, могут вкладываться в характеристики, игнорирующие это поглощение. Различия в этих параметрах должны оказывать значительное влияние на исход PvP-сражений, что также стимулирует высокоуровневых игроков развивать эти способности.
Баланс между атакой и защитой. Между бесплатными и платящими игроками не должно быть ситуации, когда защита полностью игнорирует атаку. Уровень защиты должен составлять примерно 30% от уровня атаки.
Критический урон. После достижения определенного уровня атаки и защиты игроки могут переключиться на прокачку критических ударов, чтобы увеличить урон.
Формулы и принципы их проектирования
Создание формул для числового проектирования — это действительно задача уровня начальной школы, и нет смысла писать длинные рассуждения о том, какие формулы лучше. Важно задать себе один вопрос перед проектированием формулы: Какова цель этой формулы? Каждая формула должна соответствовать системе и игровым целям, для которых она предназначена. Например, если планируется, что система экипировки будет играть значительную роль в модели персонажа, то эффекты навыков не должны полностью игнорировать вклад от экипировки. Или если требуется, чтобы определенные характеристики, такие как процент снижения урона, оставались стабильными, то формула увеличения защиты должна учитывать уменьшение эффективности по мере роста уровня.
Универсальные принципы проектирования формул:
Простота. Формулы должны быть простыми в двух аспектах:
Структура формулы должна быть ясной и понятной, чтобы игроки и другие дизайнеры могли легко понять значение каждого переменного.
Использование простых функций. Предпочтительно использовать основные арифметические операции и сегментированные функции, избегая сложных степенных формул и плавающих вычислений. В стремлении к идеальному соответствию целевой кривой легко поддаться искушению использовать сложные функции. Но на практике это редко необходимо. Обычно можно обойтись сегментированной функцией, которая дает почти тот же результат, но проще в понимании и модификации.
Расширяемость. Формулы должны быть разработаны с учетом возможности их адаптации в будущем. Формула, которая не поддерживает расширение, заранее ограничивает срок службы системы. Если срок службы формулы меньше срока службы игры, то эта формула считается неудачной.
Пример: В оригинальной версии WoW формула критического удара выглядела так:
Критический шанс = F(ловкость) + бонусы от экипировки + бонусы от талантов + бонусы от баффов.
Эта формула позволяла игрокам бесконечно увеличивать шанс критического удара, хотя максимальное значение этого шанса — 100%. В результате разработчики столкнулись с проблемой: после достижения предельного уровня игроки не могли больше увеличивать критический шанс, что негативно влияло на разнообразие экипировки. Чтобы исправить это, в последующих дополнениях формула была изменена:
Критический шанс = F(уровень, критическая сила)
Экипировка теперь увеличивала критическую силу, которая затем перерасчитывалась в критический шанс в зависимости от уровня персонажа, что позволяло шансам уменьшаться по мере повышения уровня. Но и этого было недостаточно, поскольку по достижении максимального уровня критический шанс снова начинал накапливаться. Для решения этой проблемы Blizzard ввели новый параметр «устойчивость», который снижал вероятность получения критического удара:
Вероятность получить критический удар = критический шанс атакующего - F(устойчивость защитника)
Благодаря этому система стала расширяемой и критический шанс имел смысл даже при значениях выше 100%.
Избегайте положительной обратной связи. Формулы с положительной обратной связью могут стать причиной дисбаланса. Такие формулы увеличивают значения переменных, которые затем еще сильнее увеличивают сами переменные, создавая эффект снежного кома. Даже если изначально это добавляет интерес в игру, по мере её развития такая система может разрушить баланс.
Пример: В WoW у воинов система генерации ярости построена по принципу положительной обратной связи: обычные атаки генерируют ярость, которая позволяет использовать мощные навыки, наносящие еще больше урона и генерирующие еще больше ярости. Эта формула приводит к тому, что прирост урона для воина с хорошим оружием значительно превышает прирост урона для других классов. Из-за этого баланс можно поддерживать только в определенной точке, а не на всем промежутке игры. Чтобы компенсировать эту проблему, разработчики постоянно корректировали формулу генерации ярости.
Легкость изменения. Формулы неизбежно придется корректировать, поэтому они должны быть легкими для модификации. Простые формулы помогают быстро вносить изменения. Также полезно оставлять параметры для настройки. Например, если вы хотите, чтобы экипировка снижала прочность при ударах, но воины страдают от этого больше из-за частых атак, можно ввести параметр «жесткость», чтобы регулировать скорость износа снаряжения.
Процесс создания таблиц для числового проектирования
Работа с таблицами числового проектирования достаточно проста, но требует точности и внимания к деталям. Вот пошаговое руководство по созданию таблиц:
Определите основную концепцию системы.
Разбейте концепцию на отдельные функциональные элементы.
Настройте таблицы для чтения программой. Для этого разместите все функциональные элементы в виде столбцов. Если необходимо сделать выбор, используйте перечисления. Например, для указания пола персонажа можно создать столбец «Пол» с перечислением: 1 — мужской, 2 — женский, 3 — без ограничений. Оставляйте комментарии с объяснением значений перечислений, которые обычно записываются над названием столбца.
После завершения таблиц обязательно проверьте их вместе с программистами и подтвердите правильность перед началом разработки.
Практические советы по созданию таблиц:
Следуйте правилу K.I.S.S. (Keep It Simple, Stupid). Старайтесь делать таблицы максимально простыми и понятными.
Избегайте дублирования (DRY — Don’t Repeat Yourself). Одинаковые данные лучше хранить в одном месте и ссылаться на них, чем дублировать.
Ставьте себя на место того, кто будет поддерживать таблицу. Убедитесь, что структура и содержание таблиц понятны и легко изменяемы.
Таблицы — это инструмент, а не цель. Они должны помогать в разработке, а не усложнять ее.
Не оптимизируйте преждевременно. Преждевременная оптимизация может привести к ошибкам и усложнить процесс.
Памятка для создания таблиц:
Смотрите на всю картину целиком: Учитывайте общий контекст проекта.
Понимайте цели: Четко осознавайте, зачем нужны те или иные данные.
Набросайте черновик: Определите основные параметры и структуру.
Проработайте детали: Уточните все значения и правила.
Отшлифуйте таблицу: Убедитесь, что таблица проста в использовании и понятна другим участникам команды.
Создание таблиц тесно связано с программированием, так как они используются для передачи данных программам. Основные принципы написания кода применимы и к таблицам:
Сохраняйте простоту (K.I.S.S.).
Избегайте дублирования (DRY).
Представьте себя тем, кто будет поддерживать таблицу в будущем.
Помните, что таблицы — это средство, а не самоцель.
Не оптимизируйте слишком рано.
Организация работы с таблицами:
Установите строгие правила заполнения таблиц. Это позволит программистам и другим дизайнерам работать с таблицами без необходимости вникать в их внутреннюю логику, что экономит время и снижает затраты на обучение.
Числовой проектировщик должен видеть и общую картину, и детали. В отличие от других проектировщиков, числовой проектировщик должен понимать как всю систему целиком, так и каждую мелкую деталь.
Советы по расчетам и работе с Excel:
Чем лучше вы знаете Excel, тем эффективнее сможете выполнять расчеты. Можно использовать макросы или функции, в зависимости от предпочтений и вашего программного опыта.
Убедитесь, что числовые таблицы имеют схожий формат и легко связаны друг с другом.
Оставляйте место для добавления новых данных. Это касается формата таблиц, правил именования и распределения параметров.
Поля таблицы должны быть простыми для заполнения, легко читаемыми и удобными для редактирования. Не увлекайтесь чрезмерной разметкой и оформлением.
Примеры оптимизации работы с таблицами:
Если значения являются перечислением, установите соответствующие настройки в ячейках и настройте предупреждения для неправильных данных.
Если значения числовые, убедитесь, что ячейки настроены как числа, чтобы избежать ошибок (например, когда «0» путают с буквой «O»).
При совместной работе над таблицами используйте инструменты управления версиями, такие как SVN, чтобы блокировать таблицы во время их редактирования.
Сохраняйте все таблицы в одной папке, чтобы обеспечить их доступность и легкость в использовании.
Сгруппируйте параметры, чтобы управлять всей таблицей, изменяя лишь значения этих параметров.
Не используйте сводные таблицы, суммирование или объединение ячеек.
Все расчетные формулы должны быть подробно задокументированы.
Для тестирования создайте отдельные папки: одна для работы и правок, другая для версий, которые будут использоваться при сборке. Перед каждой сборкой копируйте таблицы из рабочей папки в папку для сборки.
Полезные рекомендации:
Используйте комментарии для пояснения формул.
После внешнего тестирования записывайте все изменения в числовых значениях и тестируйте их отдельно.
Делайте таблицы с запасом. Если требуется данные для уровней 20–80, лучше сразу заложить диапазон от 1 до 120.
Активно используйте инструменты сравнения версий, чтобы отслеживать изменения.
Дополнительные советы и приемы для работы с таблицами
Формулы в таблицах должны быть сопровождаемы подробными комментариями. Это поможет вам или вашим коллегам быстрее разобраться в логике расчетов при необходимости.
После внешнего тестирования необходимо фиксировать все изменения. Каждый раз, когда вы корректируете числовые значения после тестирования, записывайте все изменения в отдельный список, чтобы можно было легко проверить и провести целенаправленное тестирование.
Делайте таблицы с запасом по уровням. Например, если система требует расчета значений для уровней от 20 до 80, лучше создать таблицу, охватывающую уровни от 1 до 120. Это обеспечит гибкость и упростит добавление нового контента.
Используйте инструменты сравнения версий, такие как SVN. При помощи функции "Diff with previous version" вы сможете легко увидеть разницу между версиями таблиц, что особенно полезно после обновлений или правок.
Организация числовых данных
Все таблицы должны быть организованы в одной папке, чтобы облегчить доступ к ним и поддерживать порядок.
Старайтесь группировать параметры. Это позволит изменять значения в одном месте, а все формулы будут автоматически пересчитываться. Например, все важные параметры можно объединить в одном месте и использовать ссылки на них по всей таблице.
Ошибки и проверки
Не используйте сводные таблицы, автоматические суммирования или объединения ячеек. Эти функции могут создать путаницу и усложнить проверку данных.
Внимательно следите за типами данных в ячейках. Например, если требуется числовое значение, убедитесь, что ячейка настроена как число, чтобы избежать путаницы между цифрами и буквами.
Проверка и корректировка числовых данных
После внесения изменений в числовые значения необходимо проводить тестирование. Проверяйте, как изменения влияют на игровой процесс, и документируйте все выявленные проблемы.
Запасайтесь терпением и будьте готовы к корректировкам. Числовое проектирование требует множества итераций и тестов, прежде чем вы получите идеальный баланс.
Итоги и важные моменты
Работа числового проектировщика требует внимания к деталям и умения работать с большими объемами данных. Вам нужно обладать терпением и постоянно совершенствовать навыки работы с Excel (или любым другим инструментом, который вы используете для таблиц). Мастерство приходит с опытом, и лучший способ научиться — это погружаться в реальные проекты, делать ошибки, анализировать их и совершенствовать свои подходы.
В конечном итоге, как и во многих других профессиях, знания числового проектирования приходят с практикой. Теоретическое обучение может дать базовые знания, но только работая над реальными задачами и видя результаты своих расчетов в игре, вы сможете овладеть этим искусством.