• AdamEatsAss@lemmy.world
    link
    fedilink
    English
    arrow-up
    25
    arrow-down
    1
    ·
    10 months ago

    Maybe this will push more game developers to develop games that use multiple cores? I know nothing about game development.

    • anlumo@lemmy.world
      link
      fedilink
      English
      arrow-up
      51
      arrow-down
      1
      ·
      10 months ago

      That has been happening for the last decade, but it’s really hard.

    • drfuzzyness@lemmy.world
      link
      fedilink
      English
      arrow-up
      32
      arrow-down
      2
      ·
      10 months ago

      Most AAA game studios target consoles first. Their in-house or external porting teams will then adapt it for Windows, but by then major engine decisions will likely have already been made in service of supporting the Ryzen/RDNA based Xbox Series and PS5 consoles. Smaller studios might try to target all systems at once but aiming for the least common denominator (Vulkan, low hardware requirements). Switch is a bit of its own best when trying to get high performance graphics.

      Multi threading is mostly used for graphics, sound, and animation tasks while game logic and scripting is almost always single threaded.

      • deleted@lemmy.world
        link
        fedilink
        English
        arrow-up
        11
        arrow-down
        2
        ·
        10 months ago

        I bought Ryzen 3950x 16 cores 32 threads.

        The first thing I noticed is some AAA games only utilize 8 cores. When you go multi threaded, it’s a matter of adding more threads which can dynamically selected based on the host hardware. AAA game studios are going the bad practice route.

        I understand if they port an algorithm optimized to run on specific hardware as it’s. But, a thread count?

        • Nighed@sffa.community
          link
          fedilink
          English
          arrow-up
          26
          ·
          10 months ago

          There is only so much that can be multi-threaded, beyond that the overhead just slows things down (and can cause bugs)

          More simulation type games (city skylines etc) can multithread more (generally) while your standard shooter has much less that it can do (unless you have AI bots etc)

          • deleted@lemmy.world
            link
            fedilink
            English
            arrow-up
            2
            arrow-down
            1
            ·
            10 months ago

            My point here is the developer managed to split the load evenly between 8 threads. How come they cannot do it for 16?

            The keyword, evenly, means all 8 threads are at 100% while other 8 threads are at 1-2%.

            • throwwyacc@lemmy.world
              link
              fedilink
              English
              arrow-up
              8
              ·
              10 months ago

              You’d need to look at the actual implementation, it’s hard to speculate from a tiny amount of data. What game are you referencing?

              And as someone who has done multi threaded programming I can tell you that for games it is unlikely that they can just add more cores. You need work that truly can be split up, meaning that each core doesn’t needs work to do that doesn’t rely on the results from another core

              Graphics rendering is easy for this and it’s why gpus have a crazy number of cores. But you aren’t going to do graphics compute on the cpu

              • deleted@lemmy.world
                link
                fedilink
                English
                arrow-up
                1
                ·
                10 months ago

                That was long time ago. I believe the game was BF1.

                I know it’s hard to speculate but 100% cpu usage for solid 5~7 seconds only for 8 cores cannot be separate workload (single threaded). A spike is understandable tho.

                The game play wasn’t impacted to be honest.

              • Justin@lemmy.jlh.name
                link
                fedilink
                English
                arrow-up
                1
                ·
                10 months ago

                For that number to be 8 though suggests that there’s just a “number of workers” variable hard-coded somewhere.

                • throwwyacc@lemmy.world
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  ·
                  10 months ago

                  Potentially suggests, but does not prove And I’m quite skeptical they they truly have an example of a game that is running 100% on all 8 cores, high maybe but 100%?

        • ඞmir@lemmy.ml
          link
          fedilink
          English
          arrow-up
          6
          ·
          10 months ago

          it’s a matter of adding more threads

          You can’t ask 300 people to build a chair, and expect the chair to be finished 300x faster than if a single person would build it.

          • Buddahriffic@lemmy.world
            link
            fedilink
            English
            arrow-up
            5
            ·
            10 months ago

            Also, to make it more accurate to what multi-threading does, none of those 300 people can see what the others are doing. And the most reliable ways of sending messages to each other involve taking a nap (though it might be brief, you might wake up in an entirely different body and need to fetch your working memory from your old body or worse, from RAM).

            Or you can repeatedly write your message until you can be sure that no one else wrote over it since you started writing it. And the more threads you have, the more likely another one wrote over your message to the point where all threads are spending all of their time trying to coordinate and no time working.

              • Buddahriffic@lemmy.world
                link
                fedilink
                English
                arrow-up
                1
                ·
                10 months ago

                I’m not familiar with their implementation but they’ll likely have one of those mechanisms under the hood.

                You can only avoid them in very simple cases that don’t really scale up to a large number of threads in most cases. The one exception that does scale well is large amounts of data that can be processed independently of the rest of the data and the results are also independent. 3D rendering is one example, though some effects can create dependencies.