Суббота, 21 октября 2017, 11:35

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [306]
Статьи об общих понятиях связанных с созданием игр.
Программирование [68]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [123]
Статьи о программах для создания игр, уроки и описания.
Софт [27]
Различные программы, в том числе в помощь игроделам.
2D-графика [11]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [10]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [4]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [69]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [55]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Какой вид используется в ваших играх?
Всего ответов: 9937
Главная » Статьи » Создание игр

Игра на Blend4Web. Первые шаги
Когда я слышу, что 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. Я убрал некоторые неважные для урока строки:
Код

<html>
<head>
<script type="text/javascript" src="b4w.full.min.js"></script>
  <script type="text/javascript" src="js/game_app.js"></script>  
  <style>
  body {
  margin: 0;
  padding: 0;
  overflow: hidden;
  }
#canvas3d{
  width: 1024px;
  height: 768px;
  overflow: hidden;
  margin: auto;
}
  </style>
</head>
<body>
  <div id="canvas3d"></div>
</body>
</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");
   
exports.init = function() {
  m_app.init({
  canvas_container_id: "canvas3d",
  callback: init_cb,
  physics_enabled: false,
  autoresize: true
  });
}

После инициализации движка происходит старт функции указанной в 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-приложение.
Категория: Создание игр | Добавил: Prand (06 августа 2015)
Просмотров: 3902 | Комментарии: 17 | Рейтинг: 5.0/3 |
Теги: Урок 1, Blender, браузерная игра, урок, Unity, WebGL, 3D Web, web 3D, Web, Blend4Web
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Игра на Blend4Web. Первые шаги», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 17
+0-
8 8Observer8   (12 ноября 2015 12:29)
> используя не привычный Unity, а новый и перспективный инструмент.
Я не понимаю, почему в каждой статье по Blend4Web происходит сравнение его с Unity? Это неправильно, так как у Unity, по сути, нет браузерной составляющей. То что там есть WebGL в Preview это вообще не считается.

> полноценное API. Причем аналогов некоторых функций я не наблюдаю даже в столь популярном Unity;
Нет у Unity никакого API для WebGL. А то что есть - это полная лажа. Unity только для игра на ПК, Android, iOS и для консольных приставок. В браузерной сфере он пока оооочень далеко от Blender4Web и не является ему конкуретном. Сравнивайте лучше с другими браузерными движками по API, вот здесь можно в игры поиграть: http://threejs.org/ и http://babylonjs.com/

+0-
11 Prand   (12 ноября 2015 12:55)
В своей деятельности я использую Unity и Blend4Web. На Unity я выпустил несколько игр для разных платформ, поэтому судить о его возможностях вполне могу. Вот и получается, что рассказывая о b4w, я невольно сравниваю его с Unity, то есть с тем инструментом, который отлично знаю. Что-же касается three.js и других, то мои знания весьма ограниченные.

+0-
12 8Observer8   (12 ноября 2015 13:06)
Ну нельзя же сравнивать WebGL в Unity и Blend4Web. Там же огромное количество ограничений, поэтому он совершенно не годится для создания браузерных игр: http://docs.unity3d.com/Manual/webgl-gettingstarted.html

Unity нужно сравнивать с UE4 или CryEngine. Например, по реализации освещения в реальном времени: https://www.youtube.com/watch?v=ARorKHRTI80

+0-
13 Prand   (12 ноября 2015 13:33)
Когда я пишу код для b4w, то невольно ищу аналоги в Unity API, потому что, привык к определенному стилю программирования, функциям etc. Отсюда и сравнения.

+0-
5 tuxology   (07 сентября 2015 20:38)
tuxologyХотел еще спросить(я пока,сильно не вчитывался в описание):
насколько я знаю blender позволяет делать помимо 3D,еще и качественные 2D мультики.Из этого вопрос - можно ли в Blend4web,сделать игру в 2D пространстве? Т.е. именно 2D графика со спрайтами.

+1-
6 Prand   (08 сентября 2015 14:42)
Думаю, что проблем не должно быть. Ставите ортогональную камеру, спрайты - как текстуры на плоскостях или даже билборды. Вот и все. По сути, все уроки по Blender в этой области могут с успехом использоваться для создания сцен b4w.

