Question How to force user to open game through launcher

Gordonfreeman75

New member
Joined
Jun 29, 2013
Messages
4
Location
Spain
Programming Experience
3-5
Hello everyone,

Well, first of all, I don't know if this thread suits here, so if it doesn't I'd like a moderator the move it where it belongs.

I'm new at this forum and I'd like to say hello everyone by explaining something and seeing if somebody could help me :eek:

I am making a private server for a MMORPG and I want to code a launcher in VB.NET to handle the game version and auto-updates.

The problem is that if I release my launcher .exe and the game .exe together, people will be able to run the game directly without having to run my launcher, and thus, I won't be able to keep all users games updated.

The game doesn't need to be installed, it is portable whenever you carry 3 data files in the same exe folder.

By now I have tried a software called MoleBox, which "merges" the game exe and the 3 data files in a single exe and it works perfectly, but if I try to merge that new exe with my launcher, the launcher can't find the new exe inside the merged one.

Could anyone imagine any way to solve this issue?

Thanks in advance and I hope to have a good time in this forums! :eek:

Kindest regards.
 

Herman

Well-known member
Joined
Oct 18, 2011
Messages
882
Location
Montreal, QC, CA
Programming Experience
10+
You could just hide the game executable from them. For example pack it into a resource file, and unpack it before launching or updating, from your launcher.
 

Gordonfreeman75

New member
Joined
Jun 29, 2013
Messages
4
Location
Spain
Programming Experience
3-5
You could just hide the game executable from them. For example pack it into a resource file, and unpack it before launching or updating, from your launcher.
Thank you for your answer Herman. I had thought on that idea before, but I'm not too experienced in .NET and I'm not sure on how to do it.

Could you summarize what should I do to make it that way?

Thanks again.
 

Herman

Well-known member
Joined
Oct 18, 2011
Messages
882
Location
Montreal, QC, CA
Programming Experience
10+
Go in your project's properties in VS, Resources tab, click add resource, existing file. Keep in mind that a resource is linked in your program's executable, so updating the file at runtime is impossible. If the file gets updated often, this is probably not suitable. You could also just rename the game executable to a non-executable filename, and rename it from inside your client.

It's all pretty useless in the end, if they WANT to run the original executable, they will. Just auto install a shortcut on their desktop and pop a messagebox or something.
 

jmcilhinney

VB.NET Forum Moderator
Staff member
Joined
Aug 17, 2004
Messages
14,295
Location
Sydney, Australia
Programming Experience
10+
Extracting an executable from a resource will also be flagged by many anti-malware tools.

One option might be to have the launcher generate a random GUID and pass that to the game as a commandline argument. The game would then use some IPC mechanism to ask the server whether the GUID it received is valid or not. If it's not then the game won't run. The launcher would invalidate the GUID after 30 seconds or so, meaning that noone can use an old GUID even if they could get hold of one.
 

Herman

Well-known member
Joined
Oct 18, 2011
Messages
882
Location
Montreal, QC, CA
Programming Experience
10+
I am pretty sure he is not in control of the game itself. Some games that have public servers maintained by the developers also have some private servers running some variation (older version, different rules, etc...). Having the client connect to those servers usually requires launching with parameters, which is what the launcher does.
 

Gordonfreeman75

New member
Joined
Jun 29, 2013
Messages
4
Location
Spain
Programming Experience
3-5
Exactly, I can't edit the source of the game client, just the data files which contain graphics and small things inside the exe by hexadecimal editors.
My server emulates the original server but with some modifications on how the game works, however it is everything the same. You just have to change the IP where the client will connect, and it will work with your server.

@jmcilhinney, wouldn't I need to edit the game source for that?
 
Top Bottom