Guest3d.ru
некоммерческий проект, цель которого объединить профессионалов для обмена опытом и знаниями в области real-time рендеринга
guest3d
4.04: Экспертный уровень: Организация сети (Networking)

Некоторые приложения должны быть разработаны более, чем для одного пользователя. Примерами могут быть виртуальные чатовые комнаты, командные тренеровочные симуляторы и сетевые многопользовательские игры. Каждый пользователь должен запустить экземпляр приложения. Каждый экземпляр непрерывно должен передавать свое текущее состояние. Сетевая функциональность используется для связи между компьютерами.

Обратите внимание, что сетевые функции доступны только в редакциях Quest3D Power и VR Editions.

В большинстве случаев один из компьютеров в сети становится ‘сервером’ (‘server’). Другие компьютеры называются ‘клиентами’ (‘clients’).

Сервер контролирует любую передачу данных. Он получает обновления от клиента и отправляет данные каждому из клиентов. Сервер отправляет данные только тогда, когда клиент их запрашивает.

Сетевые приложения Quest3D настраиваются, как обычные ‘однопользовательские проекты’. Клиенты воспроизводят большую часть приложения локально. Только те данные, которые связаны с другими пользователями, запрашиваются через сервер по сети. Примерами могут быть позиция пользователя, внешность аватара и текст в окнах чата.

Обратите внимание, что PC клиента не обязан иметь Quest3D (редактор) установленным. Клиенты могут запускать откомпилированные версии самостоятельных ‘.exe’ файлов или ‘.q3d’ файлов просмотрщика.

Обычно, компьютер сервера сам же является и клиентом. В другом случае, такой компьюетр называется ‘dedicated server’ (выделенный сервер).

Скорость передачи ограничивается и сервером и клиентом. Quest3D поддерживает сетевые приложения для вплоть до 32 пользователей. Большее количество пользователей технически возможно, но может привести к снижению производительности.

Подача протокола (Logging in)
Клиент должен подать серверу протокол (‘log in’). Сервер выбирается из списка запущенных сетевых приложений в локальной сетевой области (local area network (‘LAN’)), или по определенном интернет-адресу (номер IP). Создание или обновление таких списков доступных сетевых программ называется 'подсчетом' (‘enumerating’).

Каждое сетевое приложение обладает уникальным ID для гарантии протокола клиента для правильной программы.

Инициализация (Initialisation)
После процедуры подачи протокола (log-in), программа клиента инициализируется. Это может влючать настройку стартовой позиции, изменение внешнего вида и настройка роли или типа персонажа. Вдобавок, ‘контроль’ над подобными атрибутами должен быть назначен вновь запротоколированному клиенту. Пользовательский контроль над элементами сцены может быть распространен при динамическом изменении назначений.

Передача данных (Data transfer)
Сетевые данные могут быть переданы в Quest3D с помощью каналов Network Value, Network Matrix, Network Text и Network Buffer. Первые три типа вставляются между родителем и его потомком.

Network Value, Network Matrix и Network Text могут быть переданы и получены группами. Вдобавок, может быть задана гарантированность передачи, для уверенности в том, что данные действительно отправились по назначению. Эта опция немного медленнее, чем обычная передача. Наконец, Network Value и Network Matrix могут быть выставлены на непрерывное движение (‘Continuous’), приводя к более сглаженной анимации.

Буферы (Buffers)
Каналы других типов могут быть переданы по сети с помощью канала Network Buffer. Он должен быть вызван независимо, а распространяемый канал может быть привязан как его потомок.

Сетевые действия (Network actions)
Канал Network Actions содержит ряд функций, таких, как создание и удаление сервера, отключение клиента и настройку управления пользователя. Он также содержит ряд тригеров для таких событий, как создание сервера, протоколирование клиента и отказ в соединении.

Сетевая информация (Network information)
Канал Network Info Value содержит ряд функций, таких, как статус соединения, номер текущего пользователя и общее количество подключенных клиентов.

Канал Network Info Text хранит имена сессии и компьютеров.

Сетевые триггеры (Network triggers)
Network Triggers может быть запущен для гарантии запуска события на всех клиентах. Обычные триггеры могут быть слишком неточными для сетевых целей.

Урок
Сетевая функциональность позволяет связь между двумя или более компьютерами. Сетевые проекты в Quest3D настраиваются как ‘однопользовательские’ программы. Обычно они содержат код для сервера и клиента.

Следующее упражнение демонстрирует создание подключения к серверу в Quest3D. Второй урок - продвинутый случай, показывающий пользовательский контроль над переменными.

Необходимая сцена Quest3D:
..\Tutorials\4.4 – Networking\Networking 1.cgr
Необходимые шаблоны:
Power \ Network \ Network Actions (x3)
Logic \ Expression Value
Power \ Network \ Network Info Value

