For a long while now, I’ve been maintaining Joy Machine’s GitHub repository (MIT license) for a variety of free game development resources (for general usage, not just Unreal Engine 4 content). This includes links to good research papers and tutorials (which I need to be better about finishing — much less updating), articles, scripts, useful git configs, and other such randomness.
Specifically for Unreal Engine 4, however, I also have included a variety of content (and some C++ code of… borderline usefulness) straight from my work on Steel Hunters. This, obviously, doesn’t even come close to everything I’ve created for SH, but these are assets that I feel are so generally useful that I don’t see a point in keeping them for myself. I figure, someday, I’ll actually get financing for the full production of Steel Hunters and I want to contribute what I can to anyone that can benefit from some of the work I’ve done along the way.
I also maintain a living Unreal Engine 4 document that I update (on the rare chance I have the time to do so) for UE4-specific advice, links, good practices, code snippets, and other such things.
I have some old (and no-longer-maintained) UE 4.17-era assets, but I’ve since decided to stick with the most recent public engine version, so all assets use Unreal Engine 4.19 at the moment.
HLSLfiles, but rather just master materials I create for a generally-applicable use case that have a variety of potential options for different uses. I call them "shaders" and not "master materials" because I take a unique approach to these (some of which I've written about before) to rely on a static switch parameters to minimize the overhead of the compiled material instance. Anyway, including amongst these are:
NOTE (on “shaders”): I’ve heard some concerns about this approach but, thus far, I have yet to see any real concrete performance issues (render time, memory usage, shader complexity) that raise any red flags for me.
I follow a consistent and best-I’ve-found convention for PBR textures:
Avoid the use of an alpha channel on imported UE4 textures as much as possible. Any imported texture with an alpha channel does not handle the standard compression formats very well and ends up being far more resource-heavy than you’d expect (from my very, very vague memory of years ago, I believe an alpha channel using DXT5 compression results in UE4 having the alpha channel use up as much resource space as the combined total of the RGB channels.
Today, since I’ve been seeing a number of posts on reddit and the UE4 forums about landscape authoring, I added the node graph that I used to create a previous iteration of the landscape for the Nevada sandbox environment for Steel Hunters.
An older screenshot of Steel Hunters using this data (though I believe this screenshot was trying out a procedural landscape material instead of using the layers):
NOTE: Aforementioned procedural landscape texture is a mistake; use precomputed layer data as much as you can.
There are things in the repo (like “Joy Create”) that are in on-and-off development and, as such, barely worth looking at; in this case, I’m working on an Electron-based l-system/turtle placement grammar set (for instancing shapes/meshes) and rendering the output (dynamically) of the ruleset someone types into the code column in a viewport to the left. I think this will be neat some day, but it’s very much a work-in-progress.
I do my best to update this repo, but it’s a non-trivial task, so a lot fails between the cracks. Documentation gets out of date and, since I don’t have a dedicated project for testing all these assets in isolation, I rely on anyone using the repo to just contact me or add an issue on the repo if anything is problematic.
Beyond that, if anyone wants to contribute, by all means feel free to do so. Neither I nor Joy Machine get any financial benefit from this whole thing; it’s solely being done to help the game development and UE4 community as I work.