Introduction to game development for the web

Чтобы сделать игру, вы должны пройти 6 этапов разработки: Разработка идеи. Арт. Программирование. Звук. Шлифовка. Публикация.

Каждый из этапов я структурировала следующим образом:

  • Совет. Здесь, я буду давать вам советы, основываясь на своем и чужом опыте.
  • Ресурсы. Также, я буду прикреплять ссылки на те или иные ресурсы, которые будут вам наиболее полезны.

Этап №1: Разработка идеи

Совет

У вас есть отличная идея! Как вы ее запишите?

Каждый рано или поздно найдет для себя наиболее подходящий способ записи: кто-то будет писать 60-страничные проекты и документы, а кто-то, как я — писать кучу заметок на одной странице, понятные мне одной. Я не знаю, какой способ вы выберете, но я могу дать вам несколько советов о том, что нужно прописывать:

Изюминка. Почему вы считаете идею своей игры превосходной? Для меня это наиболее важный пункт в проекте. Как только вы определитесь с «изюминкой» вашей игры — прописать оставшиеся пункты проекта не составит вам большого труда! Ваша игра заставляет над чем-то задуматься? Может быть она скандальна? Или же это ремейк классики прошлого? Или это нечто новое, что никто и никогда не разрабатывал?

Механика. Что, как и с какой целью делает ваш игрок — это и есть геймплей вашей игры. Например: клавиши QWOP могут использоваться для простого перемещения или общения в «мистическом чате» игры, но также они могут быть использованы для составления множества боевых комбинаций, как в игре «Dwarf Fortress».

Сюжет. Какую историю вы хотите рассказать всем тем, кто будет играть в вашу игру? Какие эмоции они будут испытывать? У каждой игры есть своя история. Если сюжет вашей игры не так очевиден — придумать ее сможет и сам игрок. История может быть придумана в игре про числа «2048». Игрок, играя в популярную стратегию «Civilization», может сам придумать историю становления своего государства. Даже в игре «Monument Valley», с ее безмолвием, каждый додумывает свою историю. Подумайте, какую историю расскажет ваша игра?

Настроение

Какое впечатление окажет ваша игра на игроков? Каково будет ее графическое оформление? Какой звук? Первое впечатление об игре очень важно — игра может «зацепить» пользователя с первых минут и в итоге он будет играть в нее и дальше. Возможно вы сделаете вашу игру в стиле ретро: с пиксельной графикой и музыкой в стиле ретро-вейв

А возможно, вы выберете ультра-современный дизайн, с плоской геометрией объектов, «чистыми» текстурами и инструментальной музыкой.

*Сложно придумать хорошую идею для игры? На этом этапе всем нам бывает очень сложно что-то придумать. Что же делать?

  • Присоединяйтесь к игре hackathon/jam. Вам и другим участникам будет поручено сделать игру за короткий промежуток времени. Во время участия в хакатоне вы встретите единомышленников, которые будут поддерживать и помогать вам. А что насчет творческого волнения и конкуренции во время работы? Все это благоприятно скажется на вас и на ваших навыках! Не знаете с какой площадки начать? Рекомендую попробовать Ludum Dare — одну из самых больших площадок для разработчиков!
  • Записывайте все свои идеи! Я и многие другие разработчики, которых я знаю, записываем все свои идеи. Таким образом, когда вы не сможете ничего придумать, вы сможете вернуться к своим старым идеям и мыслям и что-то из них почерпнуть!

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

Подготовка к публикации

