From Worms Knowledge Base
|Latest version:||0.7.1.1 / 13 April 2019|
|Supported games:||W:A, WWPR|
|Supported W:A version:||3.7.x|
|Supported W:A editions:|
|Website:||TUS forum, GitHub|
D3D9Wnd is a WormKit module which allows you to run Worms Armageddon 3.7.x and some other games in windowed mode. It works by setting Direct3D 9 initialization flags to windowed, and applying lots of game-specific patches. It replaces the previously used "wndmode" (DirectDraw emulator) module and allows for native windowing.
It is one of the most popular WormKit modules for Worms Armageddon 3.7.x. It is commonly applied to solve game startup-related issues, such as 640×480 being unsupported, fullscreen mode crashing, multi-monitor flickering, and others. With its borderless-fullscreen-window capacity, it makes Alt+Tab and minimization very quick (at the expense of slightly lower max framerate). It is an essential tool for live streaming the game, as it allows broadcasting software to integrate with the game on all Windows systems, along with keeping the game in background.
Starting with the version 3.8 of W:A, most of D3D9Wnd's features have been integrated into the base game (such as windowed mode, in-game borderless / stretched / super-resolution mode, Ctrl+G unpinning and playing audio in background). When run under 3.8 or later, D3D9Wnd (0.6.6.6+) will automatically disable itself.
The module was originally created on 17 January 2013 by Kawoosh under the name "D3DWnd". It supported only W:A 188.8.131.52 and set the windowed flag during Direct3D 9 initialization. StepS took over the development later that day, adding game-specific patches and releasing it under the name "D3D9Wnd" four days later. Several updates were released over the years (most of them being in 2013 and 2014), and several new features, such as Multi-Monitor gameplay and super-high resolution gameplay, were added. On 28 December 2018, the module was made open-source, along with Worms Helper Tools used in WormKit module development. The original simplistic version (now called "D3D9Wnd_naked"), redesigned to work with any Direct3D 9 applications, has also become available, as well as a lightweight edition for WWPR.
- Make sure that "Load WormKit modules" and the "Direct3D 9" Graphics API (any variant) are enabled in the Advanced options of the game.
- Download the archive.
- Extract the archive's contents into the game's directory.
- Your game now runs in windowed mode (with frontend menus at the top-left corner of the screen). You can tweak the wkD3D9Wnd.ini file for extended features, for example to keep fullscreen mode in the frontend menus or in-game if desired. If you wish to expand the frontend window to your native resolution, consider also installing SuperFrontendHD. Frontend menus can't have a border or be moved around, see below.
- Multi-Monitor support: run the game spanned across several monitors, as long as the monitor setup is in "Extended" mode and not "Duplicated". With "AutoSetResolution" (enabled by default), the required total screen resolution will be automatically set when you run the game.
- Mouse pinning/unpinning: you can press Ctrl+G in-game to release the mouse cursor capture from the window. Useful to switch to other windows without Alt+tabbing, and to move the game window (when border is enabled).
- Super-resolution: you can run the game at any screen resolution, even those much higher than your monitor's maximum. For example, you could play or record the game in 4K while on a 1080P monitor. The maximum is your GPU's maximum texture size (common maximums: 4096×4096, 8192×8192, 16384×16384; much older GPUs may be limited to just 2048×2048). Note, however, that the display ratio is not respected in such a mode (and is always expanded to your desktop), and it's your own responsibility to preserve it while setting your custom width and height. Custom resolutions can be set either via the registry or by using wkLobbyCmd.
- Run in background: the game will continue rendering while it is in background, both in the frontend menus and during gameplay. Useful for streamers, and for multitasking in general, especially on several monitors.
- Play sounds in background: continue playing sounds even when the game is in background (but not minimized). This is optional (enabled by default).
- Window Border and Quick Information: you can run the game in either borderless or bordered windowed mode during gameplay, and some extended information about the game can be displayed in the window caption.
- Alternative fullscreen options: you can run the frontend menus in "Alternative Fullscreen" mode. In that mode, it still technically is windowed, however runs with the display resolution automatically changed using system APIs. This resolves several issues linked to the "vanilla" fullscreen, such as multi-monitor screen flickering, and frontend screens getting partially or completely white. You can also enable the vanilla Fullscreen in both the frontend and in-game. Enabling it in-game will disable all extended in-game features (such as mouse cursor unpinning), but may result in a more responsive experience in rope-related schemes.
- Fancy startup: the game can be set to start translucent, progressively becoming opaque. The speed of the animation depends on the frame rate.
- Static Window Class: normally, the Window Class of the game window is always random. Using this option, it will never change. Useful for streaming software such as OBS, to preserve window capture when the game is closed and then reopened.
- Frontend sizing and positioning (deprecated): an option to stretch the frontend to any specified size and optionally position it in the middle of the screen. This imposes several restrictions: for example, the inability to move the cursor out of the game window (due to coordinate errors, linked with the game's frontend design). These options are now deprecated in favor of SuperFrontendHD, which provides native scaling of frontend dialogs with high-resolution graphics and controls.
- Due to the deficient design of DXMFC (the technology behind the game's frontend menus), several of its bugs remain unpatched by the module. For example, the frontend window is stuck to the top-left corner without a border. This is due to how the coordinate system works, producing rendering/input errors when not positioned there. Given D3D9Wnd's scope, developing such patches would bear a lot of burden both on code and development, and still not produce perfect results. Some of them are within the scope of SuperFrontendHD.
- Some broadcasting software may experience loss of link when gameplay starts or finishes (e.g. OBS in Game Capture mode). This is due to how Direct3D 9 device updates are performed (by using Release instead of Reset).
These issues have been resolved in update 3.8 of W:A, which also makes D3D9Wnd largely obsolete.