#engine-source
1 messages ยท Page 28 of 1
well, its too early to comment
i think epic will go ham on VT and GPU lightmass once raytracing and the new renderer are working
VT actually helps them in fortnite
is lightmass still alive? idk
wel... paragon is ded
and fortnite is all dynamic light
the only project where they use lightmass is for robo recall "lite: that they gonna put in oculus Quest
Epic doesn't care GPU lightmass, they have enough CPU power for themselves games.
they hired the gpu lightmass guy
and gpu lightmass is not only faster
its significantly higher quality
really? I am happy to hear this. I am starting to like using discord. very informative! thanks @brisk silo
this happened a while ago
they also hired the ex Maxwell renderers team lead (or whatever his title was)
@shut solstice
I show my respects for Juan Canada and @low dust.
Master branch just bumped to 4.23
Looks like the first 4.22 previews will probably come out this month
Or maybe they'll wait until GDC
dev-rendering finally merges into master two days ago
Maybe we'll see a 4.22 branch pop up next week
Maybe that's the purpose of the "promoted" branch
I think they said somewhere that promoted is just a version of master where they've made sure it compiles and passes basic testing
@granite dust 2 days ago it had all the new mesh code
and its when denoised RTAO and RTshadows were live
<It'sHappening.gif>
I'm cloning now ๐
I already fetched the changes
will see what gameworks things move over without too much pain
I don't have RTX hw yet so can't test the new rendering stuff
5 GB of dependencies now ๐
6 million insertions, did they add two more copies of boost? ๐
when you prune your ue4 clone and it's stuck on 98% forever....
now at 99%
seems like I might just make it without starting to swap
well, they are still at heavy dev in dev-rendering
so i dunno
dev-render is now 23
Hi, my 4.21.1 source engine keeps crashing when I load certain assets, not sure why. Here's the error:
I'm having a really big issue with compiling the engine constantly crashing windows insider preview. The errors that I keep seeing is that it can't find the correct .net files in the temp folder and I also noticed that the .suo that is generated when running generate project files is the visual studio 15 version. How can I change the visual studio version if I can't run the engine yet? where would I set that in source files?
@dense wharf same dude
windows insider preview ๐
@spiral mortar i would take it all back if I could
but I can't roll back and I can't reinstall at this moment
the preview is awful and the only thing I wanted from it was a system wide dark mode to save my eyes
the nightmare will be over when I build my new pc
in the mean time I just need to sort out this engine issue
I can't seem to find which config file in the engine sets the visual studio version
It's in UBT @dusky zinc
You want to change the compiler version?
There's
in your BuildConfiguration.xml
Compiled 4.22 and updated SculptrVR to work on it.
Instanced stereo crashes, but it runs without
Cascading shadow maps don't work
Tonemapping seems to be different
VR Preview window is upside down
Lots broken, but updating was surprisingly straightforward
Only took about 30 minutes if fixing deprecated calls, etc
Turns out its my main project thats crashing, I dont think its the engine's fault. I dont know why I'm getting that crash however. If anyone has suggestions, please let me know. If not, then I'll just make a new project and migrate
It crashed on start if I leave instanced stereo on
I don't know if it was auto instancing otherwise, though
I didn't get a chance to profile
How to make sure my shaders usf can be successfully compiled for GLSL_ES2?
Right now, they not compiled, and i don't see any errors, except when trying to launch the game i get:
"Ensure cooked successfully"
anyone got a link to the 80.lv leaked roadmap? I can't find it anymore.. wondering if they took it down
K the recent update fixed instanced stereo. It does not crash now
also cascading shadow maps is a complicated issue. Apparently they work if AO is off or there's at least one active point light in the scene
VR preview window is still flipped upside down, though
I think I'm going to try to fix this cascading shadow maps bug myself, since I doubt many other are going to encounter the issue
i want to see that roadmap again too
read what they were commenting about the mesh renderer which is now live
@granite dust how is perf in your game
tho you dont use that autoinstancing stuff
I will find out after lunch!
It's really hard to perf test on my laptop at home because clock rates are so dynamic
Well in its current state my 4.22 build has significantly slower rendering than 4.21 has
Like 50% longer render time with the same scene
I didn't measure it exactly, though
so right now im committed to the 4.14 engine for my game, because i dont want to change anything close to release that might cause me extra work as epic add new features and change things on each release. this being the case, if i want to apply patches, is it worth me working with a source code build, and manually applying patches to it?
basically backporting fixes for stuff from the newer versions?
(i'd only want the fixes and only those that directly affect me, not new features)
wtf is ROBOMERGE
oh this is weird
look at these commits for example
https://github.com/EpicGames/UnrealEngine/commit/12c8e1c04108ba6d2f25dee323c8f381df6b1376
https://github.com/EpicGames/UnrealEngine/commit/d6acd404df8286757c207e53887244503c34ddc4
https://github.com/EpicGames/UnrealEngine/commit/8576b6304d37c333935f18030544ddf639948ccc
https://github.com/EpicGames/UnrealEngine/commit/b6b580db72d75bdab1b73ea78bf65ca8d90012b4
they have no connection at all in git
going through NvPhysX fork's github issues
someone wrote hi, i hope if someone can help me to merge VolumetricLighting, HBAO+ and VXGI2 in unreal.. i downloaded all of them and they are working fine but i didn't know they'd be separated engines..! plus the size is big on each.. so please tell me how can i merge them (without coding) for version 4.19 or 4.20.. thanks.
if you know how to merge these without coding, do tell me as well 
@elder falcon Robomerge is just a tool that monitors commits and merges them to other branches. Some of them are automatic, some of them are manually triggered by a #robomerge tag in the commit message
what is dev-core branch?
the core of the UE4 Engine
dev-editor is the editor, dev-networking is the networking side, etc
and master is amalgamation of all?
yeah
ok, i just wanted to have one bleeding edge branch and i was not sure if i should switch from master
for my question, googling "datasmith UE4 source build" helped. They need to have a better way to deal with marketplace plugins and source builds
@limber jacinth nah...i don't want to switch from branch to branch later when 4.23 emerge...master is consistent in updates
thats up to youi
but i avoid keep switching brances for a production game
just more hassle and errors
or at least updating
@limber jacinth ahahah...i'm not that dare to build a game on master
our game is still on 4.18.3 ๐
i'm just testing some things on it, to make sure they are still relevant
I tried to enforce opposite direction
we sitch to latest version ASAP
switch*
it's far easier to keep it updated in case you need new features or particular fix
than trying to pick individual CLs
I added a bit of code on BodyInstance file.
But something weird is happening.
Any errors I introduce inside any function aren't being detected by the compiler. But anything done wrong outside of a function is detected.
Any idea what might be the problem?
Is anyone here using incredibuild?
@limber jacinth DDC?
If you compiled the engine from GitHub source then just create an environment variable UE-LocalDataCachePath and set the path as it's value. Keep in mind, that in this case it will change the DDC directory for all compiled versions of the engine you have. This should work - I tested it.
ok
Can anyone help me on ue4 build config?
i need to replace cl.exe path
with msbuild it's done like that:
msbuild.exe /p:CLToolExe=cl_blah.exe /p:CLToolPath=somepath
afaik UBT uses msbuild anyway, but i can't find where it's set
for cache
incredibuild doesn't work for me
it only uses 8 cores
seems limitation of free version
Where is clcache?
What does it do?
Uh doesn't seem to be useful with UE?
What are you really trying to do ๐ค
use build caching
What doesn't work exactly
caching
yes
huh?
Compiles faster (each include is included only once)
Or more precisely
Recompiles faster
Downside is obviously that everything is rebuilt every time
Add bFasterWithoutUnity = true in your build.cs
You'll see
where to exactly? i'm building ue4 editor
Oh
Errr
It'll be a shitton slower to build the first time then
What are you editing?
Using a git repo for the source?
i only care about rebuilding...im on master and i'm rebuilding engine twice a week
Ah lol
I see
Not sure it'll help then
As most stuff changes anyways
So no black magic will help you there
meh
@spiral mortar i'm testing if my tweaks still working on latest changes
https://wiki.unrealengine.com/Dedicated_Server_Guide_(Windows_%26_Linux)#3._Video_guide
I'm trying to build a dedicated server following the above tutorial. I'm running into issues with building the server (about mid way down the doc, point 5)
getting this error.
@dapper rapids What's unclear about that error?
That plugin is referenced in your project, install it or edit your project opening file and remove the part about the plugin
I need the plugin and since I'm building it for the dedicated server there is no source version available for the plugin
What should I do in this instance?
Ok 4.22 perf issues are getting resolved rapidly
I think my perf is better than 4.21 now, but I'm packaging a test case now
@dapper rapids well obtaining the source is probably your only option to build it
is it this?
the source code is available for it
Nope. The render thread time on 4.22 seems to be about 10% larger than 4.21 still. Much better than the original 50% I was seeing!
you should see the 2ms+ hit that per-object shadows took in 4.21
I still believe. Once 4.22 is out it might be faster..
yeah in 4.22 D3D11 uses an RHI thread
how can i make -ddc=noshared always be added when loading the editor
make a batch file or shortcut
Just disable shared ddc in defaultengine.ini
Trying to add conversion functions as in PhysXSupport.cpp.
Declared my functions with the ENGINE_API macro, header is included where needed, no Intellisense error. However, I always get linker error saying unresolved external symbol...
Any idea of what I might be missing?
what cl-filter.exe does?
Can anyone tell me if the visual studio code SourceCodeAccessor can open code when clicking in the reletive spots in the engine?
Like in FirstPersonCharacter blueprint and up at the top right it has Parent Class: FirstPersonCharacter, but clicking on it doesn't open the correct file like it does for Clion
Clion is broken, it doesnt even debug properly, and ive never used VSCode with UE4
you mean CLion the app or the plugin is broke?
CLion is ssssssllllllloooooowwwwww, its big heavy laggy its ui is laggy, intellesense is laggy, and I can't believe people pay money for that piss poor performance, and all this because its built on java.
visual studio code does everything that clion does, minus the c++ refactoring tools and opening source/header files under UnrealEngines source tree via inside the editor its self, but faster, way way faster.
Yeah, looking in the code, I don't think they coded in an ability to open the source from UE4 its self, only the project.
that sucks
VS is fine for me, i know its a bit bulky but it works
shame VSCode is lacking on stuff. I mean they dont need to make it bloated but there are some useful things its missing
Yeah.
when solution is opened in MSVC, there is project, then platform and then drop down with Blank Program, etc. What is that one for ?
just a blank program
๐
that is it, nothing more
its like a base
for a program that does stuff with/for/to the engine
How to exclude modules from ue4editor build?
i should say "plugins"
there're .uplugin files, that list the modules, but i can't find where are list of those defined
I assume it just parses all the subfolders in the plugins folder?
is there anyway to change the priority on the shader compiler? some reason its compiling all my materials below average and wont let me change it in the task manager
Has anyone had an issue where they can't launch their game via the .uproject?
I don't know that I have ever gotten it to work for my project. When I switch the uproject ue4 version to the prebuilt one, then the uproject launching works
when I switch back to the engine source code compiled one, it stops working and complains about a missing modules manifest
no idea what a modules manifest is... I haven't modified the engine source code at all
I've tried rebuilding the UE4 sln, regenerating the uproject's visual studio project files, now I am doing a complete rebuild of the game project's sln. I have no confidence that this will make a darn bit of difference
did you recompile your project after setting it to custom engine?
modules manifest is probably .modules file in binaries folder in your project binary folder
i suppose it shall be result of UBT => shall be done during compilation
I can't remember what all I have tried because I've mainly been ignoring it until now. It's finally starting to get in the way so I want to fix it. I just rebuilt the UE4 sln and I am almost done rebuilding the game project's sln
I'll report back in a few once that it done and let you know if it fixed it
I know that I started off with using the pre-compiled edtior
then I right clicked the uproject and pointed it to the custom build and that forced a new build prior to launching the editor. This was a couple of months ago though
no go
same error
is compilation suuccessful?
Yeah
and I can launch the editor by using Visual Studio
and then running as debug
I'm running under the Debug Editor / Win64 config
would that impact the ability to run the game via the .uproject?
To clarify, when I say "run the game from the .uproject", I mean I right-click on the .uproject file and then click "Launch Game"
Googling that error gave me nothing useful. Google can't even match more than one result for the test "Module manifests are generated at build time"
the rest of the results don't have that text in them
Which of course the one search result has nothing to do with my current setup
<
try development mode for both editor and project
Ok
void IMeshPaintEdMode::OnVRAction( class FEditorViewportClient& ViewportClient, UViewportInteractor* Interactor,
const FViewportActionKeyInput& Action, bool& bOutIsInputCaptured, bool& bWasHandled )
is that a proper use of a class reference?
all the code above is using FEditorViewportClient* ViewportClient
virtual bool ProcessCapturedMouseMoves(FEditorViewportClient* InViewportClient, FViewport* InViewport, const TArrayView<FIntPoint>& CapturedMouseMoves) override;
virtual bool StartTracking(FEditorViewportClient* InViewportClient, FViewport* InViewport) override { return true; }
virtual bool EndTracking(FEditorViewportClient* InViewportClient, FViewport* InViewport) override;
virtual bool InputKey( FEditorViewportClient* InViewportClient, FViewport* InViewport, FKey InKey, EInputEvent InEvent ) override;
code from \Engine\Source\Editor\MeshPaint\Private\IMeshPaintMode.cpp (.h)
hi guys is there a fix or workaround for this problem yet ? https://answers.unrealengine.com/questions/214541/motion-blur-artifacts-on-apex-cloth.html
@cosmic rampart it says pushed to 4.10...still bugged?
@astral sapphire yes, as far as i have tracked this because i started back in 4.13 and it worked back then, but i think it was reintroduced in 4.19 or something. I have not checked this in later version yet because we dont plan to upgrade anytime soon. you can check this thread where i also posted https://forums.unrealengine.com/unreal-engine/feedback-for-epic/1456417-4-19-something-wrong-with-cloth
i just installed 4.19 & my players hair cloth is all blurry. anyone else having this problem? or is it just me??
yeah, iirc they made total overhaul of shaders back then
yeah, could be the cause, i just would like a fix ๐ blurry capes suck...
@cosmic rampart Apex cloth is different from default ue4 cloth?
mh, i have only used the built in cloth. i did not try it with imported apex.
yea the one you can paint inside the skeletal mesh editor
i need to make a scene just for testing the shader -_-
๐ thx for looking into this !
@cosmic rampart can you show the screenshot of the issue, so i could verify it exist on my machine?
character cape blurred extremely strong
on the shoulders where the skin wheight is 1 there is no extreme blur
the camera is moving with the character so there should be nearly no blur at all
what version are you on?
that is where i have the problem, mh well i will upgrade and just test if it is fixed for me there too.
ok, i'll test on 4.19
@cosmic rampart well, you may open the content examples cloth map and test it on infiltrator
i will do that
mhh well for me it is happening. shaders still compiling xD
this is 4.19
downloading 4.21 now
maybe it is a simple fix i can merge down
good so that is confirmed then
so now i need to find the needle in the haystack xD
@cosmic rampart if you want to stay on 4.19, probably those 2 functions in GpuSkinVertexFactory.ush may solve the issue:
float3 GetClothSimulNormal(int Index, bool bPrevious)```
alright thank you so much for the help! ๐
you may backup the ush in the 4.19, copy those 2 from 4.21 and then hit Ctrl+Shift+. to recompile the shaders
r.ShaderDevelopmentMode in ConsoleVariables.ini probably should be set to 1
i will try this. i let you know if it worked! ๐
don't forget to add float4x4 PreviousClothLocalToWorld; on the top
i've tried and now have to wait till 5000+ shaders will compile
well...that was bad idea
i completely ignored the fact PreviousClothLocalToWorld never been modified...in any shader
yeah, it's in \Engine\Source\Runtime\Engine\Private\GPUSkinVertexFactory.cpp
alright i keep that in mind ๐
@cosmic rampart yeah, unfortunately not possible to make it work on 4.19 w/o recompilation
well that is not such a big issue, as long as it is fixable that way for now
Does anyone know if the prebuilt binaries from the launcher built with any special settings? Doing some experiments with size, but with a clean release-branch build my binaries come out just slightly larger than the prebuilt ones, trying to figure out why.
@mystic star binary build right, not source build?
@spiral mortar I might be getting the terms wrong, but I tried it this way: Building the engine from source, with shipping win32 as target, the built default UE4Game-Win32-Shipping.exe in my Engine/Binarie/Win32 is 202 KB larger than the corresponding one in my launcher-installed version. That size difference is also present later when doing a full rebuild/package on identical empty projects, though a tad smaller
@mystic star You're using VS to build the engine?
@spiral mortar yeah
The launcher build are binary builds and not source builds
"./Engine/Build/BatchFiles/RunUAT.bat" BuildGraph -target="Make Installed Build Win64" -script=Engine/Build/InstalledEngineBuild.xml -set:WithDDC=false -set:SignExecutables=false -set:EnableSymStore=false -set:HostPlatformOnly=true
It's built using smthg like that
Also why it's only ~30GB instead of the 70GB of a source build
Aight, thanks, I'll look into those parameters then. To be clear I'm just looking to generate the same sized game executables as the launcher version
It's only a difference of 150-200 KB, but when optimizing for mobile sizes I was hoping to get rid of that difference, or at least get an idea of why it's there
Damn it
I cannot get 4.22 project files generated
it says that no visual c++ 2015 installation was found, but I have it installed with all c++ tools
Use VS 2017
Wow
2015 was still working but not recommended
So I'm not surprised if it doesn't work in 4.22
I haven't compiled engine from source for a while, I guess I am not up-to-date
alright then, time to switch, thanks ๐
Does anyone know how to compile the engine from source in the most efficient manner on a completely average computer? (I think it was estimated to be 20 hours long in total ๐ฌ) All of the support topics online are about compiling game code, not compiling the actual engine. I am using Windows 10 with an AMD A10 processor and 7.5GB of RAM. Thanks in advance.
AMD A10-9600P
Visual Studio was compiling around 2314 items and took around 20-30 seconds on each
I left my computer on for around an hour and a half and it wasn't even a quarter through
Ok, why are you even compiling from source? ๐
Just for fun or for smthg specific?
It's for Chosker's IBL and Saimon Ma's toon shader models
It's maintained for 4.21 by kusogaki77
The game I am developing right now uses toon shading as a central aspect in the overall graphics design
You can achieve toon shading without a custom engine
Using post process?
Yeeeah, post process was my last resort
The current source I'm trying to compile is feature-rich and has everything I need
Ok so with a hdd and your CPU building might take up to 8h I'd say
(kinda random number)
As it takes me 45min with a SSD and a CPU 4 times faster than yours
Woah
So this extremely long compile time must be normal because my CPU is so average
Would upgrading the RAM make it faster?
Thermal throttling, huh
I'm somewhat paranoid
If I leave my PC on for all 8 hours would something bad happen?
Nope your CPU will just be very slow to not overheat
You really really need that fork?
Ok if you're lucky I'll make a binary build of it tomorrow
Don't count on it though
Thanks! And thanks for the help
Engine compiles in < 3 hours on my laptop from an HDD. It's a laptop i7 with 4/8 threads and 2.6ghz, though
Would be interesting to know the exact impact of SSD vs HDD
33mins with NVME and Ryzen 2700X ๐
Shh
Guys, what IDE you use on Linux for unreal engine code?
Tried a bunch of different options, all pretty bad: The only one that works pretty well is surprisingly VSCode.
Tried QtCreator, CLion, and KDevelop. All where terrible.
I personally gave up on using Linux with UE 
Clion is just bad, KDevelop useless, QTCreator isnt bad but not suitable for UE, VSCode is obvs the best choice so far
i heard there maybe another IDE that has support for UE4
cant remember what it is but i think its Python one or something
Clion. No typical ide stuff works but whatever
what's the issue with clion in UE4, just not performant enough with a large code base?
you have to teach clion index your project and ue source by giving cmake-type project to it or other type of project that is acceptable by clion's plugins
well there is a plugin for that already
so i imagine the issue is with just general IDE performance
It took 6 hours and 39 mins for me to compile
I noticed disk usage was 100% the entire time so maybe an SSD would speed things up
SSDs are good
I was unable to debug unreal engine code in CLion: "Command Timed Out", googled it, apparently it's a "thing" in clion world.
https://blog.jetbrains.com/clion/2015/06/clion-1-0-4-update-fix-for-command-timed-out-problem/
Also, it took me some time, hacking through clion's .idea/*.xml files to make it show the source directory as directory and not flat files
Not to speak the ammoun of RAM it eats and still performs badly.
Im currently editing the engine so that i can read the SceneTexture: CustomStencil from the base pass and i got that working. Now the thing is, when i try to use the output of the scenetexture to pass to the opacity mask value of a masked material, it just goes black instead of clipping the pixels
heres the fork im currently working on: https://github.com/moyosamedia/UnrealEngine/tree/4.21-basspass-stencil
bCanMaskedBeAssumedOpaque is also not the case since if i do an uv.x > .5 ? use stencil : 0 in the material, the else clips just fine
The GetMaterialMaskInputRaw() in \Engine\Shaders\Private\MaterialTemplate.ush:1682 seems to always return 1
float4 Local0 = SceneTextureLookup(GetDefaultSceneTextureUV(Parameters, 25), 25, false);
float Local1 = (Local0.rgba.r / 255.00000000);
float Local2 = ((abs(Local1 - (1.00000000 / 255.00000000)) > 0.00001000) ? (Local1 >= (1.00000000 / 255.00000000) ? 0.00000000 : 0.00000000) : 1.00000000);
float Local3 = (1.00000000 - Local2);
PixelMaterialInputs.OpacityMask = Local3;
this is in the generated shader file which seems just fine to me
merging to 4.22, git is doing inexact rename detection on every commit I cherry-pick from my 4.21 changes, even though they mostly modify one file with the same path between the two
any idea what is going on there?
I have about 60 commits so it might add several hours onto my merge..
ah opps, I'll ask in #source-control
like a total madman
i have implemented deferred transforms in unreal
as a feature
in the scene component
its part of some research work im doing. "Can the slow as balls transform system be optimized?"
im going to make it deferred + parallel, but only on scene components. It will still call the usual code in the static meshes and other similar stuff
@brisk silo deferred as in lazy eval?
@bright olive kinda
ive implemented a transform system, hooked into the ticks, that performs all the movements
when UpdateComponentToWorld gets called on a deferred scene component, this gets bypassed and the transform sys gets notified
then it calls it later
in a loop
ive seen that its easy to actually only move stuff once per frame with this, which is sweet
but of course it needs to be ultra limited
my goal is to use that in pubg for attachments
so it squashes down multiple UpdateComponentToWorld into one?
and actually use a data-oriented transform system
yes
it comes from the transform systme i was developing for my ECS experiments
eventually, i want that transform system (the ecs one) to be literally a checkbox
and be parallelized
and if you read it in the mean time it forces an eval?
pubg is a case where we have 100 players, and there are tons of attachments (weapon, inventory, etc) where those transforms could be done in parallel
or is it always deferred
the main place that does lots of transforms to the same thing is in movement replay right?
for character movement saved moves
yes. The issue in pubg is the attachments
this is good just for stuff that has no physics, I suppose
that is exactly the idea
weapons, weapon attachments, and all the socketed holstered weapons
thats a LOT of transforms
when you multiply by 100
Have you seen how the late update code works for hands?
nope
it only updates the render transform right at the end
what i want to do is to defer transforms + parallelize
so you can bypass updating the physical transform
there is some kind of world transform caching system already right?
there are 100 players doing the same thing
so it should be possible to parallelize a bunch of their transforms
but not all of it of course
from a few versions back
but it is cached on each instance I guess
its... hacky
so not good for cpu cache
But dive into the late update code a bit @brisk silo you might be able to get additional gains by just not updating the transforms and only updating the render transforms
my transform system is ECS and its super cache oriented
its similar to the stuff i was doing in my own engine
to update 400.000 transforms in 2 miliseconds
@granite dust thats something i wanted to do
straight up skip all the game bullshit and update render transform itself
yeah
at least for the holstered weapons
I may have been thinking of this:
FRotationConversionCache WorldRotationCache;
/** Cache that avoids Quat<->Rotator conversions if possible. Only to be used with RelativeRotation. */
FRotationConversionCache RelativeRotationCache;```
but its mostly pure experimental
well LateUpdate has an example of that for you
the biggest problem i see is just the component lifetime
Pie, editor, blueprint window, etc
its already fucked me quite a bit until i got the deferred transform working
its going to be hacky as fuck
and im ok with it
the hackier the better.. especially with giant projects being worked on by tons of people
if we can skip 0.5 ms or 1 ms im golden
i already managed to cut 3 miliseconds from pubg PS4
@granite dust well hacky is ok if the non-hacky way is converting all of UE4 to an ECS
nice! Overlaps are so damn expensive
i literally added code to 100% nuke overlaps from the engine
but added a new collision system, simplified, data-oriented (faaaaast)
takes...
0.01 ms to execute
so yeah, from 3 ms to 0.01
and once its fully tested, probably a thousand lines of hacky code just removed
[REDACTED]
oh really?
we are on 4.16
and we wont really update much
the only thing they do is cherrypick specific stuff
lol
Epic folks are all super open in person, but they don't make public announcements until the moment a thing is done
Makes sense, as that way they can always cancel it if needed
I've released a version of SculptrVR on every Engine version since 4.10 except one.. I can't remember which one
one of them had an awful bug where cubemap skyboxes whited out gameplay
jesus
i guess you know what that means @granite dust
people just told them to not update and they took it to heart
at the end it sabotaged them HARD
delays for days just from PSVR bugs
they were going against me in a PSVR contest in spain
won due to some bullshit
Each engine update took me about a day or two on average. More in the early days when I had more engine changes
over time Epic implemented almost all my changes ๐
Now I have only 5 files with changes and another 10 or so specific to PS4
neat
i made an article explaining the issues i had with psvr
a bug where timing would get fuckd when going into rest mode
I had to rebuild most of the save system, and the enter-into-VR process
There was also no way to delete saves on PS4 until 4.21, lol
oh wait... that might be secret, too?
gah
so what was redacterd ?
epic working on finally optimizing those ridiculous transforms ? ;s
wouldnt suprisme a bit
optimizing it
would like milions of dollars saved
on AWS instances
Does anyone know the point behind having AddForce methods in both PhysScene_PhysX and PhysicsInterface_PhysX, but using the interface ones only on BodyInstance's impulse related functions and the scene ones on the rest of the functions on BodyInstance?
Oh ok, makes sense. I thought it could have a deeper meaning.
And also I understood that the PhysX portion was already ported to the new abstraction, never assumed it to be WIP
Thanks!
so, remember that stuff about "ima make transform faster"
well
it works
and it indeed makes transforms faster
oo any stats you're able to share? I'm interested in the results
at the moment, due to its deferred-ness it can make stuff only transform ONCE and only ONCE per frame
which is very, very good
parallelism is possible, but i still havent implemented it there
SceneNodes can now be "fully ECS", and basically skip all unreal transform code
but when the transform updates a mesh or similar, it goes and sets the component location directly. Also no physics nor overlaps nor anything. Final location + mark render state dirty
as expected, RIP physics
about 30% faster right now
once i have some stuff more optimal + MT it will be more than twice faster
How do you handle threaded updates when one transform relies on another? Like a hierarchical relationship?
only the components you mark as "deferred" will go multithreaded
so... dont put deferred if one of your parents is already deferred
Yea gotcha
the usage is something like
mark deferred on a player mesh
and then all the attachments get their transofrm multithreaded
i have 2 flags
one is deferred, and other Skiptransform
skiptransform essentially forces the transform to be calculated ECS only
(no physics, no overlaps, no rendering)
if the proof of concept gets validated and i integrate that into pubg, i will be responsible for optimizing like 5 miliseconds of CPU time beetween that and the physics stuff
not a bad thing to comment
5ms ๐
the overlap optimization (nuke it from orbit and create a faster version) upgraded about 2.5-3 miliseconds on console
at the start of the game
that's awesome
I was wondering about the deferred child of deferred situation, but yeah it seems like just not allowing it is the thing to do
its allowed, but only becouse right now i havent finished parallelism
could be allowed to have deferred child of deferred, but it would cause a perf hit
becouse deferred works by doing Add on an array with the scene component pointer
just an array of "this needs updates"
so if you have child deferred, it will get added back again. It can still be parallelized no issue, but it would be quite inneficient
for the paralelism, the system is going to calculate the entire transform chain, and for the stuff that should actually update, it gets added into a queue
and then it calls SetWorldTransform (simplified version tho) on a loop
my current issue is some bullshit with the order in which components get attached. I want it to be done at startup properly, but weird shit happens some times
due to update orders and similar
so either i add a specific pass on BeginPlay to connect everything AFTER stuff spawned, or maybe try to JIT it
I was able to optimize some engine navmesh code from 30 ms to 2 ms, just by replacing TArray with TSet in a function... The function was doing 22000 times AddUnique on a TArray
holy hell
@brisk silo no, I just noticed that a few minutes ago ๐
@bronze crest was that code running every frame? or just once during some build step?
you really dont know the true omniscience
just use linked lists everywhere
godot style
http://www.dataorienteddesign.com/dodbook/ best book to learn about how to fast
Data-Oriented Design
@green idol it was 30 ms spikes, not every frame. on average it resulted in just ~1ms or so. but 30 ms spikes in VR are very annoying
yup awesome. so it did happen at runtime. that's mostly what i was curious about.
@bronze crest if it really is a 1 liner, PR it
I went to a local "demo day" meetup this weekend and one guy gave a whole presentation about speeding up some code he wrote by changing from an array to a Map. A map that always points to 1 because he didn't know about sets.
@brisk silo well it's not a 1 liner, more like 10 liner
good enough
cpp only?
epic likes those tiny changes
yeah the only changes I've successfully PRed are small cpp only changes
lol yeah
do you even bloom filter
thats an operation for a bloom filter. a bloom filter gives you "definitely doesnt exist" or "probably exists"
@bronze crest pr it
and its extremelly trivial to implement
since when do you guys talk so much here in this channel ๐ last I looked much into here, which was probably a few years ago, #engine-source was always very quiet
I spent a bunch of time building my own sets and maps recently. I tried puting a bloom filter before gets, but it just slowed things down
I think they miiight make sense with absolutely giant datasets
@thick storm I'd poke him myself ๐
but I suspect they don't really make sense until you are storing your set/map on disk
@granite dust interesting. On my own ive used tech similar to those to optimize my ECS
even if its a 1 bit bloom filter?
thats just hash and lookup val
Yeah I that's what I did
interesting
mine uses bloom filters to accelerate the search when querying components. Each component gets 1 bit, and that builds a "pattern", then i use it to check if a given mem block has that pattern
or fits that pattern
Maybe it works for second-indirection sets/maps
like yours
mine have small keys and values, so they are inlined
I'm sure it also depends on size dramatically. If the bloom fliter pushes you just beyond L2 cache it will definitely hurt more than help
bloom filter pushing beyond l2?
a bloom filter should be basically an u64
it can be used to accelerate searches on a hashmap
in your hashmap data strucutre, you have pointer to memory + bloom filter
when you have to hash (becouse its a hashmap after all), check on the bloom filter first
Google made a new hashmap that checks 8 bins with one lookup using vector intrinsics, and it's apparently kickick all the asses
you mean robin_map?
btw, those array-based hashmaps are damn fast
unfortunately all of these benchmarks are way outside my range of interest
I have little 8k-16k element maps all over there place
used for connecting vertices during meshing, for example
open hashmaps excel at small maps
becouse they are kept in caches
@granite dust have you thought of doing something like what i did for the acceleration of my space battle thingy?
calculate morton code + sort it
you get an array of "buckets" per tile size
that's basically how RTX works
not really, but it is how some gpu particle systems do work
becouse its 100% parallel
its a parallel for to calculate morton code, and then parallel sort
I think RTX is a hardware accelerated sort and hardware accelerated binary search
nope
its BVH fixed harward
well, BVH and triangle
so its ray->AABB intersection, and ray->triangle intersection
and i think the AABB part actually works BSP style with some prefetching or similar
i also dont know if those are SIMD
would make sense to have both parts be SIMD and work on ray batches
but yeah I'm doing open hashmaps with quadratic probing
the google hashmap is actually open as well
sort of
they kind of have a chunked hash map with bloom filter headers
the bloom filter header thing is built to check a ton of bins in the open map simultaneously using vector intrinsics
switching from TMap to my own thing resulted in a 45% perf improvement
Something like that at least
nice
UE4's TMap uses "sparse vectors", which is just a dense vector with a bitfield basically acting like a bloom filter
it got beat by almost every map I tried
other than std of course
i compared it against unordered map
std is god awful
unordered is like 10 times slower
truly godawful
do you even linked list, bruh?
std standard commite
tho std unordered keeps objects in-place
even if it resizes
it was designed in the 90s lol
most of the open adressing hashmaps are newer
i do think std should add a std::open_map or similar
which basically relaxes the "pointers must be kept valid" requirement
A nice compromise, yeah
my biggest issue with the stl
is just HOW SLOW it is in debug mode
absolutely comical
i have a obj loader that outputs std vectors, and uses iostreams internally
in debug mode
it takes 10 minutes to load stanford dragon
I just hate iterators. Simple code becomes verbose and hard for me to read
ranges tho. We are finally getting the truly good shit
only took till C++20 to be in
with ranges, we finally get the true potential of iterators
std::sort(myvector)
and it sorts it
no need to .begin .end
woah shit
thats ranges kiddie mode
you can go wild on them
becouse you can do stuff like
reverse(vector) | foreach(vector,[](auto idx){ i ^3}) | take(vector, 5)
reverse a vector, then run a for loop on it, and take the first 5 elements
you know what the truly fun is?
the for loop is only called 5 times
becouse ranges are lazy
and becouse they come alongside Concepts
if you do mistakes
the error messages are readable
you can also do this
for(auto it: myarray | view::take(10)) {
}```
once thats out
then once Epic adopts it
and once Nintendo adopts it
and then Microsoft adopts it
and then Sony adopts it
and then Apple adopts it
And then Google adopts it
then we might be able to use it in ue4
๐คท my last company was just barely getting on the C++11 train when I left, Unreal already has them beat there ๐คฃ
I think they were still fighting the holy wars of auto
Anyone here running Win10 w/ Japanese as the Display Language? Windows automatically converts \ to ๏ฟฅ and it seems to be causing probs with Skookum Script being able to find projects.
Unfortunately, I have to keep the windows display language as Japanese. Changing the VS font to Lucinda Console (something that fixes it for DOS) doesnt seem to fix it.
Hello, I am trying to debug the AutomationTool program for HTML5. Specifically, I am trying to get some breakpoints working on HTML5Platform.Automation.cs
I can debug the UnrealBuildTool program, by adding some command line arguments and setting UnrealBuildTool as startup project
However when I try to do the same with Automation Tool I can't get it to run
is it possible to debug the AutomationTool program?
so, on that fast transform stuff
it works
its super fucking fast
and its multithreaded
and its actually not even that complicated
@granite dust . There are 3 functions you need to "force" a scene component to a given world location, and to do it bypassing EVERYTHING
and 2 of those 3 can be done in parallel becouse they are fully safe
SetComponentToWorld() to set the world matrix. CalcBounds() to update the bounding box, and MarkRenderStateDirty so the render thread updates the matrices of the proxies
you need nothing more than that
bypasses physics, bypasses overlaps, and bypasses child updates
@proper vine, why Epic and UE4 in first and last, respectively? Do you mean Epic is on the vanguard, but not UE4? Are they running different speeds?
Epic games experimenting
they are allways on top of all the fancy new features, but until the feature is supported by every single platform, and there are no regressions, it wont be done
in the early days, UE4 didnt use all the C++11 features
for example, you had OVERRIDE as a macro (for virtuals)
@brisk silo you mean, the nice stuff is in specific branches (such as dev-mobile for me fro HTML5) or not even there? are we missing the good stuff in general?
*for HTML5
not even there
epic games has research teams who have internal branches doing crazy shit
or just doing ue5 stuff
can we access that?
no
lol
Is the Source Code now generating solutions with VS 2019? Do you still need 2017? Thanks.
vs 2019 is a preview release, you shouldn't even be thinking about using it in production
@brisk silo @elder falcon do you know what is necessary for debugging the Automation Tool whilst packaging for HTML5? Specifically, I am trying to get some breakpoints working on HTML5Platform.Automation.cs
no, I never had to debug the automation tool
were you able to attach a debugger to it in general and it's just that file specifically not working?
i add breakpoints but they dont "turn on"
it might have something to do with it compiling those files every time it starts somehow
but the automation tool.. does it run on packaging or much before that?
it controls the entire packaging process
I am trying to debug whilst packaging, maybe I'm wrong
ok, cool
so there must be a way
do you know what kind of logging can I use in programs code?
LogInformation(etcetc) gives me no output
hum, ok, I'll try that one, thank you
aaaah, wait, I think I've tried that one already but it wouldnt compile I think
or maybe not, Ill try agaibn
*again
@elder falcon do you know why there are so many programs in the source solution, yet only a few can be selected for building on the drop down list?
drop down list?
no list is good I just wasn't sure which one you meant
the thingy next to Win64/32/
oh
on the right
just curious
my guess was... maybe they arent meant to be built per se?
but again, then why are UBT and others?
not built, run per se
i mean
anyways, I can't seem to find a way to debug AutTool, with LogTracewarning(lalalala) I get "CommmandUtils.Logs(lalalala) is a method, which is not valid in the given context"
however if I use LogInformation(lalala) I get no output at all
ah, because it is deprecated
๐คฆ
"Deprecated renamed CommandUtils.Log to CommandUtils.LogInformation, to avoid conflicts with the underlying Tools.DotNETCommon.Log class."
Hi all, if I compiled my own version of the engine on my machine, and i want to move it to another machine... should I copy the source and rebuild on other machine or can I just move the final binaries over?
Anyone know how to resolve this when generating project files for engine source?
I seem to run into a problem quite a bit - I go to compile and VS tells me that the build failed because a process is holding on to a file in the ue4 build phase... but I just launched my computer. This is the first build attempt of the day
It also happens after I have closed the editor. That at least makes more sense - something didn't close a file handle properly or something of that nature
But on first start up??
I guess my question is: has anyone else come across this problem and if so, short of pressing delete on anything VS tooling related in proc manager what did you do to get around it?\
@quick crystal , are you compiling a solution with both game and engine or just the engine?
I'm not sure what you mean. I would think both? I open up the game sln and build from there
ok, and are you using the github source of the engine?
Yeah
ok
A forked copy
I'll give you my 2 cents, hopefully it may help
Ok ๐ any help is appreciated!
i am having the same issue when I make changes, related to HTML5 deployment
please hear me to the end
in my case, when any change is made, I have found instructions to build in this order:
- AutomationTool
- AutomationToolLauncher
- UnrealBuildTool
- UnrealHeaderTool
- HTML5LaunchHelper
- ShaderCompileWorker
- UnrealPak
- UnrealLightmass
- UnrealFileServer
and then, finally, bulild UE4
and only then
build the game one
I guess you could try first, just building UE4
and then your game
so, in VStudio, right click on UE4 and build
after built
right click on your game and build
maybe all the other steps are not necessary in your case
then, after akll built, set you game as the startup project and run
or if you dont want to debug, run without debugging or just open the .uproject that you've just updated
this is all I can tell right now
of my knowledge
@quick crystal are you using build solution?
only build targets one by one, ubt seems to have a bug currently where the wait mutex doesn't work
so right click your game project > build
Yeah I do recall seeing something about a mutex
Ah
Ok
I will start to do that and see if that fixes it
Thanks everyone
๐
@elder falcon CommandUtils.LogWarning(blablabla) has just work right now on Automation Tool. I managed to get some prints of variables values I wanted to check. Perfect, this solves my problem right now. But for future it would be really nice to know how to really debug (breakpoints, etc) any program of the engine
in my case, debugging Automation Tool whilst packaging for HTML5
yeah I dunno, I never needed to debug automation tool before
and others? UBT, etc?
not those either
ok
I can think of a hacky way
Add a while (myBool) {} at the beginning of the program
Attach to the process
Change myBool to false
that's pretty 
โค
is there a way to turn on debug symbols for Android shipping builds?
I don't see anything in the target rules
@stable mantle Simplest way is to just run the program from VS. Open the C# project for UAT/UBT or whatever, set the right startup project, then in project properties Debugging tab, specify the command line arguments you need. Then hit F5.
@gloomy hamlet yes, for me that works for UBT. But I can't make it work for UAT. Maybe the good command line arguments for UAT must be somehow different than UBT?
@gloomy hamlet when I use the same commandline arguments of UBT in UAT and run I get an error "Failed to find command ********"
where ****** is the game project name.
so maybe the syntax for commandline arguments are differnt for UBT and UAT?
for UBT this works -> ******** HTML5 Debug C:***.uproject
but not for UAT
my guess is that UBT calls UAT (but I cant debug UAT this way)... and that UAT isn;t meant to be run?
run autonomously, I mean?
@stable mantle Other way around, UAT calls UBT.
If it needs to.
And yes commands are different. If you're doing something common like build/package/cook, you should be able to see the command arguments you need by doing it via the editor/project launcher and checking the output log.
ahh, ok ๐ thanks
@gloomy hamlet you mean, launch the editor via VStudio and check output log, or just launch editor by itself, tell it to package for HTML5 and then check the editors output log?
I mean, output form VS or inside editor?
Editor output log.
I think packaging from the editor runs the automation tool.
If it doesn't, then use the project launcher instead.
thanks @gloomy hamlet
@gloomy hamlet hum... I do get command arguments on output, but only for UBT
purrfect ๐
What would be the purpose of this folder's content?
C:\UnrealEngine\Engine\Extras\VisualStudioDebugging
I noticed it when installing the UnrealVS extension. Also I noticed the VisualStudioSnippets, but those are clear what they are
@stoic harbor I believe that's for better debugging, in the sense that if a type is a bit obscure and hard to read in the VS debugger, that extension should simplify it.
I've seen that before in other engines when there are weird containers which, due to their odd layout for performance reasons, don't just expose to you an easily-browsed collection of elements.
In that case, a .natvis file helps you get that nice view ๐
Thanks @lofty charm , that makes sense since for some of the variables it says that they are optimised and wouldn't show their values while debugging in VS. Have you ever used this plugin before?
@stoic harbor I haven't! Only noticed it recently tbh. But I've seen similar kinds of plugins for other engines, as I mentioned
Give it a go!
Will do, thanks once again ๐
@stoic harbor To be clear, though, I don't think it can necessarily help the optimized variables problem - that's what you get in a build that doesn't have full debug info (e.g. you're trying to debug Development Editor instead of DebugGame Editor).
It's more for types where the values you see in the VS debugger, while not optimized away, are kinda non-sensical or not what you generally want to inspect.
Aha, that is why then. Yeah, I'm using the Development Editor
If you're using a build from the launcher, make sure you download "Editor Debugging Symbols" under "Options" when downloading the engine. Makes it easier to step into engine code as well.
That coupled with using DebugGame Editor... you'll be sweet ๐
I'm using a source version of the engine and I have built the engine using Development Editor. Do I have to build the engine using one of the Debugs as well, or I can only build the game project using the DebugGame Editor for this to work?
Have fun ๐
I already am ๐
@lofty charm about downloading debugging symbols. Is this possible but with source engine? I can't even add it to the Epic launcher, let alone symbols ๐
@stable mantle You should get them by building in debug, since you have the engine ๐
nice ๐
what about command line arguments... when compiling debug, ok "Debug" but when debug editor, should it be"Debug Editor" (with a space) or just "Debug" again?
for instance "ProjectName HTML5 Debug C:ProjectName/ProjectName.uproject
if Debug Editor should be
"ProjectName HTML5 Debug C:ProjectName/ProjectName.uproject
or
"ProjectName HTML5 Debug Editor C:ProjectName/ProjectName.uproject
Ah sorry, I was speaking in short-hand. I tend to use DebugGame Editor
I'm not sure of the exact wording for that particular command though, sorry.
ok ๐
but anyways, do you put a space between DebugGame < SPACE> Editor?
i mean when adding command line arguments for debugging, for istance the UnrealBuildTool program
Any way to package for Xbox from ue spruce build?
how does ue4 determine which monitor to start up a game on in a multi-monitor setup (multiple monitors on the same output device)
and is there a way to set that e.g. from command line that is generic to most/all ue4 games?
@pale smelt as far as I know it would start on the main monitor set in the OS
ah ok
i have a main monitor which is 1920x1200, which ue4 games always seem to boot on
and a secondary which is 1920x1080 which has a hardware video capture device looped through it
it would be nice to force the games to boot there, when using the editor its no issue as i put my play-in-editor window on that monitor
but for packaged/cooked games...
Well thereโs defiantly ways to do that as I see most games now have an in game option to choose which monitor to play it
I'm trying to understand APlayerController::UpdateRotation function.
And i can't understand what is the purpose of this call: SetControlRotation(ViewRotation);
If pawn is rotated using:
APawn* const P = GetPawnOrSpectator();
if (P)
{
P->FaceRotation(ViewRotation, DeltaTime);
}
Why set control rotation?
How do I properly navigate the editor source code? Like for example lets say that I wanted to find where the functionality for pressing "End" and having the actor snap to the actor below it in the level
@clear cloak i usually start with the Widget Reflector (under Windows -> Developer Tools I think), then you can capture the reflection data about whatever you mouse over, freeze it with escape, then open the source from there.
@clear cloak Go To Editor Preferences, search for 'snap'
Open Code in any IDE, vscode for example:
Search for 'Snap to floor'
And here you go
Engine/Source/Editor/LevelEditor/Private/LevelEditorActions.cpp
awesome thank you
Hey folks, I have been bashing my head on this for too long and am looking for advice from someone with a little more experience than me. I created a Slate Window that pops up during PreSave that asks if you want to delete a certain kind of volume. What I can't figure out is how to cancel the Save if the user clicks cancel or closes the window. If anyone has some advice I would really appreciate it. Thanks!
wrong channel ^
Not sure what the right channel is for this, but I'm trying to configure UnrealBuildTool settings on a project-wide level. I see that the setting is tagged with XmlConfigFile, but it seems like the only places to specify those settings (BuildConfiguration.xml) are in per-user folders, not per-project folders? (Engine/Saved/UnrealBuildTool/BuildConfiguration.xml, %APPDATA%/Unreal Engine/UnrealBuildTool/BuildConfiguration.xml, My Documents/Unreal Engine/UnrealBuildTool/BuildConfiguration.xml)
Is there any way to set these settings (or defaults for them) project wide without modifying UBT?
i can build the engine at home, but i sync'd on another computer to build it and i'm getting an error with the UHT
it can't parse the parameter for a timer
EngineTypes.h(2859): error : Unable to parse delegate declaration; expected 'DECLARE_DYNAMIC_DELEGATE' but found 'DECLARE_DYNAMIC_DELEGATE_OneParam'.
my delegate is declared as such
DECLARE_DYNAMIC_DELEGATE_OneParam(FTimerDeltaDynamicDelegate, float, DeltaSeconds);
is there an issue with floats as a paramtype?
nevermind its not my delegate if i delete it it just complains about another one
ok found it. when i was checking code in, i missed the defaultengine.ini in engine/programs/unrealheadertool/config...
hopefully this helps someone in the future
am I reading this right, multi user editing in 4.22??
Engine/Plugins/Developer/Concert
"FileVersion": 3,
"Version": 1,
"VersionName": "0.2",
"FriendlyName": "Multi-User Editing",
"Description": "Allow collaborative multi-users sessions in the Editor",```
yes
so like networked access to someone elses editor, a bit like teamviewing in?
is it bad that I'm just expecting it to either crash or be unusable in some other way
Anybody know why the FRotator's constructor parameters arranged by Pitch, Yaw, Roll when everything else is Roll, Pitch, Yaw? I've been debugging all night because I didn't notice this stupid arrangement ๐
n
no
it's fully features multi user level editing
you have dedicated server
which track sessions
you can start hosting session
and your editor will act as master
you connect to server and publish your session
other people can join
and it is working quite well
so like i said
its a networked accessed edtior
which people can join in and work on
maybe the teamviewer bit wasnt a concrete example, but you are technically working in the same editor space surely
Scene Fusion - it works exactly like it
Hey maybe some one smarter than me can tell me what this is. https://github.com/EpicGames/UnrealEngine/tree/4.22/Engine/Source/Runtime/Experimental/Chaos
Because from my basic understanding is that it is a new physics engine. But I could be wrong
its a physics library
definitely looks like it
what the shit
they were developing it outside of unreal?
looking at the code, stuff is SoA, vectorized, and data oriented
well shit, this is definitely ultra-early but its written from day1 with absolute perf in mind
super heavily templatized, more than anything else in the codebase
the entire thing also has parallel-fors for days
its common to see parallel for->commit data into array
promising
Clang-CL Windows build-fixes - accepted
definitely faster than godot physisc
@wooden tusk so thats pretty much my quick overview. Seems like its just math code, not very attached to stuff
i see some interesting stuff. I wonder whats the plan for that. Interesting to see code so hilariously over-templatized
very bullet-like
Hey everyone, just wondering if someone can answer a question for me. I've been looking at the TextAsset Plugin in the Unreal Academy talk - https://academy.unrealengine.com/Class-Viewer/plugins - and I can't seem to figure out how to implement the asset thumbnail. Been trying to figure out how to get the Icon128 in the resource folder to act as the thumbnail but any way i attempt to implement it doesnt seem to be working
Thanks for the insight @brisk silo ๐
I assume Chaos is mentioned physics system for Niagara
@dapper cipher dont post same question in multiple channels
at least 3 channels with the same question :/
ah, didnt realise i had posted in editor-scripting cheers. wasn't sure if here or plugins was the right location so hedged my bets
and in #plugin-dev :/