DirectX... costs money?

Started by
11 comments, last by Bru 14 years, 5 months ago
i recently read somewhere that if i try selling my game(that uses directX),i'll need to pay for a license. is it true? if it is,that's problematic for me. i am a sole person and i probably cant pay for a license. i am also using directX in order to be more impressive when i present my game when i try to get into a gaming company. i dont want to use openGL because then i'll go into a lower level and need to build myself more functions and classes(and i try not to use external libarys too much). a real engine? well i heared unity is nice,but now everybody seems to be using it and considering the fact i wont have a degree soon i need to be extrodinary if i want to get a job as a game programmer... not mention i dont want a unity watermark appearing on my game for using the free version. so... does directX realy cost money when i try selling my game?
Advertisement
I have yet to find something that says you have to purchase a license to use it. You already have to use Microsoft Windows and Visual Studio before you can use DirectX anyways, and if you only use Visual Studio Express, I believe I've heard there are limitations on commercial distribution of applications coded in Visual Studio Express.

I'm assuming since they include the redist for free: http://www.microsoft.com/downloads/details.aspx?familyid=0cf368e5-5ce1-4032-a207-c693d210f616&displaylang=en then there is no license required.
--Dbproguy - My Blog - Tips, Opinions and Reviews about C++, Video Games, and Life
Quote:Original post by Dbproguy
if you only use Visual Studio Express, I believe I've heard there are limitations on commercial distribution of applications coded in Visual Studio Express.
That is not true, there is no limit to commercial distribution even if you use the Express versions.

I don't know where you heard that you need pay to any license fees, but it's not true.
Quote:Original post by Codeka
Quote:Original post by Dbproguy
if you only use Visual Studio Express, I believe I've heard there are limitations on commercial distribution of applications coded in Visual Studio Express.
That is not true, there is no limit to commercial distribution even if you use the Express versions.

I don't know where you heard that you need pay to any license fees, but it's not true.

True there is no fee, but there are some limits DirectX's use, regardless of which VStudio edition you're using. Not in quantity of sales or anything, just on how you're allowed to ship/install the needed files. You are not allowed to just pack a few DLLs in the same directory as your app. You can only distribute the redistributable installer packages that Microsoft allows. All the details on which files must be present, what's optional, etc, are contained in the REDIST folder of your SDK. If you don't want to ship with the redist packages, then you should point your users to the DirectX Web Installer.
Hmmm, on this note... I'm using Visual Studio C++ 2008, but just for the compiler (not .NET or anything).

When I distribute a game, will the game just run on anyone's system?

Or will they need to install something? If so, is there some other compiler I should be using instead of VS? Also, if this is the case, why is it that I would need some extra package just to run a standard C++ program?
Quote:Original post by NightCabbage
Hmmm, on this note... I'm using Visual Studio C++ 2008, but just for the compiler (not .NET or anything). When I distribute a game, will the game just run on anyone's system? Or will they need to install something?
Yes you'll need them to install the visual C++ runtime. You can integrate this installer with your own game's installer though, so both packages are installed at once.

You can find the installer by doing a search for "Microsoft Visual C++ 2008 Redistributable Package".
Quote:why is it that I would need some extra package just to run a standard C++ program?
Your game is compiled down to native code, BUT it will likely be linked to Microsoft DLLs, for functions such as printf, timeGetTime, fopen, etc... These DLLs are installed by the redist package.
Quote:
Or will they need to install something? If so, is there some other compiler I should be using instead of VS? Also, if this is the case, why is it that I would need some extra package just to run a standard C++ program?

Because C++ isn't "standard" in that sense. All C and C++ programs need a runtime to execute -- that's where your "standard" functions come from, implemented in terms of the OS functions for the same. The difference with C++ is that those runtimes can be linked in to your program as static libraries, although that is discouraged these days in favor of linking dynamically (which means you need to package the redistributable for your runtime version with your installer).
Note also that all C++ compilers have a runtime library component, it's just that some compilers choose to link to their statically, rather than dynamically.

Microsoft chose to link to the C++ runtime dynamically (by default) because it allows them to patch security vulnerabilities that may be found without requiring you to recompile and have all your clients re-download your application. Not that there's ever been a security vulnerability in the VC++ runtime (that I'm aware of), but it's theoretically possible - they learnt this lession with the JPEG vulnerability that was found in GDI+ a few years back: all applications that had distributed private copies of GDI+ had to be updated separately, and it was a nightmare for sysadmins!

In any case, the redist for the runtime is quite small. But if you're really against the idea of including it with your installer, you can link to the VC++ runtime statically instead. There are issues when linking with the C++ runtime statically (particularly if your application uses DLLs) but as long as you understand those and are willing to take on the responsibilty of monitoring for security issues in the runtime (you should always be monitoring for security [and other] issues in all your dependencies, of course) then it's an option.
(Thanks to the above 3 posters!)

Ah, that's interesting... so it's about the libraries that it's linking to, not the actual compiled code itself. That makes sense.

So how do people get normal programs that are made in C++ to run on Windows without needing to install anything?

I don't think I've seen many "professional" games that require the redistributable package to run... why is this?

Should I be doing that? Or is it a good idea to just package the redistributable and be done with it?
Those programs either link statically with their dependencies (but this is not always possible or advisable, for example, you cannot statically link to the DirectX libraries), or they bundle the redistributable installer with their own installer and quietly install it during the installation phase of the program.

This topic is closed to new replies.

Advertisement