Playing games in windowed mode in odds and ends
Saturday 6th of June 2009, 08:39:26 am
First off, if you play Maple Story, go away.
If that statement didn't make sense to you, allow me to explain. "Maple Story" is an online multiplayer RPG gamy that doesn't let users play it windowed, because that lets you run bots (gasp! imagine!). A bit like WoW, really. Of course, that's also incredibly inconvenient in an age of instant messengers, and so every single Maple Story player has been begging for a way to play it windowed.
Which has made them clutter up the internet something awful. Their millions of posts on forums about getting their game to run in a window makes trying to find a proper solution to running games (or more precise, applications) that use DirectX in windowed mode a ridiculous pain.
Now, I've suffered for you, so you don't have to. Before we continue: the "-win", "-window", "-windowed" etc. command line flags rarely ever work because they're not a universal. Programmers have to explicitly add argument interpretation to their executable, and most will go "fuck that, that's what the in-app configuration is for". So tough luck, don't you dare spout that nonsense on the internet as a viable solution.
With that covered, in the hopes that you don't have to go through the same pain I did, here's the list of programs you will want to have run across (but most likely won't have, because searching for them takes forever):
This is an old (2006), discontinued, DirectX hook utility that lets you play, yes, Maple Story in windowed mode. Also, Starcraft. However, that's pretty much where its compatibility ends. Want something more powerful? You then probably want...
3D-Analyze (click on files, then click the 3D-Analyze picture)
This is an even older (2004), and discontinued, DirectX hook utility that lets you force a hell of a lot of DirectX properties, as well as faking different graphics devices, to see how well the application copes. One of the options is a "force windowed" mode, but like DxWnd, this doesn't work with all applications. If it doesn't, you'll probably want to try...
D3DWindower (real version at geocities but it's a Japanese page, which I doubt you'll be able to read)
This is a slightly more up to date utility (2007) which will hook into DirectX and tries to make it behave, window wise. Generally, this is a good utility, but if it doesn't work, don't despair just yet, because there's always the ultimate solution...
Why is this the ultimate solution? Because this is a DirectX debugging utility. It may be older than DirectX 10, but it was designed to hook into DirectX so hardcore that it would allow DirectX programmers to debug full-screen applications by forcing their fullscreen resolution to something smaller than full screen.
Because of this. it seems to work for most applications that DxWnd, 3D-Analyze and D3DWindower do not work for. Unsurprisingly, this utility too is discontinued, although development stopped in may 2008, so it's only been discontinued relatively recently. Despite of this, if your game is preDX10, good chance this hook will do magical things to otherwise ridiculously stubborn games (I'm looking at you, Lego Star Wars II)
So there you go, four utilities that you can try to get your games to bloody run the way you want them to, rather than the way the game companies want you to. And not a moment too soon, here I was fearing I had to learn Windows and DirectX programming so I could write a stupid fullscreen-disabling-hook myself.
If you're a windows programmer with DirectX knowledge, do the rest of the world a favour... update D3DLookingGlass (it's open source!) for us so it also works with DX10.
Cheers!
- Pomax