Как тестировать игру на баги?

  1. Дайте другим поиграть в игру. Желательно вместе с вами, на случай, если они столкнутся с ошибкой и не смогут понять или объяснить её.
  2. Проверьте игру на разных платформах. В редакторе может не быть проблем, но работает ли она там, где её будут запускать? Будьте особенно внимательны с Linux и Android.

  1. Проверьте консоль на исключения. Если нашли исключение, найдите файл и строку, где сработало исключение. Если оно звучит по-марсиански, поищите решение в сети, и подумайте, почему именно в этой строке срабатывает исключение.
  2. Напишите в консоль. Попробуйте вывести логи (системные файлы) в предполагаемых местах ошибки. Введите разные переменные и сверьте полученные значения с ожидаемыми. При несовпадении — исправляйте.
  3. Проверьте логи. Системные записи вашего проекта дадут больше информации, чем консоль. Прочтите строки, где сработало исключение. Гуглите всё, что не знаете.
  4. Поспите. Всё починится с утра. Это просто плохой сон 🙂

Типичные ошибки

  • NullReferenceException.
    В чём дело: функция выполняется с несуществующей (null) переменной.Быстрое решение: проверьте, является ли переменная null.
  • SyntaxErrorException.В чём дело: ошибки в синтаксисе.Быстрое решение: в сообщении указано, какой символ выдал ошибку. Найдите и исправьте его.
  • Розовый или чёрный экран.Возможная проблема: не обработался шейдер.Возможные причины: вы используете 3D-шейдеры в 2D-игре или шейдеры, которые не поддерживаются операционной системой. Убедитесь, что вы используете мобильные шейдеры для мобильных игр.
  • Установите нужную частоту кадров. Для визуальной новеллы хватит 20 кадров в секунду, а вот для шутера нужны 60. Низкая частота кадров тратит меньше времени на отрисовку.
  • Анимация / система частиц / выборочная обработка. Объекты, невидимые для камеры игрока, не обрабатываются. Персонажи анимируются, частицы обновляются, 3D-модели обрабатываются только в поле зрения игрока.
  • Сжатие текстур и звуков. Для сжатия текстур используйте Crunch. Потоковая музыка и распаковка звуковых эффектов перегружают игру. Попробуйте снизить качество аудио. Сжатие может заметно снизить качество объектов.
  • Не позволяйте Raycast касаться лишних объектов. Raycast похожи на маленькие лучи, выстреливающие из ваших пальцев или мыши, когда вы касаетесь экрана или кликаете. Найдите объекты, которые не должны реагировать на действия игрока и удалите их из вычислений Raycast.
  • Используйте объектный пул. Частое создание и удаление большого количества объектов снижает производительность. Вместо этого, объедините их в список, очередь или другую структуру. Например, пули должны объединяться в один массив.
  • Оптимизируйте шейдеры. Задайте материал для каждого визуализатора. Игре не придётся создавать новые материалы в начале игры, что сэкономит ресурсы. Пусть визуализатор включает только то, что функционально необходимо.
  • Используйте AssetBundles (дословно «комплекты активов») вместо старой системы Resources в Unity. AssetBundles экспортирует ваши файлы из Unity и помещает в один файл, экономя оперативную память.

Инструменты (только для Unity)

Скрипты:Графика:

  • A guide to optimizing Unity UI;
  • Art Asset best practice guide.

Память:

  • Reducing the file size of your build.
  • Memory.

Оптимизация под платформы:

  • Practical guide to optimization for mobiles;
  • WebGL performance considerations;
  • Memory Considerations when targeting WebGL;
  • Olly’s seven stages of optimizations for mobile VR.

Плюсы и минусы профессии

Плюсы

  1. Опытный и талантливый программист получит за разработку игр достойную заработную плату.
  2. Есть шанс трудоустроиться в известную компанию и получить популярность в определенных кругах.
  3. Специалисты, работающие на себя, могут творчески реализоваться.
  4. Игры для ПК и мобильных устройств пользуются популярностью, поэтому инвесторы охотно вкладывают средства в продвижение игровых программных продуктов.
  5. Профессия дает возможность работать с разными платформами (ОС, IOS/Android и другие).
  6. Зная языки программирования, программы для создания 3D графики, основы разработки мобильных приложений и другие направления, связанные с профессией, специалист сможет попробовать свои силы в каждой из этих сфер.

