Комплект разработчика Вердж3Д — Софт Эйт Софт
Description: Узнайте, как использовать комплект разработчика для создания собственной модификации Вердж3Д.

# Комплект разработчика Вердж3Д

Комплект разработчика «Вердж3Д» (англ. Developer Kit, DevKit) — это набор примеров, инструментов и исходного кода, которые поставляются с корпоративными версиями «Вердж3Д». Этот набор поможет вам выполнять различные задачи разработчика, такие как:

- Использование неминифицированной версии «Вердж3Д» для упрощения отладки и обучения.
- Изучение и обзор внутренних компонентов набора инструментов «Вердж3Д».
- Модификация «Вердж3Д» и использование модифицированных версий в собственных 3Д-приложениях.
- Расширение API «Вердж3Д» с помощью собственных классов и методов.
- Разработка новых блоков пазлов.
- Разработка своего собственного конфигуратора или системы e-commerce с использованием плагина «Вердж3Д для Вордпресс» в качестве референса.

Комплект разработчика предназначен для опытных программистов, желающих изучать или модифицировать движок. Он не нужен для создания приложений «Вердж3Д» со стандартным набором функций (с помощью пазлов или «Ява Скрипта»).

- Установка и настройка
- Структура комплекта разработчика
- Сборка «Вердж3Д»
- Активация модуля движка
- Добавление нового метода в «Ява Скрипт» API
- Добавление нового класса в «Ява Скрипт» API
- Добавление новых пазлов
- Удаление строки с версией «Вердж3Д» из браузерной консоли

#

## Установка и настройка

Скачайте архив DevKit из раздела загрузок вашей учетной записи. Распакуйте этот архив в выбранную вами директорию.

Если вы собираетесь собрать движок «Вердж3Д» или редактор пазлов из исходного кода, вам понадобится утилита npm, которая является частью среды разработки Node.js. Вы можете установить ее с помощью этих инструкций.

#

## Структура комплекта разработчика

DevKit включает следующие папки:

Папка DevKit | Описание
--- | ---
build | Готовые скрипты движка «Вердж3Д» и дополнительные модули (ammo.js и т.д.).
puzzles | Собранные скрипты и исходный код редактора пазлов.
src | Исходный код движка «Вердж3Д».
templates | Шаблоны приложений «Вердж3Д».
utils | Различные утилиты и сборочные зависимости.
wordpress | Исходный код плагина «Вердж3Д для Вордпресса» (написан на PHP).
xz | Исходный код модуля сжатия XZ.

В папке `build`, DevKit предоставляет 4 варианта рантайма «Вердж3Д»:

v3d.js
  Минифицированная (оптимизированная) версия, пригодная для большинства приложений. Этот рантайм предоставляет классы/функции/константы в виде глобального пространства имён `v3d`. Данная версия используется в диспетчере приложений и большинстве демо-приложений из магазина ассетов.
v3d.unminified.js
  Неминифицированная (неоптимизированная) версия рантайма выше. Чтобы воспользоваться её, скопируйте данный файл в папку с приложением и переименуйте в `v3d.js`, заменяя существующий файл с тем же именем.
v3d.module.js
  Минифицированная (оптимизированная) версия, предоставляющая ES6 модули вместо глобального пространства имён `v3d`.
v3d.module.unminified.js
  Неминифицированная (неоптимизированная) версия рантайма выше.

#

## Сборка «Вердж3Д»

Перед компиляцией «Вердж3Д», пожалуйста, убедитесь что вы установили npm, как описано выше.

После установки npm, перейдите в распакованную папку с DevKit и выполните следующую команду для установки зависимостей:

`npm install`

В случае, если вам потребуется пересобрать редактор пазлов, потребуется установить дополнительные зависимости для папок `puzzles` и `puppeteer_testing`:

`npm install --prefix puzzles && npm install --prefix utils/puppeteer_testing`

Чтобы сделать неоптимизированную сборку «Вердж3Д», подходящую для тестирования и отладки, выполните следующую команду в директории DevKit:

`npm run build`

Вы можете найти скомпилированные модули в директории `build` вашего DevKit. Чтобы протестировать их работу, просто скопируйте модуль движка `v3d.js` в папку с вашим приложением, например:

`cp build/v3d.js APPS_FOLDER/my_awesome_application`

