1
\$\begingroup\$

A lot of older games use DirectX9 which makes sense, however several modern games such as Sonic Mania, Terraria and Undertale all use DirectX9. Is there some benefit to using an older version of the api?

\$\endgroup\$
0

2 Answers 2

4
\$\begingroup\$

The vast majority of game developers today don't deal with graphic APIs like DirectX, OpenGL, Mantle or Vulkan directly. They delegate that to a library or game engine, so they can focus on the fun part (the actual gameplay). This is the case for two of three examples in this question. Terraria is built in XNA. Undertale is built in GameMaker. Only Sonic Mania uses an inhouse engine (which Christian Whitehead developed specifically for Sonic fangames in 2007 and probably didn't make substantial changes to after it worked).

But game engines tend to be a bit behind the newest APIs. That's because modern game engines are extremely complex pieces of software. Transitioning to newer graphics APIs costs a ton of developer hours and can break a lot of things. So they tend to have a more conservative approach to this. This is especially the case with game engines that focus on 2d (like GameMaker Studio, which was used for Undertale). While newer APIs open up a lot of cool new possibilities for 3d graphics, their innovations for classic 2d graphics are pretty much negligible.

And in addition to that, game developers also tend to be a bit behind the latest versions of their game engines. One reason for that is a common mantra in game development: "Never update your engine during a project". The reason is that upgrading to a newer version of a game engine can break a lot of things. Things you wouldn't expect. So unless you have a very good reason to upgrade your game engine version (like a fix for a bug that affects your game or a new feature that would make development measurably easier), you usually try to stick with the version you started the game with.

Another reason is that many games are built upon already created technology for their respective game engines. They might use 3rd party plugins or inhouse systems that only run on older versions of the engine. Replacing or updating those technologies might cause more work than the benefits of upgrading to a newer version of the engine. So they remain stuck with their version of the engine.

Licensing might also be an issue. Some game engines only license a specific major version, and when they release a new major versions, they want people to pay again for switching. RPGMaker is known for this business model. Other game engines might occasionally change their license conditions for newer versions in ways some developers don't agree with, so developers get around those new conditions by not updating. For a recent example, there is speculation that the current Unity version 2023.3 will turn into such an "eternal release", because Unity announced a new "runtime fee" that will be charged per sale/download from the next version on.

\$\endgroup\$
2
  • 1
    \$\begingroup\$ This is probably one of the best answers I've seen to a question online. Thank you for going into depth and actually explaining your answer. \$\endgroup\$
    – Auxy
    Commented Jan 2 at 21:50
  • 1
    \$\begingroup\$ Likely the developers are just using really old codebases. There was a time when it made sense to use Direct3D 9 even when much newer APIs were available: mainly when "emerging markets" like South Korea, Russian, China, etc. were still using Windows XP. There was also a time when kids were getting 'hand-me-down' systems running Windows XP. That time has long past, and there's no technical value at all to using legacy Direct3D 9 when the minimum supported OS is Windows 7 or later. \$\endgroup\$ Commented Jan 9 at 21:51
2
\$\begingroup\$

I can't answer this definitively as I don't use DirectX, but two reasons I can think of:

  • support for more (older) systems,

  • if they don't need the new features of later versions, why put in the engineering effort (as long as DirectX9 is still supported by the OS).

There may be other benefits specific to DirectX - other answers will have to address those.

In what I'm guessing is an analogous situation, I'm developing with Vulkan 1.0 rather than the later versions, for those two reasons.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .