I'm just getting started with Unreal, and I've got an overwhelming amount to learn. It feels like embarking into an entirely new field.
I know Google works for these questions, but I'd like to hear opinionated responses if people have experience:
How do you manage / version assets? Git? Git LFS? ...?
How do you import photogrammetry assets? Do you need to process them in other software first, and is there a desired format to put them in? What's the best way to import and version them?
Is networking support for multiple players something that works out of the box? Or do you have to hand roll this and the server code?
Are there tools for integrating sensors like VR tracking and Kinect? What about adding real time point cloud data into the scene?
How do you tweak shaders? Is there a good guide to shader development that is Unreal Engine aware?
How do you delve into raw C++? Is Rust supported?
How might I find people with experience to work with, review my code, or potentially hire?
> How do you manage / version assets? Git? Git LFS? ...?
I use Git LFS. It's a bit of a shit show though. Blueprints are a tricky thing to diff. I generally use the in editor tools to do commits.
> Is networking support for multiple players something that works out of the box? Or do you have to hand roll this and the server code?
I think unreal's multiplayer is quite good personally. All actor's have a checkbox as to whether they should be replicated. Blueprint support for handling RPCs is pretty good too. You can simulate client/server setups in the editor with multiple windows. To actually run online you'll likely want to get either steam's online subsystem working or epic's.
> How might I find people with experience to work with, review my code, or potentially hire?
I would try the unreal slacker's discord featured on the epic launcher.
I'm getting into indie game development. I know next to nothing on game dev, but figured i'd still reply since this specific part interests me quite a bit.
> How do you manage / version assets? Git? Git LFS? ...?
Recently i started working and planning on a 2D game. However i wanted 3D assets, and so the process was very asset and pipeline heavy. As such i wanted my code to always match concrete versions of asset sources - blender/etc - and so i searched around. Git LFS fit wonderfully, with one issue: It's centralized.
Github's Git LFS support is iffy. Their pricing is harsh (imo, for an indie dev) and i couldn't find ways to prune history to save cost. Likewise the entire design of Git LFS requires a centralized server, something i didn't understand.
So since i have a passion and existing projects in various Content Addressable Stores, i decided to attempt to make my own "Git LFS" with a more natural Git-like behavior. Eg syncs over SSH, not requiring servers, etc. I don't want to link it here (anonymous account), but even if i did i wouldn't advise anyone use it - it's a toy project more than anything.
With that said i found the general workflow of Git LFS to be excellent for this purpose (minus the flaws i mentioned). Tracking binary assets worked wonderfully and allowed my code to always match explicit versions of the asset sources - making my pipeline feel very repeatable.
I am a single dev on the game project so i didn't test the binary [un]locking features though - but i hear good things there.
> Is networking support for multiple players something that works out of the box? Or do you have to hand roll this and the server code?
Yes, it's not too simple, but replication is at very least tried and tested.
> Are there tools for integrating sensors like VR tracking and Kinect? What about adding real time point cloud data into the scene?
Yes, not sure about real time, but Unreal basically has support for everything somewhere.
> How do you tweak shaders? Is there a good guide to shader development that is Unreal Engine aware?
Yes. It uses a custom unreal syntax underneath, so it's not trivial but it can be done. The engine also doesn't really like you managing the shaders yourself, e.g. If you want to dynamically change/replace shaders the RHI does expose the functionality but it's buried under so many layers of abstraction it's quite painful.
> How do you delve into raw C++? Is Rust supported?
It is raw C++. I wouldn't bother trying to integrate Rust because it doesn't really like you doing your own memory management in the first place.
As a final comment, if you want to find out how something works, just read the source they give you. The documentation is genuinely shit, and most people online (including some Epic people who don't touch the core engine) don't seem to be particularly clued in. Some flows are quite well documented, e.g. Animation, but other parts of the engine basically aren't documented at all.
Also, don't implement anything complicated in blueprints. They're written once, read never.
Other systems exist, like Plastic SCM, but their much much harder to use. I had issues with a contractor who couldn't figure it out and it partially lead to us abandoning that version of the project ( on v3 now, had to change direction though).
Unreal is significantly harder than Unity, unless you stick to blueprints. Unreal's C++ is a harder language than Unity's C#.
Plus I find Unity's community to be much more newbie friendly. Unreal tends to heavily tilt towards massive projects. Unity treats mobile as a first class citizen and it's very easy to get started.
Then again, I've been using Unity since 2012 roughly, had I started with Unreal I might have a different opinion.
I use perforce to track game content and GitHub for code. UE4 has support in the editor so you can checkout and submit changes as well as see other files that are checked out by your team. It is incredibly helpful and 100x better than using GitLFS (which I started with in 2014 and a contractor highly recommended switching to perforce and he was right!)
It is Unreal C++, basically regular ISO C++ with some Unreal specific extensions, like a GC (yes Unreal has a C++ GC).
Usually the traditional workflow is for everyone use Blueprint graphical language, and a couple of C++ devs create components to be used from Blueprint.
Except for Embark, Rust is no one's radar in the kind of customers that use Unreal and console SDKs.
How do you manage / version assets? Git? Git LFS? ...?
Disclaimer: I'm a git Zealot, and use it for everything BUT version control with UE4 where Perforce is the King.
I might sound like someone having Helix shares but I don't :) Here are a few reasons for that:
- Perforce is built from the ground up to handle binary files and UE4 is just about that. So you need a VCS that is blazing fast with them and also allow you to exclusively lock files across the entire server as you cannot merge binary files. While you can do that with Git LFS 2, it still does not beat Perforce for general performance. I don't have recent metrics but Git was significantly much slower than Perforce when handling millions of files, we have dozen of millions in our repo.
- Perforce allows you to selectively "clone" parts of the depot, this is super important as it gives you granular control over your work.
- Perforce Streams are really fantastic, it is like Git branches but on steroid. You can setup complex Stream Graph setups where down Streams are giving a filtered view on parent Streams allowing you to curate what people see which makes a huge difference when you are an artist and are not concerned about getting 20-30Go of debugging symbols and other developer related files.
- Perforce is fully integrated with Unreal itself but all the tooling from Epic Games. This is what they use and support in their own pipeline.
How do you import photogrammetry assets? Do you need to process them in other software first, and is there a desired format to put them in? What's the best way to import and version them?
Agisoft Metashape, Reality Capture, Zephyr 3D are some of the typical software in use. You usually need an optimisation pass in DCCs such as Maya, 3dsmax, Houdini or Blender. Then, FBX is kind of the geometry standard for UE4, but it also supports Wavefront Obj files, USD to a degree and Alembic caches among other things.
Is networking support for multiple players something that works out of the box?
UE4 codebase is massive and will take a very long time to get around. Blueprints help a lot understanding some of the architectural concepts and looking at plugins code with a good IDE, e.g. Visual Studio certainly helps. No official Rust support atm!
I've been waiting for this for a while. Congrats on the release. I'm a little concerned the new physics will be buggy but whatever, I'm upgrading my project.
The really cool stuff in my opinion is the water system, the sky system (beautiful volumetric clouds!), and the full body solver for ik animation. The last one isn't a new thing for game engines, but the first two far exceed any free nature rendering tools I've ever seen. The hair seems really cool but I get the sense it may be hard to get into.
The accessibility of making high quality looking games is very good these days. That makes a big difference in terms of maintaining a willingness to keep plugging away at a project. Especially if one lacks the artistic skills to make up for it at the beginning.
That caught my attention as well. Godot made the same choice: vulkan for all and opengl es2 for mobile/legacy. I just hope that engines keep making the effort to maintain a backwards compatible renderer for a few more years. Not every game is a high fidelity behemoth and not every player has a beefy machine. I would hate to exclude players from a simple game just because their machine is older.
I find it a curiosity that John Carmack is perpetually touted as the whiz kid even though Tim Sweeney has done far, far more from both a technological standpoint and a business standpoint. But then again I'll never understand the fawning to begin with so there's that.
Masters of Doom is a great book going in length about the personalities and talents of Carmack and others from the early days of id Software. If you're genuinely curious about it, I think you'll find the book a fascinating read.
Is Sweeney the lead programmer with Unreal still?
Carmack seemed to care more about the technical side of things and programming. I think to him ID Software just served for allowing him to just do what he loved to do.
1: What are you afraid of, now that the engine is partly owned by Tencent? The engine is OSS after all. What paths do you see for potential break of trust?
2: What are your use cases that you need a game engine for (making mobile games, console games, PC games, arch viz, ...)
3: What points make you feel like Unity is remarkably better?
I'm asking these last 2 points because I'm in the field myself and I do have some different experiences regarding choice of engines.
Thanks!
* And what do you
My experience with unity, as a free user, was it creating a TB of log files of nothing but it complaining that it couldn't connect to the internet to phone home its telemetry.
I don't think either engine's approach here is particularly noteworthy though.
[+] [-] echelon|5 years ago|reply
I know Google works for these questions, but I'd like to hear opinionated responses if people have experience:
How do you manage / version assets? Git? Git LFS? ...?
How do you import photogrammetry assets? Do you need to process them in other software first, and is there a desired format to put them in? What's the best way to import and version them?
Is networking support for multiple players something that works out of the box? Or do you have to hand roll this and the server code?
Are there tools for integrating sensors like VR tracking and Kinect? What about adding real time point cloud data into the scene?
How do you tweak shaders? Is there a good guide to shader development that is Unreal Engine aware?
How do you delve into raw C++? Is Rust supported?
How might I find people with experience to work with, review my code, or potentially hire?
[+] [-] klmadfejno|5 years ago|reply
I use Git LFS. It's a bit of a shit show though. Blueprints are a tricky thing to diff. I generally use the in editor tools to do commits.
> Is networking support for multiple players something that works out of the box? Or do you have to hand roll this and the server code?
I think unreal's multiplayer is quite good personally. All actor's have a checkbox as to whether they should be replicated. Blueprint support for handling RPCs is pretty good too. You can simulate client/server setups in the editor with multiple windows. To actually run online you'll likely want to get either steam's online subsystem working or epic's.
> How might I find people with experience to work with, review my code, or potentially hire?
I would try the unreal slacker's discord featured on the epic launcher.
Edit: for good laughs, here's Tim Sweeney himself tweeting a similar question in 2016 about whether git LFS is a good idea for game dev: https://twitter.com/timsweeneyepic/status/747888067248295937...
[+] [-] adkadskhj|5 years ago|reply
> How do you manage / version assets? Git? Git LFS? ...?
Recently i started working and planning on a 2D game. However i wanted 3D assets, and so the process was very asset and pipeline heavy. As such i wanted my code to always match concrete versions of asset sources - blender/etc - and so i searched around. Git LFS fit wonderfully, with one issue: It's centralized.
Github's Git LFS support is iffy. Their pricing is harsh (imo, for an indie dev) and i couldn't find ways to prune history to save cost. Likewise the entire design of Git LFS requires a centralized server, something i didn't understand.
So since i have a passion and existing projects in various Content Addressable Stores, i decided to attempt to make my own "Git LFS" with a more natural Git-like behavior. Eg syncs over SSH, not requiring servers, etc. I don't want to link it here (anonymous account), but even if i did i wouldn't advise anyone use it - it's a toy project more than anything.
With that said i found the general workflow of Git LFS to be excellent for this purpose (minus the flaws i mentioned). Tracking binary assets worked wonderfully and allowed my code to always match explicit versions of the asset sources - making my pipeline feel very repeatable.
I am a single dev on the game project so i didn't test the binary [un]locking features though - but i hear good things there.
[+] [-] mhh__|5 years ago|reply
Yes, it's not too simple, but replication is at very least tried and tested.
> Are there tools for integrating sensors like VR tracking and Kinect? What about adding real time point cloud data into the scene?
Yes, not sure about real time, but Unreal basically has support for everything somewhere.
> How do you tweak shaders? Is there a good guide to shader development that is Unreal Engine aware?
Yes. It uses a custom unreal syntax underneath, so it's not trivial but it can be done. The engine also doesn't really like you managing the shaders yourself, e.g. If you want to dynamically change/replace shaders the RHI does expose the functionality but it's buried under so many layers of abstraction it's quite painful.
> How do you delve into raw C++? Is Rust supported?
It is raw C++. I wouldn't bother trying to integrate Rust because it doesn't really like you doing your own memory management in the first place.
As a final comment, if you want to find out how something works, just read the source they give you. The documentation is genuinely shit, and most people online (including some Epic people who don't touch the core engine) don't seem to be particularly clued in. Some flows are quite well documented, e.g. Animation, but other parts of the engine basically aren't documented at all.
Also, don't implement anything complicated in blueprints. They're written once, read never.
[+] [-] offtop5|5 years ago|reply
Other systems exist, like Plastic SCM, but their much much harder to use. I had issues with a contractor who couldn't figure it out and it partially lead to us abandoning that version of the project ( on v3 now, had to change direction though).
Unreal is significantly harder than Unity, unless you stick to blueprints. Unreal's C++ is a harder language than Unity's C#.
Plus I find Unity's community to be much more newbie friendly. Unreal tends to heavily tilt towards massive projects. Unity treats mobile as a first class citizen and it's very easy to get started.
Then again, I've been using Unity since 2012 roughly, had I started with Unreal I might have a different opinion.
[+] [-] mentos|5 years ago|reply
Perforce!
https://allarsblog.com/2014/09/25/setup-perforce-digital/
I use perforce to track game content and GitHub for code. UE4 has support in the editor so you can checkout and submit changes as well as see other files that are checked out by your team. It is incredibly helpful and 100x better than using GitLFS (which I started with in 2014 and a contractor highly recommended switching to perforce and he was right!)
[+] [-] jayd16|5 years ago|reply
Git LFS is fine. Many shops use Perforce (although I hate it).
>import photogrammetry assets?
Depends what you have. The standard pipeline is to use a tool like Maya or Blender for model work and import into the engine as obj or fbx files.
Unreal is supposed to have a pretty good out of the box network setup.
Yes every VR platform seems to have an SDK for Unity and Unreal.
Shaders and shader dev are a very deep topic that you should google.
[+] [-] pjmlp|5 years ago|reply
Usually the traditional workflow is for everyone use Blueprint graphical language, and a couple of C++ devs create components to be used from Blueprint.
Except for Embark, Rust is no one's radar in the kind of customers that use Unreal and console SDKs.
[+] [-] momothereal|5 years ago|reply
[+] [-] nix23|5 years ago|reply
BitKeeper with it's buildin Binary Asset Manager
[+] [-] kelsolaar|5 years ago|reply
I might sound like someone having Helix shares but I don't :) Here are a few reasons for that:
- Perforce is built from the ground up to handle binary files and UE4 is just about that. So you need a VCS that is blazing fast with them and also allow you to exclusively lock files across the entire server as you cannot merge binary files. While you can do that with Git LFS 2, it still does not beat Perforce for general performance. I don't have recent metrics but Git was significantly much slower than Perforce when handling millions of files, we have dozen of millions in our repo. - Perforce allows you to selectively "clone" parts of the depot, this is super important as it gives you granular control over your work. - Perforce Streams are really fantastic, it is like Git branches but on steroid. You can setup complex Stream Graph setups where down Streams are giving a filtered view on parent Streams allowing you to curate what people see which makes a huge difference when you are an artist and are not concerned about getting 20-30Go of debugging symbols and other developer related files. - Perforce is fully integrated with Unreal itself but all the tooling from Epic Games. This is what they use and support in their own pipeline.
I would recommend reading all the articles from Dan Bloch, starting with "Life on the Edge: Monitoring and Running A Very Large Perforce Installation", https://static.googleusercontent.com/media/research.google.c..., and then "Still All On One Server: Perforce at Scale", https://research.google/pubs/pub39983/.
Agisoft Metashape, Reality Capture, Zephyr 3D are some of the typical software in use. You usually need an optimisation pass in DCCs such as Maya, 3dsmax, Houdini or Blender. Then, FBX is kind of the geometry standard for UE4, but it also supports Wavefront Obj files, USD to a degree and Alembic caches among other things. Yes: https://docs.unrealengine.com/en-US/InteractiveExperiences/N... VR is really well supported and in the context of Virtual Production you can track a camera with a Vive Puck for example: https://docs.unrealengine.com/en-US/WorkingWithMedia/nDispla... There is also a Lidar Import plugin now: https://docs.unrealengine.com/en-US/WorkingWithContent/Lidar... UE4 shaders are HLSL and there is a graph, i.e. the Material Editor, where you can author them visually: https://docs.unrealengine.com/en-US/RenderingAndGraphics/Mat... You can also add custom HLSL directly there. There are plenty videos on Youtube and the Unreal Engine channel has a ton of good ones: https://www.youtube.com/channel/UCBobmJyzsJ6Ll7UbfhI4iwQ UE4 codebase is massive and will take a very long time to get around. Blueprints help a lot understanding some of the architectural concepts and looking at plugins code with a good IDE, e.g. Visual Studio certainly helps. No official Rust support atm!Cheers,
[+] [-] klmadfejno|5 years ago|reply
The really cool stuff in my opinion is the water system, the sky system (beautiful volumetric clouds!), and the full body solver for ik animation. The last one isn't a new thing for game engines, but the first two far exceed any free nature rendering tools I've ever seen. The hair seems really cool but I get the sense it may be hard to get into.
The accessibility of making high quality looking games is very good these days. That makes a big difference in terms of maintaining a willingness to keep plugging away at a project. Especially if one lacks the artistic skills to make up for it at the beginning.
[+] [-] modeless|5 years ago|reply
[+] [-] whywhywhywhy|5 years ago|reply
Honestly puts almost all other creative tools, especially the likes of Adobe to shame.
[+] [-] unknown|5 years ago|reply
[deleted]
[+] [-] tomc1985|5 years ago|reply
Think of 4.26.1 as "Unreal Engine 4, version 26, revision 1"
[+] [-] pjmlp|5 years ago|reply
And so it starts.
[+] [-] lazypenguin|5 years ago|reply
[+] [-] troughway|5 years ago|reply
[+] [-] jonas21|5 years ago|reply
It's natural to have a lot of respect for the pioneers because those who come after are building upon what they created.
[+] [-] senko|5 years ago|reply
[+] [-] Grazester|5 years ago|reply
[+] [-] turing_complete|5 years ago|reply
[+] [-] IronRanger|5 years ago|reply
[+] [-] elevenoh|5 years ago|reply
[deleted]
[+] [-] nuclearcookie|5 years ago|reply
1: What are you afraid of, now that the engine is partly owned by Tencent? The engine is OSS after all. What paths do you see for potential break of trust?
2: What are your use cases that you need a game engine for (making mobile games, console games, PC games, arch viz, ...)
3: What points make you feel like Unity is remarkably better?
I'm asking these last 2 points because I'm in the field myself and I do have some different experiences regarding choice of engines. Thanks! * And what do you
[+] [-] klmadfejno|5 years ago|reply
My experience with unity, as a free user, was it creating a TB of log files of nothing but it complaining that it couldn't connect to the internet to phone home its telemetry.
I don't think either engine's approach here is particularly noteworthy though.
[+] [-] cleansy|5 years ago|reply
[+] [-] theandrewbailey|5 years ago|reply
https://twitter.com/timsweeneyepic/status/118194495168648806...
[+] [-] echelon|5 years ago|reply
Did he want to keep it private?