An important part of my pitch to potential viewers is that I have a working demo that they can download and play straight away. Since I have no industry experience I need something tangible to establish credibility. Thus the first few weeks of full time work here in NZ have been spent preparing the demo, which you can download below.
Here are some issues I encountered:
- avoid file dependency issues by static compilation. I want to ship the game as an .exe, as an installation process is surely a barrier to casual uptake, but you run into version issues with dependant files on different Windows installations. Static compilation includes the files in the build at the cost of blowing the size of the .exe out. Going forward I need to par back file dependencies.
- back buffer allocation error: I was allocating the size of the DirectX back buffer without allowing for the dead space created by the window’s borders and header. The back buffer was smaller than expected, and was being overflowed each write. A call to AdjustWindowsRect() fixed that.
- better handling of cursor clipping: I improved the code to keep the cursor within the bounds of the window for a smooth mouse look.
- VM’s for Windows testing: a virtual machine would have been ideal for testing game compatibility across multiple versions of Windows, except they have limited and buggy support for DirectX. Despite running a software renderer I need DirectX to attach a drawing surface to the game window, which I write to each frame. So I went with a ‘Windows to Go’ approach, basically windows installed on a USB device like it was an internal HDD.
- not distributing copyrighted game assets. I’ve been using assets from the game Quake 1 in the engine for a while now, as they are sufficiently low res and the file formats well documented. I couldn’t include these in a demo distribution though, so had to source alternatives. I ended up using assets from a modern shareware mod for Quake, Alternative Dimensions, so a big thanks to that team for making those free to use for non-commercial purposes.