Given the licensing rules for SWGEmu servers, every legal server needs a mechanism to do due diligence in verifying that the player probably has a legal licensed copy of the game. Also due to how SOE distributed the game you need a mechanism to distribute most of the game client files to the player. So this means that someone wanting to run an independent SWGEmu based server would need to create an installer to do the due diligence and get the needed files.
A server can stop here and let people create a link to the game client and launch it through that mechanism if they have no plans to update the client with new in game items or other changes. In fact creating a launcher may be way more work than they would normally need.
This creates the problem of how do you keep the client files up to date. For those that played on the Bloodfin server before they created a launcher that also updated the client files it was not uncommon for people to log into the server, do something and not see the item in their inventory. This was due to the client having no information on the object so that it could not render the item in the client.
The best resolution for the problem is to modify the installer to also launch the game and before launching the game check to see if the client files need to be updated. Then update them if needed.
Now that you are using a launcher you have the ability to communicate with the players on your server there additional things that you can do. You can open up a page to communicate information to the players like the changes made in updates and if the server is up or not before they actually launch the game. You could even go as far as providing quick links to the server web page and forums. If you are accepting donations for the operation of the server you could even provide a quick link to a page where they could donate.
There is also a subtle thing about having a launcher. Given the correct naming of the launcher and client files, players that use game helpers such as Raptr will find that the SWGEmu is now listed with the rest of their games in one location and their play time will also now be tracked.
So it is very easy to see that anyone operating an SWGEmu based server should also be using a launcher.
Now what makes a good launcher.
I personally feel that it should provide a single location for players to do the following:
- Install/verify/update the game client
- Provide access to the SWG configuration tool
- Since Kodan's talent calculator is freely redistributable, it should be part of the launcher distribution and it should be accessible through the launcher.
- Provide communication to the player about the server.
- Provide access to the server web page
- Provide access to the server release notes
- Provide access to the server forums
- Provide server up/down status
To provide communication to the players I simply distributed the cumulative patch notes. Since a good server should have patch notes this is a very simple thing to add to a launcher. I eventually came to the conclusion that it was better to have a link to the patch notes and to present to the players a small, dedicated page that simply communicated information such as seasonal events or upcoming server updates.
I learned that while downloading an updated file manifest with CRC information and then processing the CRCs would keep the client up to date it could take more time than we wanted. A better system is to version the CRC file and to store on the client system the version number that matches the local files. The Launcher would then get the version number for the client that is on the server and to only download the manifest and check the local files for update if the server has a newer version of the client. This check is considerably faster.
Since there are many personalities who play MMORPGs, I have also decided that a good launcher should have a configurable fast mode. This is how I imagine that it should work. If fast mode is selected when you start the launcher it checks to see if there is a new version of the client to download. If there is no new version, it immediately launches the game client and shuts down. If there is a new version it updates the client and launches to full launcher so that players know that it has made changes and so that they can easily access the release notes or just launch the game. Any launch of the launcher after the client was updated would still use fast mode unless the player changes the configuration. If you code a launcher to work like this you should also set it up so that the player has a way to get to the launcher configuration menu once fast mode is turned on.
An ideal launcher should also be able to check to see if the launcher itself has been updated. Many recent game launchers have the ability to detect a need to update the launcher and do it. This should also be a part of any quality launcher.
At this point everything else associated with a launcher is probably cosmetic. So can you think of any feature that I missed and should be included in a launcher?