Création d'un launcher

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
xnooztv
Messages : 55
Inscription : 05 Jan 2016 05:32

Création d'un launcher

Message par xnooztv » 05 Jan 2016 05:40

Bonjour,

Je développe un jeu, et comme tout jeux, ils y à des mises à jours.
Donc, j'ai développer un launcher en C# (Visual Studio 2015) mais je souhaiterais que le joueur sois obliger d'utiliser le launcher.
Je vais faire un exemple:

Le joueur lancer le jeu sans utilisé le launcher => Un message lui dit qu'il doit utiliser le launcher
Le joueur lancer le launcher cliquer sur "jouer" et qui ouvre le jeu => Il à accès au jeu

Mais je ne sais pas comment "forcer" le joueur à utiliser le launcher, si quelqu'un aurais une idée..

Cordialement.
Soutenir LandWars:

Image

Avatar de l’utilisateur
simonj
Messages : 293
Inscription : 29 Nov 2015 20:47
Localisation : Lyon

Re: Création d'un launcher

Message par simonj » 05 Jan 2016 14:52

Unity (Et même le C# en général) te permet de récupérer des commandes qui on été lancées avec l'exe grâce à Environment.GetCommandLineArgs, ce qui te renvoi un tableau des commandes lors du lancement de l'application.

Par exemple pour une application j'ai dut faire des .bat pour lancer directement une partie de mon jeu. J'ai donc dut faire un .bat

Code : Tout sélectionner

%~dp0"MON_APP.exe" -game cachecache
Et dans un script sur la première scène de mon jeu, je récupérait les lignes de commandes pour savoir si je devais directement lancer mon jeu ou si je devais laisser le menu principal

Code : Tout sélectionner

string[] arguments = Environment.GetCommandLineArgs();

for( int i = 0; i < arguments.Length; i++ )
{
	if( arguments[i] == "-game" && i+1 < arguments.Length )
	{
		if( arguments[i+1] == "poussepousse" )
			OnPoussPouss();
		else if( arguments[i+1] == "cachecache" )
			OnHiddenObject();
	}
}
Tu peux très bien adapter cette solution là à ton problème. Si tu lances le jeu depuis ton launcher, tu lui passe un argument (Une clef). Comme ça tu peux certifier à ton application qu'elle a bien été lancée par ton launcher et non à la mano. Ce qui est pratique c'est que tu peux lui passer ce que tu veux. Tu peux donc lui passer une clef de sécurité hyper longue, comme ça il est quasiment impossible de trouver par hasard l'argument que tu as mit pour débloquer le jeu.

Avatar de l’utilisateur
Freelax
Messages : 1595
Inscription : 30 Déc 2009 23:02
Localisation : Niort
Contact :

Re: Création d'un launcher

Message par Freelax » 05 Jan 2016 16:09

Bon de preciser que c'est "Window only " ;-)
Image

xnooztv
Messages : 55
Inscription : 05 Jan 2016 05:32

Re: Création d'un launcher

Message par xnooztv » 05 Jan 2016 17:16

simonj a écrit :Unity (Et même le C# en général) te permet de récupérer des commandes qui on été lancées avec l'exe grâce à Environment.GetCommandLineArgs, ce qui te renvoi un tableau des commandes lors du lancement de l'application.

Par exemple pour une application j'ai dut faire des .bat pour lancer directement une partie de mon jeu. J'ai donc dut faire un .bat

Code : Tout sélectionner

%~dp0"MON_APP.exe" -game cachecache
Et dans un script sur la première scène de mon jeu, je récupérait les lignes de commandes pour savoir si je devais directement lancer mon jeu ou si je devais laisser le menu principal

Code : Tout sélectionner

string[] arguments = Environment.GetCommandLineArgs();

for( int i = 0; i < arguments.Length; i++ )
{
	if( arguments[i] == "-game" && i+1 < arguments.Length )
	{
		if( arguments[i+1] == "poussepousse" )
			OnPoussPouss();
		else if( arguments[i+1] == "cachecache" )
			OnHiddenObject();
	}
}
Tu peux très bien adapter cette solution là à ton problème. Si tu lances le jeu depuis ton launcher, tu lui passe un argument (Une clef). Comme ça tu peux certifier à ton application qu'elle a bien été lancée par ton launcher et non à la mano. Ce qui est pratique c'est que tu peux lui passer ce que tu veux. Tu peux donc lui passer une clef de sécurité hyper longue, comme ça il est quasiment impossible de trouver par hasard l'argument que tu as mit pour débloquer le jeu.

Bonjour,
Je n'ai pas très bien compris avec le .bat, je doit faire quoi exactement au niveau du launcher? Le joueur doit lancer le .bat ou bien sur mon bouton "jouer" je lancer le .bat, qui lui lancera le jeu?
Pour la première scène de mon jeu, j'ai compris en principe :)

Meric de vos réponse à vous deux :p


EDIT:
J'ai une erreur lors de la compilation:

Code : Tout sélectionner

Assets/lancer.cs(4,10): error CS0116: A namespace can only contain types and namespace declarations
sur la ligne:

Code : Tout sélectionner

string[] arguments = Environment.GetCommandLineArgs();
Je trouve pas l'erreur (et j'ai chercher)..
Soutenir LandWars:

Image

Avatar de l’utilisateur
simonj
Messages : 293
Inscription : 29 Nov 2015 20:47
Localisation : Lyon

Re: Création d'un launcher

Message par simonj » 05 Jan 2016 17:55

Freelax a écrit :Bon de preciser que c'est "Window only " ;-)
Est-tu sûr que cela ne fonctionne que sur Windows ? Il ne me semble pas voir de restriction quand à l'utilisation sur Mac et Linux. A moins que j'ai loupé quelque chose dans la doc ?
xnooztv a écrit :J'ai une erreur lors de la compilation:
Il doit te manquer l'intégration de la librairie. Il faut rajouter tout en haut :

Code : Tout sélectionner

using System;
Le .bat pour moi était juste un exemple. Comment lance tu ton .exe depuis ton launcher en C# ? C'est directement dans ta commande de lancement que tu vas rajouter des arguments.

xnooztv
Messages : 55
Inscription : 05 Jan 2016 05:32

Re: Création d'un launcher

Message par xnooztv » 05 Jan 2016 18:05

simonj a écrit :
Freelax a écrit :Bon de preciser que c'est "Window only " ;-)
Est-tu sûr que cela ne fonctionne que sur Windows ? Il ne me semble pas voir de restriction quand à l'utilisation sur Mac et Linux. A moins que j'ai loupé quelque chose dans la doc ?
xnooztv a écrit :J'ai une erreur lors de la compilation:
Il doit te manquer l'intégration de la librairie. Il faut rajouter tout en haut :

Code : Tout sélectionner

using System;
Le .bat pour moi était juste un exemple. Comment lance tu ton .exe depuis ton launcher en C# ? C'est directement dans ta commande de lancement que tu vas rajouter des arguments.
J'ai fais cela dans le script:

Code : Tout sélectionner

	void Update () {
		string[] arguments = Environment.GetCommandLineArgs();
		for (int i = 0; i < arguments.Length; i++)
		{
			if (arguments[i] == "-game" && i + 1 < arguments.Length)
			{
				if (arguments[i + 1] == "poussepousse")
					OnPoussPouss();
				else if (arguments[i + 1] == "cachecache")
					OnHiddenObject();
			}
		}
}

C'est correct? Je n'ai plus d'erreur (a part pour le OnPoussPouss et OnHiddenObject que je modifierais)

Dans le launcher, je fais cela pour lancer le jeu:

Code : Tout sélectionner

Process p = new Process();
p.StartInfo = new ProcessStartInfo("Landward.exe");
p.Start();

Du coup, je doit faire sa?

Code : Tout sélectionner

Process p = new Process();
p.StartInfo = new ProcessStartInfo("Landward.exe -game ARGUEMENTTRESCOMPLETd");
p.Start();
Soutenir LandWars:

Image

Avatar de l’utilisateur
Freelax
Messages : 1595
Inscription : 30 Déc 2009 23:02
Localisation : Niort
Contact :

Re: Création d'un launcher

Message par Freelax » 05 Jan 2016 18:07

Est-tu sûr que cela ne fonctionne que sur Windows ? Il ne me semble pas voir de restriction quand à l'utilisation sur Mac et Linux. A moins que j'ai loupé quelque chose dans la doc ?
Pour la recup des args inapp oui mais .cmd, .bat, .exe c'est lié à l'OS, donc pour osx faudra le faire différemment.
Image

xnooztv
Messages : 55
Inscription : 05 Jan 2016 05:32

Re: Création d'un launcher

Message par xnooztv » 05 Jan 2016 18:10

Freelax a écrit :
Est-tu sûr que cela ne fonctionne que sur Windows ? Il ne me semble pas voir de restriction quand à l'utilisation sur Mac et Linux. A moins que j'ai loupé quelque chose dans la doc ?
Pour la recup des args inapp oui mais .cmd, .bat, .exe c'est lié à l'OS, donc pour osx faudra le faire différemment.
A ma connaissance, un .bat et un .exe s'ouvre uniquement sur Windows.. dite moi si je me trompe ^^
Soutenir LandWars:

Image

xnooztv
Messages : 55
Inscription : 05 Jan 2016 05:32

Re: Création d'un launcher

Message par xnooztv » 05 Jan 2016 19:08

Désolé du double post:

J'ai modifier le bout de script que tu m'a donner et sa à l'air de fonctionner!
Je galère juste à faire une boite de dialogue qui indique au joueur qu'il doit lancer le jeu via le launcher.

Merci ;)
Soutenir LandWars:

