Hiker, software engineer (primarily C++, Java, and Python), Minecraft modder, hunter (of the Hunt Showdown variety), biker, adoptive Akronite, and general doer of assorted things.

  • 1 Post
  • 51 Comments
Joined 1 year ago
cake
Cake day: August 10th, 2023

help-circle









  • I was going to defend “well ray tracing is definitely a time saver for game developers because they don’t have to manually fake lighting anymore.” Then I remembered ray tracing really isn’t AI at all… So yeah, maybe for artists that don’t need to use as detailed of textures because the AI models can “figure out” what it presumably should look like with more detail.

    I’ve been using FSR as a user on Hunt Showdown and I’ve been very impressed with that as a 2k -> 4k upscale… It really helps me get the most out of my monitors and it’s approximately as convincing as the native 4k render (lower resolutions it’s not nearly as convincing for … but that’s kind of how these things go). I see the AI upscalers as a good way to fill in “fine detail” in a convincing enough way and do a bit better than traditional anti aliasing.

    I really don’t see this as being a developer time saver though, unless you just permit yourself to write less performant code … and then you’re just going to get complaints in the gaming space. Writing the “electron” of gaming just doesn’t fly like it does with desktop apps.



  • Sure, there’s a cost to breaking things up, all multiprocessing and multithreading comes at a cost. That said, in my evaluation, single for “unity builds” are garbage; sometimes a few files are used to get some multiprocessing back (… as the GitHub you mentioned references).

    They’re mostly a way to just minimize the amount of translation units so that you don’t have the “I changed a central header that all my files include and now I need to rebuild the world” (with a world that includes many many small translation units) problem (this is arguably worse on Windows because process spawning is more expensive).

    Unity builds as a whole are very very niche and you’re almost always better off doing a more targeted analysis of where your build (or often more importantly, incremental build) is expensive and making appropriate changes. Note that large C++ projects like llvm, chromium, etc do NOT use unity builds (almost certainly, because they are not more efficient in any sense).

    I’m not even sure how they got started, presumably they were mostly a way to get LTO without LTO. They’re absolutely awful for incremental builds.


  • Slow compared to what exactly…?

    The worst part about headers is needing to reprocess the whole header from scratch … but precompiled headers largely solve that (or just using smaller more targeted header files).

    Even in those cases there’s something to be said for the extreme parallelism in a C++ build. You give some of that up with modules for better code organization and in some cases it does help build times, but I’ve heard in others it hurts build times (a fair bit of that might just be inexperience with the feature/best practices and immature implementations, but alas).