Dear mobile game devs. When I play games like that, I always wonder if it’s the physics engine that’s actually random and produces the result?

Or is the result calculated before the animation happens, and dictates the animation?

I’ve always wondered. I have some notion of programming, but from far back, and I’ve been scratching my head long enough about this.

Thanks in advance.

  • KeenFlame@feddit.nu
    link
    fedilink
    arrow-up
    8
    arrow-down
    2
    ·
    10 months ago

    Physics engines are rarely deterministic, which means most of these games use what you would call the “animation deciding results”

    It is very rare that it works the other way around contrary to what others have commented it is non trivial to make weighted deterministic random in this manner

    While technically possible, only very specialised games with reasons good enough to budget the programming required will go the route you describe as “result calculated before the animation”

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

      I just want to say, having worked in the lottery industry and having made one of the first predetermined pachinko games, it’s actually fairly easy.

      • Sethayy
        link
        fedilink
        arrow-up
        4
        arrow-down
        1
        ·
        10 months ago

        And with how cheap 2d simulations are (even cheaper on a gpu) they could pretty easily run a a couple hundred then pick their favorite odds, save the path trace as a bezier, ship those weights with the game and no one could tell the difference

        • mindbleach
          link
          fedilink
          arrow-up
          2
          ·
          10 months ago

          This 200-pixel-tall plunger could have every possible input scored, and it’d take approximately no time and no space. If it somehow has a full 16-bit range then the score table would only weigh 256 KB. (Assuming you can’t score five billion on one ball.)

          It would be nearly trivial to then nudge inputs onto lower- or higher-scoring values, nearby, at whatever rate maximizes player spending. Because that is the only metric these vampires care about.

          This assumes they don’t just rely on the placement of the pegs to work like they do in real life. You know. Like actual pachinko games. High-scoring targets are marked that way because fewer balls go there.

          But here’s what I think they actually do:

          There might only be 30-odd real positions for the plunger. You can pull it as precisely as you like. It’ll animate like that matters. But you’re just picking a bucket, and in each bucket there’s a range of launch speeds. The game’s been trying random speeds behind-the-scenes. It knows how much each speed will score, when it picks it from that bucket.

          That way they can place the pegs and bumpers wherever they damn well please, and the game can still hand you good scores and bad scores at its sole discretion.

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

          That’s it in a nutshell.

          I had to implement the system in a special way, but that’s due to the nature of the lottery industry, auditability, security, etc being critical.

          There was really two systems at play. One was a “entry code” that the player would acquire either by scratch ticket or other means which they would enter into the system. That would tie their entry to an outcome. The winning decision could have been predetermined at the time the codes/entries were generated, or there could be an instant probability-based determination on the server end.

          At any rate, what would be presented to the user then is the ability to drop 10 little pucks anywhere they want, and watch them fall and bounce around, but regardless of where they dropped them, they were going to in the same bins either way. Then the prize would be revealed.

          At the time there was no easy physics systems, so I had to code my own but it wasn’t that hard. I just brute forced it to drop a million pucks overnight, going left to right in tiny sub pixel increments. Built a table of animation strings which provided a convincing animation for the puck to go into any bin, regardless of where the player dragged it in the interactive portion of the play.

          In the end, even though it was an incredibly innovative lottery product at the time, the first of its kind actually, we could not deploy because every state/intl lotteries thought it was far too convincing that the player had influence on the outcome, even though it was fully disclosed no action that their actions had no bearing on the outcome.

      • KeenFlame@feddit.nu
        link
        fedilink
        arrow-up
        1
        ·
        10 months ago

        It may be considered easy, and for sure this one probably is, but it doesn’t compare in complexity to normal physics engines. The whole thread read like it was, so I felt I should provide a better perspective on it.

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

      There are plenty of deterministic physics engines. In this case I don’t think it would make sense to add extra complexity to rig the result, this mini game already has plenty of obstacles to make getting max points hard. What they might do is fuzz the plunger input randomly so you can’t memorize the perfect location and get max points every time.