I would recommend either putting all resources used by the saver into the screen saver executable via resource scripts (*.rc/*.res).
Otherwise, install to program files, and install a "launcher" to the Windows folder. The launcher checks for existing instances,
probably via a mutex or window class lookup, then if none are found, launches the screen saver via CreateProcess, so that:
- the parameters can all be passed to it
- the working directory can be set to the location of the resource files.
In order to avoid registry usage, you could either:
- create an INI file in the Windows folder and store the saver location inside it
- Set a string constant in the launcher to MAX_PATH length of some character or repeated pattern, then find and replace this with
the saver's installation path as a post-install task.
The second method will be harder for users to update, if they decide to move the screen saver files later. It also will not work if UPX
compression is used on the launcher.
Firstly, I'd suggest checking (and possibly changing) the current directory when the game is launched (API version of the old ChDir command).
If you email me a working version of the saver and some details as to how it finds files (which files are used by which modules), I'll set
up a test VM and put together an installer for it.
Try either of:
mark@battlesnake.co.ukjs07mkc@leeds.ac.ukto email me. The first has a lower attachment limit, the second has paranoid university attachment filters surrounding it, so you would
need to TAR the files, then RAR the tape archive with encryption to be sure of getting past the uni filters.
Alternatively, if you can email me a HTTP or FTP link to the files so I can download them directly, this would probably be easier since
you could also post updated versions there as the project progresses.
If it would be useful, I could also adapt my screen saver parameter processor (detects preview/execute/configure switches) for you too,
along with a "nice" Xbox 360 controller / joystick interface for the game itself.
As for the Vista framerate issues, make sure that you use a "fullscreen" video mode, otherwise Aero will interfere with pretty much every
aspect of the visual side of things. To test this, disable Aero and see if the framerate issue also goes away.
I like Osmos, and am also looking to build a small portfolio of computer-related accomplishments, since I currently have no actual IT
qualifications! As such, I'd be more than willing to help out in any projects relating to Osmos!
-Mark