Минусы

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

Будьте крутым

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

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

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

О модификаторах

Это незавершенная статьяОна содержит неполную информацию Вы можете помочь Game Dev Tycoon вики, дополнив её.
  • Разработка двух игр подряд с точно такой же темой/жанром/вторым жанром.
  • Разработка сиквела или аддона (расширения) менее чем через 40 недель после выхода предыдущей версии.
  • Разработка сиквела на том же движке (не относится к аддонам).
  • Разработка большой игры без использования 2D графики V4 (версия 4) или выше/3D графики V3 (версии 3) или выше.
  • Разработка ААА игры без использования 3D-графики V5 или выше
  • Разработка ААА игры без назначения как минимум трех специалистов соответствующих областей, которые считаются важными для жанра.

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

  • Технология/Дизайн
  • Смещение ползунков (процент времени)
  • Комбинации жанра/Темы игры
  • Тенденции (тренд)
  • Ошибки (Баги)

Таким образом, чтобы гарантированно создать игру высокого качества (кроме тренда, который является в какой-то степени случайным модификатором), во время разработки вы должны:

  • Получить правильный окончательный баланс очков между Дизайном и Технологиями
  • Выбрать Великую Комбинацию (great combo) жанра и темы
  • Выбрать платформу, которая соответствует вашему жанру (или обоим жанрам в случае многожанровой игры)
  • Выявить и убрать ошибки (баги).

Процесс создания игры можно разделить на две основные части: подготовка к производству и разработка.

Комбинации Темы / Жанра

Важной частью подготовки к производству является выбор темы и жанра. Их сочетание может привести либо к Великой Комбинации (Great Combo), либо к Странной Комбинации (Strange Combo).

Одножанровые комбинации

Эта таблица основана на исходных данных игры.
Тематика Экшен Приключения РПГ Симулятор Стратегия Казуальные Возраст
Авиация + + + + 0+/6+/18+
Альтернативная история + + 6+/18+
Бизнес + + 6+/18+
Боевые искусства + + + + 0+/6+/18+
Больница + 6+/18+
Вампиры + + 6+/18+
Виртуальный питомец + + 0+
Военное + + + 6+/18+
Гонки + + 0+/6+/18+
Город + + 0+/6+/18+
Детектив + + 0+/6+/18+
Дикий Запад + 6+/18+
Жизнь + + 0+/6+/18+
Закон + 6+
История + + 6+/18+
Киберпанк + + 6+/18+
Комедия + + 0+/6+/18+
Космос + + + 0+/6+/18+
Мода + + + 0+/6+/18+
Музыка + + + 0+/6+/18+
Научная фантастика + + + + + 0+/6+/18+
Ниндзя + 0+/6+/18+
НЛО + + 0+/6+/18+
Оборотни + + 6+/18+
Охота + + 0+/6+/18+
Пираты + 0+/6+/18+
Подземелья + + + + 6+/18+
Постапокалипсис + + 6+/18+
Тематика Экшен Приключения РПГ Симулятор Стратегия Казуальные Возраст
Правительство + + 6+/18+
Путешествия во времени + + 0+/6+/18+
Разработка игр + 6+
Ритм + + + 0+/6+/18+
Романтика + 6+/18+
Словари + + + 6+
Спорт + + + 0+/6+/18+
Средневековье + + + + 0+/6+/18+
Стартапы + 6+/18+
Супергерои + + 0+/6+/18+
Тайна + + 0+/6+/18+
Танцы + + 6+/18+
Транспорт + + 0+/6+/18+
Тюрьма + + + 6+/18+
Фильмы + + 0+/6+/18+
Фэнтези + + + + 0+/6+/18+
Хакинг + + 6+/18+
Хирургия + 6+/18+
Хоррор + 6+/18+
Чужие + + 6+/18+
Школа + + + + 0+/6+/18+
Шпионаж + + + 0+/6+/18+
Эволюция + + 0+/6+
Тематика Экшен Приключения РПГ Симулятор Стратегия Казуальные Возраст

