• pdxfed@lemmy.world
    link
    fedilink
    English
    arrow-up
    41
    ·
    1 month ago

    Interesting article! You should cross-post to some retro gaming communities, I’m sure they’d love it. I still never okayed this game as it came out when there was too much heat in Sims in the 90s, but probably would have enjoyed it more than some of the sim games I did play.

  • zr0@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    28
    ·
    1 month ago

    It is actually very interesting to see what your code actually causes on the CPU. Nowadays you have quite large instruction sets which help you with many operations what were manual in the past. But even then, you at this point you start counting CPU cycles. Back then, a multiplication by 4, written in C, probably resulted in using 4 CPU cycles of additions, instead of just shifting the bits 2 places left in one cycle. So you just saved 3 cycles. Sounds like nothing, but with only one core at 33MHz and hundreds of such calculations, it will have a much larger impact.

    • jdr@lemmy.ml
      link
      fedilink
      English
      arrow-up
      4
      ·
      1 month ago

      Citation needed! Processors have had multiplication in silicon since forever, and compiler writers aren’t stupid. You can even check on https://godbolt.org/ with old versions. I bet you can’t find a compiler from 1999 that won’t optimize an unsigned integer multiply to a bit shift without turning off optimisations.

      • zr0@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        5
        ·
        1 month ago

        C existed for almost a decade, before they added this specific optimization to compilers in late 1970

        I was not referencing particularly RCT and was just trying to explain, what optimizations mean on that level, be it automatic or manual.

  • chunes@lemmy.world
    link
    fedilink
    English
    arrow-up
    31
    arrow-down
    5
    ·
    1 month ago

    I dunno, I’m sort of underwhelmed.

    • use the smallest data type you need for a given purpose (which you don’t really need to worry about on modern hardware for integer types)
    • use bitwise arithmetic when possible
    • use fake pathfinding when possible (in this case random walk), and when not possible, limit search depth
    • don’t do collision detection on thousands of guests; allow them to phase through each other

    This is all fairly basic stuff I would hope any game dev would be aware of.