The fruitless search for a virtual monitor in Windows
I wanted to build level maps of one of my favorite Windows games, Iji. The traditional way to do that is play the game normally, and to take screenshots from every corner of the level. These levels aren’t exceedingly large, but the game window is only 800x600 and it’s partially covered by a HUD, so I ended up with something like 200-500 screenshots for each level that require manual stitching. After toiling through my first four hours of manually stitching 220 screenshots for the first level (the smallest one of 15), I was out of patience and quit.
A few years later, the source code for the game was released by the author, turning Iji from a freeware into an open-source game. I realized that this was a chance to build my level maps. I managed to download the correct version of Game Maker (5.3A) and the game source files loaded without issues. However, the built-in level editor didn’t have an export function. Apparently, not even the game engine itself seems to support rendering and saving an entire level as an image.
So I needed to take screenshots from the built-in level editor. And even if 1920x1080 is a much better resolution than 800x600, it’s a far cry from the original dimensions of these levels (around 12,000 x 8,000). Again, I took screenshots from the first level and ended up with only 32 images. However, both Lightroom and Hugin were overwhelmed with the task of stitching, so I would have to do it manually again.Maybe there is a chance to display the level editor in full size and take a single screenshot of that?
TL;DR: Can’t be done in software. Hardware solution at the end of the article.
Approach 1: Windows built-in panning function
I remember that in Windows XP, you could set a very high desktop resolution and it would automatically start panning once you reached the edge of the screen. After a bit of research, it turned out that this function was deprecated in Windows Vista, and I was running Windows 10. Downgrading was not an option. I stared up a virtual machine, only to find that its built-in monitor was limited to 1152x768. This was a non-starter either.However, I knew that my graphics card had enough video memory to display a gigapixel-sized desktop (something like 40,000 x 25,000 pixels) in principle. So maybe there was a hidden setting for enabling panning in my graphics driver configuration?
Approach 2: Desktop scaling with Nvidia
There was no panning, but there was a somewhat hidden feature in the Nvidia control panel to set a custom (higher) resolution. I tried out a few resolutions far beyond the native 1920x1080, and the highest that the driver was willing to accept was 3840x2160. Not exactly the “one gigantic screenshot” I was hoping for, but at least it would bring me down to 20 per level. However, I was in for a disappointment: screenshots at this doubled resolution were completely unusable. The image had the correct dimensions (3840x2160), however it was mostly black. The screen I was intending to capture was crammed into the upper left corner of the image, scaled down to half of its original size (1920x1080). If I cut away all the black borders, I’d end up with the same-sized screenshot as before. This approach was a failure.
Approach 3: VNC server
There is a clever idea floating around the internet that comes from headless server terminals. If you connect to a VNC server on a computer that’s not connected to a monitor, it doesn’t know which display size you want. So there’s an option to supply a default resolution while starting the VNC server. And this resolution can be much higher than any reasonable monitor, it just needs to fit into the graphics card's RAM. After a bit of fiddling and a bit of research, it turns out that VNC software for Windows doesn’t support custom resolutions. I don’t know what happens if there’s no monitor, but I assume it reverts to a Windows-standard 1024x768. This approach didn’t work either.
Approach 4: Third-party desktop enhancements
There’s a few pieces of software that operate on a user level, and the most prominent example is called GiMeSpace. They claim to open up a huge virtual desktop for almost infinite room for windows. The catch is that these tools only operate on window positions. When using them, moving the mouse to the edge of a screen moves only the windows, while the wallpaper, desktop icons and taskbar stay in place. Very weird concept. It is possible with this to resize a window to extreme dimensions, and I was able to expand my window to 12,000x8,000 pixels. However, when I took a screenshot, it just displayed my physical screen space (1920x1080). Disappointed. I gave up this route too.
Approach 5: Third-party monitor drivers
I realized that all I needed was a virtual monitor with a configurable resolution. How hard could that be? It turns out, harder than I thought. There’s exactly one project that attempted to do that, and was apparently abandoned in 2014: VirtualMonitor. Half-heartedly, I tried to run or install it on my Windows 10, but the system complained that the driver wasn’t signed and canceled the process. However, there are two projects that do supply a working virtual monitor driver. One of them is called SpaceDesk, and this attempt was even fairly successful. This software allows you to "plug in” the screen from any other device wirelessly, and to extend the desktop to that. And this does work in practice. However, there was one huge catch: these extended displays are tiny (800x600) and this resolution is not configurable. I tried stacking them diagonally to get more space, but it turns out that a screenshot doesn’t capture the blank space between visible screens. Failure here as well.
Approach 6: Hardware
I ended up buying a few cables and adapters, and connected every single HD display in the house to this graphics card. This gave me an effective resolution of 5760x2160, bringing down the necessary number of screenshots per level to 8.
I also learned that there was a specialized HDMI plug that enabled exactly what I originally wanted: a virtual monitor with a configurable resolution up to 4096x2160 pixels. It’s generally called headless, dummy or ghost plug. If you’re not shying away from spending $5 for a display you’ll never see, this may be the solution for you.












