Tweaking Stunt Island's 30-year-old 3D engine

(annali.netlify.app)

182 points | by alberto-m 19 hours ago ago

42 comments

  • sehugg 18 hours ago

    It's difficult to impress how cool it was to have a open world flight sim / 3D movie editor in 1995. There's not much like it even today; GTA V's movie editor is close. A small "scene" grew up around it, and there were lots of mods/hacks in the 2000s: https://armknechted.com/sicentral/newpage/hacksi.html

    • hvs 17 hours ago

      Yeah, this was an incredibly unique game that I played hours of in high school. It obviously looks dated now, but was amazing at the time.

  • fabiensanglard 18 hours ago

    This is awesome. Mickey's Revenge looks so much better with LOD at 800%!

    This game is a gem, it deserves a spot in the video-game hall of fame.

    • amiga386 18 hours ago

      Mickey's Revenge: https://www.youtube.com/watch?v=AZMDm-2IIzc

      Having just watched it, I like that the engine has specific support for points, lines and filled circles, because it predates efficient texture-mapping and high polygon counts, so they use dots for stars on the US flag, a series of line segments to write text in 3D, and green spheres to represent tree leaves. These days it's all triangles (...very well lit and textured triangles with more computation expended per pixel than the 1992 computer had in its entirety)

      • sehugg 17 hours ago

        The engine only copied pixels from fast main RAM to slow VGA RAM when they changed value, so using flat shading for most of the objects was a necessity for performance. IIRC all of the planes used Gouraud shading.

        • 01HNNWZ0MV43FF 14 hours ago

          "Slow video RAM". Wild!

          • mjg59 11 hours ago

            Video ram is still slow if you're accessing it from the CPU! Doing software 3D didn't really let you make use of whatever (limited) acceleration video adapters had at the time, which were mostly aimed at accelerated lines and moving rectangles around (you know, things that are useful if you're Windows). That meant the CPU was having to calculate everything and then push pixels over the bus.

            This was why people were willing to use things like the VESA Local Bus, basically an extension of the 486 bus usually used to drive a graphics card and starting at a heady 100MB/sec. Terrible idea (it got faster as your CPU bus got faster, and if your card couldn't deal with that you'd have to underclock your CPU), but until graphics hardware started offering operations that matches what game developers wanted, the number of pixels you could push over that bus per second was genuinely a limiting factor.

            • astrange 4 hours ago

              Did it have double buffering, or did you have to update the screen while it wasn't scanning out that part?

  • thom 18 hours ago

    Absolutely loved this game. I used to try and fly an F4 Phantom through the canyon at top speed. My brother created a short film "Attack of the Killer Christmas Trees". Endless fun.

    • doug-armk 17 hours ago

      It is an amazing game! Do you (or does he) happen to still have that short film somewhere? It sounds great. I collect user-made films, and have about 320 in the Stunt Island Archive. I'm sure there are thousands more than unfortunately never got preserved.

      Archive link: https://armknechted.com/sicentral/newpage/SIArchive.html

      • thom 15 hours ago

        That's so cool! Feels like a long shot but I'll look into it.

    • CodeWriter23 14 hours ago

      My go-to stunt was climb to the aircraft ceiling then dive nearly straight toward the Golden Gate Bridge and fly under it and climb immediately. I was somewhat successful.

      • Ylpertnodi 7 hours ago

        >I was somewhat successful.

        Given the technicalities of the stunt, I rather suspect you were successful (no crash), or not successful (did crash). "Somewhat successful", seems very - I don't know - 'corporate'..."The number of deaths do not reflect the overall success of the mission, which managed to gather substantial information regarding the cause of the deaths".

        • astrange 4 hours ago

          "If you can walk away from a landing, it's a good landing. If you can use the airplane the next day, it's an outstanding landing."

  • k3vinw 14 hours ago

    It’s fun to look back and gain some insight into how this game was made. 30 years ago I was just starting middle school and I remember vividly seeing this game for the first time. I was visiting my cousins and they had all these fantastic games like Secret of Monkey Island, Lechuck’s Revenge, Maniac Mansion, Day of the Tentacle. I remember spending hours playing these games. One of my favorites was Stunts which came with a built-in track editor!

    Feels just like yesterday. Shocking how our perception of time works.

  • bhouston 18 hours ago

    Neat stuff!

    (The aliasing seems brutal now though with all that detail. Need to figure out how to boost the resolution / do some type of MSAA.)

    • pjc50 17 hours ago

      That's probably going to involve a full decompile and replacing the renderer, because DOS games are basically limited to using one of the video modes which render into 64k of video RAM.

      • sehugg 15 hours ago

        You could probably monitor the DOS VM to scrape camera/object matrices, render the static world in a huge GL (or what have you) display list, and then the other objects. The mesh formats were reverse engineered long ago.

      • dividuum 14 hours ago

        Not sure how viable that would be, but if the rotation within the game is high-res enough I imagine one might render the same scene four times each with a rotation offset equivalent to half a pixel. Then combine those to a whopping 640x400 image :)

      • pixelesque 15 hours ago

        Yes, for DOS games.

        However, DirectX games were much easier... I remember patching F-22 Total Air War (a DiD Flight Sim) to support higher resolutions back in 2001 or something, and it was just 3 bytes or so that needed changing, and worked surprisingly well...

        (Seem to remember a bit of a community doing it in various games on the simhq.com forums back then.)

      • justsomehnguy 17 hours ago
  • binary132 17 hours ago

    Really interesting! I’ve been working on an idea for a dual-purpose compiler/decompiler and this is really useful for understanding the kinds of things it might need to be used for.

    • pjc50 16 hours ago

      Those seem to be very different purposes? Also, Ghidra is really good these days.

  • neuronexmachina 15 hours ago

    This is so great. I loved Stunt Island back in the day.

  • verisimi 16 hours ago

    "Twerking stunt island's 30-year-old 3d engine?" On HN?! I'm in!

    ... ah

  • Cumpiler69 18 hours ago

    >30-year-old 3D Engine

    I saw that title and thought to myself "Wow, a 3D game engine from the 80's!" before realizing 30 years ago was 1994-95, during the time of Doom 2 and a year before the first Quake. Damn, I'm getting old fast.

    • vundercind 18 hours ago

      I'm sure everyone experiences this some, but do wonder if it's maybe worse for those for whom the year 2000 hit at the wrong point in their personal timeline. I don't think I ever quite got over guesstimating "X years ago" based on that marker. I've gotten a little better at it, but still get tripped up for a second by times-ago longer than 20 years or so.

      The other day I was reading something and was surprised that "50 years ago" was the mid '70s, not, like, the 50s. Then they hit me with Guardians of the Galaxy already being ten years old. Ouch, right in the mortality.

      • Cumpiler69 18 hours ago

        See this fact, GTA Vice City was set in the year 1986 and was released in the year 2003. That game is now older (21 years) than the time period it was set in when it launched (17 years). So if they made that game today with the same time delta, it would be set in the year 2008 when we already had the second gen iPhone.

        I think this perceived time warp is affecting many people in the 30+ age group since the world(at least the west) hasn't changed that much in the last 10-15 years or so, so compared to the past when 10-15 years delta made a huge difference, especially in the areas of technology and entertainment, so it kinda feels like time just went by us while the world stood still.

        • fmbb 13 hours ago

          The further we get past the year 2000 the more clear it becomes that all the pre-2000 memes of 2000 being the future were right, and not much happened in the west in terms of quality of life or daily conveniences or productivity since 2000.

        • ghurtado 17 hours ago

          You've put it much better than I could.

          Basically, the 80s feel like they happened about 100 years ago. Which makes us depressingly old.

      • vidarh 15 hours ago

        What really makes me feel old is realising Jurassic Park is as ancient to my son now as the early 1960's movies my parents would show me from their childhood when I was a kid.

        • Negitivefrags 14 hours ago

          The other day I made a reference to something from Jurassic Park at work to a fresh graduate, and got a blank stare. So I say "You know, from Jurassic Park". And was told "Oh, I've never seen it".

          I have never felt older than in that moment.

          • robertlagrant 10 hours ago

            How's this: if you're over 27 years old, you were born closer to the moon landing than the present day.

      • vikingerik 16 hours ago

        Yeah. Here's another: Space Invaders is now closer in time to the Gamecube than the Gamecube is to today.

        Similarly, Windows 95 is now closer in time to the Intel 4004 microprocessor than to today.

    • gwern 12 hours ago

      I think that a lot of people feel like this post-COVID, like there's a sort of 'temporal collapse' where you feel stuck in a Big Now where Now never changes, no matter how many days do, and the pounds accumulate but not the years... I wonder if there's something to how delayed careers and life progression, and the shift to streaming/recommendation heavy media, and the apparent 'stuckness' of culture, all contribute to this feeling of being unmoored in time and being unable to realize intuitively that '30 years ago was 1994'?

      I've been experimenting on my website with automatically adding to all years or dates a little subscript like '5ya'. While I thought it was clunky at first, I'm finding it helpful to be regularly reminded that when I mention something that happened in '2003', that really was '21 years ago', and I feel a little less like Billy Pilgrim.

      • fluoridation 8 hours ago

        I did feel like that for the first couple years, but I feel like it's a separate effect from feeling like it's still 2000.

    • scrapheap 17 hours ago

      The Freescape 3D Engine was in use in the 80's (see https://en.wikipedia.org/wiki/Freescape ).

      • ghurtado 17 hours ago

        Good ol' Driller will always be my first 3D game. The novelty of 3D graphics that were more than the plain wireframes of Elite, was such that we put up with the 1 FPS framerate for hours on end.

        I wish I could regain some of that wonder back, but all the Raytracing and RTX make it very hard to find.

    • pjc50 16 hours ago

      I suppose this is where I plug my own 30 year old 3D engine (caution: it's not very good) https://github.com/pjc50/ancient-3d-for-turboc