Search Unity

Визуализируй это! Bolt for Visual Scripting: за кулисами

, Март 23, 2018

Зачем опытным разработчикам задумываться о визуальном скриптинге? Ведь это для тех, кто терпеть не может программный код, верно? Недавно мы встретились с разработчиком Bolt и Chronos и послушали его рассказ о том, как он начинал свой путь, о его идеях визуализации кода, о UX и самом Asset Store.

Bolt и Chronos, популярные пакеты из Asset Store, создал Ласло Бонин, 24-летний разработчик игр и инструментов. Он работает в дружной и светлой обстановке GamePlay Space в центре Монреаля.

Ласло стремится внести свою лепту в сообщество Unity: «В определенный момент, когда в процессе разработки игры занимаешься вспомогательным инструментом, появляется желание им поделиться. Мне хочется, чтобы другие тоже могли пользоваться моими работами, и кажется, у других разработчиков инструментариев — такой же подход. Им не хочется, чтобы их товарищам приходилось изобретать велосипед, ведь для той же цели и создан Unity: зачем разрабатывать собственный игровой движок, когда все уже сделано?» Разумеется, если инструмент становится популярным, это может помочь игре, что дала ему путевку в жизнь.

Задолго до создания ассетов Ласло был разработчиком-любителем: «Мне было тогда десять, пришел кузен, установил Visual Basic и ушел, ничего не объяснив». Хоть Ласло и умел писать HTML-код, классическое программирование оказалось для него в новинку. Через пару лет он с головой погрузился в создание игр, которые так и не увидели свет. Он шутя описывает их как «безумно амбициозные проекты, в которые я бы никому не посоветовал даже пробовать играть!»

Когда ему исполнилось 19 лет, он открыл для себя Unity и всерьез занялся разработкой игр. Он выделяет такие ассеты, как Full Inspector, который «был даром небес — он увеличил функционал инспектора и дал мне больше гибкости. Это первый ассет, который я загружал в каждый проект». С недавних пор Ласло часто пользуется Odin – Inspector and Serializer: «Это один из самых удобных, полезных и замечательных инструментов в Asset Store».

Разработчик Bolt Ласло Бонин в GamePlay Space в Монреале.

Bolt: из горнила игры

Будучи еще любителем, Ласло зарабатывал себе на учебу дизайном веб-сайтов и помогал другим людям разрабатывать свои игры, что привело его к мысли о создании первого ассета — Chronos. «Я работал над игрой в стиле tower defense, и мне хотелось замедлить врагов, держать их на расстоянии, чтобы получить над ними преимущество. Тогда я понял, что мне самому необходимо разработать такой инструмент и сделать его доступным для других». Он считает, что делиться составляющими разрабатываемой игры, чтобы помочь другим — это «сама суть Asset Store».

Как и Chronos, Bolt родился, когда Бонин работал над другим проектом. «Я был в маленькой команде, которая занималась нарративным проектом Ephemera, действие которого происходит в Монреале. Мы искали визуальные машины состояний, чтобы помочь художникам и аниматорам в работе над сценами и игровым процессом, а я занимался ядром системы и программированием. Нам были необходимы решения, и, хоть в Asset Store и нашлись неплохие варианты, моей натуре перфекциониста требовалось именно то, чего хотел я».

Пока команда Ephemera искала спонсоров, Бонин, закатав рукава, девять месяцев в одиночку трудился над Bolt. «Когда я начал работу над некоторыми функциями, мне хотелось довести их до идеала, поэтому работы было хоть отбавляй! Но в итоге все получилось именно так, как я хотел, и это того стоило».

Благодаря опыту в разработке игр и дизайне он смог самостоятельно проделать всю работу.

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

Потоковый граф в Bolt.

Заложив основу, он попросил оценить дизайн.

«После примерно шести месяцев работы я собрал несколько опытных разработчиков в Монреале и спросил: “Тут все интуитивно понятно? Вы понимаете, что произошло вот здесь, когда я соединил эти штуки? Вам понятно, что это за график?”».

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

