Как стать автором
Обновить

Состояние такое

Время на прочтение9 мин
Количество просмотров9.6K
Опять здравствуйте, Хабровчане! В прошлой статье я рассказывал о командах и как ими пользоваться, а сегодня я буду развивать тему и расскажу как привязать команду к конечному автомату. Тема на хабре не нова, поэтому я не буду углубляться в объяснения что такое конечный автомат и зачем он используется, а сосредоточусь на реализации. Сразу оговорюсь что для понимания лучше прочитать предыдущую статью, ведь команды будут практически без изменения использоваться в качестве состояний. Перед началом хочу сказать спасибо OnionFan за его комментарий — не все привычки хороши и его вопрос позволил сделать удобней типизацию конечных автоматов, про которые я расскажу, просто добавив ключевое слово params (я уже поправил в предыдущей статье).
Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии0

Создание редактора сценариев в Unity

Время на прочтение8 мин
Количество просмотров17K
К созданию кастомных инструментов рано или поздно приходят все, кто работает с Unity. Можно долго сопротивляться и бояться, но в какой-то момент без редакторов и инспекторов, заточенных под нужды команды, продвигаться будет невозможно.

Я участвую в проекте одного очень талантливого художника, где помогаю в разработке игры-квеста в ретро пиксель-арт стиле. Мы используем Unity, так как оба имеем длительный опыт разработки в этой среде. Практически сразу возникла необходимость создания поставленных событий, кат-сцен и головоломок, во время которых череда действий строго определена. Сначала я попытался отделаться как можно меньшей кровью и предложил использовать стандартный Animator Controller и класс StateMachineBehaviour из Unity 5 для кастомизации событий, но как оказалось этот подход не работает: конечный автомат аниматора хоть и универсален, но потребовал бы чрезмерного количества лишних действий для абсолютно линейных вещей, а нам было необходимо похожее визуальное решение, но позволяющее легко и просто выстраивать события как в таймлайне видео-редакторов.


Картинка из документации Unity, вдохновившая на создание собственного редактора

Таким образом написание своего собственного полноценного редактора оказалось неминуемым.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии4

Unity и MVC: как прокачать разработку игры

Время на прочтение13 мин
Количество просмотров81K
От переводчика
Привет, Хабр!

Я ненастоящий сварщик и перевод статьи дался мне тяжело, поэтому я назову его вольным — заранее очищу совесть, если где-то слишком сильно перефразировал оригинал. Буду рад указаниям на ошибки перевода, грамматики и т.п. в личку.

Перевод публикую с разрешения сайта Toptal, где выложен оригинал автора Eduardo Dias da Costa.

Обычно программисты знакомятся с профессией, начиная с Hello World. Затем ставят всё большие и большие цели и каждая новая задача приводит к важному уроку: чем больше проект, тем запутаннее код.


image

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


Поэтому существуют шаблоны проектирования; они — сборники правил для стандартизированного структурирования проекта, которые помогают разделить и организовать большую кодовую базу, и упростить работу с незнакомым кодом.

Читать дальше →
Всего голосов 16: ↑13 и ↓3+10
Комментарии9

Оптимизация игры на Unity и dev story Tap Tap Builder

Время на прочтение9 мин
Количество просмотров21K
В копилке каждого инди-разработчика должен быть свой сити-билдер, может быть поэтому я решился «сконструировать» свой велосипед. Конечно же, с квадратными колесами и креслом-качалкой вместо седушки. Работаю я один, поэтому никаких дизайнеров, художников, и тем более моделлеров, в проекте нет. Кроме того, в общем-то, это моя первая игра с трехмерной графикой. Дабы не утруждать себя изучением продвинутых инструментов для создания трехмерных моделей, я решил все сделать своими руками и средствами игровой среды Unity. Там есть только примитивы, вроде кубов да цилиндров, а также возможность их раскрасить. Что ж, следовало запастись терпением и начать «творить», погрузившись в роль архитектора. Полезной информацией для начинающих инди-разработчиков может оказаться мой опыт работы с издателем, а также способы оптимизации игры.

