I believe, for compatibility reasons, these systems will only cease to exist when UE 5 is released. So that anyone upgrading older UE 4 projects with these older systems can do it without problems.
Niagara, wow, pretty cool… but then I still sometimes see the screen in 2d and say ‘how does this light know that that particular pixel is something to bounce off and not the other’ and ‘there are no directions on a flat screen, just left right up and down’… 3d (chuckle) what a trip… you truly are wizards …
4.20.2 best update pls
About the new curve atlas:
The docs state “The Curve Atlas bakes down when it is compiled, which means there is currently no runtime support for changing what is in the atlas or the curve data that is stored in the atlas at runtime. However, you can store a large amount of data in a single Curve Atlas, and use Blueprint to override the curve being sampled from a Material Instance.”
So, how do you override the curve being sampled using BP? Let’s say I have a material with a curve atlas parameter filled with two linear color curves, GrayRocks and RedRocks. Default is GrayRocks. I create a MID in BP. How do I (in BP) change the the active curve from GrayRocks to Redrocks?
Hi cyaoeu!
To do this, use the Get Curve Position node to get your curve’s position in the atlas, then pass that to Set Scalar Parameter on your MID.
You can see an example setup here:
Thanks!
Is there an ETA for 4.20.2 hotfix? It’s being a pain working with UE-62042. Thanks!
I’ve been having trouble joining sessions through blueprint nodes starting in 4.20 on IOS over WiFi LAN. After successfully joining, the server map doesn’t load. This wasn’t an issue for me in 4.19.
Thanks, actually I tried that setup before and it didn’t work, tried it again now and got it to work. :rolleyes: So I’m guessing Position means y coordinates in the atlas “texture”? “Get Curve Position” sounds a bit weird to me. Especially in the documentation.
**"Accessing Curve Atlases through Blueprint
In Blueprint, you can set the scalar parameter value on a Dynamic Material Instance using the Get Curve Position node. Get Curve Position takes the Curve Atlas as an input, passes the scalar value to the Set Scalar Parameter Value, and returns a Boolean indicating whether the curve was found in the atlas."**
This didn’t make too much sense to me which is why I ended up asking here. I would probably write it like this:
**"Setting the active Curve Atlas Row through Blueprint
In Blueprint, you can get the position (y coordinates) in the atlas of a specified curve using the Get Curve Position node. Get Curve Position takes the Curve Atlas and In Curve as inputs, outputting a Float of the position value for the curve you specified as the In Curve and a Boolean indicating whether the curve was found in the atlas. You can then use this position value in a Set Scalar Parameter Value node pointing to your CurveAtlasRowParameter name to set the active Curve Atlas Row in a Dynamic Material Instance."**
It also seemed to me like you don’t really need the Get Curve Position node too, what’s setting the active curve is the scalar in combination with the parameter name for the curve atlas row parameter. For example in a atlas with 8 curves the Get Curve Position node output 0.0625 for the first curve and 0.1875 for the second curve. So maybe something like this:
0 - initial value (not sure what this means)
0.0625 curve 1
0.125 halfway between curve 1 and curve 2
0.1875 curve 2
0.25 halfway between curve 2 and curve 3
and so on. Yes, you can get colors between curves which should probably be stated in the docs somewhere if this is intended behavior and not a bug. If you do so you get (from what I can tell) a lerp of the colors of the closest curves at the specific coordinate value.
So I guess this would mean the formula for getting the pure curve color position of a curve in an atlas is (1/curves-1/(curves*2))*index or something where index is the index of either a lerped color (between 2 curves) or the curve you specified, where odd numbers are the curve assets and the even numbers are the half points. Maybe. :rolleyes:
Having this issue too.
Going to hack myself in for the moment, but this could kill a lot of marketplace stuff.
Yeah, it is true that you don’t need the Get Curve Position node and you could calculate that yourself, but it does add convenience in case you change the size of your atlas or reorder your array of curves - you wouldn’t have to come back and redo the math in a bunch of Blueprints.
n trying to step up to 4.20 from 4.19 we discovered that we can no longer use our custom online subsystem plugin due to changes made in how FUniqueNetIdRepl is serialized with the new encoding scheme.
When trying to connect client and server we are getting an “Error with encoded type hash” message. Digging into this we found a change in the FUniqueNetIdRepl::NetSerialize method that now uses new methods on the online subsystem utils class to convert a hash value to a subsystem FName however there is no way currently to inject a new subsystem to hash mapping for custom plugins.
Is this intended behavior, an oversight or are we missing something with how to add a new custom online subsystem plugin since the 4.20 change?
Thanks
Is there a workaround for this problem ?
Can you guys update the editor on the Unreal Tournament variant to 4.20 as well?
Thank you!
I am officially impressed! Well done Epic. Well done.
Either I did something wrong or their fix is not working. I cherry-picked fix commit for engine build and it still doesn’t generate project files with enough include directories (for example, things like “Windows\Engine\Intermediate\Build\Win64\UE4Editor\Inc\Engine”, “Windows\Engine\Plugins\Online\OnlineSubsystemUtils\Intermediate\Build\Win64\UE4Editor\Inc\OnlineSubsystemUtils” or “…..\Intermediate\Build\Win64\UE4Editor\Inc$(ProjectName)” are missing).
Does it work for anyone?
HLOD gets stuck in an infinite loop with complicated projects. I’ve tracked it down to here:
const AActor* UHLODProxy::FindFirstActor(const ALODActor* LODActor)
{
auto RecursiveFindFirstActor = &](const ALODActor* InLODActor)
{
const AActor* FirstActor = InLODActor->SubActors.IsValidIndex(0) ? InLODActor->SubActors[0] : nullptr;
while (FirstActor != nullptr && FirstActor->IsA<ALODActor>())
{
const ALODActor* SubLODActor = Cast<ALODActor>(FirstActor);
if (SubLODActor)
{
SubLODActor->SubActors.IsValidIndex(0) ? SubLODActor->SubActors[0] : nullptr;
}
else
{
// Unable to find a valid actor
FirstActor = nullptr;
}
}
return FirstActor;
};
The body of if (SubLODActor) doesn’t actually do anything, guaranteeing an infinite loop if the FirstActor is an ALodActor.
It looks like in the body of that if statement it should be looping through all sub ALODActors and a recursive call on each until it gets a non-ALODActor or nullptr.
Yup, I modified the file manually by copy-pasting the changes from the fix commit and it worked.
In general, I’m tired of waiting for more than a year of fixes
I studied the problem and made corrections to the UnrealBuildTool source code.
CLION 2018.2 works (the assembly does not work) and the latest Visual Studio 2017.
With VS Code there are still problems …
Link UnrealBuildToolFix_4.20.1: https://cloud.mail.ru/public/7vhb/1gaTzXWLW (source in the archive).
If version 4.20.2 does not fix the generation of project files, I will have to make a large refactoring of UnrealBuildTool and publish it in GitHub;)
That is one of the cool things about having the source code available… Thanks!
teak
So, when is 4.20.2 coming ?
Why is there not a ‘flag’ button in this section of the forums?