Почему он думает, что Bolt может быть полезен программистам

Бонин привык к неприятию идеи визуального скриптинга. Впервые анонсировав Bolt (летом 2017 г.), он получил уйму комментариев вроде: «Не пойму, зачем программисту использовать визуальный инструмент для скриптов?». Так зачем Бонин, опытный программист, проработал без зарплаты девять месяцев ради того, что ему особенно не нужно?

«Нам, программистам, надо осознать, что разные люди думают и учатся по-разному, и им нужны разные инструменты. Ничего плохого в этом нет». Будучи увлеченным дизайном и взаимодействием с пользователем в той же мере, что и программированием, Ласло читал работы корифеев дизайна, например, Брета Виктора, который выступает за улучшение инструментария и расширение методов обучения программированию.

«Виктор говорит такие вещи, как: “Мы придумываем новое для конечного пользователя, но не для разработчиков. Мы не уделяем должного времени улучшению их работы”. Он спрашивает: “Почему мы все еще слепо набираем код в текстовых редакторах и не понимаем, что происходит? Как я должен понимать, что это значение влияет на результат где-то еще, и как я это визуализирую?”».

Бесплатный Unity Space Shooter после адаптации в Bolt.

Потоковые графы vs графов состояний

Хоть потоковые графы и являются одной из функций Bolt, Бонин честно оценивает их полезность для опытных разработчиков.

«Если вы программист, вам они, скорее всего, не понадобятся, ведь Bolt позволяет переводить код один к одному. Тем не менее, графы состояний могут пригодиться даже если вы знаете, как писать код. Они позволяют структурировать логику, которую бывает сложно визуализировать средствами простого кода».

«К примеру, можно посмотреть на сценарий игрового процесса и подумать: “Этот персонаж сейчас находится в базовом состоянии, и пока он в нем находится, я вызову одни функции. А когда приблизится противник, персонаж перейдет в состояние преследования, и в этом состоянии я вызову уже другие функции…” Подобное бывает сложно представить, смотря на код, и именно в таких случаях высокоуровневая визуализация может помочь».

Граф состояний, отображающий логику ИИ NPC: базовое состояние, патруль, преследование, атака и т. д.

Другая особенность, которая, по его мнению, нравится разработчикам, — это то, что вся кодовая база Unity доступна в Bolt. Между Unity и Bolt отсутствует слой интеграции, что также облегчает обслуживание. «У вас есть прямой доступ к классам персонажей, предметов и т. д. Вы можете вызывать их функции в Bolt и устанавливать значения. Кроме того, когда Unity выпускает обновления с новыми компонентами, ни мне, ни пользователям не нужно ничего делать — Bolt автоматически подгружает все данные. Он напрямую анализирует и читает всю базу кода и предлагает варианты».

Разные способности в командных условиях

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

«Если у вас разношерстная команда программистов и художников, программисты могут сосредоточиться на ядре, основных классах C# и их взаимодействии, а дизайнеры и художники подключатся к их работе с помощью Bolt. Они могут играть с параметрами, находить закономерности и т. д. без непосредственной работы с кодом».

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

«Я дружу с несколькими дизайнерами и художниками, которые, увидев Bolt, сказали, что понятия не имеют, с чего начать. Я ответил, что они могут просто добавить Bolt к одному из игровых объектов и просто нажать Play. И пока он находится в работе, можно добавлять узлы и смотреть, что они делают. Это важное преимущество Bolt — возможность видеть и редактировать все в реальном времени. Вы можете добавлять, удалять, менять все, что захотите. Это что-то вроде песочницы, в которой легко понять, как работает движок, освоить доступные инструменты и разжечь свой творческий потенциал».

2D-платформер из руководства к Bolt — хорошая песочница для визуального скриптинга.

Один день из жизни издателя Asset Store

Итак, каков же обычный день Ласло, чьим продуктом пользуются тысячи пользователей, более 500 из которых являются членами сообщества Bolt в Discord?

