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 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
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.
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.
If you are using CMake, you can use
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.
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:
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.
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
makefiles mentioned above, but I believe you need to use
XCode to make something easily distributable and installable.
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.