Как стать автором
Поиск
Написать публикацию
Обновить
33.68

Unity *

Инструмент разработки 2D/3D-игр

Сначала показывать
Порог рейтинга
Уровень сложности

Unity: отрисовываем множество полосок здоровья за один drawcall

Время на прочтение9 мин
Количество просмотров25K
Недавно мне нужно было решить задачу, достаточно распространённую во многих играх с видом сверху: рендерить на экране целую кучу полосок здоровья врагов. Примерно вот так:


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

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

Метод, к которому я в результате пришёл, немного отличается от всего того, что я видел у других, и не использует вообще никаких классов UI (в том числе и Canvas), поэтому я решил задокументировать его для общества. А для тех, кто хочет изучить исходный код, я выложил его на Github.
Читать дальше →

Книга «Unity и C#. Геймдев от идеи до реализации. 2-е изд»

Время на прочтение16 мин
Количество просмотров30K
image Привет, Хаброжители!

Джереми Гибсона Бонд задумывая эту книгу, ставил перед собой простую цель: познакомить вас со всеми инструментами и передать начальные знания, необходимые для достижения успеха в разработке игр и прототипов. Автор постарался втиснуть в эту книгу максимальный объем знаний. В отличие от многих других книг, эта сочетает обе дисциплины — проектирование игр и цифровую разработку (то есть компьютерное программирование) — и обертывает их практикой итеративного прототипирования. Появление продвинутых и относительно простых в использовании игровых движков, таких как Unity, еще больше упростило создание прототипов, выражающих концепции игрового дизайна, и увеличило ваши шансы стать квалифицированным (и востребованным) дизайнером игр.
Читать дальше →

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

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


Привет Хабр! В этой публикации хочу поделиться опытом разработки массивной мобильной игры, с большим городом и трафиком. Примеры и приемы описанные в публикации не претендуют называться эталонными и идеальными. Я не являюсь дипломированным специалистом и не призываю повторять свой опыт. Целью работы над игрой было — получение интересного опыта, получение оптимизированной игры с открытым миром. При разработке я старался максимально упрощать код. К сожалению, я не использовал ECS, а грешил с singleton.

Игра


Игра на тематику мафии. В игре я попытался воссоздать Америку 30-40. По сути игра является экономической стратегий от первого лица. Игрок захватывает бизнес и старается удержать его на плаву.
Реализовано: автомобильный трафик (светофоры, избегание столкновений), human трафик, бар, казино, клуб, квартира игрока, покупка костюма, смена костюма, покупка/покраска/заправка автомобиля, копы, охрана/гангстеры, экономика, продажа/покупка ресурсов.

Архитектура


image

Я жалею, что не использовал ECS, а пытался в велосипед. В итоге получилось все громоздко и слишком зависимо. У приложения одна точка входа — игровой объект application(go), на котором висит одноименный класс Application. Он отвечает за предварительную загрузку БД, заполнение пулов и первичные настройки. Кроме того, на плечи application(go) ложатся и несколько других singleton классов-компонентов-менеджеров.
Читать дальше →

Локализация любых текстов

Время на прочтение11 мин
Количество просмотров4.1K
Большинство игр, используют локализацию по принципу ключа, то есть для описания конкретного текста нужен ключ, я же предлагаю вариант получше, хоть и этот вариант не подходит тем у кого есть озвучка в играх, тут уж проще через ключ.

Что такое ключ и зачем он нужен


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

Агрегатор событий для Unity3d (Event Aggregator)

Время на прочтение7 мин
Количество просмотров9.3K
Идея написать свой расширенный агрегатор событий для Unity3d назрела давно. Прочитав несколько статей на эту тему, я понял что нет достаточно «правильного» (в рамках Unity3d) и нужного для меня агрегатора, все решения урезаны и не обладают нужным функционалом. 