«Я начинаю день с просмотра тикетов, запросов на образовательные лицензии и т. д. Затем я проверяю отзывы сообщества и их предложения по улучшению Bolt. В некоторых их предложениях есть много толкового, ведь когда ты увлечен своим проектом, легко потерять перспективу, а сообщество помогает мне видеть картину целиком. Затем я принимаюсь за исправление ошибок, а в свободное время разрабатываю новые функции».

Одиночная работа над проектом требует умения управлять ожиданиями пользователей. «Недавно я перестал писать “мы”, обращаясь от имени Ludiq, и теперь пишу “я”, чтобы люди понимали, почему некоторые вещи не делаются так быстро, как бы им хотелось. Думаю, многие это и так понимают, потому что мой список целей публично доступен. Хоть много кто мечтает о новых функциях, всегда стоит быть аккуратным в своих обещаниях».

Штаб-квартира Ludiq в Монреале.

Совет для тех, кто делает собственные инструменты

И наконец, вот что Ласло может сказать тем, кто, подобно ему, внезапно осознал, что может превратить часть своей интеллектуальной собственности в ассет, помочь другим, а в перспективе принесет деньги.

«С точки зрения дизайна советую создать проект вашего инструмента, подумать над его взаимодействием с пользователем, изучить, как работает редактор Unity и по каким принципам строится его дизайн. Ключ к хорошему ассету — знание платформы, и мне кажется, что многие этим пренебрегают. С технической же стороны, если вы только начинаете, рекомендую это руководство по написанию скриптов для инструментов, процессов и задач в редакторе. Вы также можете изучить API графического интерфейса редактора и его тонкости (подробнее — в этой статье)».

Бесплатно для новых подписчиков Unity Plus до 5 апреля

В течение ограниченного времени при покупке Unity Plus вы получите Bolt бесплатно в комплекте с подпиской. В нашу кампанию тройного бонуса с Unity Plus также входит год бесплатного доступа к курсам Unity Game Dev Courses и 20%-ная скидка на избранные товары Asset Store.

Получить Unity Plus

Больше о визуальном скриптинге

Как начать использовать Bolt: смотрите запись трансляции Итана Брюнса из Unity:

А на нашей странице, посвященной визуальному скриптингу, вы можете найти похожие комплекты, доступные в Asset Store.

 