Многожанровая комбинация

Единственный способ получить Великую Комбинацию (Great Combo) для многожанровых игр заключается в использовании двух жанров, каждый из которых в соответствии с темой получит «Великую Комбинацию». Это значит, что такая тема как Хирургия (Surgery) не может получить «Великую комбинацию» на разножанровых играх (см. таблицу выше, у хирургии только одна комбинация великого комбо).

Комбинация Жанра / Платформы

Каждый жанр имеет свою популярность на каждой платформе. Ваш выбор жанра по отношению к платформе слабо влияет на игровые отзывы. Он больше влияет на продажи игры. Чем выше модификатор продажи выбранной платформы, тем больше вы заработаете.

(+++) — Отлично подходит,(++) — Хорошо подходит, (+) — Нормально подходит, (-) — Не очень подходит, (—) — Плохо подходит, (—) — Ужасно плохо подходит.
Платформа Экшен Приключения РПГ Симулятор Стратегия Казуальные
PC ++ +++ ++ +++ +++
Govodore 64 (G64) ++ ++ + ++ + +
TES +
Master V +
Gameling + ++ +
Vena Gear + ++
Vena Oasis + ++
Super TES +
Playsystem + ++
TES 64 +
DreamVast + ++
Playsystem 2 + ++ +
mBox ++ +
Game Sphere +
GS + ++ ++ ++
PPS + ++
mBox 360 + + ++
Nuu + +
Playsystem 3 + +
grPhone + ++ ++ ++
grPad + ++ ++ ++
mPad ++ + ++
Wuu ++ +
mBox Next(mBox One с 1.4.3) ++ + ++
Playsystem 4 + +
Своя консоль ++ + ++
Платформа Экшен Приключения РПГ Симулятор Стратегия Аркада

Комбинации платформы и целевой аудитории.

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

Основано на исходных данных игры.

+ Хорошо подходит

++ Отлично подходит

— Избегайте таких комбинаций

Платформа Юные 0+ Все 6+ Взрослые 18+
PC + ++ +++
Govodore 64 (G64) + ++ +
TES +
Master V +
Gameling +
Vena Gear +
Vena Oasis +
Super TES +
PlaySystem +
TES 64 +
DreamVast +
PlaySystem 2 +
mBox +
Game Sphere +
GS +
PPS +
mBox 360 + ++ ++
Nuu +
PlaySystem 3 + ++ ++
grPhone +
grPad +
mPad + +
Wuu +
mBox Next(mBox One) + ++ ++
PlaySystem 4 + ++ ++
Своя консоль + ++ ++
Платформа Юные 0+ Все 6+ Взрослые 18+

Зарождение студенческого клуба

В Иннополисе сложно не попасть в тусовку по интересам. Сейчас в Университете более 40 студенческих клубов — активных и не очень. В 2016 году, когда мы поступили, в геймдев-клубе было 5-6 человек. Ребята периодически собирались и пилили свои проекты, сидя в аудитории. Это была интересная тусовка людей с общими интересами, но хотелось чего-то больше.

Набравшись немного организационного и управленческого опыта, я и мой товарищ Егор решили открыть свой студенческий клуб по разработке игр. Мы гордо называли себя инди-разработчикам, поэтому, долго не думая, назвались — Indie GameDev Club.

Главную цель клуба мы сформулировали как — развитие геймдев индустрии в Иннополисе, России, да и в мире в целом. Амбициозно для второкурсников, но высокая планка помогала двигаться вперёд. Для себя мы видели этот путь через образовательный процесс, так как ощущали нехватку геймдев-программ в вузах и на различных курсах. Мысль открыть свою студию пришла позже, можно сказать, это стала логичным продолжением деятельности клуба. На тот момент коммерческих проектов даже не было на горизонте, каждую неделю мы собирались в аудитории, выступали с докладами и пилили свои игры.

