Article     Discussion     Modifier     Historique     Forums     Salon IRC

Réaliser un lanceur avec 3d games creator et delphi

Un article de Games Creators Network.

Voici un tutorial un peu spécial car il explique comment réaliser un launcher. Ces petits programmes qui déterminent comment un jeu va être exécuté, où vous déterminez les options avant de lancer réellement le jeu.

le lanceur d'urban chaos
le lanceur d'urban chaos


Ce tutorial est constitué de deux parties: dans la première on construit notre programme capable de recevoir des infos via la ligne de commande; dans la seconde on réalise le launcher en lui-même grâce à BORLAND delphi 5.0.


Sommaire

[modifier] Généralités: la ligne de commande

Avant de commender, il faut expliquer par quel miracle le launcher et le jeu communique: en effet, il n'est pas sensé savoir si

dans le launcher vous avez choisi "640x480" comme résolution.

En réalité, on communique par la ligne de commande: pour lancer un programme à parti de démarrer/exécuter, vous tapez

c:\...\monjeu.exe par exemple. Mais vous pouvez également taper: c:\...\monjeu.exe -640x480 -window -debug.

Est-ce que vous commencez à saisir ? En faisant suivre la ligne de commande normale d'un certain nombre de paramètres, on peut indiquer comment le programme doit se comporter.

Mais bien sûr, ça ne se fait pas tout seul ! Il faut encore coder dans darkbasic ce comportement.


[modifier] Réalisation du programme darkbasic

Tout d'abord, la ligne de commande peut être récupérée grâce à la fonction cl$(). Ainsi si vous exécutez 'c:\...\monjeu.exe -640x480x32', cl$() sera égal à ' -640x480x32 -window'.

Certains l'auront compris, il va falloir décomposer cette chaine, en retirer les paramètres voulus et... faire ce qu'il y a à faire ;)

Cependant, il manque à darkbasic une fonction très importante pour manipuler une chaine: Extract Str$(string$). Cette fonction que j'ai codé permet de retirer d'une grande chaine une petite en précisant le début et la fin de celle-ci. Voici le code source:

function Extract Str$($string,min,max)
   $result=""
   for i=min to max
      $result=$result+mid$($string,i)
   next i
endfunction $result

Si vous ne voyez pas très bien ce que donne cette fonction, voici quelques exemples:

Extract Str$("salut tout le monde",1,5)="salut"
Extract Str$("salut tout le monde",7,10)="out"

etc...


Maintenant codons le vrai programme. Nous allons prendre la chaine du début à la fin et vérifier si l'on retrouve des paramètre connu. Cela donne ceci:

window=0 : debug=0
for i=0 to len(cl$()) rem mode débug activé ? if Extract Str$(cl$(),i,i+len("-debug"))="-debug" then debug=1 rem dans une fenêtre ? if Extract Str$(cl$(),i,i++len("-window"))="-window" then window=1
rem 640x480x32 ? if Extract Str$(cl$(),i,i++len("-640x480x32"))="-640x480x32" width=640 : height=480 : depth=32 endif rem 640x480x16 ? if Extract Str$(cl$(),i,i+len("-640x480x16"))="-640x480x16" width=640 : height=480 : depth=16 endif rem 800x600x32 => mode par défaut rem 800x600x16 ? if Extract Str$(cl$(),i,i+len("-800x600x16"))="-800x600x16" width=800 : height=600 : depth=16 endif next i

Ensuite, à partir des valeurs enregistrées dans window, debug, width, height, depth, on déduit la configuration du jeu. Je ne détaille pas, ce code est simple.

if (height<>0) and (width<>0) and (depth<>0)
  if check display mode(width, height, depth)
      set display mode width, height, depth
   else
      set display mode 800,600,32
   endif
else
   set display mode 800,600,32
endif
if window=1 set window on set window title "titre du jeu" endif

Et voilà ! Compilez votre programme sous le nom de monjeu.exe. En effet en testant avec F5 aucun paramètre supplémentaire n'est précisé. Allez donc dans démarrer/exécuter, cliquez sur parcourir et sélectionnez votre exécutable. Puis rajoutez derrière un paramètre: -window par exemple.

Exécuter un programme en spécifiant des options
Exécuter un programme en spécifiant des options

[modifier] Qu'est-ce que Delphi ?

Borland Delphi 5.0 est un outils de développement rapide d'application(RAD) très pratique. Il vous permet de développer en une demi-journée n'importe quel utilitaire dont vous avez besoin !

l'interface de delphi

Le but de ce tutorial n'est pas de vous apprendre le pascal, langage sur lequel est basé delphi. Cependant, je vais résumer en

quelques lignes comment cela fonctionne. Vous avez à votre disposition différents objets: bouton, boutons radios, cases à cocher... et chaque objet possède des

procédures, fonctions, variables propres. Pour les appeler, la syntaxe est la suivante: objet.fonction; Chaque ligne se termine par ";" et les remarques sont introduites par // comme en C++ ou par { remarque ici }.

L'inspecteur d'objet à gauche, permet de modifier l'état initial des objets: apparence, fonctions... Et enfin, on code pour UN EVENEMENT DONNE. Autrement dit, chaque bout de code que vous entrez sera exécute à un moment PRECIS

(lorsqu'on clique sur tel bouton ou lorsqu'on quitte notamment).

[modifier] Réalisation du programme

Avertissement: Les instructions qui suivent sont TRES SIMPLES mais peut-être pas assez explicite pour un néophyte complet...

Créez une nouvelle application. Manipulez form1 pour créer votre launcher. Il comprendra une ComboBox (pour la résolution, pensez à le rempli via l'inspecteur

d'objets: variables Items), deux cases à cocher (pour le mode débug et le mode fenêtré).

Ajoutez également un TCaption pour mettre un message de bienvenue et deux boutons (ou plutôt des BitBtn de l'onglet

supplément).

Voici ce que l'on obtient...
Voici ce que l'on obtient...


Une fois votre feuille prête, double-cliquez sur BitBtn1 (le bouton lancer le jeu); cela crée pour vous la procedure, il n'y a plus qu'à remplir...

Voilà le code terminé...
Voilà le code terminé...

On notera tout d'abord la déclaration de la variable, puis les if...then vérifiant ce qui a été cliqué ou pas pour chaque élément, puis l'exécution du programme (fonction windows WinExec) et enfin la fermeture du launcher (close;) Il n'y a plus qu'à tester ;)


Remarques importantes: le programme doit OBLIGATOIREMENT (si on ne modifie pas le code source en delphi du launcher) être monjeu.exe.

Le code source du programme en delphi et en darkbasic est inclus à la version téléchargeable de l'article. Il contient également l'exe du programme delphi pour ceux qui ne possèderait pas ce programme.

 

Rechercher
Installer l'extension de recherche Plus d'informations

 

Comprendre
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. - Benjamin Franklin

 

Partager
La connaissance est la seule chose qui s'accroit lorsqu'on la partage. - Sacha Boudjema

 

Créer
L'imagination est plus importante que la connaissance. - Albert Einstein

 

 

Le wiki en images Le wiki en images Image du mois: «Snowball: un prototype de jeu développé avec NeL.