Комментарии закрыты.

  1. Unity you should buy and integrate this into the base Unity engine, like you did with Textmesh Pro and Probuilder. It will really help out beginners. Will also be a perfect complement to the shader graph, and a nice addition for people who used Unreal Engine for it’s blueprint system.

  2. Curious, why is Unity getting behind Bolt vs Nottorus? I’ve not seen any clear cut answers yet, but some things I’ve seen has lead me to believe that Nottorus is a superior product. What’s your reasoning here Unity folks? Truly curious as there must be something I’m not seeing!

    1. Well…Nottorus is $150 for a product that is no longer being supported or developed after next month (04/2018).

  3. Bolt has helped me build my first game faster. It’s nice to read about Lazlo and all the hard work he put into his product. Keep up the good work Lazlo! and thank you for answering my questions and your tutorials.

  4. Buy it Unity! put it to your free plugins.

  5. That’s cool Laz!

  6. How does Bolt compare to PlayMaker? Is Bolt now the officially recommended visual scripting tool?

    1. Hi Hans, thanks for your interest. From time to time we profile popular assets and inspirational publishers, and since Bolt is fairly new and popular (and free with Unity Plus at the moment), we decided to provide a behind-the-scenes view of what it’s like to create, publish and support such an asset.

      There are many great visual-scripting tools out there in addition to Bolt such as Playmaker, uScript, FlowCanvas and more. You can see the available visual-scripting assets, including many currently discounted ones for Unity Plus and Pro subscribers, here: https://assetstore.unity.com/categories/tools/visual-scripting

      Regarding Playmaker, another 5-star visual-scripting tool, Ludiq has an extensive feature-comparison table where you can see how it, and many other visual-scripting tools, compare to Bolt: https://support.ludiq.io/knowledge-bases/4/articles/222-compare-visual-scripting-tools-for-unity

      And we ran a blog post on Playmaker last year: https://blogs.unity3d.com/2017/05/04/spotlight-on-playmaker-visual-scripting-that-lets-you-bypass-the-code-and-unleash-your-creative-potential/

      I also encourage you to check out the Unity Forum, the comments on this post, and other sources as you inform yourself about the best Unity tools and assets for your needs.

  7. That’s all good, but when I can write the flowgraph above in just 6 or 7 lines instead of 20 node and connection and read it much easily, what’s the point of going visual?

    void Update () {
    float time = Time.time;
    Color col = new Color(Mathf.Sin((Input.GetKey(KeyCode.LeftShift))?0:time), Mathf.Sin(time + 1f), Mathf.Sin(time + 0.5f));
    if (Input.GetKey(KeyCode.Space))
    {
    Debug.Log(col.r);
    GetComponent().material.color = col;
    }
    transform.Rotate(Vector3.up, Time.deltaTime * speed);
    }

    1. Not everyone is an experienced programmer. Some people like the simplicity of the visualization

      1. Why only for plus version is it avialalbe for free unity and order it asset store

        1. it’s not ONLY for plus version; it’s available fro ALL versions; PLUS version has it only DISCOUNTED on the store

    2. I love it when coders equate # of lines to # of nodes nodes in visual script. I’ve heard this so many times. Ahhh, the thinly veiled condescension, and so far from any real logical comparison that an empathetic designer minded person would immediately recognize. Consider the knowledge it takes to find, construct, and properly order the syntax of said lines — even with the eye sore that is visual studio. Consider that a single node abstracts all of that, hiding it behind the ease of simply dragging it onto the canvas and hitting play. Then seeing how it reacts with other nodes as they are arranged in real time, seeing not just their interaction in the scene but also the real time visual feedback of the state flow in the nodes. When a button is down what nodes are being used? What aren’t? What nodes are not even being accessed? Brett Victor indeed. He warns against this shallow minded creativity killing assault by individuals who think in this narrow minded fashion. Go Bolt!!

      1. Agreed. The question of «which is better» isn’t really accurate, because it depends on so many things, like the experience level of the programmer and the task at hand. Some things can be much more streamlined in code, for sure. Other things benefit from the visual paradigm, which also allows non-coders to understand what’s going on. Both are important.

        Two critical factors supporting visual coding:
        —it dummy-proofs code-based errors: syntax, spelling, number of arguments, etc. A lot of this is solved with code hinting, but there are still a lot of errors possible.
        —it can be manipulated in real time. One single change to one script and you have to recompile everything. This can stretch into several minutes in complex programs. Again, you can minimize compilation rounds by exposing variables in the Inspector to tweak, but the countless other changes in your scripts must go through these cycles. It can really eat up a lot of time eventually.

        I teach game design at a university where the two main tracks are game design and animation. The animation students I’ve had will really appreciate visual scripting, and I hope to incorporate it in future classes. They have to learn some code as well, which is important, but I think tools like these will keep them developing into the future…most don’t seem to continue developing using code after the required classes in it.

  8. Great plugin, Unity should just add it to base Editor like ProBuilder

    1. Yes!!!! :)

  9. I am pretty sure that Bolt is a solid visual scripting plugin. What I am also sure about is the fact that Unity Tech. seems to be favoring this particular plugin. Blog posts and videos and streams and whatnot are all indicating that. There are other visual scripting solutions out there which could do with some love from Unity as well. I can totally see how this special treatment would tick off other plugin developers which again, have not gotten this royal treatment from Unity.

    1. Agreed! I’ve been using uScript for years now, it’s probably one of the first, if not the first stable/reliable common purpose visual scripting tool in the unity world. Also there is a free personal/learning version available, meaning you can try it before you buy it.

    2. I have had the same feeling about this since Bolt had been released, Unity picking Bolt out and pushing above other visual scripting tools. I own several, use the better ones, and I see that there are other tools as good and feature rich as Bolt, also good looking ( Personal favourite: FlowCanvas+NodeCanvas).
      So what is the reason for pushing Bolt?