Image

Avatar de l’utilisateur
simonj
Messages : 293
Inscription : 29 Nov 2015 20:47
Localisation : Lyon

Re: Création d'un launcher

Message par simonj » 05 Jan 2016 19:13

Freelax a écrit :
Est-tu sûr que cela ne fonctionne que sur Windows ? Il ne me semble pas voir de restriction quand à l'utilisation sur Mac et Linux. A moins que j'ai loupé quelque chose dans la doc ?
Pour la recup des args inapp oui mais .cmd, .bat, .exe c'est lié à l'OS, donc pour osx faudra le faire différemment.
Ah oui d'accord ! Je parlais juste de la récupération des arguments. Que ça soit un Launcher, un .bat, ... c'est une autre question ! ^^

Sinon pour lancer le jeu avec des arguments, tu fais :

Code : Tout sélectionner

Process p = new Process();
p.StartInfo = new ProcessStartInfo("Landward.exe");
p.StartInfo.Arguments = "-game ARGUEMENTTRESCOMPLET";
p.Start();
Faut utiliser le ProcessStartInfo.Arguments pour rajouter des arguments.

Pour la boite de dialogue, c'est de l'UI. C'est pas hyper simple à prendre en main sous Unity, mais une fois que tu as compris, tu galères beaucoup moins. Il y a des tutoriels sur le site.

Répondre

Revenir vers « (C#) CSharp »