Почему это проблема? Если клиенты проводят много времени в вашей игре, рано или поздно кто-то из них столкнется с редким, но все-таки возможным эффектом подбрасывания монеты. Например, если игра полагается на дефолтный (стандартный, используемый по умолчанию) алгоритм ГСЧ в моменты, когда нужно решить, удастся ли игроку уклониться от вражеской атаки, у некоторых игроков выпадет сотня неудачных попыток подряд. Это будет выглядеть крайне нечестно.
Решение этой проблемы заключается в модификации алгоритма ГСЧ. Возвращаясь к аналогии с монетой, примените к эксперименту с подбрасыванием некоторые ограничения. Что, если каждое подбрасывание не рассматривать как отдельное событие? Что, если вы ограничите возможное количество повторений одного результата? Например, так, чтобы десять последовательных бросков всегда в случайном порядке давали пять орлов и пять решек. А после десяти бросков сбросить цикл и начать сначала. Такой алгоритм не будет давать по-настоящему случайный результат, но уменьшит риск расстроить игроков. Не стесняйтесь экспериментировать в поисках решения, которое будет работать во благо проекту. Создайте ощущение случайности, однако сделайте ее честной.
10. Задайте увлекательный игровой цикл
Понятие «игровой цикл» означает цепочку действий, которые игрок будет из раза в раз выполнять во время игры. Цикл будет повторяться, поэтому ваша задача – сделать его интересным и разнообразным. Один из самых распространенных игровых циклов состоит из трех частей, и большинство игр следуют именно ему.
I. Действие: игрок выполняет задание / рискует / побеждает в битве с боссом.
II. Награда: игрок получает опыт / повышение уровня / крупную сумму в игровой валюте.
III. Прогресс: игрок тратит валюту на новую экипировку / получает новый квест.
Как видите, за каждой частью цикла стоят разные эмоции. Круговорот напряжения и расслабления. Излишне говорить, что не в каждой игре есть квесты, повышение уровня, покупка снаряжения и т. д. Это просто пример. Подумайте, как этот цикл может быть применен к вашей игре и что можно сделать, чтобы создать по меньшей мере три контрастных, но одинаково вознаграждающих компонента процесса.
Разумеется, все перечисленное – лишь вершина айсберга, и научиться вы можете куда большему. Если вы заинтересованы в подробном изучении этой темы, я предлагаю подписаться на мою рассылку на GamedevBook.com – я вышлю полный список 100 принципов игрового дизайна.
Лучший способ учиться
Меня очень часто спрашивали: «Как ты всему этому научился?» Я всякий раз удивлялся, слыша этот вопрос. Он предполагает, что есть какая-то хитрость или секрет, нечто недоступное «простым смертным».
Я никогда не учился на факультете игровой разработки и никогда не покупал платные курсы. DARQ была моим первым проектом, и, хоть я начинал ее делать с нуля три раза, до этого я не создавал никаких маленьких игр или учебных проектов. Я пришел в разработку игр, не зная ничего о программировании, гейм-дизайне, левел-дизайне, моделировании, текстурировании, анимации, управлении проектами, планировании бюджета, бухгалтерии и маркетинге. Вся база знаний в этих областях доступна в интернете совершенно бесплатно. Моим основным ресурсом по программированию было официальное руководство по C#, опубликованное на сайте Unity. В большинстве случаев его было достаточно для изучения основ программирования. Я уверен, что для пользователей Unreal Engine тоже существует огромное количество обучающих материалов. Поначалу ваш код будет ужасен, смиритесь с этим. Единственный способ стать лучше – практика, поэтому в процессе работы над проектом старайтесь приобрести как можно больше опыта. Что касается прочих навыков, таких как моделирование, текстурирование, гейм-дизайн и анимация, то для этого я главным образом использовал учебные пособия на YouTube. Там есть из чего выбрать. В конце книги перечислены ресурсы, которые показались мне особенно полезными.
Если все знания лежат в свободном доступе, чего тогда недостает для успеха? Упорного труда. Вам нужно потратить много часов на развитие навыков. Качественные игры не создаются в одночасье. Ни одному новому проекту нельзя гарантировать успех, но если вы хотите обратить шансы в свою пользу, нужно овладеть самодисциплиной и последовательно трудиться каждый день. Вот почему первая глава этой книги посвящена развитию правильного мышления. Если вы готовы на жертвы и тяжелую работу, результаты не заставят себя ждать. Рано или поздно упорный труд всегда окупается. Каждый, кто добился успеха, должен был заплатить эту цену – вам тоже придется ее заплатить.
Если у вас нет опыта работы с чем-либо, хотя бы отдаленно напоминающим разработку игр, начните с руководств по программированию и видеоуроков. Когда узнаете что-то новое, немедленно применяйте это на практике. Напишите код и посмотрите, как он работает. Прочувствуйте это. Не пытайтесь прыгнуть выше головы: первые шаги не будут идеальными. Настройтесь на то, чтобы понять, способны ли вы получать от этого удовольствие. Если вам не понравится, вы наверняка сдадитесь, не закончив игру. Так что сосредоточьтесь на удовольствии. Исследуйте эту новую захватывающую территорию. Находите приятное в освоении нового программного обеспечения и не позволяйте неуверенности в себе мешать вам.
Когда вы поймете, как работает движок, каковы принципы программирования и как создавать простейшие игровые ассеты, попробуйте сделать простой прототип основной механики вашей игры. На этом этапе вы не должны беспокоиться о качестве – просто постарайтесь сделать так хорошо, как сможете. А когда прототип заработает, начните сначала. Вы получили много новых навыков и сумели их применить. Я уверен, что вслед за этим вы сможете сделать лучшую версию первого прототипа. Можете ли вы придумать, как улучшить то, что сделали раньше? Улучшить внешний вид ассетов? По-другому структурировать код? Я хочу, чтобы вы увидели, как многому научились после первого прототипа, – это должно придать вам уверенности в себе. Вы можете научиться чему угодно, и это только начало.
«Работая над проектом, сосредоточьтесь на том контенте и тех функциях, которые вам нравится делать. Если вам не нравится работа, которой вы занимаетесь, вы вряд ли сделаете ее хорошо и вряд ли будете посвящать ей много времени. Когда вы наслаждаетесь работой, вам не нужна даже дисциплина».
Если в процессе выяснится, что некоторые из занятий попросту не приносят удовольствия, значит, эти задачи следует передать другим людям. Не заставляйте себя заниматься вещами, которые вам не нравятся, такой подход нежизнеспособен. Пройти этот долгий и трудный путь можно, только если процесс вам по-настоящему нравится.
Итеративный дизайн
«Вы ошибаетесь, если думаете, что нужно тайно работать „в башне из слоновой кости“ как гениальный поэт, до тех пор пока не выйдет гениальная игра и вы не покажете ее миру. Вам лучше думать о себе как о шеф-поваре, который разрабатывает рецепт блюда, без устали готовит его снова и снова, пробует и вдумчиво дорабатывает, слушая себя и других».
Почти невозможно создать наилучшую версию игры без возвращения к уже сделанному, используя метод проб и ошибок. Процесс цикличного создания игры называется итеративным дизайном. Каждый цикл (итерация) обычно включает в себя четыре шага, которые повторяются снова и снова на протяжении всей разработки.
1. Прототипирование. Создается быстрый прототип предполагаемой функции.
2. Тестирование. Прототип тестируется участниками команды.
3. Переоценка. Команда определяет, достаточно ли предполагаемая функция хороша для добавления в игру.
4. Внедрение. Если функция хорошо встраивается, ее внедряют в игру.
Процесс включает в себя постоянный пересмотр всех аспектов игры. Достаточно ли геймплей увлекательный? Функция делает игру более или менее интересной? Текст интерфейса достаточно крупный, чтобы игроки могли его разглядеть? Очень важно возвращаться к черновым наработкам, чтобы повторно оценить свои решения. Удаление бесполезных функций и постепенное улучшение проекта – эффективный способ разработки видеоигр.
Тестируйте игру как можно чаще. Дайте поиграть другим людям и попросите честные отзывы. Регулярное тестирование поможет выявить недочеты на ранней стадии и потенциально сэкономить много времени на разработку. Например: первый уровень, который я сделал для DARQ, был по большей части выдержан в серых тонах. Многие ассеты выглядели средненько, а в окружении не было заметных элементов, которые помогали бы игроку перемещаться по уровню. Я был новичком и не мог заметить все эти проблемы. И после того, как я пригласил нескольких человек протестировать уровень, мне стало ясно, что прототип был просто ужасным. Тестировщики были в замешательстве. Я все время слышал: «Подождите, я ведь уже был в этом месте».
Первый раунд тестирования был жесток, но заставил осознать, что я многому должен научиться, прежде чем создать по-настоящему играбельный уровень. Жесткая обратная связь была необходима, это было настоящее побуждение к действию. Она заставила меня поменять подход к дизайну уровней и художественному стилю. Я начал экспериментировать, понемногу добавляя цвета и делая окружающую среду более отчетливой, с уникальными деталями и запоминающимися ориентирами.
Важно относиться к каждой неудаче как к возможности учиться и становиться лучше. Такое отношение сохранило мне вовлеченность и мотивацию на одном уровне на протяжении всего нелегкого пути разработки. Чем больше итерационных циклов проходила игра, тем лучше она становилась.