image
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии27

Система сообщений или “мягкая связь” между компонентами для Unity3D

Время на прочтение13 мин
Количество просмотров34K

Введение


В данной статье будут затронуты темы, связанные с реализацией возможности “мягкой связи” компонентов игровой логики на основе системы сообщений при разработке игр на Unity3D.

Ни для кого не секрет, что в подавляющем большинстве случаев средств, которые предоставляет движок в базовом виде, недостаточно для полноценной реализации систем обмена данными между компонентами игры. В самом примитивном варианте, с которого все начинают, мы получаем информацию через экземпляр объекта. Получить этот экземпляр можно разными способами от ссылки на объект сцены, до функций Find. Это не удобно, делает код не гибким и заставляет программиста предусматривать множество нестандартных поведений логики: от “объект исчез из сцены”, до “объект не активен”. Помимо прочего может страдать и скорость работы написанного кода.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии26

Взрывная волна в Unity3D (displacement shader)

Время на прочтение3 мин
Количество просмотров30K
Мой телеграм канал: https://t.me/winc0de.
Всем привет, пишу небольшую 2D игру и параллельно хотел бы рассказывать о реализации некоторых вещей в Unity3D.
Программирование графики само по себе очень интересное занятие с безграничным количеством вариаций результата. В этой статье опишу реализацию искажения пространства от взрывной волны.

Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии9

Создавая игру Good Cat Gone Bad

Время на прочтение4 мин
Количество просмотров15K
Целевая аудитория: начинающие инди-разработчики игр.

Введение




В основном это список приемов и бесплатных инструментов, которые я использовал при создании мобильного endless runner’а Good Cat Gone Bad, который выйдет в Google Play 4 мая 2016 г.

Игра разрабатывалась как проект-хобби, используя Unity 5, и заняло все это дело около 4 месяцев на постоянной основе (полный рабочий день).
Читать дальше →
Всего голосов 22: ↑17 и ↓5+12
Комментарии24

Алгоритм жевания для тачскрина

Время на прочтение4 мин
Количество просмотров13K
Не так давно вышла моя первая личная игра для мобильных. Суть заключается в том, что врагов надо пережевывать пальцами. Алгоритм не уникальный, но встречается редко. На первый взгляд, нужно только прослушать зум-движение двух пальцев, вроде ничего сложного, однако в процессе разработки игры выявляются различные подводные камни.
Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Комментарии11

Дайджест новостей из мира разработки на Unity

Время на прочтение3 мин
Количество просмотров17K
Наверное, дайджест, посвященный Unity, вы ждали с нетерпением, но, даже если не ждали, в нем всё равно много интересных материалов и новостей.


Читать все
Всего голосов 12: ↑11 и ↓1+10
Комментарии4

35 полезных советов для участников Ludum Dare

Время на прочтение8 мин
Количество просмотров9.5K
image

Совсем недавно, 9 мая, завершился подсчет результатов Ludum Dare 35. Ludum Dare — международный игровой джем (по-простому — конкурс, на котором нужно за 48 или 72 часа полностью сделать игру). Мы участвовали в нем не единожды (для кое-кого из нас это уже 4ый LD подряд), но сейчас среди нас есть и новички. На волне энтузиазма от прошедшего события и была написана эта статья.

Завершив последний проект для Ludum Dare 35, мы хотели написать пост-мортем. Но в итоге получилось нечто вроде набора советов, основанных на собственном опыте, для тех кто хочет участвовать в этом конкурсе. Надеемся, что это будет полезно как новичкам, так и тем, кто уже не первый раз делает игры для джемов.

Многие из данных советов могут показаться очевидными, но каждый из них может оказаться для кого-то полезной каской от лишних граблей. Особенно для тех, кто еще не участвовал ни в чем подобном.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии3

Нарезка ресурсов – путь к оптимизации размера iOS-приложений