Чтобы скомпилировать оптимизированную версию «Вердж3Д» (она же релизная версия), выполните следующую команду в директории DevKit:

`npm run build-release`

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

`npm run build-puzzles`

Чтобы собрать оптимизированную версию, выполните команду:

`npm run build-puzzles-release`

Скомпилированный скрипт редактора пазлов находится в директории `puzzles` вашего DevKit. Чтобы применить его к «Вердж3Д», скопируйте все содержимое этого каталога в каталог `puzzles` в вашей директории «Вердж3Д» (заменяя уже существующие там файлы).

#

## Активация модуля движка

Для подписывания скомпилированного модуля движка лицензионным ключом, используется утилита keymanager.py, расположенная в папке `utils` (требуется установленный «Питон»):

`./keymanager activate ../build/v3d.js XXXXXXXXXX`

Где XXXXXXXXXX — ваш лицензионный ключ. Поскольку утилита не выводит никакой информации в случае успеха или неудачи, убедитесь, что активация прошла успешно, скопировав модуль движка в какое-нибудь приложение и проверив что водяной знак MADE WITH VERGE3D TRIAL больше не выводится.

#

## Добавление нового метода в «Ява Скрипт» API

Допустим, вы хотите добавить еще один метод в класс App. Например, метод `printHelloWorld()` должен вывести что-то на консоль браузера:

`App.printHelloWorld()`

Класс App реализован в модуле, расположенном по адресу `src/extras/App.js` Откройте его и добавьте следующий код в конец файла, прямо перед закрывающими скобками класса `App`.

`printHelloWorld() { console.log('Привет, Мир!'); }`

Соберите и скопируйте рантайм «Вердж3Д» `v3d.js` пазлов в папку с приложением. Чтобы протестировать новый метод, откройте браузерную консоль и введите:

`v3d.apps[0].printHelloWorld()`

Проверьте что строка "Привет, Мир!" выводится строчкой ниже.

#

## Добавление нового класса в «Ява Скрипт» API

Чтобы дополнить API «Вердж3Д» каким-либо пользовательским классом, создайте .js файл с именем вашего класса в соответствующем подкаталоге папки `src` DevKit (например, `src/extras/MyAwesomeClass.js`). В этом .js-файле реализуйте свой класс - вы можете вдохновиться уже существующими классами. Наконец, зарегистрируйте свой класс в глобальном пространстве имен `v3d`, добавив следующую строку в файл `src/v3d.js`:

`export { MyAwesomeClass } from './extras/MyAwesomeClass.js';`

Соберите и скопируйте среду выполнения «Вердж3Д» `v3d.js` в ваше приложение и попробуйте воспользоваться новым классом в консоли браузера.

`const myAwesomeStuff = new v3d.MyAwesomeClass(); myAwesomeStuff.whatEver();`

#

## Добавление новых пазлов

Чтобы создать собственный блок пазлов, отредактируйте файл `puzzles/src/puzzles_blocks.js` Вы можете вдохновиться уже существующими пазлами. Зарегистрируйте его в соответствующей категории панели инструментов в верхней части файла.

Соберите и скопируйте среду выполнения пазлов в папку с установленным «Вердж3Д». Теперь вы должны найти свой новый пазл в панели инструментов редактора пазлов.

Вместо редактирования файла `puzzles_blocks.js`, вы можете оформить ваш код в виде плагина, что сделает его более универсальным.

#

## Удаление строки с версией «Вердж3Д» из браузерной консоли

Каждый раз при запуске «Вердж3Д»-приложения пользователь может наблюдать следующую строку в браузерной консоли:

Строка содержит информацию о версии рантайма «Вердж3Д», о статусе лицензирования, а также об используемой версии WebGL.

Если по каким-то причинам вывод данной информации нежелателен, вам потребуется модифицировать исходники движка. Откройте файл `src/renderers/WebGLRenderer.js`. Найдите следующую строку:

`const PRINT_VERGE3D_LINE = true;`

и установите данную константу в `false`:

`const PRINT_VERGE3D_LINE = false;`

Соберите и скопируйте рантайм «Вердж3Д» `v3d.js` пазлов в папку с приложением. Убедитесь, что строка с версией больше не выводится.

## Остались вопросы?

Задайте их на нашем форуме!