#engine-source

1 messages ยท Page 24 of 1

spiral mortar
#

Different projects

elder falcon
#

I mean

spiral mortar
#

Cache is shared per project

elder falcon
#

before it was different projects too

#

maybe it breaks when you have 2 installs of the same engine version?

spiral mortar
#

But maybe it's based on the solution name or hash or smthg weird

#

Might be

elder falcon
#

let's try opening that one again then

spiral mortar
#

Actually now that you say it that's the issue I have too

#

4.19 vs 4.19-texture arrays

elder falcon
#

well hope it's not going to take another 3 months before the next update to va

spiral mortar
elder falcon
#

this seems like the kind of bug deserving a hotfix

spiral mortar
elder falcon
#

hm

#

parsing the launcher version seems to take significantly longer than the others

spiral mortar
#

Hehe

elder falcon
#

I wonder if it's because it's fucking up the symbols

#

so now it's far slower because there's already 1 million things in the cache

#

omg it's still going

spiral mortar
#

Usually takes around 5 mins for me

elder falcon
#

it finished

#

so I have 3 test solutions now

#

the action rpg thing using launcher 4.20

#

my project on 4.19

#

and 4.20 source build

#

the first 2 are not fucked up

#

after parsing all 3

#

the 4.20 source build has loaded the symbols of the action rpg solution

#

well

#

the engine parts of it

#

not the project symbols

elder falcon
#

is there a simple way to disable building a project with source build building the shader compiler every single time? kind of pointless

wispy shuttle
#

@elder falcon Launch your project directly from its .uproject shortcut. That shader compiler not built warning happens almost every time and isn't accurate, you could also check the box to not show it again when it appears if you still want to launch your game through VS (although not recommended as it's prone to crash frequently).

elder falcon
#

