Derjyn
Posts: 3
Joined: 19 Dec 2017, 14:09

Re: Unreal Engine 4

20 Dec 2017, 21:33

I grabbed that latest push, and NoesisGUI-NativeSDK-2.1.0b12. Copied the SDK into the proper place, compilation went smooth. Same issue when launching project:
Unknown exception - code c06d007e (first/second chance not available)

KERNELBASE
UE4Editor_NoesisRuntime!__delayLoadHelper2() [f:\dd\vctools\delayimp\delayhlp.cpp:323]
UE4Editor_NoesisRuntime!_tailMerge_Noesis_dll()
UE4Editor_NoesisRuntime!FNoesisRuntimeModule::StartupModule() [f:\erebus\projects\edt\ue\plugins\noesisgui\source\noesisruntime\private\noesisruntimemodule.cpp:147]
UE4Editor_Core
UE4Editor_Projects
UE4Editor_Projects
UE4Editor_Projects
UE4Editor
UE4Editor
UE4Editor
UE4Editor
UE4Editor
UE4Editor
kernel32
ntdll
I copied the *.dll files from the NoesisSDK bin folder, into the Noesis plugin binaries/win_64 folder, same issue is there. My project is a C++ project, and I've added the Noesis header and PrivateDependencyModuleNames entries in the project's *.build.cs file. I'm at a loss.

[edit]
LogWindows: File '../../../Engine/Plugins/NoesisGui/Source/Noesis/NoesisSDK/Bin/windows_x86_64/Noesis.dll' does not exist
This tells me this isn't a project plugin. I didn't notice any documentation stating otherwise?

[edit edit]
Yup. Copied the NoesisGUI plugin folder in the installed engine plugin folder, and my project fired up. It would be ideal if this was project-based, not requiring the user to install into the engine directory. I realize now I didn't notice this in the documentation. I'm used to engine source modifications, and rebuilding the engine, and adding plugins on a per-project basis, but it's not elegant diving into the engine plugin folder, outside of marketplace installed plugins. It works, but it's dirty...

Also, the folder structure of the samples is very rugged. Plugins can contain content. Examples should be in there, and easily accessible. There is a ton of documentation on best-practices, and a handy style-guide here: https://github.com/Allar/ue4-style-guide

It'd be awesome if energy was put into making the UE4 plugin meet the quality and usability standards one would expect from this awesome looking GUI solution ;)

Thanks for all the support so far, and I hope my critiques are taken as just that- not trying to be a douche!
Last edited by Derjyn on 20 Dec 2017, 22:03, edited 1 time in total.
 
User avatar
hcpizzi
Site Admin
Posts: 212
Joined: 09 Feb 2012, 12:40

Re: Unreal Engine 4

20 Dec 2017, 21:55

Yes, it is an engine plugin at the moment. I'm not sure it can be made a project plugin, because we need to be able to find that dll, and I'm not sure that's possible if it's not on a fixed position relative to the engine install.

I'll investigate it, since there have been several changes relative to plugins lately. At the very least I'll add a check to the build system to make sure the plugin is installed in the right place if it has to remain an engine plugin.
 
Derjyn
Posts: 3
Joined: 19 Dec 2017, 14:09

Re: Unreal Engine 4

22 Dec 2017, 13:31

Yes, it's certainly one of the areas of the engine that has been frustrating for people. I've done a bit of investigating on this topic myself, and while I've yet to find a magic-bullet solution, it seems it is completely possible. Not sure if any of this helps or is correctly related, but here are a few links:

https://github.com/shadowmint/ue4-static-plugin
http://www.valentinkraft.de/including-t ... -tutorial/
https://forums.unrealengine.com/develop ... -the-setup

There are more threads and articles on the subject, but it's mostly project specific details for various third-party libraries people are trying to get working. The gist of it though, is that is possible.
 
User avatar
hcpizzi
Site Admin
Posts: 212
Joined: 09 Feb 2012, 12:40

Re: Unreal Engine 4

22 Dec 2017, 14:00

Thanks for all the support so far, and I hope my critiques are taken as just that- not trying to be a douche!
Not at all. Constructive criticism is always welcome :)

A quick heads up. I've been looking at this these last couple of days, and I have a solution that works, but we're still trying to figure out how to do it for Launcher users, since the process to build the plugin for them relied on knowing where the automation tool was relative to the plugin, and unfortunately the windows libs are too big to commit them to GitHub.
 
