Когда я слышу, что Blend4Web – это платформа исключительно для создания виртуальных презентаций и не годится на роль инструмента разработки игр, меня охватывает удивление, ведь его возможности говорят об обратном. Давайте прикинем:
редактор уровней на базе Blender. Какой из движков WebGL может похвастаться полной сборкой сцены в редакторе? В нем возможна расстановка не только моделей, но и настройка окружения, физики, частиц, постэффектов;
полноценное API. Причем аналогов некоторых функций я не наблюдаю даже в столь популярном Unity;
заготовки. Разработчики предлагают интересный набор для игроделов: от процедурного SkyDome до физики транспорта.
Blend4Web создан исключительно для разработки браузерных приложений. В этом его преимущество перед кроссплатформенными конкурентами – он быстрый и компактный. Возможно причина в его молодости, так как появился он сравнительно недавно и еще не успел обзавестись багажом игровых проектов.
Этой статьей я открываю серию уроков, посвященных созданию игр с помощью Blend4Web. Все, как говорится, познается на личном опыте. Я решил создать небольшую браузерную игру под рабочим названием "Water Hunter", используя не привычный Unity, а новый и перспективный инструмент.
Базовые понятия Для работы с b4w понадобиться Blender. Если вы уже умеет работать с этим пакетом 3D-моделирования, то настроить систему и создать сцену не составит проблем. На сайте разработчиков Blend4Web имеется отличная подборка документации на русском, а также множество видеоуроков для начинающих. Собственно говоря, установка движка заключается в прописывании одной строки в настройках Blender и включении плагина. После этого необходимо выбрать профиль Blend4Web, и в панелях редактора останутся только опции, относящиеся к движку (см. рис).
Принцип работы с b4w очень простой – вы создаете сцены в Blender (модели, окружение, настройки физики , то есть всё) и экспортируете в JSON. А вот уже для построения логики и общения с API используется JavaScript.
Сам процесс создания базовой сцены WebGL настолько легок, что достаточно две строчки, чтобы получить полноценное приложение. Приведу пошаговый пример:
Открыть новый проект Blender (по умолчанию в нем будет камера, свет и куб). Выбрать File -> Export -> Blend4Web (.html).
В итоге вы получите на выходе единственный файл HTML с вашей сценой, без зависимостей и даже встроенным проигрывателем.
Конечно, такой вариант экспорта не годится для полноценной игры, но я привел его, как пример простоты создания программы WebGL. Настоящие же возможности проявляются при экспорте в JSON (файл с данными о сцене, без встроенного движка и плеера). Это выполняется командой: File -> Export -> Blend4Web (.json).
Так как мы экспортировали только сцену, то к ней необходимо добавить еще три файла:
Простую обвертку в HTML;
JavaScript с некоторыми командамиL;
И, собственно, движок b4w.full.min.js.
Приведу пример базового HTML. Я убрал некоторые неважные для урока строки:
Здесь объявляются нужные скрипты и прописывается стиль для «окна просмотра» (канва). Я решил остановиться на ограничении разрешения в 1024х768 пикселей, но ничто не мешает распахнуть канву на всю страницу.
Теперь рассмотрим основной файл. Все начинается с создания собственного модуля. Вы объявляете в глобальном пространстве b4w свои функции. Такой подход позволяет в дальнейшем логично выстраивать взаимосвязи между скриптами.
Сам API Blend4Web делится на множество блоков. Для использования нужных функций необходимо объявить модуль, в который они входят. Сейчас перед нами стоит две задачи: инициализировать движок и загрузить сцену. Поэтому понадобятся модули "app" и "data".
Код
"use strict" b4w.register("game_app", function(exports, require) { var m_app = b4w.require("app"); var m_data = b4w.require("data");
После инициализации движка происходит старт функции указанной в callback. В ней уже можно вызвать команду загрузки сцены:
Код
function init_cb () { m_data.load("scene.json", load_cb); }
Интересно, что функция load не уничтожает предыдущую сцену, а добавляет к ней новую. Это можно использовать для динамичной загрузки объектов, что крайне необходимо для браузерных игр. Например, следующий код m_data.load("scene.json", load_cb, null, false, true) заставит движок загрузить объекты из указанного файла и сделать их невидимыми.
Далее… Когда загрузка сцены завершается, то вызывается функция load_cb. В нее можно поместить, либо обработчик ошибок, либо следующие логические части программы.
Да, и не забудьте в конце всего кода поставить вызов начальной функции:
Код
b4w.require("game_app").init();
Собственно, это все. В итоге вы получили с минимальными затратами времени простое WebGL-приложение.
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Игра на Blend4Web. Первые шаги», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.
> используя не привычный Unity, а новый и перспективный инструмент. Я не понимаю, почему в каждой статье по Blend4Web происходит сравнение его с Unity? Это неправильно, так как у Unity, по сути, нет браузерной составляющей. То что там есть WebGL в Preview это вообще не считается.
> полноценное API. Причем аналогов некоторых функций я не наблюдаю даже в столь популярном Unity; Нет у Unity никакого API для WebGL. А то что есть - это полная лажа. Unity только для игра на ПК, Android, iOS и для консольных приставок. В браузерной сфере он пока оооочень далеко от Blender4Web и не является ему конкуретном. Сравнивайте лучше с другими браузерными движками по API, вот здесь можно в игры поиграть: http://threejs.org/ и http://babylonjs.com/
В своей деятельности я использую Unity и Blend4Web. На Unity я выпустил несколько игр для разных платформ, поэтому судить о его возможностях вполне могу. Вот и получается, что рассказывая о b4w, я невольно сравниваю его с Unity, то есть с тем инструментом, который отлично знаю. Что-же касается three.js и других, то мои знания весьма ограниченные.
Ну нельзя же сравнивать WebGL в Unity и Blend4Web. Там же огромное количество ограничений, поэтому он совершенно не годится для создания браузерных игр: http://docs.unity3d.com/Manual/webgl-gettingstarted.html
Unity нужно сравнивать с UE4 или CryEngine. Например, по реализации освещения в реальном времени: https://www.youtube.com/watch?v=ARorKHRTI80
Когда я пишу код для b4w, то невольно ищу аналоги в Unity API, потому что, привык к определенному стилю программирования, функциям etc. Отсюда и сравнения.
Хотел еще спросить(я пока,сильно не вчитывался в описание): насколько я знаю blender позволяет делать помимо 3D,еще и качественные 2D мультики.Из этого вопрос - можно ли в Blend4web,сделать игру в 2D пространстве? Т.е. именно 2D графика со спрайтами.
Думаю, что проблем не должно быть. Ставите ортогональную камеру, спрайты - как текстуры на плоскостях или даже билборды. Вот и все. По сути, все уроки по Blender в этой области могут с успехом использоваться для создания сцен b4w.
Такое огромное количество 2D игр на Blender, аж дух захватывает! Конечно, ему же уже 20 лет в этом году - успели наклепать. Наверное, действительно очень легко и быстро делать 2D игры на Blend4Web и Blender. Есть же все инструменты, как в Unity для анимации (типа Mecanim), 2D физики и т.д.
Вы зря так. Вы же не знаете, для какой платформы человек собрался делать игру. Если мобилка/консоль - blender не в тему. А если браузерка?
Например, свою игру "колобки" для мобильных я делал на Unity. А вот уже браузерную версию этой же игры планирую на b4w. И полагаю, с задачей справлюсь.
Было бы намного убидительнее, если бы вы в начале статьи привели ссылку на пусть небольшую демку вашей игры, а потом бы писали, как просто и очень быстро вы её сделали, используя все вспомогательные инструменты Blender и B4W API.
Собирался. Тут где-то внизу даже спрашивал у модераторов о разрешении. Но сначала мне нужно полноценно оформить игру на своем сайте, на этом сайте, на битбакете. На последнем у меня полный кавардак, так как разработку я веду в оффлайн. Выкладывать же сырые поделки - это зарубить проект на корню.
Зачем исходники палить? Нужно index.html и другие файлы разместить на Google Drive, как на хостинге, чтобы можно было одним кликом запустить вашу демку и побегать. Я записывал видео ответ однажды, как разместить index.html на Google Drive.
Необязательно свою игру. Можно просто сделать специальную демку, где можно побегать, подёргать какие-нибудь предметы. Что-то очень простое и то что не отнимет у вас много времени, но зато продемонстрирует, что вы не голословны и действительно на B4W можно быстро и легко создавать игры. Можно даже спрайты не самому делать, а взять из какой-нибудь игры dendy.
Большое вам спасибо,Prand!Буду внимательно следить.Blender и Blend4web,сейчас мне крайне интересны,возможно это самое то для меня.Тут и web- кроссплатформенность и открытость.Если освоить с нуля будет не слишком сложно - буду просто счастлив
Тут получается целая цепочка. Я пишу игру, чтобы изучить Blend4Web. Blend4Web мне нужен, как альтернатива Unity для браузерных игр. Чтобы был стимул и фидбэк, "Water Hunter" - игра с открытыми исходниками, а процесс разработки будет максимально освещаться. Так что ждите продолжения.
Вопрос, если размещу ссылку на bitbacket с исходниками - не забанят?
полноценное API. Причем аналогов некоторых функций я не наблюдаю даже в столь популярном Unity;
Ну само собой) 5 версия то еще в бете. А порт под WebGl вообще в очень глубокой бете) Ближайший год точно на стабильность расчитывать нельзя А по поводу уроков, будет здорово, если все НЕ остановится на создании сцены и будут другие сатьи. Лично я сам уже давно хотел опробывать Blend4Web, но все никак не решался
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]