One thing I've found to repeatedly be true while working on my solo-project Triton, is that building a full 3D game by yourself requires taking as many shortcuts as possible. The art budget is one single person, so from concept to implementation an asset needs to be able to get into the editor as fast as possible. Hand modeling every single asset, UV-unwrapping, texturing in Substance Painter (or another DCC), and then importing everything into Unreal is simply too many hours spent to ship in a reasonable timeframe. So Triton ships with no texture maps at all. Every single surface in the game (well, to be fair, *almost* every single surface in the game) is composed procedurally at runtime from data baked into each mesh.
Models are sculpted as VDBs and adaptively reduced to uniform triangle density. There is no manual retopo, no manual (or auto) UV unwrapping. In fact, there are no UVs at all. One single composite mask is baked from the geometry into each vertex color channel: signed curvature in red (0.5 flat, above convex, below concave), ambient occlusion in green, and fractal wear in blue. Height and gradient are computed in the shader from position rather than baked, so nothing is pinned to a scale.
Inside Unreal, all material instances derive from one of 3 master materials that pertain to shading models (opaque, glass, foliage). A single HLSL custom node drives the entire material, with vector parameters exposed to define colors such as base color, wear color, cavity color, and edge color, as well as scalar parameters exposed to control PBR material attributes such as base roughness, base metallic, AO, and noise strength. Objects needing their material instances to subscribe to the game's occlusion system can simply override the shading model from Default Lit to Masked and they will react accordingly.
What this allows me to do is build an environment with a very small subset of raw materials (copper, brass, wood, iron, fabric, slate, dirt, etc.) that can be applied to any object in the game world without the need for tweaking UVs or building custom textures. In addition, it also greatly reduces memory consumption because at any given moment there are essentially no textures that need to be loaded.