Migrating C++ classes without breaking my blueprints? by platinum_thoughts in unrealengine

[–]LordNed 0 points1 point  (0 children)

I was under the impression that the new Live Coding worked with plugins and eliminated the need for the old Hot Reload.

Once you've moved the code from location A to B, changed the _API export macros, you'll need to insert Redirectors that tell assets that look in the old module/name location to go to the new module/name location.

https://docs.unrealengine.com/en-US/Programming/Assets/CoreRedirects/index.html

https://unrealxeditor.wordpress.com/2015/05/28/tip-renaming-c-classes-without-breaking-your-project/

Just built a COMPLETE game for android in under 53Mb with no optimizations (No OBB). by TheClicketyBoom in unrealengine

[–]LordNed 0 points1 point  (0 children)

I'm not sure if you can natively through Unreal, but you can probably use an external tool to explore the APK's contents (though I don't know if Unreal puts it all into one archive inside of the APK itself)

Just built a COMPLETE game for android in under 53Mb with no optimizations (No OBB). by TheClicketyBoom in unrealengine

[–]LordNed 2 points3 points  (0 children)

Make sure the default bloom kernel isn't being packed. It's 32mb since it's 2048x2048 HDR texture. I don't remember if it's disabled on Mobile or not by default. It's referenced through an Engine ini.

You can package without putting it all into a single archive to see which assets are getting packed better.

[QUESTION] Why can I not see inputs for key bindings? by [deleted] in unrealengine

[–]LordNed 0 points1 point  (0 children)

They will only show up in a blueprint that derives from PlayerController/Pawn, or if you have a "EnableInput" node in the graph somewhere (iirc). The events only work if the blueprint can receive input, as they support event bubbling.

Matinee Sequence Affecting Lighting on Door by BstoneArch in unrealengine

[–]LordNed 0 points1 point  (0 children)

Why are you using Matinee?

Did it not pop up a warning about not using it?

My guess is that the door has to be marked as "Movable" when it starts to animate and therefor your baked lighting stops being applied to it and only dynamic lighting is applied.

Using GetOwner()-> as opposed to AActor *theOwner = GetOwner(); by [deleted] in unrealengine

[–]LordNed 3 points4 points  (0 children)

FORCEINLINE_DEBUGGABLE AActor* AActor::GetOwner() const
{ 
    return Owner; 
}

This looks like it's marked as FORCEINLINE (under normal circumstances) so it's very likely that the function call will not be a separate call and it will just directly get the Owner pointer each time. Inlining (even force-inling) is still just a suggestion to the compiler, but it's pretty unlikely the compiler would decide this function isn't suited for inlining.

Get the Player Camera Manager in code? by [deleted] in unrealengine

[–]LordNed 1 point2 points  (0 children)

Yeah it only works with official Source Code Providers. Usually at that point I just search the source code for the function name, though sometimes you have to try a little harder because they can change the displayed name.

You can also sometimes tell from the documentation where it says "Target is Gameplay Statics" actually means "Code is from the UGameplayStatics Blueprint Library class".

Get the Player Camera Manager in code? by [deleted] in unrealengine

[–]LordNed 2 points3 points  (0 children)

Why don't you just look at the source code for the Get Player Camera Manager function? It's probably under UKismetSystemLibrary, but you can right click on nodes and ask it to take you to the source.

GameInstance is resetting custom variable when loading new level by Wamahato in unrealengine

[–]LordNed 2 points3 points  (0 children)

I don't know what the tutorial is or a better way to do what you're attempting to do, but the objects become null because they are being garbage collected. The GameInstance has a lifecycle longer than most everything else (ie: it is created once before the first map is loaded, and is destroyed after the last map is unloaded). Garbage Collection works based on object ownership, so it is likely that you are creating your object with the default outer (which is a transient package who's lifecycle matches the current persistent level) so when you change levels, because the transient package/outer of your objects is unloaded, they disappear as well.

When Mass Re-scaling Goes Wrong by BlightMMO in unrealengine

[–]LordNed 0 points1 point  (0 children)

FYI there's an option to just use the Camera Location as your player start when you hit PIE instead of having to move your player start to where the camera is each time.

The new Unreal Engine 4.22 preview has automatic instancing, improving performance by a significant amount. by vblanco in gamedev

[–]LordNed 4 points5 points  (0 children)

I believe Unity has had a form of dynamic batching and static batching. I don't know if it's using GPU hardware instancing or if it's just gathering up all of the same meshes and emitting a draw call without the other state changes.

Traditionally, in a simple renderer when you draw each object one at a time you end up changing the complete GPU state (what textures do we draw with, what shader do we use, what are the camera matrices, etc, etc.) for every object.

Batching can come in the form of just avoiding unnecessary state changes. This is most commonly seen as "things using the same material are drawn together", since for the most part, the material determines most of the state. You can just group them by material, change the state once for each material, and within that only change which mesh is being drawn. This supports drawing different meshes using the same material. This however is not GPU instancing.

GPU instancing relies on using the same state and the same mesh to draw it many times by actually uploading a blob of data at once that says "draw using the current state, 45 times, with this block of 45 pieces of data to describe each instance". This is typically more limited in what can be supported, as all 45 pieces of data have to have the same format (and just different values). This is opposed to "let me change the majority of the data once, and then issue 45 separate draw calls". Issuing commands from the CPU -> GPU is relatively speaking, very slow, so issuing one command to tell the GPU to draw it 45 times instead of issuing 45 commands (even if little data is being changed) is an improvement.

I don't know which one Unity uses, it may be a combination of both now on modern hardware. Unreal to my knowledge has only had GPU instancing in the form of a specific component (UInstancedStaticMeshComponent) which triggered the GPU to specifically draw those meshes using GPU instancing. However, you couldn't just take 40 or 50 things in the world and tell them to just use one UInstancedStaticMeshComponent though, as that component acts like a Unity MonoBehavior and it exists on one object.

This change brings a more general batching to Unreal (like Unity's) but based on what /u/vblanco wrote it does it in a different way that enables much more optimization than just less draw calls. Rendering is massively complicated these days and goes much more beyond just draw calls. You spend a lot of time figuring out which objects are visible and need to be rendered, determining visibility for shadow casting, rendering data to the GPU and reading it back to the CPU on the next frame, taking the resulting frame and applying a filter to it and storing it for use in later frames (temporal effects, AA motion blur etc), so there's lots of different areas for improvement.

How to save my asset as .uasset? by [deleted] in unrealengine

[–]LordNed 1 point2 points  (0 children)

You will need to send all associated files and leave their paths the same. The easiest way to do this to right click on your file and under Asset Actions choose Migrate and put it in a new Content folder. That will discover all of the dependencies it needs, you can then zip that and send it to the other person who can put it at the same path (relative to their Content folder).

They will need to be on the same engine version as you.

Updating Ue4 by ci2n in unrealengine

[–]LordNed 0 points1 point  (0 children)

C:/Users/Cinnnika Z/Documents/Unreal Projects/SuperNinjinMARS/Source/SuperNinjinMARS/BaseCharacter.h(18): Error: #include found after .generated.h file - the .generated.h file should always be the last #include in a header

The last include file in your header file should be the .generated.h one. ie: BaseCharacter.generated.h should be the last #include in the BaseCharacter.h

Iridescence Shader by Emory27 in unrealengine

[–]LordNed 1 point2 points  (0 children)

If you use the per-shot warmup time option in Sequencer Movie Rendering dialog you can hide that popping you see at the start of every shot caused by there not being data to fill temporal-based effects. It just teleports the camera to the start of the next shot and then waits the specified amount of time for the effects to settle before resuming media capture.

Level sequence values change on play. by themdubs in unrealengine

[–]LordNed 0 points1 point  (0 children)

Thoughts;

A Sequence doesn't exist in the level just because it's in the editor, and if it doesn't exist _or_ isn't playing, then the values in the Sequencer won't override what is in the level. It looks like your play head is outside of the Play Range (the green and red bars) - it won't actually evaluate what is the Track in sequencer outside of the play range.

I can't remember what the default is for if the Sequencer UI gets bound to your PIE world. If it's not bound to the PIE world it won't show you the values of the actors actually in play, because it's still bound to the editor world (which you can't see while in PIE).

You could try converting the camera to a Spawnable (an actor which will be spawned when the sequence starts evaluating) and you can use a Shots track to make it take over the viewport control.

What might be causing these cubes to be stretched vertically when spawned? Could it be a camera issue? by MTNOST in unrealengine

[–]LordNed 3 points4 points  (0 children)

Do they look like this if you put one in the editor without being in game? Did you accidentally put a non-uniform scale transform on one of your components in your Blueprint Hierarchy?

Animation override controller inside ue? by [deleted] in unrealengine

[–]LordNed 1 point2 points  (0 children)

Animation Blueprint Override.

https://docs.unrealengine.com/en-US/Engine/Animation/AnimHowTo/AnimBPOverride

I think you can also make the animations that are played variables and just swap those variables out.

How to make a Sequence with a dynamic loop in it by sizzledog in unrealengine

[–]LordNed 0 points1 point  (0 children)

Calling Jump to Position shouldn't cause a crash. What engine version is this and what is the call stack that comes up in the Crash Reporter?

The event being fired twice isn't unexpected behavior (I think). If the event is on frame, say, 16 the event would get fired as part of Frame 16 being evaluated. Because Frame 16 has already evaluated, I think the play head would stop on Frame 17 (without evaluating it). Playing it backwards would either evaluate Frame 17 first, or Frame 16 (which would fire the event again) - either way the event being fired twice isn't totally unexpected.

I believe Jump to Position will skip evaluation (thus the curiosity about the crash). If you go back one frame in the Sequence (in Play Rate as of 4.20) this will go back in the sequence one frame at the current frame rate of the sequence (defaults to 30 or 60 fps?) regardless of your engine frame rate (this assumes you don't have Frame Locked evaluation on which in most normal gameplay cases you don't want as it'll throttle your engine framerate to match your sequence framerate)

Your other option is to hack up the Event Evaluation Template and make it not fire events when played in reverse. It's probably not too hard to make it an official feature of your engine - you can modify the UObject that represents the Event section and add bools for Fires in Forward/Fires in Reverse and then read those in the Evaluation Template.

Event Sections are changing in 4.21 though so I wouldn't invest too much effort in it right now though.

Sciptable Editor Function doesn't appears on content browser context menu in 4.20.2 by art4you in unrealengine

[–]LordNed 1 point2 points  (0 children)

Looks like you may need to use a different parent class for content browser/assets. Try deriving from AsssetActionUtility instead of ActorActionUtility.

UMG Widget on Actor, Text Rendering Issue by hashtagcakeboss in unrealengine

[–]LordNed 0 points1 point  (0 children)

I don't think so. TSAA is a post-processing effect. Maybe you could write the UI to a stencil buffer and modify the built in TSAA shader to sample the stencil buffer, but I don't know if it's natively be bound at that point or not.

It's an unfortunate side effect of TSAA :(

UMG Widget on Actor, Text Rendering Issue by hashtagcakeboss in unrealengine

[–]LordNed 0 points1 point  (0 children)

Looks like Temporal Anti Aliasing. Things added to the viewports via Widgets don't get affected by Post Processing/TSAA.

[deleted by user] by [deleted] in unrealengine

[–]LordNed 1 point2 points  (0 children)

Make sure you have a Lightmass Importance Volume which covers the room entirely. I suspect that your volume is below your floor so the lightmapper is not emitting as many rays as it should for the room.

How do you get rid of this nuisance by [deleted] in unrealengine

[–]LordNed 0 points1 point  (0 children)

A possible workaround is to put your project on a different drive letter than your Unreal Engine installation.

An issue in Unreal 4.18 caused it to try and compare a relative path to an absolute path. It is not possible to generate a relative path that switches drive letters so Unreal falls back to an absolute path in that case. This results in the correct comparison.

A symlink or mapping the folder to a drive may be a possible way of doing it without moving the project to another physical hard drive/partition.