not warning, every time you build a project using a source build in vs it first builds the shader compiler (and after 2 seconds figures out it doesn't need to be built since it already is)

stable hemlock
#

while installing prerequisites for source 4.20, it restarted my pc O_o

#

never happened before

next mason
#

I can't load any maps in 4.20 - stuck at 75% - or even make my own besides the default one that I have. Is anyone else experiencing an issue like this?

remote badge
#

@next mason maybe its shader compilation? I'd check logs

obsidian yoke
#

my PC also restarted while installing prequisites ๐Ÿค”

elder falcon
#

same here

elder falcon
#

rebuilt uht and now it works

stable hemlock
#

problem here. the following code in .Build.cs now produces an error:

PublicIncludePaths.AddRange(
            new string[] {
                "VaRestPlugin",
                "VaRestPlugin/Public"
                
                // ... add public include paths required here ...
            });

it now thinks this path is supposed to be pointing to engine and not to project, which is wrong:
https://i.gyazo.com/e87ee1f82edf33bf2767ba361293cb27.png

elder falcon
stable hemlock
#

PublicIncludePaths are broken too

trail peak
#

why does UE4 restart my PC while installing prequisites???

stable hemlock
#

does anybody know what loberoughness changed to in the source shaders?

unborn bay
#

why does UE4 restart my PC while installing prequisites??? because windows...

hollow kernel
hollow kernel
#

Afaict, so long as VS2015's updated to update 3 it should work fine.

unborn bay
#

it should work fine. I'm wondering if I can use clang and vulkan for everything . why use directx and visual studio at all?

crude oriole
#

What's the biggest impact of building from source over the binary build?

unborn bay
#

With windows I'm building with source because spatialos requires it. With Linux you have to build ue4 from source.

manic tide
#

Hi guys, I have a problem where the WorldGridMaterial.uasset is failing to get recompiled when trying to start the editor. This happens after an upgrade from 4.14 to 4.17. What can I do to solve this?

stable hemlock
#

had to install new visual studio for 4.20 and everything works fine. But my older projects on 4.19 won't build now

#

anyone had this?

#

somehow both old and new winsdk are being used?

gray bay
#

looks like you didn't install the VS modules for C++ and Windows development

#

they are now optional. just installing VS is no longer sufficient

#

go to Start Menu -> Apps and Features -> Visual Studio -> Modify

#

select and install the additional components

#

if you're building some of the C# programs, you'll need the C# component, too

stable hemlock
#

i simply updated VS2017 and I am building 4.20 engine and 4.20 projects fine

#

what i can't build is 4.19 projects now

#

so I don't think it can be VS modules?

#

what it looks like is two versions of winsdk being included into build paths

#

and conflicting

wanton tartan
#

@stable hemlock I had to revert my project back to 4.19 as well, and I'm also stuck unable to build. My error is different than yours, but maybe related

#

2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\INCLUDE\vcruntime_new.h(67): error C4577: 'noexcept' used with no exception handling mode specified; termination on exception is not guaranteed. Specify /EHsc
2>UnrealBuildTool : error : UBT ERROR: Failed to produce item: F:\ue_project_buffer\ProESports\Binaries\Win64\ProESportsClient.pdb
2>Total build time: 6.82 seconds (Local executor: 0.00 seconds)
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets(44,5): error MSB3075: The command "C:\ue\419-UETOPIA\Engine\Build\BatchFiles\Build.bat ProESportsClient Win64 Development "F:\ue_project_buffer\ProESports\ProESports.uproject" -WaitMutex -FromMsBuild" exited with code 5. Please verify that you have sufficient rights to run this command.
2>Done building project "ProESports.vcxproj" -- FAILED.

#

Any idea what would cause this to suddenly happen? Before the 4.20 update, this was working.

stable hemlock
#

@wanton tartan i solved it by regererating project files for the engine, rebuilding it, then clearing out intermediate etc in the project, and rebuilding the project from scratch

formal flower
#

Some coworkers will be switching over to UE4 from Unity versions that only support vs2015. Since they're using paid versions of VS, they'd like to keep just one VS (2015) installed.
Assuming it's not much work, could anyone here give me some heads-up on what changes need to be made to get 4.20 to work with vs2015?
I've only got 2017 installed, so can't reproduce the issue and figure out what needs to be done to fix it without installing 2015.

formal flower
#

For 4.17~4.19 only thing I could find is disabling squiggles and disabling errors from showing in the error list. Wondering what else needs to be done for 4.20

unborn bay
#

Look at this post above made by : "kusokuso1 - Last Friday at 3:21 AM
Afaict, so long as VS2015's updated to update 3 it should work fine." @formal flower

#

Just confirm it worked with that user I compiled with 17 and clang 5 for linux

#

Oh wait sorry he did 4.19

#

ya you can do it 2015 update 3

#

"Visual Studio 2015 is still being supported, but requires some configuration. Additionally, weโ€™ve added support for the Windows 10 SDK. " it say's it half way down the page

formal flower
#

@unborn bay Thanks. Ah, that's actually my other, work account. Sorry for the confusion.
Ah cool. Thanks. I wonder what they mean by configuration. Wonder if it's just the squiggles and the error log stuff. I'll dig around for that. Thanks a lot!

unborn bay
#

I don't se what version of Windows 10 SDK check with microsoft i guess

ocean flax
#

I have 4.19, 4.20 from the launcher, and a clone of each branch. I've been able to build my projects accordingly. Have you built the engine itself in the past or are you using the Game Launcher?

stable mantle
#

hello, could you please help with understanding how and where in the source the unreal c++ becomes javascript for HTML5?

full sleet
#

it's not trivial to generate a flow chart, I suggest looking at a simple example with emscriptem

#

note date, it may be stale

elder falcon
#

p sure it uses webassembly and never "becomes javascript" ?

stable mantle
#

@elder falcon thank you, and where can I find the webassembly, please? I mean, for instance, there is the c++ code for the Media module, but where is the webassembly for that?

low dust
#

@hollow kernel VS2015 is still default option for 4.19 when building from source

#

(and yes, it works just fine)

#

for 4.20, VS2015 works as well (I compiled once with it) but issues arise when you haven't yet set VS2015 as default compiler and UE4 tries to compile things on VS2017 on c++ game projects

#

in my case it corrupted the whole engine build so badly that even rebuild couldn't fix it

#

it's kinda silly that UBT can't detect what the engine was compiled with before it stuffs everything to the default compiler

spiral mortar
#

@stable mantle It's transcompilers

#

Basically translating C++ to webassembly

#

Or smthg like that

stable mantle
#

ah, a I see, thank you @spiral mortar I still don't have a clue on how to get media (both video and sound) in HTML5 ๐Ÿ˜ƒ

brisk silo
#

@spiral mortar its a LLVM backend

#

ue4 already supports LLVM for PS4 and switch, so they essentially switch the backend layer to generate webasm instead of ps4 machine code

#

ive tried to experiment a bit with that stuff myself. Its super interesting to be able to compile code for the web. Sadly you are quite limited in a few things

#

for example, no threading whatsoever

#

wich fucks extremelly hard with any kind of asset loading

#

what would be truly interesting, is webasm in ue4 for game scripting

#

that would allow nearly every lenguage you want to compile for ue4 on scripting

spiral mortar
#

Hehe

#

There's LLVM IR -> C++ though right @brisk silo?

brisk silo
#

no

#

there is some LLVM IR to C

#

but its like beyondhorrible C, and i think that backend is near abandoned if not fully abandoned

spiral mortar
#

Right indeed

brisk silo
#

main issue is that LLVM IR is more low level than C

#

so there are a bunch of things that are very complicated to translate

spiral mortar
#

Yep

#

And might as well link directly

brisk silo
#

well, there IS a use for that

#

platforms that only have a C compiler

spiral mortar
#

Ah?

brisk silo
#

and they are weird as balls chips

spiral mortar
#

Right lol

brisk silo
#

at the moment there doesnt seem to be a proper "embeddable JIT" for webasm

#

but if a popular one appears, having that in UE4 would be pure gold

#

i would love to be able to use Dlang or Rust on UE4

spiral mortar
#

Interesting

brisk silo
#

mostly D lang

#

becouse D lang compiles ultra fast

spiral mortar
#

I don't get it though

brisk silo
#

and its like "c++ but done sanely"

spiral mortar
#

Can't you do that already

brisk silo
#

no

spiral mortar
#

Like D compiles to LLVM IR right?

#

Or not at all

brisk silo
#

it does compile to LLVM

#

there are 2 compilers

#

there is one compiler that goes straight to machine code, and an LLVM compiler

spiral mortar
#

Ok

brisk silo
#

also Jai i think (the jonathan blow lenguage)

spiral mortar
#

Well can't you use that then?

brisk silo
#

compiles to LLVM but has a assembly backend

#

how do you attach that to ue4?

spiral mortar
#

Well idk

brisk silo
#

clusterfuck of epic proportions

spiral mortar
#

But it's IR in the end

#

Soooo

#

๐Ÿ˜…

#

Like if you use the USmthg stuff as annotations

#

You could generate bindings or smthg

brisk silo
#

isnt that what the python backend does?

spiral mortar
#

idk

#

I guess

clear nacelle
#

is there a place in the code that is called every time a new map is loading no matter what the travel method is?

#

im trying to call an event in gameinstance from there to trigger a load screen

stable mantle
#

@brisk silo and @spiral mortar thank you and sorry for the LLVM naive question. As far as I understood you, the C++ gets complied to a sorte of almost machine code that runs on the browser? If so, would it be feasible to integrate, for instance, media element (https://www.mediaelementjs.com/) by getting it's machine code for, lets say, video playing, and putting it somehow in the UE4 web compilation? Still, I am confused about how c++ becomes javascript. I can't visualise where this happens in the dource code

#

*source code

spiral mortar
#

@stable mantle it doesn't happen in the source code

#

When you compile for Windows/Linux/OSX you use a compiler (MSVC/clang)

#

Here you use a compiler too that outputs webassembly

#

So I'm not sure you can do what you want with that js thing, the same way you can't really add assembly directly to C++ code

stable mantle
#

i see, thank you

#

the only option I find then is to edit directly the javascript on the html file of the deployment?

#

use <video> etc tags in a smart way?

#

maybe communicate between JS and C++ when necessary to make it work?

spiral mortar
#

Seems really complicated

#

What are you trying to do?

stable mantle
#

I have a videotexture on the Unreal side. I have already the communicating functions between c++ and JS... I dont know if I can add a video with mediaelement.js on the JS side and then send iit to the material on the C++ side.. and even if I managed to do so.. how could I avoid the massive copying of data? I mean, could I "send the video" through the functions without duplicating its data?

spiral mortar
#

I don't know anything about that ๐Ÿค”

#

But pretty sure you can already do that in UE directly?

stable mantle
#

yes, I also have that feeling, it doesn't make sense.. everything works, the Media framework is beautifully coded... am I missing some detail maybe and that's why I cant get my videos to play on HTML5 deploy?

#

also, the new audio framework... its beatiful.. but I can't get the sounds on the HTLM5 deployment too

#

I dont even know what to upt in HTLM5Engine.ini to get the new audio framework

#

*what to put

spiral mortar
#

I guess you should ask in #web

stable mantle
#

already did, no answers yet ๐Ÿ˜ข

stable hemlock
#

I make the download from github the unreal engine 4.19.2 and now i want upgrade my engine to New version its possibel upgrade to New version i dont want do everytime the New version its realese

#

I download from github the file in rar i think

low dust
#

please keep it to english on public channels

#

if you want to talk in native language, take it to DMs

stable hemlock
#

@stable mantle i think to make a dedicad server i need use the engine by the source

stable mantle
#

ah, sorry, maybe, I don't know, I have no idea about server stuph

low dust
#

this kinda pains me

#

occasionally when I do clean reset (wipe all files from git folder expect .git and do "git reset --hard HEAD"), I still get some modified files once it's done

#

I think it's a result for UE4 repo automatically fetching stuff on reset

#

this is typical result then: ```
D:\Dev\UnrealEngine>git status
On branch 4.20-GameWorks
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

    modified:   Templates/TP_Flying/Config/DefaultInput.ini
    modified:   Templates/TP_ThirdPersonBP/TP_ThirdPersonBP.uproject```
#

I have no idea why those two template files get modified

#

when I look at the diffs, they are just same files with everything added again, leading me to think it's some char encoding diff

#

it's probably some issue originating from the nvidia gameworks repos tho

#

what's even more funny, that goes away if you just call "git checkout" and "git reset --hard HEAD" like 2 times in a series, just once will not make it go away ๐Ÿ˜„

low dust
#

there probably isn't any app or way out there where one could directly modify the files through the commit data? like edit the commit lines directly?

#

I'd need to get half of the changes from one commit into another commit, it would be dead simple if I could just cherry pick the actual linechanges ๐Ÿ˜„

#

having to go through actual files will make it tedious

wicked whale
#

the solution to this is git -clean right ๐Ÿค”

low dust
#

git clean -fd ๐Ÿ˜„

#

I use that sometimes too but the issue with that when using UE4 is that it wipes some dependencies as well

#

so then you need to run setup again and then you might get those same issues back

#

if this were plain basic git repo, issues like these wouldn't exist (if you are talking about the screenshot I posted)

#

it all originates from having to use these automated tools that download x amount of files from remote places

#

hmmm, apparently you can do commit splits

lavish topaz
#

anyone found a fix for this type of crash? [File:E:\\GB\\Engine\\Source\\Runtime\\Windows\\D3D11RHI\\Private\\D3D11Util.cpp] [Line: 182] Unreal Engine is exiting due to D3D device being lost. (Error: 0x887A0006 - 'HUNG')"

ocean inlet
#

That was a bigggg issue in 4.14. Later versions reduced the chance of that happening but i'd also suggest updating your GPU drivers if you haven't already @lavish topaz

lavish topaz
#

@ocean inlet we are on 4.19 and I myself cannot replicate this but we get probably 100 crash reports a day from this with NVIDIA devices or integrated intel graphics

ocean inlet
#

Hmm, drivers all up to date?

edgy hazel
smoky hedge
#

Hello every one guys, thx for helping. Sry, for my english it's not my mother tongue language. I start learning unreal engine 4 and try to write simple dialoge system. In tutorial what i'm learning all lesson will present for me using .csv file created by excel. But when i create structure and try import .csv file just drop to me exception expected column "" not found in input. Thx for any helping

#

what a kind of problem it will be?

brisk silo
#

so i just did the mother of all hacks

#

and implemented a skip ticking behavior on the TickFunction, the core one

#

i will have every actor tick at half framerate except the VR hands and head

spiral mortar
#

@brisk silo neat lol

brisk silo
#

still compiling

spiral mortar
#

Nothing broke?

#

Ah

brisk silo
#

the change is on EngineBaseTypes.h

#

so everything needs to rebuild

spiral mortar
#

Isn't there a way to do it without engine change?

#

Using the actor tick parameters or smthg

brisk silo
#

you could use the already built in tick time thing

#

but i wanted to have code that very specifically ticks only 1 out of every N ticks

#

and its randomized

#

i mean, randomized as offset

#

so not all actors tick at once

spiral mortar
#

I see

brisk silo
#

50% tick on even, and 50% tick on odd

#

i did that on the characters and it was an upgrade

#

im now checking if it can be done on EVERYTHING by default

#

except the player hands

spiral mortar
#

So a bit like checkerboard rendering

brisk silo
#

yes

spiral mortar
#

I guess you're calling with a different Delta time etc

brisk silo
#

yes

#

gets a x2

spiral mortar
#

Ah

brisk silo
#

if its one out of every 4 frames, then it gets a x4

#

thats fine becouse im completely vsynced, being vr

spiral mortar
#

Shouldn't you store it?

brisk silo
#

so its basically locked framerate

spiral mortar
#

Ah

#

Right

#

So minor errors

brisk silo
#

i did 30 fps characters running in the 120 fps game and worked great

#

but when they got close to you you would see them jitter lol

brisk silo
#

sweet

#

it works

#

gonna compile it now for ps4

spiral mortar
#

๐Ÿ‘Œ

brisk silo
#

it works

#

a reduction of 20 something percent

#

tick times are lowered from 8-9 to 6-7

spiral mortar
#

Nice!

brisk silo
#

gonna see if i can lower animations too

spiral mortar
#

Which actors were ticking?

brisk silo
#

enemies and guns

#

not really that much

#

but now its a cost cut in half

spiral mortar
#

And couldn't use timers instead?

brisk silo
#

no

spiral mortar
#

๐Ÿค”

#

Why that?

brisk silo
#

whats the point of a timer that executes every frame?

#

what i want is the Tick

spiral mortar
#

Well a timer executing every 2 frames

brisk silo
#

sadly (and this is a fucking pain) debugging this is super hard

#

becouse its on Release

spiral mortar
#

Right

brisk silo
#

my current debug is a frame time log that i added myself

#

using std::chrono

spiral mortar
#

Where do you output it?

#

Debug screen?

brisk silo
#

the ps4 has a console

#

console output

#

i just printf

spiral mortar
#

I see

brisk silo
#

gonna now split it on the different tick sections

spiral mortar
#

Doesn't work when you have lots of counters though

brisk silo
#

im aware

#

but all of the STAT stuff is compiled out

#

becouse Release

spiral mortar
#

Oh right

brisk silo
#

and if i forced it, it would slow down stuff

#

stat unit is also worthless even if that one does work. Its not very accurate

spiral mortar
#

Stat stuff is per frame right?

#

Always kinda hard to understand the stats when doing multithreaded stuff

brisk silo
#

damn this is interesting

#

very interesting

#

this is a perf capture in pc

#

from stat tickgroups

#

pre-physics 3 ms, duringphysics (ai) 1 ms

#

meanwhile on ps4

#

first number is "pre physics", then "during physics", then" after physics", and then"all"

#

times since the first clock

#

you can see how instead of a 3 to 1 ratio, its like 95% + on pre-physics

#

nativization + release optimizations

#

also this puts clear the power differential...

#

ps4 why you so trash

#

might be benchmarking wrong tho

spiral mortar
#

What's pre/during/post physics?

brisk silo
#

the tick groups

spiral mortar
#

Oh

brisk silo
#

but i think there is a flaw on the benchmark code, im only grabbing the last world

#

wich might be why the numbers beetween the first and the last are so close

#

not being able to run the stat startfile stuff is pain

spiral mortar
#

Isn't ps4 CPU being 3 times slower than a PC one expected?

brisk silo
#

also, 3 ms tick time vs 8 ms tick time on a unoptimized editor build vs a release build

spiral mortar
#

Single core performance that is

brisk silo
#

its actually more like 5-6 times

#

the 3 ms is on "unoptimized" editor build

spiral mortar
#

Which CPU?

brisk silo
#

kind of puts in perspective just how bad ps4 is

#

ryzen 1700k

#

btw this is on ps4 PRO

spiral mortar
#

So not amazing single core perf

brisk silo
#

its barely a few things moving come on

spiral mortar
#

Right

#

Can you see what's exactly taking time?

brisk silo
#

no

spiral mortar
#

Cuz release

brisk silo
#

yup

#

on PC i can, of course

#

but its not the same

spiral mortar
#

Can't you do a debug build?

brisk silo
#

it will run twice slower

#
  • another twice when start startfile
spiral mortar
#

Ah

brisk silo
#

the logging makes it not accurate

spiral mortar
#

I see

#

Sucks

brisk silo
#

i wanted to use the ps4 profiling tools

#

but turns out that the sdk is not compatible properly so it doesnt work

#

maybe when i upgrade to 4.20 it works

spiral mortar
#

lol

brisk silo
#

so the only profiling tools i get are a random sampler (not accurate whatsoever) and a "thread view"

#

wich of course tells me about the main thread but thats it XD

#

ok this are much better numbers

#

again, its pre-during-post physics, and 4th number is "total tick time"

spiral mortar
#

What did you do? Rebooted the PS4?

brisk silo
#

no, i fixed the code

spiral mortar
#

lol

#

The profiling code?

brisk silo
#

yes

spiral mortar
#

So the old "change it til it looks good"

brisk silo
#

fuck GC

#

blue is the FPS

#

red is "time tillframe finished", wich jitters for some reason. But its perfectly fine

spiral mortar
#

Hehe

brisk silo
#

seems like the RNG ticking throws the frames a bit more

#

it doesnt have this much jitter without the rng physics or at less FPS

#

but becouse im at the absolute fucking limit (and also the only madmen in the world doing 120 fps on ue4) then i guess it makes sense

spiral mortar
#

Oh that's psvr

#

(brain turning on)

#

(PS4 + vr => psvr)

brisk silo
#

it is psvr

#

i want to be the only shooter in PSVR that runs at 120 fps

spiral mortar
#

That must be hard to use

brisk silo
#

mostly for bragging purposes, really

spiral mortar
#

Holy

brisk silo
#

will be neat for portfolio

spiral mortar
#

Indeed

brisk silo
#

im not kidding with the "only shooter at 120 fps"

#

also the only game using either unity or ue4 at 120 fps

spiral mortar
#

Does UE use stuff like checkerboard rendering?

brisk silo
#

no

spiral mortar
#

Would be useful here right?

brisk silo
#

nope

spiral mortar
#

Or you are CPU bound

brisk silo
#

what would be useful is gradient resolution

#

well...

#

both

spiral mortar
#

Gradient resolution?

brisk silo
#

the edges run at lower resolution than the center

spiral mortar
#

I see

#

Checkerboard doesn't work well with VR?

brisk silo
#

this is how it runs when there is nearly nothing in the game

spiral mortar
#

Neat

brisk silo
#

mostly just bullets and some FX

#

i think epic should provide an option to use "lower overhead" stats

#

that work on release game with optimizations

#

maybe something like Stat tickables and other "very common" ones

#

not the deep absolutely everything ones

spiral mortar
#

Like only enabling the one you need?

brisk silo
#

more or less

spiral mortar
#

Stats overhead is really that high?

brisk silo
#

huge

#

specially when recording (stat startfile)

#

in PC, the overhead is not that big

#

but on console?? holy shit

#

literally halving the fps

#

running the game at LITERALLY 30 FPS is not very worth for stats

#

you also cant rely on it too much. The stats kind of modify the code flow a bit, so you cant rely 100% on them

#

ive found that they can be not as true as you would think

#

they do give a good idea tho

#

specially on Pc

spiral mortar
#

I guess those 4 MB of cache get easily trashed too

brisk silo
#

the half framerate tricks only really work for 120 fps tho

#

in pc, 90 fps, it would cut to 45

#

wich can probably be choppy

#

but if you use them as LOD... ๐Ÿค”

#

i think thats what Epic does

spiral mortar
#

So the psvr is 120 Hz?

brisk silo
#

it is

#

most games run at 60 fps and reproject to 120

#

a bit like how oculus and vive run at 45 fps and reproject to 90 when they cant reach 90 fps

spiral mortar
#

Right

#

How's psvr compared to oculus/Vive?

brisk silo
#

screen is decent

#

its also confortable

#

tracking is complete fucking garbage

spiral mortar
#

lol

brisk silo
#

sony wanted to cheap out and use the camera they already had

#

and surprise

#

turns out a 6 year old camera, cheap camera, isnt up to the task

spiral mortar
#

Hehe

brisk silo
#

and the tracking algorithm takes 1 milisecond to run

#

as a compute shader

spiral mortar
#

Is that bad?

brisk silo
#

yes

#

its really fucking bad

#

the hand controllers, the moves, are also really bad

#

becouse they wrent designed for vr

#

so they arent up to the task, again

#

meanwhile WindowsMR headsets cost less than a psvr + hand controllers

#

and are better in absolutely every metric

spiral mortar
#

in the us

brisk silo
#

sony cheaped up REALLY hard

#

hand controllers and camera are from the overstock they had from when they went to compete against the wii

#

btw, just upgraded the frame skipper

#

now it affects components

#

including particle systems

#

so particles now also run at half framerate

spiral mortar
#

But doesn't matter cuz 120

#

๐Ÿ‘Œ

brisk silo
#

yeah 60 fps particles are still perfect

#

keep in mind the important part. graphics, and hand controllers/head do run at 120

#

i will combine with with the significance manager to have framerate LOD

#

have the enemies update at 30 fps in the distance,and make the ones close to you 120

#

the downside of the rng system

#

it obviously doesnt balance perfectly, so the frames spike up/down a bit

final quarry
#

anyone have a hacky way of forcing a runtime reset of Input.ini and reloading it?

brisk silo
#

reduced spikiness

#

turns out i was being a fucking idiot

#

and didnt randomize the components half-tick.

#

so essentially on every Odd frame, every single component ticked (all anims, all fx, etc). Then on every Even frame, nothing ticked

spiral mortar
#

lol

late moss
#

does any knows where is -Port= parsed from command line. I ran into a interesting problem where ue4 treats -something_port=1337 as game port (-port=). That's really annoying

elder falcon
#

wtf is this

#

so there are at least 2 more branches not mirrored in github, dev-physics and dev-destruction

#

does anyone know what apeiron is

elder falcon
#

it looks like apeiron is some kind of physics engine?

#

and now another abstraction layer has been added so you can switch between physx and that?

#

huh

#

so epic wrote their own physics engine?

thorny silo
#

There is a KOTOR remake called Apeiron, which is being done in UE4.

elder falcon
#

that is not it

#

a custom physics engine, called apeiron, was added with that commit above

pearl fulcrum
#

was about to comment what jarno said lol

elder falcon
#

but it's a weird physics engine that doesn't support scene queries

final quarry
#

maybe its the rumored physx deterministic mode coming to ue4 eventually

#

whatever it is, its not trademarked in the us

runic laurel
#

The UE4 crash popup thing (send report etc) doesn't launch after a crash when you start the editor in VS by debugging (F5), is this normal?

spiral mortar
#

Yes cuz it's annoying

runic laurel
#

Having crashes loose in the engine because of that seems annoying too. ๐Ÿ˜›

spiral mortar
#

@runic laurel Why because of that?

runic laurel
#

Because you would have to send a bug report and include the crash files (if it's an engine crash and not your own messup), that seems a lot more annoying than just writing some lines and clicking send.

#

Plus it probably ends up in a different place on the Epic side so that isn't great either.

spiral mortar
#

If you're debugging it's 99% of the time a crash due to you

#
  • I have some doubts about the percentage of bug reported through this tool epic actually look into
full sleet
#

do a repository clean

#

sometimes it might even require a reboot

elder falcon
#

you're building release branch?

low dust
#

@stable hemlock step one, read the instructions

#

you probably skipped the setup.bat?

clear nacelle
#

i want to add it to 4.19

elder falcon
#

you can't

#

your only chance is for someone with perforce access to post what that single fix is

clear nacelle
#

i think i may have actually found it

elder falcon
#

I think someone asked for this exact issue a while back and someone posted it

low dust
#

the fix commit was linked on that issue report already

#

lol

brisk silo
#

fucking lol

#

vulkan confirmed

#

this is very good

#

if they are using vulkan in fortnite we can expect mayor gains on it

spiral mortar
#

FORTNITE SPECIFIC DO NOT MERGE TO ENGINE PLS -> lol

low dust
#

so, got this now cpp C:\Dev\UnrealEngine\Engine\Plugins\GameWorks\Flex\Intermediate\Build\Win64\UE4Editor\Development\Flex\UE4Editor-Flex.suppressed.exp 2>Module.Flex.cpp.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl UStaticMesh::IsPostLoadThreadSafe(void)const " (?IsPostLoadThreadSafe@UStaticMesh@@UEBA_NXZ) 2>Module.Flex.gen.cpp.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl UStaticMesh::IsPostLoadThreadSafe(void)const " (?IsPostLoadThreadSafe@UStaticMesh@@UEBA_NXZ) 2>Module.Flex.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl UParticleEmitter::Serialize(class FArchive &)" (?Serialize@UParticleEmitter@@UEAAXAEAVFArchive@@@Z) 2>Module.Flex.gen.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl UParticleEmitter::Serialize(class FArchive &)" (?Serialize@UParticleEmitter@@UEAAXAEAVFArchive@@@Z) 2>Module.Flex.cpp.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl UParticleEmitter::IsPostLoadThreadSafe(void)const " (?IsPostLoadThreadSafe@UParticleEmitter@@UEBA_NXZ)

brisk silo
#

@low dust linking errors, check that your modules are setup correctly

low dust
#

what's weird tho is that I have both CoreUObject and Engine in the Build.cs and even further, the code I have doesn't even have IsPostLoadThreadSafe overridden/called

#

I've checked, but I'm still missing something

spiral mortar
#

Sure it's not called through header only engine functions?

low dust
#

don't get me wrong, it's still most likely issue on the modules build.cs

#

I checked the whole git commit, there's no line of code that mentions change to that

brisk silo
#

C++ ๐Ÿ‘

spiral mortar
#

Try putting all the modules as dependencies

low dust
#

UStaticMesh belongs to Engine module btw

#

and IsPostLoadThreadSafe is derived from UObject that belongs to CoreUObject

#

both Engine and CoreUObject are included tho

spiral mortar
#

Just to try to locate the issue

#

If it works then you'll know you're missing one

low dust
#

I'm good at locating issues when compiler pinpoints them to me, I hate linker issues ๐Ÿ˜„

spiral mortar
#

That being said that's an engine plugin -> full rebuild IIRC

low dust
#

do I need to regen the UE4 sln for build.cs changes?

spiral mortar
#

No

low dust
#

I'm pretty sure it picked the changes before

spiral mortar
#

If you want to be sure just do a syntax error

#

See if it's picked up

low dust
#

it does throw error then

spiral mortar
#

What's UEBA_NXZ ๐Ÿค”

#

And UEAAXAEAVFArchive

low dust
#

๐Ÿ˜„

#

I'll check some random engine plugins build.cs and compare the changes between 4.19 and 4.20, maybe I spot some change there

spiral mortar
#

I think I found it @low dust

low dust
#

?

low dust
#

hmmmm

#

wonder where it is on 4.19

#

it's not on that class

#

so they've added the override on 4.20

#

that would explain

spiral mortar
#

Yep

#

๐Ÿคฆ

low dust
#

but why ๐Ÿ˜„

spiral mortar
#

So somehow there was ENGINE_API all around

#

And they didn't thought it would be useful to add it

low dust
#

๐Ÿ˜„

#

it's not the first time

spiral mortar
#

tbh I often forget too

#

Easy to do so when you're not using it oustide

low dust
#

well, since this is a custom engine, I can just modify that line ๐Ÿ˜„

spiral mortar
#

lol

#

Cheater

low dust
#

it's not cheating if it works

spiral mortar
#

hehe

low dust
#

but yeah, testing it now, thanks ๐Ÿ˜ƒ

#

I did spot the line but didn't think further about it, thinking it was there always

spiral mortar
#

I guess the other one is similar?

low dust
#

but once you mentioned, it indeed wasn't in the 4.19

#

could be related to this, will see

royal glacier
#

@low dust are you chinese ?

spiral mortar
#

What

#

This is a serious channel @royal glacier

royal glacier
#

usually its "cheating is fine if you're not caught"

#

๐Ÿ˜„

low dust
#

you should see the hacks I've made to this gameworks merge already

#

I just want this to compile, it's not always pretty

spiral mortar
#

ยฏ_(ใƒ„)_/ยฏ

low dust
#

my favorite new hack on this merge is this:

descD3D12->commandQueueFence = GetCommandListManager().GetFence().GetFenceCore(0)->GetFence(); //hacked this to always use GPU index 0, needs a proper fix!```
#

they added gpu indices on DX12 RHI

spiral mortar
#

Yep saw you mention it

#

I don't understand it though

low dust
#

to fix it properly, I'd need to understand what they even do there first

spiral mortar
#

lol

low dust
#

I still do this as well ๐Ÿ˜„ cpp +#if 1//WITH_FLEX

#

somehow, there's some engine module that doesn't get WITH_FLEX

spiral mortar
#

lol

low dust
#

I think one would need to inject the dependency there

#

but if I do that, it creates a huge mess

spiral mortar
#

I often use #if 1 || smthg

#

As UHT stop parsing at #if 1

low dust
#

people who use this want all techs included so it's not really a huge issue

#

that issue remains even with the nvidias official flex branch

spiral mortar
#

Yeah what's the point of using a custom engine if it's to disable the custom stuff in the end

low dust
#

btw

#

that StaticMesh.h change I now did

#

it's in Engine module

#

guess what happens on build now ๐Ÿ˜„

spiral mortar
#

Fun?

low dust
#

I guess I'll wait for an hour to see if it cured anything

spiral mortar
#

aka as recompile?

low dust
#

it's a full recompile

#

yeah, engine module is everywhere

spiral mortar
#

You need one of those TR

#

Ask nvidia to send you one

low dust
#

I only do UE4 work nowadays if I'm procrastinating and not wanting to focus on something I should

#

this kinda helps there ๐Ÿ˜„

#

plenty of time to wait

spiral mortar
#

Or AMD, say that you're a know UE4 contributor and that you'll promote them

#

First on the list kappa

low dust
#

heh, ask AMD so I can build Nvidia stuff

spiral mortar
#

lol indeed

#

I don't mind waiting for a build, but the annoying fact is that it most of the time makes my computer unusable

low dust
#

same

#

there was some settings you could tweak for that but in my brief testing it only made compiles slower and computer was still unresponsive ๐Ÿ˜„

#

for some reason, I can use discord fine

spiral mortar
#

Lucky you

low dust
#

but command line shell and browser freezes

spiral mortar
#

windows ftw

low dust
#

they took this into account in past as you can change the app prio from task manager

#

but it's useless when you use build tools that spawn new processes all the time

spiral mortar
#

Right lol

low dust
#

you can conf UE4 to use lower prio by default

#

there's a setting for that

#

hmmm

#

it's below normal by default

#

wonder if there's any lower value for that even

spiral mortar
#

It's pretty complex

#

Thread priority + process priority

low dust
#

basically you can take those things from "engine changes" and alter them in opposite direction

spiral mortar
low dust
#

ah, so one could set UE4 building to ActionProcess.PriorityClass = ProcessPriorityClass.Lowest;

#

yeah, that might be a good idea

spiral mortar
#

Is there much softwares that are as long to compile as UE?

low dust
#

lumberyard is worse

#

like, you spend half the day compiling it

spiral mortar
#

Ok

#

That's a lot ๐Ÿ˜

low dust
#

cryengine wasn't that bad when I used it but it didn't ship with editor code back then

#

it was like 1/3 of UE4 build time for whole engine

spiral mortar
#

Kinda like UE 4.0 from what I've heard

low dust
#

4.2 was so fast

#

of course back then it felt like forever ๐Ÿ˜„

spiral mortar
#

hehe

low dust
#

btw

#
    virtual void Serialize(FArchive& Ar)override;
    virtual bool IsPostLoadThreadSafe() const override;```
#

those are the particle things

#

they are missing the ENGINE_API as well

#

same deal, everything else around these are wrapped with them ๐Ÿ˜„

#

once this actually builds, I have to make a new branch and properly clean this stuff up

#

simple git rebase will not work anymore

#

it's easier to just cherry pick and squash these than resolve all conflicts from rebase

royal glacier
#

@low dust VR Flow ?

low dust
#

nvidia flow

#

it does work in VR tho

royal glacier
#

hmm

low dust
#

it's nvidias fluid sim

royal glacier
#

had some hopes for VRWorks flow

#

๐Ÿ˜„

low dust
#

yeah, VRWorks and my generic merges are not happening ๐Ÿ˜„

#

first of all, I'd need VR gear to test

#

secondly, many of the gameworks tech mess with the same places on the renderer, bringing complex conflicts on the code

#

I wouldn't put things like VRWorks and VXGI on the same build for example

royal glacier
#

yeah ๐Ÿ˜„

low dust
#

I'm sure VRWorks could work with Blast, Flow and Flex

royal glacier
#

I'm secretely hoping for a VRWorks VXGI2.0 build though

#

not gonna happen anytime soon

low dust
#

probably never

#

unless you find a passionate community member to do it

#

but it doesn't make much sense

coarse aspen
#

is blast gonna make it into an official release?

slim viper
#

any news re. the new voxel pipeline

spiral mortar
#

voxel pipeline?

slim viper
#

gvdb

royal glacier
#

wha voxel pipeline

slim viper
#

its an nvidia voxel solution

#

idk IF they will integrate it into ue4

royal glacier
#

you mean VXGI ?

#

Voxels for Global Illumination ?

spiral mortar
#

No GVDB

royal glacier
#

oh

#

hmm

#

one day maybe ?

slim viper
#

gvdb and rtx, do want

#

not like any machine could run it realtime but yea

low dust
#

I'm pretty sure UE4 has to get Blast soon

#

Apex Destruction is deprecated already

#

it's last Apex piece that hasn't been replace on official UE4 builds

coarse aspen
#

doesnt appear to be on the trello roadmap

low dust
#

it doesn't really require that much from Epic's side, it's more of when they feel it's good time to switch

#

nvidia's integration is fairly polished already

#

nvidia also got some of the blast's engine changes into UE4 mainline already

#

it still requires some small changes but majority of things are now contained in the blast plugin itself

coarse aspen
#

sounds good

low dust
#

I don't know anything about Epic's plans tho

#

that's just all guesswork from my end

coarse aspen
#

i guess it wouldnt necessarily be a roadmap issue either, due to being a plugin and all

low dust
#

hmmmm, now getting these cpp 2>Module.Flex.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) class TUniformBufferRef<class FSceneTexturesUniformParameters> __cdecl CreateSceneTextureUniformBufferSingleDraw<class FRHICommandList>(class FRHICommandList &,enum ESceneTextureSetupMode,enum ERHIFeatureLevel::Type)" (__imp_??$CreateSceneTextureUniformBufferSingleDraw@VFRHICommandList@@@@YA?AV?$TUniformBufferRef@VFSceneTexturesUniformParameters@@@@AEAVFRHICommandList@@W4ESceneTextureSetupMode@@W4Type@ERHIFeatureLevel@@@Z) referenced in function "public: void __cdecl FSceneTextureShaderParameters::Set<class FRHIPixelShader *,class FRHICommandList>(class FRHICommandList &,class FRHIPixelShader * const &,enum ERHIFeatureLevel::Type,enum ESceneTextureSetupMode)const " (??$Set@PEAVFRHIPixelShader@@VFRHICommandList@@@FSceneTextureShaderParameters@@QEBAXAEAVFRHICommandList@@AEBQEAVFRHIPixelShader@@W4Type@ERHIFeatureLevel@@W4ESceneTextureSetupMode@@@Z)

#

CreateSceneTextureUniformBufferSingleDraw is new as well

#
template< typename TRHICmdList >
RENDERER_API TUniformBufferRef<FSceneTexturesUniformParameters> CreateSceneTextureUniformBufferSingleDraw(TRHICmdList& RHICmdList, ESceneTextureSetupMode SceneTextureSetupMode, ERHIFeatureLevel::Type FeatureLevel);```
gloomy hamlet
#

@low dust Exporting tempates from dlls gets confusing. You have that module specified as a dependency, yeah?

low dust
#

@gloomy hamlet yes

#

tried adding Renderer into PublicDependencyModuleNames and PrivateDependencyModuleNames on both Flex.build and Flex.Editor.Build.cs

gloomy hamlet
#

Is there an example of that method being used anywhere else in the engine, outside the renderer module?

low dust
#

nope

#

I always check that first

gloomy hamlet
#

If not then it could be that it's not properly exported despite the macro, probably because it's a template.

low dust
#

I need to dig down where this is on 4.19

#

this is something I hate about github seach

#

it only works for the main branch

#

and I don't have 4.19 solution on drive atm

gloomy hamlet
#

Heading out now, I can take a look once I'm back if you haven't solved it.

low dust
#

and even that's commented out

#
//TUniformBufferRef<FSceneTexturesUniformParameters> SceneTexturePassUniformBuffer = CreateSceneTextureUniformBufferSingleDraw(RHICmdList, ESceneTextureSetupMode::None, View.FeatureLevel);```
#

ah, thanks

spiral mortar
#

Wait CreateSceneTextureUniformBufferSingleDraw is defined in a cpp?

low dust
#

I'll be out for next hour too, will then dive back into it

spiral mortar
#

Yeah won't work

low dust
#

that was a header which I linked

spiral mortar
#

It's a template so it needs to be header only if not in the same compilation unit

#

AFAIK

low dust
#

I'll check it when I get back ๐Ÿ˜ƒ

#

but that template was in header I think

spiral mortar
#

It's not anymore at least

low dust
#

this is on header: ```cpp
template< typename TRHICmdList >
RENDERER_API TUniformBufferRef<FSceneTexturesUniformParameters> CreateSceneTextureUniformBufferSingleDraw(TRHICmdList& RHICmdList, ESceneTextureSetupMode SceneTextureSetupMode, ERHIFeatureLevel::Type FeatureLevel);

this is on cpp: ```cpp
template< typename TRHICmdList >
TUniformBufferRef<FSceneTexturesUniformParameters> CreateSceneTextureUniformBufferSingleDraw(TRHICmdList& RHICmdList, ESceneTextureSetupMode SceneTextureSetupMode, ERHIFeatureLevel::Type FeatureLevel) 
{
    FSceneRenderTargets& SceneContext = FSceneRenderTargets::Get(RHICmdList);
    FSceneTexturesUniformParameters SceneTextureParameters;
    SetupSceneTextureUniformParameters(SceneContext, FeatureLevel, SceneTextureSetupMode, SceneTextureParameters);
    return TUniformBufferRef<FSceneTexturesUniformParameters>::CreateUniformBufferImmediate(SceneTextureParameters, UniformBuffer_SingleDraw);
}

#define IMPLEMENT_CreateSceneTextureUniformBuffer( TRHICmdList ) \
    template TUniformBufferRef<FSceneTexturesUniformParameters> CreateSceneTextureUniformBufferSingleDraw< TRHICmdList >(\
        TRHICmdList& RHICmdList,                        \
        ESceneTextureSetupMode SceneTextureSetupMode,    \
        ERHIFeatureLevel::Type FeatureLevel                \
);```
#

I'll see if I can more all that into header only without having to bring too many dependencies over

#

then again, I really start to wonder why does this even exist in the engine code if a) you can't use it b) nothing uses it ๐Ÿ˜„

#

I guess it might work from project side

spiral mortar
#

@low dust Works in the same module

low dust
#

yeah, but nothing in the module actually uses it...

#

oh wait, something does use it

#

but it's within the module

low dust
#

well it compiled now

#

moved the whole template to header side

#

still need to figure what to do with those defines, I just commented them out to see if it would build

#

if I keep them, I get cpp (2789): error C2893: Failed to specialize function template 'TUniformBufferRef<FSceneTexturesUniformParameters> CreateSceneTextureUniformBufferSingleDraw(TRHICmdList &,ESceneTextureSetupMode,ERHIFeatureLevel::Type)' (2789): note: With the following template arguments: (2789): note: 'TRHICmdList=FRHICommandList'

#

In general, the way to resolve a C2893 error is to review the function's signature and make sure you can instantiate every type. ```
#

well, it seems to accept this now on the cpp side cpp #define IMPLEMENT_CreateSceneTextureUniformBuffer( TRHICmdList ) \ template< typename TRHICmdList > TUniformBufferRef<FSceneTexturesUniformParameters> CreateSceneTextureUniformBufferSingleDraw< TRHICmdList >(\ TRHICmdList& RHICmdList, \ ESceneTextureSetupMode SceneTextureSetupMode, \ ERHIFeatureLevel::Type FeatureLevel \ );, I moved the actual implementation into header and put it inline

#

/ I have no idea what I'm doing but it seems to work

#

this is basically all I did

#

I still don't get why it didn't link the original code properly

#

shouldn't the linker include the module once you put it into build.cs?

#

I still expect this to crash and burn once I get engine up after shader compilation ๐Ÿ˜„

#

not necessarily because these changes but I upgraded 3 gameworks techs at once from 4.19 to 4.20, could be lots of small things I've missed

#

I usually do these one by one so it's easier to catch potential issues but I don't really have time / patience to wait for all that recompilation

gloomy hamlet
#

@low dust @spiral mortar So, it is possible to define a template in a .cpp and use it elsewhere, but it needs to be explicitly instantiated.

low dust
#

I don't really know if this does anything useful

#

I mean those defines in cpp

gloomy hamlet
#

That #define IMPLEMENT_ is the explicit instantiation.

low dust
#

maybe they had some further use for the internally

#

nothing in the engine itself uses those

gloomy hamlet
#

Which is indeed unnecessary if they're not actually used anywhere outside that cpp file.

low dust
#

well those are not used anywhere

#

only the main template is

#

basically the things I moved into header are used in Renderer module

#

but the defines I "fixed" on cpp do nothing

#

I can removed them and everything still compiles and works, nothing in the engine or that cpp calls them

gloomy hamlet
#

Yep, but I think it's there that the RENDERER_API macro should go. I think if you removed it from the header, and added it before each call to the IMPLEMENT macro, then that would be the only change needed to be able to use that function across modules.

low dust
#

hmmm

#

so you suggest wiping everything related from header?

#

I can try it soon

#

now more curious if these techs actually run on 4.20 ๐Ÿ˜ƒ

#

still compiling shaders

gloomy hamlet
#

Just if you want to minimize the number of changes. Then yeah, starting from the original engine code, just remove RENDERER_API from the template declaration in the header, and put it in front of the 3 calls to the implemenet macro in the cpp.

low dust
#

yeah, I'd rather not do things like these

gloomy hamlet
#

I think that would fix the linker error you were getting earlier. Might not ๐Ÿ˜‰

low dust
#

but if everything is in cpp, how will other files get the declaration?

#

now the relevant files include that header

#

which contains the template

#

that template itself is used around the renderer module

#

but I also don't really know what that IMPLEMENT_ thing does in practice

low dust
#

ah

#

so wipe nothing from the header, add only RENDERER_API in the cpp

gloomy hamlet
#

Just remove RENDERER_API from in front of it, as I think that is at best doing nothing on a template declaration.

#

And then re-add it in front of the macro usages in the cpp

low dust
#

I'll try

#

btw, flex crashes on play ๐Ÿ˜„

#

so, more troubleshooting

#

it did require some bigger changes, it's possible I screwed up somewhere

gloomy hamlet
#

That macro is just wrapping iup the c++ syntax for an explicit template instantiation. Basically it just tells the compiler, instantiate this template for the following type now, regardless of whether anything is using it.

#

What is it you're doing, updating nVidia fork code for 4.20?

low dust
#

yes, basically merging 4.19 tech into single 4.20

#

I already had blast and flow upgraded

#

now pushing txaa, flex and volumetric lighting

gloomy hamlet
#

But code written for 4.19 by nVidia, or by you?

low dust
#

nvidia

gloomy hamlet
#

Okay. So do they generally keep stuff up to date, just a bit late or seomthing?

low dust
#

I did upgrade some of their tech to 4.19 myself but nvidia later came up with their own branch for it

#

yeah, it takes a while

#

but it's not common that you get all tech for single engine version

#

4.19 was kinda exception

gloomy hamlet
#

Ah okay.

low dust
#

apparently community does enough these merges that nvidia doesn't care to do

#

but I actually like that they keep these separete

#

if you ever need some of the techs, you can just grab what you need

#

basically most of the things are wrapped on #if #endif so you can opt out from the techs even if they are merged all in one

#

but you still get more binaries to move around due to their libs and dlls

spiral mortar
#

๐Ÿ‘Œ

gloomy hamlet
#

Do they clash with each other though? I mean can you always merge in whatever combination of their techs you like, without having to deal with a bunch of issues?

spiral mortar
#

Good to know about templates

#

Makes sense

low dust
#

merge conflicts are usually minimal

#

most work is mainly doing some manual work where the mergetool can't solve things on it's own

#

usually this means like handling 10 files yourself per tech

#

and that's usually solvable by merge tools A,B,C selection

#

only occasionally it breaks the code chunks on wrong places and then you need to manually copy paste things around

#

so far only things that have truly clashed has been nvidia waveworks and flow I think

#

and that didn't actually do anything bad, but one overrode the other for some shaders tangent math

#

so other would have had incorrect visuals

#

also, VRWorks is off the table as it will clash with things like VXGI

#

but I don't even have VR gear here so I couldn't even test that stuff even if I got it to compile

gloomy hamlet
#

Okay good to know. Anyway I doubt our project will end up needing this stuff. Blast possibly, probably nothing else.

low dust
#

yeah, I agree there

#

blast is most useful from these

gloomy hamlet
#

Do you know if Epic intend to merge any of these into the release engine?

low dust
#

I don't but it would be very odd if they didn't

#

considering that nvidia has gotten some of their blast changes into mainline already, now it only modifies slightly 10 engine files and rest is on the plugin itself

#

that + apex destruction has been deprecated already on physx version they use

#

of course, physx 3.5 is likely still far away but once that comes out, I doubt there's any apex stuff around

#

I tried to get answer from Epic about 4.20 contact modifications but I couldn't get any response

#

I feel like they left some crucial part from the implementation out, at least I couldn't figure how to expose the contact modification callback without engine mods

#

but since I've done that in past, I added my implementation with physx wrappers there (built in contact mod stuff on 4.20 doesn't wrap any physx calls to ue4)

gloomy hamlet
#

What are common uses of manual contact modification?

low dust
#

my fixed timestepping stuff is tad hacky, especially on the interpolation part, but it works

#

well, you can do lots of things with it

#

basically whenever you get collision, your collison data goes to contact modification callback if you've setup that rigidbody to be included in those

#

then you get to spoof all collision data before it's been sent to physx solver

#

you can filter out "bad" data, like sharp angles etc that shouldn't exist on the parts you collide against

#

classic example I use is a railing and a racing game, you lean against the railing on corner and suddenly your car launches to space or otherwise bounces off oddly

#

this is caused usually by colliders seams where physx "catches" on the collision, thinking it collided at 90 degree angle when it's in fact something that should appear almost 0 angle visually

#

these things happen even more if you have bigger offset on collisions

#

but with contact mods out there, you can examine the data and tell physx to ignore bad or unwanted points based on your own code/algos

#

or spoof it

#

you can spoof friction, restitution, collision point position, separation etc

gloomy hamlet
#

Gotcha. Generally more important for stuff that is trying to accurately simulate real world behaviour presumably.

low dust
#

well, it's important on any fast paced physics game IMO

#

it allows you to fix things that would be harder to work around in traditional ways

gloomy hamlet
#

Though I guess you could also use it to create some interesting, non-realistic effects.

low dust
#

like, for example if you roll a ball along landscape for example, it jumps on landscape seams on ue4 by default

#

with contact mods, you can filter the ground data to have zero offset and also take away points that have normal angles that couldn't exist

#

seams are a huge issue on any roll-a-ball game

lavish topaz
#

Does 4.20 require VS2017?

low dust
#

you can work around those with smart collision shapes but there are some things that are close to impossible to fix traditionally

#

@lavish topaz you can use VS2015

#

that what I've used now to compile 4.20

lavish topaz
#

Anything I need to change? I noticed the change log said it defaults to 2017

low dust
#

but you need to be more careful if you do that

lavish topaz
#

When compiling I get an error Unable to expand variable in '$(DXSDK_DIR)\Lib\x64'

low dust
#

you want to compile the engine or project?

gloomy hamlet
#

Yeah I've read about that issue. What's causing it exactly? I mean, I don't see why does the collision stuff can't just match up property. Is UE4 landscape doing something dumb?

lavish topaz
#

both, we use the engine from their perforce

gloomy hamlet
#

Sounds like some dependency isn't installed.

#

Did you run setup.bat ?

low dust
#

@gloomy hamlet basically when you have two planes next to eachothers, there's really no way to figure out the contact point angle on the border

#

@lavish topaz GenerateProjectFiles.bat -2015

#

then open the solution on vs2015

#

it builds automatically right

lavish topaz
#

we dont have a setup.bat with the perforce version. Yes I generatedprojectfiles.bat then opened up UE4.sln in 2015. Start building and get that error.

low dust
#

bigger issue after that is if you happen to open c++ game project with it before changing the solution for game project to target 2015

#

if you do this, engine tries to open it on vs2017 if you have it installed and it corrupts the whole engine

#

been there done that

#

if you don't have 2017 on the computer at all, that's not a big concern

lavish topaz
#

yea i have 2017 community

low dust
#

@lavish topaz you need that -2015 tag

lavish topaz
#

ohhh

low dust
#

if you want to generate vs2015 solution

lavish topaz
#

ok, run the .bat with -2015

#

thanks

low dust
#

np

#

on 4.19 and before, you had to use -2017 tag to get it to generate VS2017 version

#

but it defaults to 2017 solution now on 4.20

lavish topaz
#

still same error (โ•ฏยฐโ–กยฐ๏ผ‰โ•ฏ๏ธต โ”ปโ”โ”ป

low dust
#

delete your ue4.sln before, just in case

#

also you said you dont have setup?

#

you get the dependencies some other way?

#

it sounds a bit like you are missing them

#

ah, that's what kamrann said as well

#

@gloomy hamlet simply adding those RENDERER_API's into cpp file fixed it

#

I had to leave those on header or it would have comlained about missmatch but that's actually expected, wonder why it didn't complain the other way around

#

I guess it treats it as different module

#

like local change vs something that belongs to RENDERER_API

#

I reverted my earlier changes and only added those

#

it does make sense now that I think about it

#

I've just been staring at this screen for too long ๐Ÿ˜„

gloomy hamlet
#

Ok cool, yeah wasn't sure of the exact details, but suspected they'd misused it for the template case.

low dust
#

@gloomy hamlet, @spiral mortar thanks, both of you

lavish topaz
#

WARNING: Exception while generating include data for GameEditor: Unable to expand variable in '$(DXSDK_DIR)\Lib\x64 does show that in the generateprojectfiles.bat

gloomy hamlet
#

Exports (xxx_API) are for linker symbols, and template declarations don't generate any linker symbols so it doesn't really make sense to just add it to the declaration.

low dust
#

well, flex was (despite all the effort) still broken while in play mode, I'll get back to it later, I cleaned the repo for the other techs and they appear to be working just fine

#

what's weirdest, all the other gameworks tech needed tons of changes on includes and other stuff but their volumetric lighting worked right away, didn't need to change a single thing on engine side (only had to remove the engine association from the actual sample so it wouldn't nag on launch)

brisk silo
#

for the engineers out there

#

you want this book

#

released a few days ago

#

3rd edition of one of the absolute classic books about game engines, and this one has chapters on multithreading and low level hardware

#

it explains tings like lock free programming, atomics, SIMD, and cpu pipelines in superscalar architectures

elder falcon
#

that sounds very interesting

brisk silo
#

the author is one of the lead engine programmers at naughty dog

#
#

also this other book

#

Real Time Rendering, 4th edition

#

last one was like in 2005

#

so there is a huge upgrade

#

this time it covers PBR and techniques like forward+

elder falcon
#

oof those are some expensive books

brisk silo
#

they are both 1250 or so pages

elder falcon
#

!

brisk silo
#

absolute monsters of a book

#

btw i got pdfs if you want XD

#

from game engine architecture

elder falcon
#

oh I forgot to switch to the digital one that's why it was so expensive

#

now we just need a way to buy more time so I can read all the stuff and mess with it

brisk silo
#

lol it shit talks unreal

#
usually very simple, each one exposing only a minimal feature set. However,
as more and more functionality is added to the game, the desire to share code
between two or more unrelated classes begins to cause features to โ€œbubble upโ€
the hierarchy. ```
#
contains data members and code for managing rendering, animation, physics,
world interaction, audio effects, network replication for multiplayer games,object creation and destruction, actor iteration (i.e., the ability to iterate over
all actors meeting a certain criteria and perform some operation on them), and
message broadcasting. Encapsulating the functionality of various engine subsystems
is difficult when features are permitted to โ€œbubble upโ€ to the rootmost
classes in a monolithic class hierarchy.```
elder falcon
#

makes sense

#

I assume it also tells you how to do better

brisk silo
#

nah

#

it talks about different models

#

and what pros-cons they bring

elder falcon
#

oh

brisk silo
#
the various low-level subsystems in our engine, such as animation, audio, collsion/
physics, rendering, file I/O, and so on. So why not parallelize our game
object updates by making them jobs, too? This is the approach used in the
Naughty Dog engine. It works, but getting it to work correctly, and efficiently,
is a non-trivial undertaking. ```
#

meanwhile in unreal...

#

"lets have literally all the game code and transform updates single threaded"

#

totally not a huge bottleneck on consoles

elder falcon
#

I noticed an option on actors to run ticks in parallel but no documentation or examples what you're meant to use it with

brisk silo
#

it works

#

i have experimented with it

#

it actually does work

#

but it is useless

#

what is even the point if you cant do anything on them?

elder falcon
#

that's what I was wondering

brisk silo
#

blueprint is offlimits, transforms are offlimits, any kind of engine function is off limit

elder falcon
#

I assumed it's just gonna die if you use stuff

brisk silo
#

i theorized that it could work for AI

#

and for the world updates you use a concurrent queue

#

that you then apply on the next step

elder falcon
#

bp is not off limits tho

#

there's this one article by intel where they claim to be running bp in parallel with this

brisk silo
#

i have tried to move stuff in parallel and in the "MoveUpdatedComponent" there are checks that check if you are on the game thread

#

just moving stuff takes 3 ms on ps4 on my game

#

just moving

#

the things that move are some bullets, the player objects, and the enemies

#

btw every one of them has physics disabled

#

bullets use async traces

gloomy hamlet
#

It definitely seems pretty pointless to me. Thing is, since you have to separate/sync to such an extent, then you might as well just run some task continuously on another thread. What do you gain by having it called once a frame by the engine?

brisk silo
#

i implemented a way to spread up ticks

#

essentially every object in the world only ticks 1 every 2 frames

#

configurable

#

gets me a +30% improvement on tick time

#

not +50% becouse the separation is not perfect, but rng

#

but more or less 30%

#

wich is good

#

thats what im using

#

my enemies and bullets actually fly at 60 fps

#

while the world runs at 120

#

btw particle effects and animations also run at 60 fps

elder falcon
#

wtf 120 fps

brisk silo
#

on psvr

elder falcon
#

oh

#

I thought all the console vr stuff was about 90 fps

brisk silo
#

its actually 60 fps

#

but it reprojects to 120 to feel more responsive

#

some games tun at 90 fps native

#

i think not even 10 games run at 120

#

and none of them using ue4

#

so im pretty sure im the only guy who has managed to put a ue4 game at 120 on psvr

gloomy hamlet
#

What's meant by 'reprojects'?

brisk silo
#

it calculates the lens projection again, but with a slightly rotated matrix

gloomy hamlet
#

So the camera is updated at 120, the game stuff at 60?

elder falcon
#

so your game doesn't use the reproject thing since it actually runs at 120 fps?

brisk silo
#

yes

low dust
#

@brisk silo this is what I absolutely hate about (paper) books

#

I got first edition from that book, I should get discount for updates ๐Ÿ˜„

#

I don't think many ebook sellers give you discounts from new editions either even when that would be super logical

brisk silo
#

the discount for updates is on the high seas

#

btw

#

this is ABSOLUTE GOLD

#

it shows all the math and all the raesoning for a PBR model

#

a similar model to unreal engine

low dust
#

another thing I hate is UE4's git status being too intelligent

brisk silo
low dust
#

I did use rebase to reword one commit from near history -> full rebuild as it thinks things have changed

brisk silo
#

reading this thing. it is by far the best implementation level PBR guide i have ever seen

#

it gives you all the math, the code, and the explanations, to use PBR in your own engine

#

or understand how the ue4 shaders work

#

as they use the same distributions

spiral mortar
#

๐Ÿ‘Œ

low dust
#

it does look informative

#

probably worth more for shader/graphics guys than random people poking the engine source code tho ๐Ÿ˜„

elder falcon
#

(โ•ฏยฐโ–กยฐ๏ผ‰โ•ฏ๏ธต โ”ปโ”โ”ป

#

why can't everyone just agree on using one of these

brisk silo
#

@low dust it allows you to understand the ue4 shaders

#

they even have forward+ render, unreal forward style

low dust
#

I more of meant that #graphics guys might find it more useful than people who use this channel

brisk silo
#

with the light culling

#

thats an art chat

low dust
#

I haven't seen that much graphics programming on this place ๐Ÿ˜ƒ

#

@elder falcon why agree when we can have practically 4 alternatives