Статьи

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

Статья демонстрирует простой метод имитации воздействия ветра на дерево (куст), реализованный на вертексном шейдере.

Читать | Комментарии []9 окт. 2020

Освещение с использованием фотометрического профиля

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

Читать | Комментарии []3 июня 2020

Гидродинамика Шрёдингера на пальцахПредрасчёт рейкаста для эффективного рендеринга травы и мехаНа пути к эффективному алгоритму Global Illumination, часть 1Синхронизации в Vulkan

Специфика профессии

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

  • инструмент Unity и другие движки, которые необходимы для создания 2D и 3D игр;
  • объектно-ориентированное программирование;
  • изучение языка программирования C#, Ajax и других;
  • оптимизация 2D и 3D игр;
  • 3D редакторы;
  • этапы проектировки игрового процесса, прорисовки, визуализации, анимации, физики и других аспектов игры; 
  • основы разработки игр для мобильных устройств и многое другое.

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

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

Как попасть в геймдев: Breakout

Следующий шаг в геймдев-е. Breakout во многих отношениях можно назвать «Pong++». У вас все еще есть прыгающий мяч, который не изменился, физика его осталась прежней (при контакте он отскакивает в другую сторону). У вас все еще есть ракетка, которой управляет игрок, за исключением того, что теперь это одиночная игра. Но игрок все равно проигрывает, если пропустит мяч. Многое из Pong можно перенести в Breakout с минимальными усилиями.

Главное — блоки, которые разрушаются. Небольшое отличие от Pong-а, но эта малая разница дает нам совершенно новую игру.

Дополнительные задачи:

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

Теперь пора собирать информацию об издателях и индустрии.

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

Инди-разработчики игр, то есть независимые (инди = independent), делают игры самостоятельно от начала до конца или работают с небольшой проектной командой энтузиастов или оплачиваемых узких специалистов. За релизами независимых разработчиков полезно следить, потому что они чутко реагируют на тренды или даже предсказывают их, а также изобретают новые жанры и механики. В блоге Alamamat можно найти интервью с двумя девушками, которые выпускают инди-игры, Паломой Доккинз и Шарлот Мадлон. 

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

В процессе скаутинга GameDev индустрии начинающий разработчик узнает названия легендарных игр, таких как Sims, World of Tanks, Elden Ring, Fortnight, Stalker, Civilization, World of Warcraft и множество других. А также названия издательские брендов: в частности, Wargaming, ZeptoLab, Azur Games, Playrix, Blizzard, 1C Game Studios и т. д. И конечно имена легенд и восходящих звезд игровой индустрии, таких как Хидэо Кодзима, Уилл Райт, Джон Кармак, Сид Мейер, Игорь и Дмитрий Бухманы, Семен и Ефим Воиновы. Обязательно встретится информация и о миллиардерах игровой индустрии, таких как основатель платформы Steam Гейб Ньюуэлл. GameDev это чрезвычайно интересная индустрия.

Как развиваться в геймдеве

Чтобы разобраться с геймдевом, вам понадобятся базовые знания объектно-ориентированного программирования, а также языка С++. Изучив азы, можно переходить к игровой специфике.

Вот примерные темы, которые должен освоить начинающий Unreal Engine разработчик:

  • особенности кодинга на С++ в движке UE4;
  • базовые элементы геймплея — Actors;
  • система управления памятью и система обработки игровых объектов;
  • работа с физическими симуляциями и силами, воздействующими на объекты;
  • создание пользовательского интерфейса, виджеты на C++;
  • создание искусственного интеллекта;
  • интегрирование SDК, разработка собственных плагинов;
  • Unreal Build System, коллекция инструментов для автоматизации разработки;
  • непосредственно разработка игры: создание инвентаря, Save System, системы событий и т. д.

Если вас интересует 3D-наполнение для уровней, работа с освещением, материалами, анимацией и динамикой, необходимо освоить:

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

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

