Game Development Community

Portability and Deliverables

by Ryan Dey (not Tom Watson) · in Torque Game Engine Advanced · 07/18/2006 (9:17 am) · 11 replies

I am working to create a streamlined set of files that can be delivered as a "final product", and thus moved from a development computer to a client's computer.

So far, my early tests are showing that the computer that will run the final product needs to have the DirectX SDK installed (for d3dx9_30.dll). Asking clients to install the SDK obviously isn't a solution, and including the .dll in the deliverable package isn't ideal either since its 4 megs in size (we are going for as small a package as possible). I'm guessing it actually requires more than just that file also.

Is there something I can change at compile-time that would allow TSE to use the stock DirectX install most users have pre-installed? I'm using vc7, but don't see any obvious settings.

Thanks for the /assist.

Also:
I haven't seen any discussion of this on the forums or (simple) tutorials, but it may be buried somewhere in the documentation or wiki (which I think obfuscates a lot of info new developers need to know, and is my biggest complaint about TSE at the moment).

#1
07/18/2006 (2:33 pm)
Its up to the developer to include this file in their product installer.
So your download will be have to be ~6mb bigger :(


Redistributing this file use to be against the EULA, *but Microsoft has updated their EULA to allow developers to add this required dll to their own installer packages.*


FYI - It works fine if you just put it in the same folder as your executable (with all your other required dlls)..


hope that helps

k


edit: *this statement may or may not be true...
#2
07/18/2006 (3:37 pm)
Oh they did change the EULA? That's interesting. Tom - you can also include and launch from TSE the DirectX 9.0c End-User Runtime web installer. It will update the user's machine if necessary with the latest DirectX.

Another option is to use an old DirectX - October 2004 - that statically links in D3DX such that this isn't an issue.
#3
07/18/2006 (3:47 pm)
Though be aware - if you use the October 2004 DirectX you will have to remove all of the XInput code, because it is not supported by that release.
#4
07/19/2006 (9:03 am)
Hmm.. I might be wrong about that eula change.. but i could swear i read something about it at zbuffer..
#5
07/19/2006 (2:33 pm)
For now, I think we will just include the .dll with our code (DirectX EULA or not). We are still quite a ways from any real distribution anyways.

As a side note, is Garage Games working on removing this dependancy in future milestones? It doesn't seem logical to have to distribute a directX code file with every game that gets published using TSE... especially considering every gamer in existance (well, the ones that are on top of things) has DirectX 9.0c installed. Is the .DLL providing some high-faluting new funcitonality not available in the runtime release (because I'm sure not using that functionality to render pretty terrain)? Why can we not compile our binaries so that they are inherently compatible with the average modern computer?
#6
07/19/2006 (2:35 pm)
Do I sound like I'm complaining too loudly? I'm really not. This is just a silly wrinkle in the universe. I'll get over it.
#7
07/19/2006 (3:19 pm)
Someone can correct me if I'm wrong, but I believe that what is in the April 2006 SDK will eventually be included in the "standard" DirectX download (possibly not until DirectX 10). They (MicroSoft) periodically release updated SDK's so that game developer's (like us) can build our games using the technology that will be coming out so that when it is released to the general public our game will run on it. In the meantime, they provide the extra installer if you happen to be releasing now or for Beta-testing purposes.
#8
07/19/2006 (3:20 pm)
Ehrm... I thought DirectX 10 was going to be Longhorn only?
#9
07/19/2006 (3:33 pm)
That actually makes sense Mark. Thanks for the input. I'm a cartographer by trade, and while I've been both a programmer and a gamer for 10+ years, I've never really considered myself a software developer. It hadn't really sunk in that we are working with development code (The D in SDK stand for "duh", right?).

I guess a good analogy would be the guys writing games for PS3, so they are ready when the PS3 ships... but in our case, the transition from PS2 to PS3 is very gradual, with many intermediate software transitions.

(and yes, everything I hear is that DX10 will ship around the time of Longhorn, Jan 2007 at last check).
#10
07/20/2006 (6:07 pm)
A lot of indie developers have been complaining because of requirement that you include the DX installer to make sure that your users can run the game. The problem is that even if the user has DirectX 9.0c installed, there are a ton of versions of that, hence the all the d3dx9_2x.dll files. If you made your game with a more recent update than your user, they won't have the right .dll and they'll need to run the installer. It will only update the parts of DX that need it though, so it's not a full install.

We (GarageGames) can't really do anything about this. It would be nice if we could just include the .dll, and maybe MS has changed their EULA regarding that, but I'd triple check if that is the case. They are concerned with developers throwing .dlls all over the place and screwing up end-users machines.

I suppose you could get around the issue by using OpenGL, but that presents its own problems.
#11
07/20/2006 (7:56 pm)
The biggest problem being... we can't right now. heheheheheheheheh. In all seriousness, if TSE works as well with OpenGL as it does with DirectX, I am all for not even bothering to give the players the option of DirectX.

That said, our current game will be net delivered so I'm also OK with just having a link in the installation page that says "Must have at least _this_ version of DirectX installed to play our game."