+0-
7 tuxology   (08 сентября 2015 22:44)
tuxologyОтлично,будем пробовать happy

+0-
10 8Observer8   (12 ноября 2015 12:55)
У вас получилось написать хотя бы, чтобы человечек ходил туда-сюда?

+0-
9 8Observer8   (12 ноября 2015 12:47)
Такое огромное количество 2D игр на Blender, аж дух захватывает! Конечно, ему же уже 20 лет в этом году - успели наклепать. Наверное, действительно очень легко и быстро делать 2D игры на Blend4Web и Blender. Есть же все инструменты, как в Unity для анимации (типа Mecanim), 2D физики и т.д.

+0-
14 Prand   (12 ноября 2015 13:40)
Вы зря так. Вы же не знаете, для какой платформы человек собрался делать игру. Если мобилка/консоль - blender не в тему. А если браузерка?

Например, свою игру "колобки" для мобильных я делал на Unity. А вот уже браузерную версию этой же игры планирую на b4w. И полагаю, с задачей справлюсь.

+0-
15 8Observer8   (12 ноября 2015 13:43)
Было бы намного убидительнее, если бы вы в начале статьи привели ссылку на пусть небольшую демку вашей игры, а потом бы писали, как просто и очень быстро вы её сделали, используя все вспомогательные инструменты Blender и B4W API.

+0-
16 Prand   (12 ноября 2015 13:57)
Собирался. Тут где-то внизу даже спрашивал у модераторов о разрешении. Но сначала мне нужно полноценно оформить игру на своем сайте, на этом сайте, на битбакете. На последнем у меня полный кавардак, так как разработку я веду в оффлайн. Выкладывать же сырые поделки - это зарубить проект на корню.

+0-
17 8Observer8   (12 ноября 2015 14:06)
Зачем исходники палить? Нужно index.html и другие файлы разместить на Google Drive, как на хостинге, чтобы можно было одним кликом запустить вашу демку и побегать. Я записывал видео ответ однажды, как разместить index.html на Google Drive.

Необязательно свою игру. Можно просто сделать специальную демку, где можно побегать, подёргать какие-нибудь предметы. Что-то очень простое и то что не отнимет у вас много времени, но зато продемонстрирует, что вы не голословны и действительно на B4W можно быстро и легко создавать игры. Можно даже спрайты не самому делать, а взять из какой-нибудь игры dendy.

+0-
4 tuxology   (07 сентября 2015 20:25)
tuxologyБольшое вам спасибо,Prand!Буду внимательно следить.Blender и Blend4web,сейчас мне крайне интересны,возможно это самое то для меня.Тут и web- кроссплатформенность и открытость.Если освоить с нуля будет не слишком сложно - буду просто счастлив happy

+1-
2 Prand   (07 августа 2015 09:19)
Цитата
если все НЕ остановится на создании сцены

Тут получается целая цепочка. Я пишу игру, чтобы изучить Blend4Web. Blend4Web мне нужен, как альтернатива Unity для браузерных игр. Чтобы был стимул и фидбэк, "Water Hunter" - игра с открытыми исходниками, а процесс разработки будет максимально освещаться. Так что ждите продолжения. smile

Вопрос, если размещу ссылку на bitbacket с исходниками - не забанят?

+1-
3 beril   (07 августа 2015 09:30)
berilНе забанят, если исходники из данного урока . Это даже хорошо будет, когда можно скрипты посмотреть более детально

+1-
1 beril   (07 августа 2015 02:04)
beril
Цитата
полноценное API. Причем аналогов некоторых функций я не наблюдаю даже в столь популярном Unity;

Ну само собой) 5 версия то еще в бете. А порт под WebGl вообще в очень глубокой бете) Ближайший год точно на стабильность расчитывать нельзя biggrin
А по поводу уроков, будет здорово, если все НЕ остановится на создании сцены и будут другие сатьи. Лично я сам уже давно хотел опробывать Blend4Web, но все никак не решался sad

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Marmalade
  • WADE
  • GINCS Studio
  • Devana
  • Starling
  • Sylphis 3D
  • TERRA
  • Mortal Szombat
  • Banshee
  • Blitz3D
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    GameDev, Уроки OpenGL, Программирование, Создать Minecraft
    Все права сохранены. GcUp.ru © 2008-2017 Рейтинг