Если у вас есть вопросы, пишите в комментариях, постараюсь ответить.

Играем стильно

Если бы вы загрузили эту страницу, то ничего не увидели бы, потому что никакого стиля не применено. Я уже подготовил ссылку на файл main.css в своем HTML, поэтому помещу все CSS в новый файл с тем же именем. Первым делом я позиционирую все элементы на экране

Тело страницы должно занимать весь экран, поэтому сначала я уделяю внимание этому:

Во-вторых, мне нужно, чтобы арена была заполнена фоновым изображением (рис. 3):

Рис. 3. Фоновое изображение для арены

Далее я размещаю табло. Я хочу, чтобы оно находилось вверху по центру — поверх других элементов. Команда «position: absolute» позволяет разместить его где угодно и оставить там: 50% — позиционирует табло посередине верхней части окна, но начиная с самой левой части элемента табло (scoreboard element). Чтобы гарантировать точную центровку, я использую свойство transform, а свойство z-index обеспечивает, что табло будет всегда находиться поверх других элементов:

Я также хочу использовать текст со шрифтом в стиле ретро. Большинство браузеров позволяет включать собственные шрифты. Я счел подходящим шрифт Press Start 2P от codeman38 (zone38.net). Чтобы добавить шрифт к табло, я должен создать новое начертание шрифта (font face):

Теперь результаты (scores) находятся в теге h1, поэтому я могу задать этот шрифт для всех тегов h1. На случай отсутствия этого шрифта я предусмотрю несколько запасных вариантов:

Для других элементов я буду использовать таблицу изображений-спрайтов. Таблица спрайтов (sprite sheet) содержит все необходимые игре изображения в одном файле (рис. 4).

Рис. 4. Таблица спрайтов для Ping

Зачастую, прежде чем создавать игру, лучше всего нарисовать то, как она должна выглядеть.

Любому элементу, имеющему изображение в этой таблице, будет назначен класс sprite. Тогда для каждого элемента я буду использовать background-position, чтобы определить, какую часть таблицы спрайтов мне нужно показывать:

Затем я добавлю класс sprite ко всем элементам, которые будут использовать таблицу спрайтов. Для этого мне придется ненадолго переключиться на HTML:

Теперь мне нужно указать позиции каждого спрайта в таблице для каждого элемента. И вновь я буду делать это с помощью background-position, как показано на рис. 5.

Рис. 5. Добавление смещений для таблицы спрайтов

Свойство position: absolute в player, opponent и ball позволит мне перемещать их по полю, используя JavaScript. Если вы посмотрите на страницу теперь, то увидите, что к элементам управления и мячу прикреплены ненужные куски. Дело в том, что размеры спрайтов меньше 128 пикселей по умолчанию, поэтому я подстраиваю их под правильный размер. Мяч всего один, и я задаю его размер напрямую:

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

После добавления этого класса элементы управления в игре выглядят гораздо лучше:

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

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

Основательно изучив разные сегменты GameDev-рынка, пора читать вакансии.

Вакансии полезно читать не только на очевидных площадках вроде HeadHunter и Staya.vc, но и главным образом на официальных сайтах издателей. Правда, даже издатели российского происхождения, такие как ZeptoLab, публикуют описания вакансий зачастую на английском языке. Ах-да! Английский учить нужно все это время, потому что разработчику видеоигр он необходим в повседневной работе. Но сейчас и так почти все с детства учат английский, а кто-то и китайский.  И правильно делают, потому что гигант Tencent активно инвестирует в GameDev.

Что дает изучение вакансий на официальных сайтах издателей? Важную информацию. На каких языках они программируют, где еще в мире есть их офисы, какие существуют специальности. Например, при беглом взгляде на лист вакансий ZeptoLab мы узнаем: что издатель использует языки С++, Objective-C и Java, а также игровой движок Unity; компания нанимает на работу в Москве и Барселоне; для работы понадобится хороший уровень английского.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector