Supposedly Tim Sweeney saw the writing on the wall in 2012 as Epic sold off the Gears franchise to Microsoft that "free-to-pay" "Games as a Service" were the future of the industry and decided to shop around for expertise in that area. Tencent already had expertise in that area (both homegrown in China with several successful "GaaS" games and in already owning Riot Games at that time), and the investment was also supposedly a signifier of a bidirectional exchange of expertise sharing.
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
I hope that second 80% wasn’t a typo because it made me spit my tea out in laughter. I’ve tried my hand at a few indie games like probably every programmer/gamer and wow does that last mile to “done enough to say done with a straight face” seem to stretch on into infinity.
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.
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?
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.
> 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.
I've always wondered this-- in the game dev field, what're the standard options for server frameworks? Are Unity/Unreal the major players there too?
Like in web dev of course we have a million frameworks like Springboot, Rails, Django, Flask, Express, etc, but those aren't used for games like Call of Duty and Destiny and Fortnite etc-- they use something else and we never hear about that stuff at all in the "mainstream" software discussions.
In most cases the server code is home rolled, especially for realtime networked games. Handling multiplayer at scale is hard to solve in house, especially for popular titles and that's usually handled by third parties such as Multiplay (https://multiplay.com/about/)
The Call of Duty, Destiny (and I believe Overwatch and some other Activision games) backend is written by Demonware, which was acquired by Activision years ago. According to their website (https://demonware.net/)
We have a commitment to open source. Our core technologies are Python, Erlang, C++, and MySQL.
Epic Games has Epic Games services, which is a set of backend services that includes matchmaking, achievements, peer to peer networking, lobbies, etc. Apparently Fortnite runs on Epic Games services. Consoles and Steam have similar backends.
All of these backend services use variations on standard web stacks that, from what I can tell, don't look radically different than the variance you'd see among startups or big tech. Here is a postmortem of a Fortnite outage that talks about some of their tech stack, for example https://www.epicgames.com/fortnite/en-US/news/postmortem-of-.... They use MongoDB, Java, JAXRS, Redis, AWS, etc. All tech familiar to "mainstream" (web) software engineers.
One thing that is different is game clients (which are obviously real-time 3D engines), and specifically game servers, which are either peers or headless server versions of the game. These run game sessions once matchmaking is resolved and connect to a fixed (usually 4-128) number of players in that given session. Sometimes the backend and game server code is more tightly intertwined, for example in an MMORPG or a Destiny style "shared world" game where matchmaking happens on the fly based on the player's location in the world. There are a variety of services that will help manage hosting game servers (Multiplay, Playfab, etc.) but most of them end up running on "standard" Cloud compute providers (Azure, AWS, GCP). Ultimately the only non "mainstream" thing about running large multiplayer games is the game engine piece.
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.
Sorry, i should say that it requires running a web server. And the local web server options are immature.
Running a whole web server just to use _git (lfs)_ seems absurd to me.
The pattern is clearly intended to be used with the big centralized players - and the idea of normal git patterns, like git lfs in a local fs or git lfs over SSH were secondary concerns.
well, not even secondary concerns really - it's not at all supported. To me, this is the core use case for Git. Git LFS is incapable of doing that in the current implementations. Which bothers me.
A general purpose utility server is never a bad idea. I have a hypervisor on my home network that I will programmatically spawn instances of various vm images stored on my NAS if my dns server sees a request from my workstation for that resource. I can run about 8 at any time but I have almost a hundred different vm images each with their own purpose
I've been running git lfs without a webserver on my local NAS with lfs-folderstore[0] without a problem, and it doesn't require a webserver (and can also be used over SSH via sshfs). I can understand wanting such functionality bundled with git lfs, but all the different options seem very opinionated to me in ways that there isn't a clear "default" choice. To me custom transfer agents and transports never felt like an afterthought, and fit quite nicely into there.
My main problems with git lfs were more UX problems where certain workloads are not as well supported (e.g. keeping only a portion of the LFS files local).
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!)
I have no experience with Plastic SCM, but I will point out a couple of things you should research before settling on a non-Perforce SCM.
1. Huge files - a distributed VCS will not handle versioning them in a space-efficient manner without hacks like LFS. Plastic SCM says they handle huge files, but you want to investigate this closely.
2. Locking files - Game assets will usually be binary and non-mergeable so you need to be able to lock them so that only one person is able to edit at a time. PlasticSCM seems to have this handled according to their website.
3. Disk space - Watch the pricing for disk space. 5GB is nowhere near sufficient for a game of reasonable size. Seems reasonable at $20/month up to 100GB, but make sure you understand what you'll get. They allow for a local server, which might be useful for a company (or if you don't mind setting up your own servers).
If you're a solo or small-team indie, you can probably get by using anything. git, plastic, svn or perforce. perforce even has a cloud hosting solution.
There is a reason Perforce is widespread in the gaming industry and it's not because we're a bunch of mouth-breathing morons stuck in 2005.
As ex-game dev this is all right on the mark. Back when I was in gamedev the "code" checkout was ~160gb. The "art" checkout was ~500gb and the raw repo size was on the order of 3-4TB.
Last I kicked the tires proper on most SCM solutions Perforce was the only one that could handle repos like that and provide locking so that people won't blow away binary files.
No experience with Plastic it seems better suited for Unity from the little reading I did on their website.
If you’re using UE4 I 1000% recommend learning Perforce because it is what Epic (the developers of UE4) use as well as thousands of other game developers. So it has great editor support and is a skill set you can transfer to other projects.
> 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.
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?
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.
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.
I faintly recall an interview with one of the developers not too long ago, maybe a few years ago or so, where they said Sweeney still touches some 80% of the code base.
I just think JC/Abrash/etc have an aura/cult of personality that doesn't seem all that impressive when you get someone who is a powerhouse of tech and business acumen like Sweeney next to them.
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.
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.
Agreed, yet if you watch some Vulkan talks that seems to be the direction that is being pushed, with OpenGL being a library on top of Vulkan.
The problem is that not everyone actually needs Vulkan, and for those middleware seems to be the only way to avoid going into Vulkan low level programming.
54 comments
[ 3.0 ms ] story [ 102 ms ] threadThink of 4.26.1 as "Unreal Engine 4, version 26, revision 1"
Honestly puts almost all other creative tools, especially the likes of Adobe to shame.
Why? Because my users trust me.
So I won't make decisions that increase the likelihood of my users being exploited.
User exploitation is something tech folks doesn't seem consider, for now, anyway. But thankfully folks are waking up, and it's effecting valuations.
Sad to see that Epic sold out.
Tim Sweeney (epic CEO) acted short term out of the allure of $. It'll be hard to look into your employees & children's eyes not deeply regret this.
I've shifted to Unity. Turns out it's remarkably better, so I can't complain about this impetus for the switch.
Did he want to keep it private?
One primary source linked from Wikipedia: https://www.polygon.com/a/epic-4-0/the-four-lives-of-epic-ga...
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
1. https://www.unrealengine.com/en-US/eula/publishing
https://twitter.com/timsweeneyepic/status/118194495168648806...
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.
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?
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.
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.
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.
Like in web dev of course we have a million frameworks like Springboot, Rails, Django, Flask, Express, etc, but those aren't used for games like Call of Duty and Destiny and Fortnite etc-- they use something else and we never hear about that stuff at all in the "mainstream" software discussions.
Really interested in what's used there.
We have a commitment to open source. Our core technologies are Python, Erlang, C++, and MySQL.
Epic Games has Epic Games services, which is a set of backend services that includes matchmaking, achievements, peer to peer networking, lobbies, etc. Apparently Fortnite runs on Epic Games services. Consoles and Steam have similar backends.
All of these backend services use variations on standard web stacks that, from what I can tell, don't look radically different than the variance you'd see among startups or big tech. Here is a postmortem of a Fortnite outage that talks about some of their tech stack, for example https://www.epicgames.com/fortnite/en-US/news/postmortem-of-.... They use MongoDB, Java, JAXRS, Redis, AWS, etc. All tech familiar to "mainstream" (web) software engineers.
One thing that is different is game clients (which are obviously real-time 3D engines), and specifically game servers, which are either peers or headless server versions of the game. These run game sessions once matchmaking is resolved and connect to a fixed (usually 4-128) number of players in that given session. Sometimes the backend and game server code is more tightly intertwined, for example in an MMORPG or a Destiny style "shared world" game where matchmaking happens on the fly based on the player's location in the world. There are a variety of services that will help manage hosting game servers (Multiplay, Playfab, etc.) but most of them end up running on "standard" Cloud compute providers (Azure, AWS, GCP). Ultimately the only non "mainstream" thing about running large multiplayer games is the game engine piece.
> 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.
Running a whole web server just to use _git (lfs)_ seems absurd to me.
The pattern is clearly intended to be used with the big centralized players - and the idea of normal git patterns, like git lfs in a local fs or git lfs over SSH were secondary concerns.
well, not even secondary concerns really - it's not at all supported. To me, this is the core use case for Git. Git LFS is incapable of doing that in the current implementations. Which bothers me.
My main problems with git lfs were more UX problems where certain workloads are not as well supported (e.g. keeping only a portion of the LFS files local).
[0]: https://github.com/sinbad/lfs-folderstore
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!)
1. https://www.plasticscm.com/
1. Huge files - a distributed VCS will not handle versioning them in a space-efficient manner without hacks like LFS. Plastic SCM says they handle huge files, but you want to investigate this closely.
2. Locking files - Game assets will usually be binary and non-mergeable so you need to be able to lock them so that only one person is able to edit at a time. PlasticSCM seems to have this handled according to their website.
3. Disk space - Watch the pricing for disk space. 5GB is nowhere near sufficient for a game of reasonable size. Seems reasonable at $20/month up to 100GB, but make sure you understand what you'll get. They allow for a local server, which might be useful for a company (or if you don't mind setting up your own servers).
If you're a solo or small-team indie, you can probably get by using anything. git, plastic, svn or perforce. perforce even has a cloud hosting solution.
There is a reason Perforce is widespread in the gaming industry and it's not because we're a bunch of mouth-breathing morons stuck in 2005.
Last I kicked the tires proper on most SCM solutions Perforce was the only one that could handle repos like that and provide locking so that people won't blow away binary files.
If you’re using UE4 I 1000% recommend learning Perforce because it is what Epic (the developers of UE4) use as well as thousands of other game developers. So it has great editor support and is a skill set you can transfer to other projects.
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...
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.
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:BitKeeper with it's buildin Binary Asset Manager
Also, there's always this old gem that HN should get giddy about: https://www.st.cs.uni-saarland.de/edu/seminare/2005/advanced...
I just think JC/Abrash/etc have an aura/cult of personality that doesn't seem all that impressive when you get someone who is a powerhouse of tech and business acumen like Sweeney next to them.
It's natural to have a lot of respect for the pioneers because those who come after are building upon what they created.
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.
And so it starts.
The problem is that not everyone actually needs Vulkan, and for those middleware seems to be the only way to avoid going into Vulkan low level programming.