Шаг за шагом:

  • Откройте файл, ‘Networking 1.cgr’. Он содержит простую логическую структуру.
  • Перетяните канал Network Actions в Граф Каналов и подключите его к каналу ‘Create Server Trigger’. Дважды щелкните по каналу ‘Network Actions’ для открытия окна его настроек. Из выпадающего списка в окне настроек, выберите ‘Create Server’ (создать сервер). Выберите опцию ‘Update channel name’ (обновить имя канала) и нажмите ‘OK’ для подтверждения.
  • Добавьте другой канал Network Actions и подключите его к каналу ‘Create Server’. Установите и переименуйте канал Network Actions на/в ‘This PC created a server’ (этот компьютер создал сервер).
  • Перетяните другой канал Network Actions в Граф Каналов и подключите его к каналу ‘Network Logic’. Установите и переименуйте этот канал Network Actions на/в ‘Connect to own server’ (подключиться к имеющемуся серверу).
  • Подключите несвязанный канал ‘MessageBox’ к каналу ‘This PC created a server’.

  • Добавьте Expression Value и подключите его к каналу ‘Player Connected?’.
  • Перетяните канал Network Info Value в Граф Каналов и подключите его к Expression Value, который вы только что добавили. Дважды щелкните по Network Info Value, установите и переименуйте его на/в ‘Connection Status’ (статус подключения).
  • Дважды щелкните по Expression Value и смените его формулу на ‘A==9’. Выберите опцию ‘Rename Channel to formula’ (переименовать канал в формулу) и нажмите ‘OK’ для подтверждения. Обратите внимание, что статус подключения, равный ‘9’, означает, что подключение было установлено.

  • Переключитесь в Run Mode.
  • Нажмите ‘F2’. Обратите внимание, что через некоторое время сервер будет создан и запущено подключение ‘Connect to own server’. Также заметьте, что несколько мгновений позже на экране появится сообщение ‘A player connected’ (игрок подключен).
  • Переключитесь в Edit Mode.

Законченная сцена:
..\Tutorials\4.4 – Networking\Networking 1 – Complete.cgr
Если вы хотите, вы можете сохранить текущую группу каналов в вашу папку проектов. Следующие шаги будут связаны с новой сценой.

Урок2
Необходимая сцена Quest3D:
..\Tutorials\4.4 – Networking\Networking 2.cgr
Необходимые шаблоны:
Variables \ Arrays \ Array Channel
Power \ Network \ Network Matrix

Шаг за шагом:

  • Откройте файл ‘..\Tutorials\Networking 2.cgr’. Он содержит окружение, персонаж и камеру ходьбы от 3го лица, а также сетевую логику.
  • Перейдите в Раздел Анимации.
  • Переключитесь в Run Mode.
  • Нажмите ‘F2’ для создания сервера. Обратите внимание, что через некоторое время отобразится 3D сцена. Это означает, что сервер был создан и подключение клиента установлено.
  • Протестируйте сцену, прогулявшись по ней.
  • Когда будете готовы, переключитесь в Edit Mode.
  • Перейдите в Раздел Каналов.
  • Отключите соединение между каналом ‘Animated Character’ и каналом ‘Character Motion’.
  • Добавьте Array Channel. Из выпадающего списка выберите таблицу ‘Characters’ (персонажи). Из второго списка выберите столбец ‘Character Motion Network’ (сетевые движения персонажа). Выберите опцию ‘Update channel name’ (обновить имя канала) и нажмите ‘OK’ для подтверждения.
  • Добавьте канал Network Matrix и подключите его к каналу массива ‘Characters: Character Motion Network’.
  • Подключите канал ‘Character Motion’ к каналу ‘Network Matrix’.
  • Создайте ярлык канала ‘Current Iteration’ и подключите его к первому потомственному входу канала массива ‘Characters: Character Motion Network’.

  • Перейдите в Раздел Анимации.
  • Переключитесь в Run Mode.
  • Протестируйте сцену на данный момент, походите по ней с помощью клавиш со стрелками и мыши. Нажмите клавиши от ‘1’ до ‘3’ для управления текстурами.
Следующая часть урока требует второй компьютер, который будет работать, как клиент. Два компьютера должны быть подключены через локальную сеть.
  • Из меню File выберите ‘Save As’. Сохраните данный проект в вашу папку проектов.
  • Из меню File выберите ‘Publish’. Опубликуйте проект как самостоятельный файл ‘.exe’.
  • Скопируйте файл ‘.exe’ на компьютер клиента.
  • Запустите файл ‘.exe’ на компьютере клиента.
  • На главном компьютере нажмите ‘F4’ для входа, как клиента. Обратите внимание, через некоторое время отобразится 3D сцена.
  • На компьютере клиента протестируйте сцену, походите по ней с помощью клавиш со стрелками. На компьютере сервера обратите внимание, что персонаж клиента прогуливается по округе.
  • На компьютере сервера нажмите клавиши от ‘1’ до ‘4’ для смены внешнего вида персонажа сервера. Обратите внимание, что изменения отражаются в реальном времени на компьютере клиента.

Законченная сцена:
..\Tutorials\4.4 – Networking\Networking 2 – Complete.cgr
..\Tutorials\4.4 – Networking\Networking 2 – Complete.exe

Если у вас есть материалы, или вы хотите дополнить существующие, если вы хотите писать новости относящиеся к технологиям реалтайм рендеринга, или имеете полезные файлы, вы можете стать резидентом Guest3D.ru. Для этого нужно написать письмо в свободной форме на admin@guest3d.ru, с указанием вашей мотивации. Кроме того, каждый резидент получает возможность создать свою страницу, ссылка на которую будет прикреплена к каждому опубликованному вами материалу.
вход