Время на прочтение3 мин
Количество просмотров9.4K
Нарезка приложения – это новая фича, которая появилась в iOS и tvOS версии 9.0. Теперь разработчики могут загружать на App Store несколько вариантов ресурсов для разных типов устройств. Это существенно уменьшает размер приложения, поскольку пользователь загружает пакет данных только для своего конкретного устройства.


Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии3

Пользовательские жесты, Kinect + Unity. Часть 1

Время на прочтение4 мин
Количество просмотров8.8K
Здравствуй, сегодня мы научимся использовать кастомные жесты в наших Unity-приложениях, делать мы это будем с помощью Kinect'a v2. Жесты можно использовать для широкого круга задач: перемещение по сцене, управление объектами, работа с пользовательским интерфейсом и др. В первой части мы рассмотрим процесс обучения жестов, во второй будем использовать полученную в результате обучения модель в Unity. Также узнаем о возможных проблемах и решениях.

Если тебе интересно, прошу под кат
Всего голосов 9: ↑8 и ↓1+7
Комментарии0

Можно ли сделать игру без художника за 2 дня? Devstory моей игры Neobug Rush 2 Players

Время на прочтение4 мин
Количество просмотров32K
Добрый день! Игры не являются основным родом моей деятельности, это скорее хобби. Статья может оказаться полезной начинающим indie-разработчикам, у которых, как и у меня, нет ни команды, ни знакомых художников, ни бюджета на фриланс и продвижение игры. Но что более важно, есть энтузиазм, время и хорошие идеи. Итак, кому интересно, прошу под кат!

Читать дальше →
Всего голосов 55: ↑49 и ↓6+43
Комментарии36

Система событий и откликов или задатки Visual Scripting для Unity3D

Время на прочтение10 мин
Количество просмотров12K

Введение


В прошлой моей статье были приведены способы обеспечения “мягкой” связи между компонентами игровой логики, основанные на уведомлениях и подписки на них. В общем смысле подобные уведомления можно посылать на любое, какое нам захочется, действие или событие, возникающее в работе компонента: от изменения переменной, до более сложных вещей. Однако зачастую определенные события требуют от нас выполнить ряд действий, которые нецелесообразно делегировать. Самым простым примером является звуковое оформление — в компоненте возникло событие, которое требует звукового сопровождения. В простейшем варианте мы вызовем функцию AudioSource.Play(), в чуть более сложном, функцию обертки над звуковой системой. В принципе ничего страшного в этом нет, если проект небольшой и в команде мало людей, которые совмещают в себе множество ролей, но если это проект крупный, где есть несколько программистов и саунд-дизайнер, то, в частности, настройка звуков превратится для программиста в кошмар. Не секрет же, что мы стараемся абстрагироваться от контента и поменьше с ним работать в плане настройки, ибо правильнее, если этим будут заниматься ответственные специалисты, а не мы.
Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии2

Unity3D Ускорить отрисовку 2D анимации в разы? Легко

Время на прочтение6 мин
Количество просмотров17K
В этой статья мне хотелось бы рассказать о том, как была ускорена отрисовка монстров при создании игры Alien Massacre. Данное решение подойдет для любых проектов, которые испольуют спрайтовую анимацию.

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

  • 1 Необходимо обеспечить отрисовку большого числа анимированных объектов на сцене. Ведь мы хотим, чтобы игрок отстреливался от полчищ монстров.
  • 2 Прогресс анимации должен быть различен для каждого из объектов. Ведь мы не хотим, чтобы мобы ходили строем.

Решение «из коробки»


Безусловно, первое решение было простым: все сделать с помощью уже встроенного в UnityEngine компонента Animator. Посмотрим, что из этого получается.
Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Комментарии11

Особенности консольной инди-разработки в российской провинции

Время на прочтение12 мин
Количество просмотров42K
Мне очень приятно, что мою последнюю статью про продвижение игры на Steam Greenlight, которую я писал на хабр чуть больше года назад, прочитали почти 50k раз и как мне кажется в итоге она была написана не зря. Тогда наша маленькая команда только-только получила зелёный свет. С того момента произошло еще много событий, но одним из самых интересных и значимых было то, что мы также прошли в программу ID@Xbox для независимых разработчиков, с возможностью выпуска своей игры на консоли Xbox One. И вот неделю назад игра все-таки увидела свет.