Необходимый функционал:


  1. Любой класс может подписаться на любое событие (часто агрегаторы в юнити делают подписчиками конкретные Gameobject)
  2. Должна быть исключена возможность двойной подписки конкретного экземпляра, на конкретное событие (в стандартных средствах за этим нужно следить самому)
  3. Должен быть функционал как ручной отписки, так и автоматической, в случае удаления экземпляра/отключения монобеха (хочется подписаться и не париться что подписчик вдруг откинет копытца)
  4. события должны уметь перекидывать данные/ссылки любой сложности (хочется в одну строку подписаться и получить весь комплект данных без заморочек)
Читать далее

Unity Package Manager

Время на прочтение5 мин
Количество просмотров26K
Unity — платформа, которая существует довольно давно и постоянно развивается. Однако, работая в ней с несколькими проектами одновременно, все еще можно столкнуться со сложностями в использовании общих исходников (.cs), библиотек (.dll) и остальных ассетов (изображения, звуки, модели, префабы). В этой статье мы расскажем о нашем опыте работы с нативным решением такой проблемы для Unity.

Читать дальше →

Организация системы эвентов в Unity — глазами геймдизайнера

Время на прочтение4 мин
Количество просмотров5K
Всем привет!

Заранее извиняюсь за дилетантизм, но я почитал статью о том, как человек пытался бороться с чрезмерной связностью сущностей в Unity, и подумал, что было бы интересно рассказать о своём велосипеде, который я сколотил для создания игровых прототипов как геймдизайнер.

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

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

Буду рад любой критике на тему, почему так делать не надо, и как делать всё-таки надо.
Читать дальше →

3D-фотографии Facebook изнутри: шейдеры параллакса

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

В последние несколько месяцев Facebook заполонили 3D-фотографии. Если вам не довелось их увидеть, то объясню: 3D-фотографии — это изображения внутри поста, которые плавно меняют ракурс при скроллинге страницы или когда перемещаешь по ним мышь.

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

Техника, которую использует Facebook для создания трёхмерности двухмерных изображений, иногда называется смещение карты высот. В нём применяется оптическое явление под названием «параллакс».

Стек DOTS: C++ & C#

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

Это краткое введение в наш новый дата-ориентированный технологический стек (DOTS). Мы поделимся некоторыми инсайтами, помогающими понять, как и почему Unity сегодня стала именно такой, а также расскажем, в каком направлении планируем развиваться. В дальнейшем мы планируем публиковать в блоге Unity новые статьи о DOTS.
Читать дальше →

Unity вместе с Havok работают над новым физическим движком

Время на прочтение2 мин
Количество просмотров8.1K
Сегодня на GDC Unity объявили о сотрудничестве с Havok от Microsoft над двумя физическими движками. Первый — Unity Physics, который будет дефолтным, полностью написанный на высокопроизводительном C# коде. Второй — Havok Physics полностью интегрированный в Unity.


Unity: процедурное редактирование Mesh

Время на прочтение16 мин
Количество просмотров15K
Преобразование моделей «на лету» — нередкая практика в симуляции физики деформаций, а также в играх с динамически генерируемым и изменяемым контентом. В таких случаях удобно применять методы процедурного редактирования и создания геометрии. Последние часто позволяют сэкономить заветные байты при передаче подгружаемых из сети данных. Кроме того — это весело!

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

Читать дальше →

Flash-анимации в Unity3D своими руками. Часть первая, лирическая

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

В этой серии статей я расскажу о том, как и почему мы решили создать своё собственное решение для импорта flash-анимаций в Unity, об оптимизациях и внутренней кухне получившегося плагина. А также в программе: рассказ о внутренностях формата swf, особенностях расширения Unity-редактора и вообще об анимациях в целом. Прошу под кат!



Читать дальше →

Кастомные корутины в Unity с преферансом и куртизанками

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


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


Вы настолько хорошо умеете их готовить, что могли бы получить звезду Мишлена (а то и две), будь у вас свой ресторан. Конечно! Никто не останется равнодушным, отведав ваш Буйабес с корутинным соусом.


Уже целую неделю код в проде не падает! Обертки, callback’и и методы Start/Stop Coroutine — удел холопов. Вам нужно больше контроля и свободы действий. Вы готовы подняться на следующую ступеньку (но не бросить корутины, конечно).


