Всем привет, последние года три мое основное хобби – создание игр. Не могу сказать, что я добилась чего-то сверхъестественного, но в Steam есть две мои игры (горжусь самим фактом доведенных до конца проектов, но сейчас многое в них уже поменяла бы). И обе эти игры сделаны на движке Unity.
Рубрика «unity3d» - 2
Из Unity в Godot. Первое впечатление
2021-08-07 в 11:53, admin, рубрики: Godot, godotengine, unity, unity3d, плюсы godot, разработка игрИзбавляемся от «мистических» строк в системе реактивного связывания на Unity
2020-12-17 в 7:14, admin, рубрики: Gamedev, reactive programming, unity, unity3d, Блог компании Pixonic, валидация, оптимизация, Программирование, разработка игр, реактивное программирование, реактивностьЛюбая система, которая часто используется в проекте, со временем обречена на эволюцию. Так случилось и с нашей системой реактивного связывания reactive bindings.
Что это за система? Она позволяет нам связывать данные на префабе с данными в коде. У нас есть ViewModel, лежащая на префабе. В ней есть некие ключи с разными типами. Соответственно, вся остальная логика, которая у нас привязана к UI, привязана к этим ключам и их изменениям. То есть, если у нас есть некая логическая переменная, меняя ее в коде, мы можем менять любые состояния UI автоматически.
Использование reactive bindings принесло нам как множество новых возможностей, так и ряд зависимостей. Для связи переменных кода и ViewModel, лежащей на префабе, нам необходимо было соответствие строковых имен. Это приводило к тому, что в результате неосторожной правки префаба или ошибки мерджа могли быть утеряны какие-то из этих связей, а ошибка замечалась уже на этапе поздних тестов в виде отвалившегося UI-функционала.
Росла частота использования системы — росло число подобных сложностей.
Два основных неудобства, с которыми мы столкнулись:
- Строковые ключи в коде;
- Нет проверки соответствия ключей в коде и ключей в модели.
Эта статья — о том, как мы дополнили систему и тем самым закрыли эти потребности.
Читать полностью »
Как мы пришли к реактивному связыванию в Unity3D
2020-10-23 в 9:23, admin, рубрики: Gamedev, reactive programming, unity3d, Блог компании Pixonic, Программирование, Проектирование и рефакторинг, разработка игр, реактивное программирование, реактивность
Сегодня я расскажу о том, как некоторые проекты в Pixonic пришли к тому, что для всего мирового фронтэнда уже давно стало нормой, — к реактивному связыванию.
Подавляющее большинство наших проектов пишется на Unity 3D. И, если у других клиентских технологий с реактивщиной всё неплохо (MVVM, Qt, миллионы JS-фреймворков), и воспринимается она как должное, в Unity каких-либо встроенных или общепринятых средств связывания нет.
У кого-то к этому моменту наверняка созрел вопрос: «А зачем? Мы такое не используем и неплохо живём».
Причины были. Точнее, были проблемы, одним из решений которых могло стать использование такого подхода. В результате оно им стало. А подробности под катом.
Читать полностью »
Как мы переосмыслили работу со сценами в Unity
2020-10-17 в 10:52, admin, рубрики: C#, csharp, Gamedev, unity, unity3d, разработка игрUnity, как движок, имеет ряд недостатков, но которые благодаря возможностям для кастомизации и инструментам для кодогенерации, можно решить.
Сейчас я вам расскажу о том, как мы написали плагин для Unity на основе пост-процессинга проектов и кодогенератора CodeDom.
Проблема
В Unity загрузка сцен происходит через строковой идентификатор. Он не стабильный, а это означает, что он легко изменяем без явных последствий. Например, при переименовании сцены всё полетит, а выяснится это только в самом конце на этапе выполнения.
Jungle town: как мы хотели изменить мир к лучшему, создавая детскую игру
2020-10-11 в 20:09, admin, рубрики: animation, Gamedev, GameDev с нуля, kids games, playmaker, spine2d, unity, unity3d, Программирование, разработка игр, разработка под iOS, Разработка под MacOS
История нашей игры началась в 2016 году с покупки приставки Apple TV. Это был очень желанный девайс, на котором я обнаружил несколько игр, в том числе детских. Одна из них была от знаменитой студии, и она настолько мне понравилась, что я сказал своей супруге и музе: «Дорогая, я хочу сделать игру для нашей дочери!» Она меня поддержала.
Мысль о создании своей игры или приложения появлялась у меня и раньше, но мне казалось это нереальным, просто запредельным. А в тот момент загорелся огонь, и я решил идти только вперед. «Нужны ведь деньги и единомышленники, чтобы создать игру», — скажете вы. Да, все верно. На тот момент я был топовым видеографом и хорошо зарабатывал, поэтому наивно думал, что мы с супругой найдем команду и будем просто финансировать и руководить проектом.
Анимация в KAPIA. «Лучше один день потерять, чтобы потом за пять минут долететь»
2020-09-20 в 14:14, admin, рубрики: unity3d, unity3d уроки, Анимация и 3D графика, Дизайн игр, разработка игрАнимация в KAPIA
Добрый день! Меня зовут Павел. Я являюсь программистом и аниматором маленькой семейной команды по разработке игр. Я и моя жена делаем 3Д адвенчуру в постапокалиптическом мире. За время разработки мы изобрели свои технические “велосипеды” с которыми я хотел бы с вами поделится. Хочу начать с анимации и рассказать как мы ее делаем.
Уже много лет мы работаем в 3D пакете Softimage XSI. Хоть проект уже давно не поддерживается и закрыт, но мы до сих пор им пользуемся. Я думаю, что примерно такой же пайплайн возможно воспроизвести и в других пакетах. Поехали!
Риггинг
Управление сценами в Unity без боли и страданий
2020-08-08 в 20:00, admin, рубрики: C#, unity, unity3d, разработка игрВам когда-либо приходилось думать над тем, как сделать управление сценами в вашем проекте менее болезненным? Когда у вас достаточно простая игра, в которой всего несколько сцен идущих одна за другой, то, зачастую, всё проходит гладко. Но когда количество сцен растёт и усложняются переходы между ними — они могу загружаться в разном порядке и поведение некоторых из них должно зависеть от входящих параметров — задача становится менее тривиальной.
Реализация эффекта акварели в играх
2020-03-31 в 13:40, admin, рубрики: Apple Arcade, ipad, iphone, unity3d, игры-головоломки, мобильные игры, Работа с 3D-графикой, разработка игр, разработка мобильных приложений, шейдерыВведение
Когда в январе 2019 года мы начали обсуждать нашу новую игру tint., то сразу решили, что важнейшим элементом будет эффект акварели. Вдохновлённые этой рекламой Bulgari, мы понимали, что реализация рисования акварелью должна соответствовать высокому качеству остальных ресурсов, которые мы планировали создать. Мы обнаружили интересную статью исследователей из Adobe(1). Описанная в ней техника создания акварели выглядела замечательно, а благодаря своей векторной (а не пиксельной) природе она могла работать даже на слабых мобильных устройствах. Наша реализация основана на этом исследовании, мы изменили и/или упростили отдельные его части, потому что наши требования к производительности были другими. tint. — это игра, поэтому кроме самого рисования нам нужно было в одном кадре рендерить всё 3D-окружение и выполнять игровую логику. Также мы стремились к тому, чтобы симуляция выполнялась в реальном времени и игрок сразу видел нарисованное.
Читать полностью »
Outline эффект с использованием RenderFeature в Unity URP
2020-03-10 в 15:21, admin, рубрики: render, rendering pipeline, shaders, unity, unity3d, разработка игрВ Universal Render Pipeline, создавая свои RendererFeature, можно легко расширить возможности отрисовки. Добавление новых проходов в конвеер рендеринга позволяет создавать различные эффекты. В этой статье, используя ScriptableRendererFeature и ScriptableRenderPass, создадим эффект обводки объекта (Outline) и рассмотрим некоторые особенности его реализации.
Создание Outline эффекта в Unity Universal Render Pipeline
2020-03-10 в 15:21, admin, рубрики: render, rendering pipeline, shaders, unity, unity3d, разработка игрВ Universal Render Pipeline, создавая свои RendererFeature, можно легко расширить возможности отрисовки. Добавление новых проходов в конвеер рендеринга позволяет создавать различные эффекты. В этой статье, используя ScriptableRendererFeature и ScriptableRenderPass, создадим эффект обводки объекта (Outline) и рассмотрим некоторые особенности его реализации.