User avatar
hcpizzi
Site Admin
Posts: 212
Joined: 09 Feb 2012, 12:40

Re: Unreal Engine 4

22 Dec 2017, 19:16

About the samples: could you elaborate a bit more? What is it that you don't like, the organization of the Tutorials GitHub repo, or the organization of each UE4 sample? Our UE4 samples are not just content, they contain C++ code that is sample specific, so I'd like to have them separate from the plugin itself and be game projects, as they are now.
 
User avatar
hcpizzi
Site Admin
Posts: 212
Joined: 09 Feb 2012, 12:40

Re: Unreal Engine 4

31 Dec 2017, 12:43

Well, this took longer than I anticipated, but it's finally working. The plugin now supports being used as either an Engine or a Project plugin. We've committed the editor binaries (Win64 and Mac) and the intermediate files to GitHub, so it works out of the box. For people using the GitHub version of UE4 it doesn't really matter, and regenerating the projects will add the plugin as normal, and you can build everything from there. For Epic Games Launcher versions, if you install it as a Project plugin, you don't need to do anything either. If you install it as an Engine plugin you need to run BuildNoesisGUIPlugin.bat (BuildNoesisGUIPlugin.command on the Mac) to produce the runtime binaries.

The README has been updated to reflect these changes. There's also a new troubleshooting section at the end, that I'll update as problems arise. Finally, more checks have been added to the build system files to try to catch improper use cases.

One thing mentioned in the README but that it's worth repeating here. If you already have a project, you need to manually add the plugin dependency in your uproject file, otherwise you won't be able to launch the editor (you'll get an error that the module cannot be loaded).

Happy new year, everyone!
 
antsonthetree
Posts: 44
Joined: 09 Jan 2018, 15:56

Re: Unreal Engine 4

09 Jan 2018, 18:43

Hello,

Could you post an example that shows how to instanciate a noesis view and also setup databinding using C++ only?

Thanks
Jake
 
User avatar
hcpizzi
Site Admin
Posts: 212
Joined: 09 Feb 2012, 12:40

Re: Unreal Engine 4

09 Jan 2018, 20:01

Hi Jake,

Doing data binding from C++ using the Unreal reflection system is quite straightforward, you just need to make sure the properties and functions are exposed to Blueprints and the system should work as it does with Blueprint classes. Or, alternatively, you can use the Noesis SDK C++ reflection macros directly, if you don't want your data sources to be UObjects.

View instantiation is a bit more tricky, since you still need a NoesisXaml asset. Provided you don't mind having a hardcoded reference to one in C++, it should still be possible.

I'll modify one of the samples to use a custom PlayerController to instantiate the UI from C++ as soon as I can.
 
antsonthetree
Posts: 44
Joined: 09 Jan 2018, 15:56

Re: Unreal Engine 4

10 Jan 2018, 17:17

Hi Jake,

Doing data binding from C++ using the Unreal reflection system is quite straightforward, you just need to make sure the properties and functions are exposed to Blueprints and the system should work as it does with Blueprint classes. Or, alternatively, you can use the Noesis SDK C++ reflection macros directly, if you don't want your data sources to be UObjects.

View instantiation is a bit more tricky, since you still need a NoesisXaml asset. Provided you don't mind having a hardcoded reference to one in C++, it should still be possible.

I'll modify one of the samples to use a custom PlayerController to instantiate the UI from C++ as soon as I can.
Hello hcpizzi,

I have it working with the NoesisFunctionLibrary.h now. I am making this call to notify that the property was updated:
UNoesisFunctionLibrary::NotifyChanged(this, TEXT("MyCount"));

This seems to work fine, but I wonder is this as effecient as using the Noesis SDK? As an experiment I tried implementing the INotifyPropertyChanged on my UNoesisInstance, but I get a lot of compiler errors that way. If there is no benefit to the SDK (over the NoesisFunctionLibrary) then I will just keep using this method.

So far it looks very nice. You guys should put the plugin on the UE4 marketplace for more visibility.

Thanks
Jake
 
User avatar
hcpizzi
Site Admin
Posts: 212
Joined: 09 Feb 2012, 12:40

Re: Unreal Engine 4

10 Jan 2018, 19:26

Hi Jake,

There's an overhead, so if you're going the fully native route it's better to get those compiler errors sorted. Could you post the compiler output?

Thanks!

Who is online

Users browsing this forum: No registered users and 1 guest