Если в этих строках вы узнали себя, — добро пожаловать под кат.


Читать дальше →

Ближайшие события

Наша с девушкой первая видеоигра. Разработка на Unity. Часть 1

Время на прочтение7 мин
Количество просмотров37K
Ну как первая… Если не считать релизы только под Android и с десяток заброшенных проектов у финиша, то да, это первая наша игра с замахом больше чем на одну платформу. Как же всё начиналось? А всё просто, работали мы значит над другим проектом, назовем его «проект А», работали уже долгое время и решили, а не сделать ли нам за пару месяцев игру и потренировать на ней наши маркетинговые навыки, а «проект А» выпустим сразу после с большим опытом в продвижении игр. Но звезды не сошлись, петух не свистнул и «проект А» залег на дно ровно на год. Но эта история не о нем, а о логической игре под названием «Cubicity: Slide puzzle».


Читать дальше →

Использование SQLite в Unity (Unity + SQLite)

Время на прочтение6 мин
Количество просмотров43K
Всем привет, данная публикация будет посвящена работе с встраиваемой реляционной базой данных SQLite в Unity. Данная статья написана новичком для новичков с целью показания работы с SQLite, предполагается, что вы знаете основы SQL. Так как в интернете нет ясного тутора для новичков, я решил занять эту нишу. В данной статье мы напишем простенький класс для работы с данной СУБД, который можно использовать для решения широкого круга задач (локализация, сохранение данных, ведение разных таблиц).
Читать дальше →

Как сделать корутины в Unity немного удобнее

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

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


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

Читать дальше →

Стильный водопад из RiME в игровом движке: делаем водяной поток

Время на прочтение7 мин
Количество просмотров11K
Это вторая (и последняя) часть гайда по созданию водопада в Unity или UE4 после вдохновения игрой RiME. В первой разобрались с инструментами, выбрали среду разработки и создали шейдер кругов на воде. Почему начали именно с этого? Все просто: там используется большинство методов, которые сейчас понадобятся при создании водопада. Но тут есть и свои хинты. Тянуть не будем — давайте под кат.


Читать дальше →

Сборка примера Augmented Faces ARCore в Unity

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

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

Мы соберем пример приложения дополненной реальности Augmented Faces ARCore для Unity, оно будет отслеживать через камеру лицо и накладывать 3D модель лисьей морды.
Читать дальше →

Из хаоса в порядок, или «создаем структуру проекта в Unity и не только...»

Время на прочтение5 мин
Количество просмотров19K
При создании нового проекта он такой чистый, понятный, нет лишнего хлама… он пуст. Чем дольше идет разработка, тем больше в нем появляется лишнего мусора, непонятных папок, файлов, иногда туда могут попасть префабы для других проектов и вся организация летит в Тартар.

Выясняется что организации никогда не было, проекту три года, порядок наводить уже поздно, работать не удобно и вообще…

Добро пожаловать в хаос, вы оказались именно тут потому что:

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

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



Добро пожаловать под кат.
Читать дальше →

Создание AR-игры с помощью Vuforia

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

[Под катом есть объёмные GIF]

Дополненная реальность (Augmented reality, AR) внезапно стала очень популярным термином. Благодаря Vuforia разработчики с лёгкостью могут дополнять физический мир цифровым контентом.

Хотя выпуск ARKit и ARCore позволил повысить известность дополненной реальности, уже существовали другие платформы и SDK. Одним из них был Vuforia; а недавно Unity заключила с Vuforia партнёрское соглашение и интегрировала эту AR-платформу в игровой движок Unity.

В этом туториале я создам AR-игру с помощью Vuforia SDK, интегрированного с движком Unity. В процессе работы я расскажу о следующих ключевых компонентах:

  • Настройка передачи данных с камеры дополненной реальности
  • Отслеживание изображений — что это и как работает
  • Прикрепление цифрового контента к физическому объекту
  • Создание настраиваемых взаимодействий, запускаемых в зависимости от того, что видит камера
Читать дальше →