Дайджест статей №2 [январь 2016]

Coffee-Spice-CookieПока были праздники, и в перерывах между работой над одним “учебным” проектом, наковырял еще ряд статей для дайджеста. Вот пятерка из наиболее интересных на мой взгляд.

  • 13 основных принципов геймдизайна.

В колледже у меня был курс классической анимации, и в первый же день занятий профессор раздал нам «12 принципов анимации», созданных Фрэнком Томасом и Олли Джонстоном. Если вам ничего не говорят их имена, то эти двое – из Девятки диснеевских стариков, знаменитой группы мультипликаторов студии Уолта Диснея, создавшей такую бессмертную классику, как «Белоснежка», «101 далматинец», «Бэмби», «Спящая красавица» и другие мультфильмы.

На первых порах эти 12 принципов было тяжело освоить в полной мере. Но к концу семестра я заметил, что чем больше принципов я применяю в своей работе, тем лучше становится анимация. Вспоминая об этом опыте, я однажды подумал: «А ведь в геймдизайне должно быть что-то подобное!». Часть 1часть 2.

  • Создание игровых уровней: советы и хитрости.

В течение последних нескольких месяцев я безвылазно работал над примерно полусотней различных игровых уровней, и хотел бы поделиться своим опытом. Эта статья содержит эффективные Tips and Tricks, которые вы можете использовать, чтобы повысить общее качество вашей игры. Это ни в коем случае не пошаговое руководство, а только сборник идей и полезных советов. Первая часть статьи направлена больше на работу с визуальной составляющей игры, вторая же часть, содержит более фундаментальные вещи, такие как прототипирование, определение размера героя и окружения, плэйтестинг и аналитику. Часть 1, часть 2.

Дальше идут две статьи из серии “Концептуальные идеи и подсказки для новичков игродева.”

  • Простая процедурная генерация моделей для 2D игры.

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

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

И что? Не думаю, что человек, который второй раз открывает юнити начнет думать, как ему понять, как реализовать и в какое место игры применить найденный алгоритм.

Проще реализовать свой! Пусть он будет простой, зато понятный вам. А это самый важный шаг во всем программировании. Читать.

  • Мощная оптимизация 2D проекта.

Как вы создаете объекты в Unity из префабов? Только Instantiate и никак иначе — другой функции там просто не существует.

Вот вы их создаете (объекты), и создаете, иногда удаляете, потом опять создаете, и так в течении всего уровня. Это бьёт по оптимизации и существенно — почему? Потому что так написано на всех форумах Unity, а иногда проглядывается и в документации, а документацию надо слушаться. Как Instantiate бьет по про производительности?

Вот например такой код: Instantiate(bullet, transform.position, tranform.rotation);

Что происходит? Берется префаб, который вы положите в переменную bullet, в недрах вашего устройства ищется свободная память, память выделяется под размер оригинального префаба, туда записывается голая копия вашего префаба с его компонентами, потом все параметры компонентов оригинального префаба копируются в ваш новый клон, и он возвращается на сцену по заданной позиции и под заданным углом.

Наверное, это долго, да. Представьте, что вы делаете раннер(где все объекты повторяются через каждые пять внутри-игровых метров) или просто шутер — катастрофа, если хотя-бы каждую секунду будет происходить инструкция, которую я описал выше. Что же делать? Использовать pooling объектов. Читать.

  • UnityEditor, динамическое содержимое редактора компонента.

Работая над своей игрой в Unity я подумал, зачем мне создавать множество однотипных скриптов описывающих поведение игровых объектов, но имеющих небольшие отличая друг от друга, если я мог бы создать один, а добавляя его как компонент объекту просто выбирал бы тип того самого объекта, а в редакторе (он же Inspector) видел бы только те свойства и поля, что имеют прямое отношение к выбранному типу. Так же это позволило бы в зависимости от выбора внутри скрипта использовать те или иные методы. В этом мне помогло пространство имён UnityEditor и её класс Editor. Читать.

  • Разработка и публикация ассета в Unity Asset Store

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

Тут нам на помощь приходит Unity Asset Store, который позволяет покупать\продавать практически все, что поможет при разработке, будь то отдельные скрипты, паки с моделями или же целые игровые проекты и стартер киты, которые могут сэкономить огромный объем труда, позволив не писать базовые вещи, которые есть почти во всех играх.

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

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