Here a smart solution. It works only, when the user didn’t change the default user documents path.
Yeah that will work. It’s not platform independent though. Btw why do you need the appdata path? Why not store your data in the folder the engine made/makes for user/game data?
Is there a version you’re working on for 4.24 that we could grab early and help test?
The 4.24 versions of the plugins have already been published to the marketplace right?
Not when I checked last night.
Edit: yep, still no version available for 4.24.
If they’re on their way then no worries. Might take a week to pass review.
That’s weird, they should already be available on the marketplace.
I also tried to install the 4.24 version of the extended standard library plugin and it worked.
Maybe you need to update the epic games launcher?
Edit: I just now see the screenshot. I’ll try to see if I can install the 4.24 version of the json plugin.
Edit 2: Yeah the json plugin installed as well, here’s a screenshot:
Man the launcher sucks. Cheers, I’ll try clearing its caches or something.
Hi guys. I’m trying to upgrade my project to 4.24 and having problems with the Low Entry Extended Standard Library:
This is the first error I get:
2>UnrealBuildTool : error : Unhandled exception: Tools.DotNETCommon.JsonParseException: Missing or invalid 'Type' field (in C:\Users\MattiaAffabris\Code\midgard\midgard\Plugins\LowEntryExtStdLib\LowEntryExtStdLib.uplugin)
It seems to refer to the UncookedOnly
value for the Type
key entry in the Editor’s descriptor. Looking at the docs () indeed the UncookedOnly option isn’t mentioned
I can fix it by setting Developer
instead, but then I get this error:
2>UnrealBuildTool : error : Could not find definition for module 'ToolMenus', (referenced via Target -> LowEntryExtendedStandardLibraryEditor.Build.cs)
What am I missing here?
EDIT: Nevermind, turns out that merging an updated UE4 branch into a non-updated one doesn’t work out of the box. I had to regenerate the Visual Studio project files.
Hi yeah, whenever anything in the code changes, whether it’s engine or plugin code, you’ll have to regenerate the visual studio project files. Sometimes you also have to delete the binaries, build, etc folders. I made and use a script for this which is:
echo off
cls
for /D %%s in ("%~dp0*") do (
IF EXIST %%s\*.uproject (
echo %%s\
rmdir "%%s\Binaries" /s /q >nul 2>&1
rmdir "%%s\Build" /s /q >nul 2>&1
rmdir "%%s\Intermediate" /s /q >nul 2>&1
rmdir "%%s\Saved" /s /q >nul 2>&1
rmdir "%%s\Resources" /s /q >nul 2>&1
rmdir "%%s\.vs" /s /q >nul 2>&1
rmdir "%%s\%%~ns.xcworkspace" /s /q >nul 2>&1
del "%%s\*.VC.db" >nul 2>&1
del "%%s\*.sdf" >nul 2>&1
del "%%s\*.sln" >nul 2>&1
del "%%s\*.suo" >nul 2>&1
IF EXIST %%s\Source (
for /f %%f in ('dir /d /b "%%s\"') do (
if /i "%%~xf"==".uproject" (
CALL "C:\Program Files\Epic Games\Launcher\Engine\Binaries\Win64\UnrealVersionSelector.exe" /projectfiles "%%s\%%f"
echo off
)
)
)
)
)
Maybe that will be of use to you. Either way, good luck with your project!
Hey,
can you please update the encryption plugin to 4.25? i see all others are upldated.
thanks in advance
Just wondering, I was trying to upgrade my skills minute this would be I guess, so took advice of OP and created c++ project added my terrain in later, but anyway point is I did all requrements and far as I could get was with no errors, was no Uplugin created , just a dll for my project which was blahblahPLUSPLUS,any idea going fwd as I’d like to do this more and this plugin always lags new engine versions, what I need to fix to gedt a .uplugin out of this ?
THX
The code for that plugin was updated at the same time as the others, but there was a compile warning/error that happened during the build process. I didn’t get that error/warning so I was only able to guess what would fix it. I (attempted to) fix it right away and have send the updated code to Epic, you’re now waiting for them to build and to publish it. I hope that this time it will build and publish successfully.
You should have the plugin downloaded and unzipped so that [project]/Plugins/LowEntryExtStdLib/LowEntryExtStdLib.uplugin exists. Then you should rightclick your project’s .uproject file and click on “Generate Visual Studio project files”. Then you should open the generated .sln file with Visual Studio and compile that project. You should then have the DLL for the project be build (check the output log). If this doesn’t happen, then I don’t know what’s going wrong, you might want to post this on the UE4 Answerhub as a bug report then, as you did all the right steps then as far as I know.
I got no errors on compile, but plugin doesn’t show up under edit >Plugins, or should it given it was source compile ?
If you did all the steps I described above, and you don’t see the DLL being build, and you also can’t find any of the blueprints of the plugin in the UE4 editor, then you should post a bug report on the UE4 answerhub, as I sadly can’t see why it wouldn’t be working then. I hope you’ll be able to find a solution to your problem there.
Hello !
Being looking for a plugin to perform HTTP REST requests, I would like to ask you some questions about your plugins, and more particularly “LE Http Request” & “LE Json”, before buying it:
- My project is intended for HTML5 / Mobile platforms (Android & IOS), won’t that be a problem for him?
- My project is currently in 4.23, is it good? Is the port to 4.26 being carried out on your side?
- Do you have conflict issues with other known plugins?
- Can your plugins be used for commercial use ?
“LE Http Request” :
- The plugin can talk with APIs in HTTPS?
- Does it take CORS permissions into account?
- Can we get the headers of the answer?
- Can we recover the cookies in the header of the response? Is a storage function already integrated?
- “LE Json” and “LE Http Request” must work together?
Thank you in advance for your answers.
Hi, I’ve seen your email and responded to that as well, but just to be sure, I’ll post the answers to the questions on here as well!
My project is intended for HTML5 / Mobile platforms (Android & IOS), won’t that be a problem for him?
No, both plugins should work on every platform the UE4 can export/package to.
My project is currently in 4.23, is it good? Is the port to 4.26 being carried out on your side?
I would always advice using the latest engine version if possible, but sometimes it’s not possible or not desirable. Either way, both plugins work on 4.23 as well as on 4.24, 4.25 and 4.26. When you upgrade your project to a newer engine version, you usually don’t have to change any code that interacts with my plugins, I only make breaking changes very rarely.
Do you have conflict issues with other known plugins?
No other plugins should conflict with my plugins, it shouldn’t be possible either, as every class, function, global, etc is prefixed with .
Can your plugins be used for commercial use?
Yes they can be (every plugin on the UE4 marketplace should allow this, it’s part of the marketplace’s ToS if I’m correct).
The plugin can talk with APIs in HTTPS?
Yes, HTTPS is fully supported on every platform the UE4 can export/package to.
Does it take CORS permissions into account?
It should (it uses the HTTP request functionality of the engine, which in turn uses the HTTP request functionality that works best on that platform, for example, on windows it uses cURL). Whether it supports CORS or not depends on how the HTTP request functionality of that platform works, which in turn also depends on Epic’s implementation of it. As far as I know, every platform takes CORS into account, but I’ve never tested that properly.
Can we get the headers of the answer? / Can we recover the cookies in the header of the response? Is a storage function already integrated?
Yes, when you set a cookie, it should set a header, and every header from a response can be accessed and read. No automatic storage solution for cookies has been integrated as far as I know.
“LE Json” and “LE Http Request” must work together?
You don’t have to use them both together, but they do work together really well of course, as I’ve designed my plugins to work really well together.
I hope that answers all of your questions! If you have any more questions or if you need any help with anything, please let me know!
A while back I asked you in the comments for the LE File Manager plugin the following:
Your response was:
But when I look at your source code I find this:
TArray<uint8> ULowEntryFileManagerLibrary::GetFileData(const FString& File)
{
TArray<uint8> Data;
IFileHandle* FileHandle = FPlatformFileManager::Get().GetPlatformFile().OpenRead(*File);
if(FileHandle != nullptr)
{
int64 FileSize = FileHandle->Size();
if((FileSize > 0) && (FileSize <= 0x7FFFFFFF))
{
int32 ByteSize = FileSize;
uint8* Bytes = new uint8[ByteSize];
FileHandle->Read(Bytes, ByteSize);
Data.Append(Bytes, ByteSize);
delete ] Bytes;
}
delete FileHandle;
}
return Data;
}
I’m not finding any reference to the capacity you state above in Unreal’s documentation.
Given that I’m able to download files of more than 2GB in size, and write them using the LE File Manager, which also uses the TArray type, I think your hard coding that size limit is in error. The Unreal library has a function that returns the correct limit to compare to TArray:Max which returns a value of type SizeType, which isn’t necessarily an int.
When I go over the Unreal API library the Read function entry has:
[Read](https://docs.unrealengine.com/en-US/API/Runtime/Core/GenericPlatform/IFileHandle/Read/index.html)([uint8](https://docs.unrealengine.com/en-US/API/Runtime/Core/HAL/uint8/index.html) * Destination, [int64](https://docs.unrealengine.com/en-US/API/Runtime/Core/HAL/int64/index.html) BytesToRead)
I’d redo your code as the following:
TArray<uint8> ULowEntryFileManagerLibrary::GetFileData(const FString& File)
{
TArray<uint8> Data;
IFileHandle* FileHandle = FPlatformFileManager::Get().GetPlatformFile().OpenRead(*File);
if(FileHandle != nullptr)
{
int64 FileSize = FileHandle->Size();
if((FileSize > 0 && FileSize <= (int64) Data.Max())) // The type conversion may be redundant. Hard coded numbers are usually a bad practice unless their is no other choice (zeros are usually safe though).
{
int64 ByteSize = FileSize;
uint8* Bytes = new uint8[ByteSize];
FileHandle->Read(Bytes, ByteSize);
Data.Append(Bytes, ByteSize);
delete ] Bytes;
}
delete FileHandle;
}
return Data;
}
Yes, I can write an entirely separate function that does it right in our own company library, but I don’t see the point in doing it if we have already purchased yours. This issue is the only apparent bug I’ve found in your Low Entry series (and I push Low Entry often to others).
I’m going to do a test of my code suggestion, of course, and let you know if it works.
Hi, hmm weird, is that a recent change? I thought arrays used int32’s internally, but I see it now as well yeah, they use SizeType.
So yeah, you’re right, TArrays can go over the maximum of an int32 (depending on what the max value of SizeType is), but blueprint can’t handle it properly. If you make an array the max int32 length (0x7FFFFFFF) and add a few elements to it, the length of it will return something like -2147483598 in blueprint.
However, since in this case, you’ll probably never iterate over these bytes in blueprint, I might remove the max length check and let the internal TArray code take care of that instead, then I’ll just add a warning to the blueprint’s documentation stating that the length can be under 0 if the array is larger than the maximum of int32.
I wish Epic would change the int32 values to int64 in blueprint in the places where it makes sense, such as with arrays, for loops, etc, then this would have not been an issue.
Anyway, adding support for SizeType/int64 arrays will take me quite a bit to add, since the other plugins also all assume arrays have a int32 length, so I’ll have to go through all my code so far and fix every instance where I assumed arrays used int32’s internally.
Update:
Hmm, thinking about it a bit more, I realized that what you’re trying to do is actually quite a bad idea, since it will load the whole file into memory. What if the user doesn’t have that much memory? If it goes into paging it will be very slow. What are you trying to do with the file exactly?
I’ll still rework the LE plugins to be able to support larger arrays, but you might want to rethink the way you handle large files. Building some kind of streaming functionality (like that you handle 8MB a time) in C++ will still be far better as that would use far less memory that way. How easy that is to do completely depends on what you’re trying to do of course.
Update:
It’s done, I’ve send the code to Epic, it should be available on the marketplace soon (a few days to a few weeks from now, depending on how busy they are).
Update:
The updates should now be available on the marketplace. Try out the new blueprint called “Get Data (File) (Unsafe)” and let me know what you think!
On iOS this throws a Plugin failed to load because
“LowEntryExtendedStandardLibrary” could not be found.
FYI.