Unreal Engine - написанный на языке C++ движок, который позволяет создавать проекты для большинства операционных систем и платформ. Может выступать как визуализатор для платформы Лямбда-Мю 3.
Файловая структура тестового экземпляра платформы представлена ниже.
Базовый проект Unreal Engine (описание ниже) и скрипты тестового экземпляра платформы находятся в репозитарии lm3.examples/ue.connect.
Чтобы запустить платформу скачайте бинарный файл и необходимые библиотеки из репозитария lm3.engine.ce и скопируйте в корень тестового экземпляра платформы.
Базовый проект состоит из одного Blueprint класса (LM3DataBP) и его базового C++ класса (LM3Functions). Класс предназначен для представления данных в формате Лямбда-Мю 3, а так же упаковки/распаковки данных в формат Лямбда-Мю 3 для обмена по сети.
В проекте для передачи данных используется плагин ObjectDeliverer.
Так же в проект входит Blueprint класс LM3DataTester, при помощи которого можно протестировать связь с платформой Лямбда-Мю 3 и посмотреть пример работы с LM3DataBP.
Для того, чтобы скопировать модуль Лямбда-Мю в свой проект, необходимо:
Объекты основной логической машины:
По старту машины активируется таймер и раз в секунду отправляется тестовое сообщение. Логируются тик таймера, подключение, отключение клиента.
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 ]