I’ve done hardly any game development in my life (making a simple Gamemaker game at high-school in 2016 or 17, & making a box fall in Unity a couple years back; so you can call me a complete noob. But I was just wondering: If I for whatever reason wanted to make my game work natively on a Bunch of different Windows versions, like 95, 98, 98SE, 2000, ME, XP, Vista, 7, 8, 8.1, 10 & 11; would that be possible without making separate versions of the game for different Windows versions? It sounds like a cool project for doing just for the fun of it, for learning about the different OS versions once I already have more experience with development on modern Windows. What if I made the game on Godot game engine? Can Godot games even run on such old operating systems? I heard that Windows 2000 and above are NT based, and major Windows versions prior to that ran on something else: would this greatly affect the development process at all?

Clarification: Sorry, but I should have clarified that my development platform is Linux, and would be porting to Windows, which obviously should change the answer to my question drastically; I have no idea why I worded things to sound like I would develop the game on Windows first and foremost; but that was my mistake.

  • _cnt0
    link
    fedilink
    2010 months ago

    If you use plain C and only the part of the Win32 API that has been availlable since 95 that should be doable. No modern toolkit/SDK will likely enable you to do that. The problem will be finding downloads/sources for OS, SDK, and IDE old enough to target Windows 95. You might be able to use DirectX 8, but it will require installing DirectX 9 on newer versions of Windows as a dependency (DX10+ is not backwards compatible with DX8 and DX8 is the latest you get for Windows 95, DX9 is still availlable for Windows 11). Your game will have to be offline only or rely on insecure network stack because hardware old enough to run 95 does not have CPU instruction sets required by implementations for modern SSL.

    would this greatly affect the development process at all?

    Well, take the information I provided and have a guess ;-)

    • @[email protected]
      link
      fedilink
      510 months ago

      One of the big problems with getting hold of dev tools from that era is there wasn’t a lot of stuff that was free. Pretty much all the windows developer tools had a price of entry. This means there’s less chance of being able to find stuff because someone making it available for download would probably be piracy.

      They’d probably want to develop with Visual C++ 6 on Windows 98SE for the best chance of success. I think I agree that DX8 is probably the one to target, though there might be better luck targeting an OpenGL (or maybe SDL) version from that era.

      Getting decent docs might be hard too as even the MSDN library was a paid for product.

      As for networking, I think I’ve seen some projects that port TLS 1.2 to 9x windows, so I wonder if you could bundle a library to enable this. I guess the OS TCP/IP stack is riddled with holes too though probably making this a bad idea regardless.

      It would definitely be an interesting project, but I don’t doubt it’s going a pretty frustrating time throughout

      • _cnt0
        link
        fedilink
        3
        edit-2
        10 months ago

        I think using OpenGL will be even harder than DX8. Your point with the documentation is spot on: it will be hard to come by. As for TLS/SSL third party libs: I had the fun opportunity to implement/maintain the backwards compatibility for a piece of software for Win XP/Server 2003 ~3 years ago. We had to jump some hoops with a custom compilation of OpenSSL to get the parts of TLS 1.2 we needed in Windows 10. I can say with confidence, that that route is a dead end for even older Windows versions.

    • _cnt0
      link
      fedilink
      310 months ago

      Little add-on: My gut feeling is that you’ll need to set up a development environment on Windows 98/Me or NT4/2k, maybe XP.

    • @[email protected]OP
      link
      fedilink
      110 months ago

      Thanks for that. I’m sorry, I have no idea why I worded the post the way I did; but I kept on making it sound like I would be developing the game initially on Windows. As a matter of fact, I would develop it on Linux first, and the Windows version would be a port. Would any of what you said be be doable in the same way, or similarly, if I’m developing on Linux and porting to Windows?

      • @[email protected]
        link
        fedilink
        210 months ago

        That’s an entirely different question, which you should have posted instead. Cross platform development is actually getting easier lately and is much less troublesome than what you were asking. Your question was more akin to “can I develop a game that works on Slackware 3.0 with a Linux 2.x kernel as well as on an Ubuntu 23.04?”.

        • @[email protected]OP
          link
          fedilink
          110 months ago

          Sorry about that. What do you think then? Would it be easier to develop first for Windows, and port second to Linux in order to get them working on all the old Windows versions, or the other way around?

          • _cnt0
            link
            fedilink
            510 months ago

            Don’t.

            What people here are saying: Don’t try to enter the dimension of suffering and pain.

            What you are saying: OK. How can I enter the dimension of suffering and pain?

            If you insist on entering the dimension of suffering and pain: Go a step further back and develop your game for DOS. Older Windows versions will just be able to run it out of the box, and everything else can run it via DOSBox.