image

В этой статье я хочу поделиться интересной и возможно кому-то полезной информацией о том, с чем мы столкнулись пока готовили к релизу нашу игру на консоли Xbox One и Steam. А для этого я попробую раскрыть следующие темы:
  • Сколько может стоить разработка консольного проекта
  • Где мы взяли такие деньги
  • Как все подсчитать и иметь представление на что рассчитывать
  • Почему мы решили работать без издателя и внешних инвестиций
  • Как мы попали в Steam и на Xbox One
  • Почему нужно платить и получать возрастные рейтинги
  • В чем разница между Steam и Xbox — минусы и плюсы консольной разработки для инди
Читать дальше →
Всего голосов 70: ↑65 и ↓5+60
Комментарии34

Фейковая Новелла: новый опыт и работа над ошибками

Время на прочтение15 мин
Количество просмотров29K
Привет, Хабр! В этой статье я расскажу о результатах публикации одной визуальной новеллы и поведаю о второй, при разработке которой я попытался учесть полученный опыт…
Перед интенсивной разработкой небольшой игры (aka хакатоном) важно решить чего вы хотите: программировать, повеселиться или создать готовый продукт? У меня есть друг, который очень хочет сделать игру, но раз за разом он начинает с создания графического движка, на базе libgdx. Возможно, такой путь приводит к шедеврам вроде {$TitleCoolIndieGame}. На мой же взгляд, ему просто хочется попрограммировать. Так, что Читатель, если же Вы действительно хотите сделать игру, лучше не начинать с абсолютного нуля или читать эту статью, а приступить к конкретной работе! Тем более, что под катом не success story, а согласование макетов полуголой девушки, вакуумные маффины в коне, безумная работа над переводом сомнительного юмора и ещё более сомнительных отсылок, описание ненормальной соло разработки, да немного программирования, чтобы соответствовать тематике.
Под катом десяток мегабайт графики и более десяти страниц текста.
Полтора месяца работы под катом
Всего голосов 39: ↑33 и ↓6+27
Комментарии28

Особенности кэширования компонентов в Unity3D

Время на прочтение11 мин
Количество просмотров36K
Большинство unity-разработчиков знают, что не стоит злоупотреблять дорогими для производительности операциями, такими как, например, получение компонентов. Для этого стоит использовать кэширование. Но и для такой простой оптимизации можно найти несколько различных подходов.
В этой статье будут рассмотрены разные варианты кэширования, их неочевидные особенности и производительность.


Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии23

NavMesh на костылях — маленькие хитрости

Время на прочтение1 мин
Количество просмотров10K
Продолжаю играться в Unity3d.
В этой заметке постараюсь рассказать как при помощи грязного костыля можно обойти статичность компонента NavMesh.
Читать дальше →
Всего голосов 5: ↑1 и ↓4-3
Комментарии13

Скелетная анимация в играх. Обзор техник и ресурсов

Время на прочтение9 мин
Количество просмотров96K
Anima — это душа, отличающая живое от мертвого. Аристотелевская душа — это принцип движения, проявляющегося в четырёх видах: перемещение, превращение, убывание и возрастание. Спустя почти две с половиной тысячи лет мы используем те же категории в компьютерной графике. Скелетная анимация определяет перемещение, морфинг служит для превращений, а убывание и возрастание это обычное масштабирование. Анимированная графика оживляет образ, вдыхает в картинку душу, и это, на мой взгляд, даже важнее, чем достоверная игра света и тени.

image


Создание качественных скелетных 3D анимаций сегодня, пожалуй, самая труднодоступная для инди разработчиков задача. Вероятно поэтому так мало инди игр в 3D, и так много проектов в стилях пиксель арта или примитивизма, а также бродилок без персонажей в кадре. Но теперь это соотношение может измениться…
Читать дальше →
Всего голосов 43: ↑42 и ↓1+41
Комментарии29