Основы создания успешных инди-игр от идеи до публикации. Советы начинающим разработчикам — страница 14 из 34

Доступность

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


1. Двигательные нарушения

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


2. Нарушения зрения

Существуют три общеизвестных типа дальтонизма: красно-зеленый, сине-желтый и полный. Сделать игру доступной для дальтоников проще всего, не полагаясь в дизайне только на цвет. Хоть цвет и мощный инструмент для коммуникации, попробуйте добавить вспомогательные элементы – формы или звуки. Например, если зеленые ящики – это бонусы, а красные – взрывчатка, убедитесь, что у них разные форма и размер. Вы также можете поместить на них дополнительные графические элементы или значки.

Еще один способ решить проблему дальтонизма – разрешить игроку менять цветовую палитру в зависимости от типа нарушения. Это достаточно сложно, но, к счастью, в онлайн-магазинах Unity Asset Store и Unreal Engine Marketplace доступны инструменты, которые сделают всю работу за вас.

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


3. Нарушения слуха

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

Существуют и более продвинутые функции, которые улучшат доступность игры. Лучший способ найти решения – обратиться к TheMighty.com, сообществу поддержки людей, у которых есть проблемы со здоровьем. Свяжитесь с организаторами и попросите поговорить напрямую с людьми, имеющими такие трудности. Они будут рады помочь сделать игру более доступной для людей с ограниченными возможностями.

Практики хорошего программирования

На эту тему я, вероятно, мог бы написать отдельную книгу. Вопрос неисчерпаем, так что я оставлю на вашей ответственности совершенствование кода: читайте руководства и смотрите учебные материалы на YouTube. Но все же я хочу дать несколько советов (хотел бы я, чтобы кто-то дал мне эти советы, когда я начинал). Если вы новичок в программировании, не волнуйтесь – большая часть этих советов может показаться непонятной. Они пригодятся, когда вы познакомитесь с кодингом поближе.


1. Не беспокойтесь, что сначала код будет плохим

Это неизбежно. Через год вам будет стыдно смотреть на свой старый код. Но практика – единственный способ научиться.


2. Делайте проще

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


3. Один скрипт для одной задачи

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


4. Избегайте зависимостей

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


5. Добавляйте комментарии

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


6. Используйте адекватные наименования

Не совершайте распространенную ошибку, называя переменные x или y. Вы можете помнить, что они обозначают, пока пишете, но уже неделю спустя вдруг обнаружите, что не понимаете ни строчки. Лучше использовать длинные описательные имена. Например, легко понять, для чего нужна переменная с именем isCharacterGrounded[17]. Да и функция под названием LevelUp[18] говорит сама за себя. Длина имен переменных, функций и классов не влияет на производительность, так что воспользуйтесь этой возможностью. Описательные названия значительно сокращают необходимость в комментариях, что тоже сэкономит время.


7. Задумайтесь о системе ввода как можно раньше

На первый взгляд реализация поддержки контроллера может показаться простой задачей, но если говорить о поддержке всех возможных контроллеров и переназначении клавиш на клавиатуре, то вам, вероятно, следует приобрести готовый сторонний скрипт для обработки ввода данных. Многие из них доступны в интернете, используете вы Unity Asset Store или Unreal Engine Marketplace. Я не покупал такие скрипты, о чем жалею до сих пор. Мне пришлось написать собственную систему для переназначения клавиш и частичной поддержки контроллера. Это невероятно сложно и трудоемко, поэтому покупка скрипта избавит вас от многих проблем.


8. Заранее продумайте вопросы локализации

Если вы планируете перевести игру на несколько языков, продумайте систему под эту задачу. Подходов к этому есть много, однако в конечном счете все решения сводятся к замене внутриигрового текста строковыми переменными. Обычно массив строк загружается из файла для нужного языка, сохраненного в формате. XML или. JSON. Звучит утомительно, но на деле написать систему локализации относительно легко. Это одна из первых вещей, которые я сделал в начале работы над DARQ – просто потребовалось немного изучения. Если же вам покажется, что на данном этапе вы не справитесь, можете купить готовую к использованию систему в Интернете.


9. Подумайте о сохранениях, загрузках и контрольных точках («чекпоинтах»)

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


10. Изучайте чужой код

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


11. Предусмотрите повторное использование

Последнее, но не менее важное: попробуйте написать код, который сможете повторно использовать в будущих проектах. Такие скрипты, как контроллер камеры, управление игровыми событиями, диалоговая система и другие, можно запрограммировать так, чтобы позднее импортировать в будущие игры. Так поступают ААА-студии – поступайте так же и вы. Не нужно изобретать велосипед всякий раз, как делаете новую игру. Это сохранит время, и вы будете довольны, что сделали это.

Звук и музыка

Качественный звуковой дизайн и подходящая музыка значительно улучшат вашу игру. Будучи начинающим разработчиком, вы в большей степени сосредоточены на технических аспектах проекта, но не забывайте уделять надлежащее внимание игровому звуку. Не откладывайте это на потом. Многие независимые разработчики ошибаются, используя бесплатные звуковые эффекты и стоковую музыку[19]. Не будьте таким. Игра будет выглядеть любительской.

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

Как новичку вам придется многое доказывать – как покупателям, так и игровым журналистам. Делайте все возможное, чтобы игра выглядела профессиональной. Подумайте о сотрудничестве с профессиональным композитором. Если вы не опытный музыкант, создание саундтрека уместно делегировать. Роль композитора может выходить далеко за рамки одного лишь написания музыки: он может стать равноправным членом команды, давать обратную связь по части звука в целом. Такой фидбэк может оказаться очень полезным и повлиять на подход к дизайну, темпу и повествованию.