Инструменты пользователя

Инструменты сайта


lm3:ce:t_ue_connect

Туториал: подключение к платформе [Лямбда-Мю 3 + Unreal Engine]

Unreal Engine - написанный на языке C++ движок, который позволяет создавать проекты для большинства операционных систем и платформ. Может выступать как визуализатор для платформы Лямбда-Мю 3.

Репозитарий

Файловая структура тестового экземпляра платформы представлена ниже.

Базовый проект Unreal Engine (описание ниже) и скрипты тестового экземпляра платформы находятся в репозитарии lm3.examples/ue.connect.

Чтобы запустить платформу скачайте бинарный файл и необходимые библиотеки из репозитария lm3.engine.ce и скопируйте в корень тестового экземпляра платформы.

Базовый проект

Базовый проект состоит из одного Blueprint класса (LM3DataBP) и его базового C++ класса (LM3Functions). Класс предназначен для представления данных в формате Лямбда-Мю 3, а так же упаковки/распаковки данных в формат Лямбда-Мю 3 для обмена по сети.

В проекте для передачи данных используется плагин ObjectDeliverer.

Так же в проект входит Blueprint класс LM3DataTester, при помощи которого можно протестировать связь с платформой Лямбда-Мю 3 и посмотреть пример работы с LM3DataBP.

Добавление в проект

Для того, чтобы скопировать модуль Лямбда-Мю в свой проект, необходимо:

  • иметь проект типа C++
  • создать новый C++ класс с именем LM3Functions и базовым классом Blueprint Function Library
  • скопировать функционал класса из базового проекта
  • выполнить Migrate Assets содержимого папки Content/Lm3 (LM3DataBP, LM3DataTester, LM3DataType) из базового проекта
  • добавить LM3DataTester в пустой уровень
  • запустить платформу Лямбда-Мю 3
  • скомпилировать и запустить проект

Тестовый экземпляр платформы Лямбда-Мю 3

Файловая структура

Взаимосвязи

Объекты основной логической машины:

  • TCPserver tcps : подключение и передача данных клиентам
  • DataPack dp : запаковка / распаковка данных в формат платформы
  • Timer timer : отправка тестового сообщения

По старту машины активируется таймер и раз в секунду отправляется тестовое сообщение. Логируются тик таймера, подключение, отключение клиента.

Скрипты

main / start.lua

lm3:LoadLibrary( {Alias = "sys", FileName = "lm3system"} )
 
lm3:CreateLObject( { LibAlias = "sys", Type = "TCPServer", Name = "tcps" } )
tcps:SetAttr("Port", lmconf.TCPPort)
 
lm3:CreateLObject( { LibAlias = "sys", Type = "DataPack", Name = "dp" } )
 
lm3:CreateObject( { Type = "Timer", Name = "timer" } )
timer:SetAttr("Interval", 10000)
timer:DeferEvent("DoEnable", true)
 
timer:AddHandler("OnTick", function (o, ev)
  lm3:Log("Tick")
  local data = dp:DoPack({ Obj1 = { "str1", "str2", "str3" }, Obj2 = { Attr1 = "SomeAttr1", Attr2 = "SomeAttr2" }, Obj3 = 3.14 })
  tcps:DoSend( { Tag = 1, Data = data } )
  lm3:Log("Data:"..lm3:BytesToHex(data))
end)
 
tcps:AddHandler("OnConnect", function (o, ev)
  lm3:Log("Connected")
end)
 
tcps:AddHandler("OnDisconnect", function (o, ev)
  lm3:Log("Disconnected")
end)

Логи

UE

[2020.12.08-16.23.55:602][215]LogBlueprintUserMessages: [LM3DataTester_2] Connected
[2020.12.08-16.24.05:246][667]LogBlueprintUserMessages: [LM3DataTester_2] Incoming...
[2020.12.08-16.24.05:246][667]LogBlueprintUserMessages: [LM3DataTester_2] B4 00 00 00 80 00 00 00 03 00 00 00 04 00 00 00 4F 62 6A 31 38 00 00 00 00 01 00 00 03 00 00 00 0C 00 00 00 40 00 00 00 04 00 00 00 73 74 72 31 0C 00 00 00 40 00 00 00 04 00 00 00 73 74 72 32 0C 00 00 00 40 00 00 00 04 00 00 00 73 74 72 33 04 00 00 00 4F 62 6A 32 44 00 00 00 80 00 00 00 02 00 00 00 05 00 00 00 41 74 74 72 31 11 00 00 00 40 00 00 00 09 00 00 00 53 6F 6D 65 41 74 74 72 31 05 00 00 00 41 74 74 72 32 11 00 00 00 40 00 00 00 09 00 00 00 53 6F 6D 65 41 74 74 72 32 04 00 00 00 4F 62 6A 33 0C 00 00 00 20 00 00 00 1F 85 EB 51 B8 1E 09 40
[2020.12.08-16.24.05:246][667]LogBlueprintUserMessages: [LM3DataTester_2]
[2020.12.08-16.24.05:246][667]LogBlueprintUserMessages: [LM3DataTester_2] 04 00 00 00 FF FF FF FF
[2020.12.08-16.24.05:246][667]LogBlueprintUserMessages: [LM3DataTester_2]

LM_main.log

[2020-12-08 19:23:55][INFO:LMInit][Start logic machine v3.3(Build:561) ----------------------------------]
[2020-12-08 19:23:55][TRACE:LMInit][Create library object: tcps]
[2020-12-08 19:23:55][TRACE:LMInit][Create library object: dp]
[2020-12-08 19:23:55][TRACE:LMInit][Create object: timer]
[2020-12-08 19:23:55][INFO:LMInit][Initialization complete.]
[2020-12-08 19:23:55][LUA:LMCore][Connected]
[2020-12-08 19:24:05][LUA:LMCore][Tick]
[2020-12-08 19:24:05][LUA:LMCore][Data:B4 00 00 00 80 00 00 00 03 00 00 00 04 00 00 00 4F 62 6A 31 38 00 00 00 00 01 00 00 03 00 00 00 0C 00 00 00 40 00 00 00 04 00 00 00 73 74 72 31 0C 00 00 00 40 00 00 00 04 00 00 00 73 74 72 32 0C 00 00 00 40 00 00 00 04 00 00 00 73 74 72 33 04 00 00 00 4F 62 6A 32 44 00 00 00 80 00 00 00 02 00 00 00 05 00 00 00 41 74 74 72 31 11 00 00 00 40 00 00 00 09 00 00 00 53 6F 6D 65 41 74 74 72 31 05 00 00 00 41 74 74 72 32 11 00 00 00 40 00 00 00 09 00 00 00 53 6F 6D 65 41 74 74 72 32 04 00 00 00 4F 62 6A 33 0C 00 00 00 20 00 00 00 1F 85 EB 51 B8 1E 09 40 ]
lm3/ce/t_ue_connect.txt · Последнее изменение: 2020/12/08 20:27 — ruben