From what I understand, the main thing you are asking is, if you had a standalone game, how to package it and make it usable from different platforms/operating systems.
With that said, I assume you have a game that can compile to a standalone form, as in having an executable file, asset files, any external dependencies etc. Now it's time to prepare it for distribution on other platforms:
Steam
Steam willy happily accept a .zip
file that contains your standalone project. The only thing you'd have to do is then tell it what file to execute when a person clicks the Play Game
button. Something like, execute bin/mygame.exe
or rungame.sh
. You can also optionally give command line arguments for a more customised experience. This is the same for all operating systems you mentioned.
You don't have to worry about how your project is installed there, as the Steam Client can take care of that for you.
I'm not sure if Steam would accept an actual custom installer, but I imagine that might be a bit more involved.
The game should be installable independently (even though it needs steam to run eventually). But I want to provide an installer, package, whatever on my webpage for users to download.
When implementing the Steamworks SDK in your game, you can add some functionality that basically says, if the game was not launched through Steam, exit and run it through Steam instead. This can be done with the SteamAPI_RestartAppIfNecessary
flag. This is unrelated to making a program installable, which I'll cover below.
Independently installable
This method is a bit more involved, as it differs from platform to platform. There are tools out there to create installable packages for Windows, assuming you have a standalone project already compiled and working.
Windows
If you are using CMake, you can use CPack
and NSIS
to generate a desktop installer, which is a file people can just double click to install your project in their windows machine. There's more information about it on CPack - NSIS generator.
You can then use the Window's MSIX
tool to generate a Windows Universal compatible project, to potentially upload it to the Windows Store.
Linux
For Linux, since your project is open source, you can use something like makefile
, to allow users to compile and install your program manually. A usual approach is for users to run the following:
make
make install
To compile and install a project on their system. It's a very long discussion of how to implement this, possibly out of scope for this answer.
Using this method, you can then create packages for different Linux Distributions. Since you asked about debian, there's some information on Debian - Introduction to Debian Packaging.
Each distro has different ways of doing that, but for the most part you'd need to attach the makefile
approach above to a file that tells Debian what your game is about, how to compile it etc.
Mac
Unfortunately my experience there is limited, and I can't help too much. I know it's a Unix platform, and it's possible to use makefile
s mentioned above, but I believe you need to use XCode
to make something easily distributable and installable.
Conclusion
The question is: how can I set this up to maximize user convenience and allow for some customizability (e.g. I want to design the installer logos/banners etc. myself)?
For the most part following the steps above will set you up for allowing users to try your game with just a few clicks. To modify the installer, the process is different for each platform.
On Steam you can upload graphical assets that are displayed on different places of your game page.
On CMake, you can supply project icons, which are used when it generates an installer.