Cela fait pas mal de temps que je n�ai plus publi� de tutoriaux, eh oui� Je les garde pour moi en g�n�ral, mais cette fois j�ai d�cid� d�en publier un. En effet � la suite d�un cours que j�ai donn� � un haut dignitaire de la communaut� (c�est bon j�arr�te J), j�ai d�cid� de reprendre le produit de ce cours et d�en faire un cours sur papier, ou sur pixel�
En fait j�ai �t� appel� � expliquer le multi et j�ai donc en m�me temps que j�expliquai �crit un petit jeu de plateforme multi joueurs, que j�ai ensuite corrig� avec mon � �l�ve � (Outch ! �a fait vieux dit ainsi.). Je vous propose de vous donner le m�me cours dans la m�me suite d��v�nement et en expliquant chaque script. J�ajouterai �galement une partie sur les routeurs de type NAT, car nous avons �t� contraints de configurer le sien pour qu�il puisse jouer en tant que client, car avec un routeur c�est trop lent pour faire serveur. A bas les routeurs !
Sommaire :
I) Cr�ons et Expliquons un Jeu de Plateforme Multijoueur.
1) Script de Connexion
2) Script de Cr�ation des Joueurs
3) Script de Maintenance, le c�ur du Multijoueur
II) Les routeurs de type NAT et comment leur permettre de jouer avec des jeux Game Maker.
I) Cr�ons et Expliquons un Jeu de Plateforme Multijoueur.
L�gende: |
Le
but de ce
tutorial est avant tout d�expliquer comment faire un jeu multijoueur,
la
programmation est une science appliqu�e nous passerons donc par-dessus
la
th�orie. Ce tutorial s�adresse donc aux philistins cart�siens et
pragmatistes
(un triple pl�onasme ma parole !).
Bon avant
toute chose veuillez d�marrer Game Maker, mais aussi une musique qui
soit
motivante, une musique qui fait vibrer vos tripes et let go !
1) Script de Connexion
Dans un jeu multijoueur la premi�re chose qu�on fait c�est se connecter, nous allons donc tout d�abord r�aliser le script de connexion, il faut dans ce script d�finir un serveur et un client, chez nous le serveur sera la personne qui cr�era la partie, le client celui qui s�y connectera.
Dans ce script il sera n�cessaire de d�abord demander l�ip que l�on voudra utiliser, celui qui cr�era la partie entrera sa propre ip, celui qui la joindra entrera l�ip de celui qui l�a cr��e. On peut conna�tre son ip en ex�cutant : cmd dans Windows puis en entrant : ipconfig /all, cependant il n�cessaire de faire attention si vous avez un routeur, l�ip qui va s�afficher sera celle que le routeur aura attribu� � votre ordinateur dans le r�seau local, nous verrons dans la section II comment r�gler ces probl�mes de routeur. Si vous essayez le jeu en local, c'est-�-dire si vous comptez d�marrer le client et le serveur sur votre propre PC afin de faire des tests il vous suffit de n�entrer aucune ip, ou alors pour �tre s�r : 127.0.0.1 . Qui est l�ip que l�on peut �galement nommer : localhost.
Apr�s quoi ce script de connexion fera appel � la fonction : mplay_init_tcpip(ip), fonction qui initialise une connexion tcp/ip, et qui retourne si cela r�ussit ou non. Si cette fonction ne retourne pas 1, c'est-�-dire en bool�en : true (vrai), il faudra afficher un message signifiant : connexion impossible, puis casser l�ex�cution du script avec : break. Autrement si cette fonction renvoie true, il faudra demander le nom du joueur, que nous stockerons dans : global.name pour ce tutorial ce ne sera pas n�cessaire de le demander, c�est pourquoi nous lui donnerons la cha�ne : "onsenfout" comme valeur.
!Note : Un bug r�current de
Game Maker
fait que si une connexion est rat�e, ensuite pendant tout le temps que
l�ex�cution du programme se fera plus aucune connexion ne r�ussira, il
faut
donc red�marrer le jeu dans le cas o� la connexion ne fonctionne pas du
premier
coup.
Ensuite nous ferons appel � la fonction : mplay_session_find(), cette fonction retourne le nombre de session sur cette adresse ip qui accepte encore des joueurs, si le r�sultat de l�appel de cette fonction est �gal � 0, c'est-�-dire qu�il n�existe pas une session, ou du moins pas une session de libre sur cette ip. Nous ex�cuterons alors la fonction : mplay_session_create(sesname,playnumb,playername), cette fonction cr�era donc une session du nom de sesname, avec un maximum de playnumb joueurs et qui assignera le nom : playername au joueur qui cr�era cette session. Playername sera en fait chez nous : global.name.
Toujours dans la m�me structure nous regarderons combien de joueurs sont en ligne, en toute logique c�est 1, pour ce faire nous utiliserons la fonction : mplay_player_find(), qui retourne le nombre de joueur connect�s � la session en cours. Nous stockerons le r�sultat dans : global.number. Cela permet ainsi de d�finir qui est le joueur 1, puis nous verrons ensuite que cela permet aussi de voir qui est le joueur 2, et cela irait pour un nombre infini de joueurs.
Apr�s
quoi dans cette m�me structure nous d�finirons l�id de l�objet qui sera
celui
du joueur 1, nous enverrons dans le slot 51 cette valeur ainsi : mplay_data_write(51,obj_jo_1);. Cela �crit donc dans le
slot 51
l�id de l�objet obj_jo_1.
Pourquoi le
slot 51 ? C�est un choix arbitraire, �tant donn� qu�il y a 1000000
de
slots on peut se permettre d�espacer les choses. Nous garderons donc
les slots
allant de 51 � 99 inclus pour le nom des joueurs (dans le tutorial vous
n�aurez
besoin que de 51 et 52, mais si vous le continuez vous pourriez bien en
avoir
besoin de plus). Ceux de 0 � 50 pour tout ce qui est fonctions
d�administration
et enfin pour chaque joueur nous utiliserons de 100 � 199 pour le
joueur 1, de
200 � 299 pour le joueur 2 etc.
Ne vous inqui�tez pas nous n�en ferons usage que d�une dizaine pour
chacun des
joueurs, ce n�est que pour se donner de la marge afin que vous puissiez
continuer le r�sultat de ce tutorial par la suite.
Revenons
� mplay_session_find(), si au
contraire cette
fonction retourne autre chose que 0, au moins 1, alors cela signifiera
que la
personne qui ex�cute le script est celle qui joint la session, donc
nous
utiliserons : mplay_session_join(mplay_session_name(0),global.name);.
Cette fonction permet donc de se joindre � la session du nom de mplay_session_name(0), c'est-�-dire � la
session
num�ro 0, la premi�re, avec le nom de joueur global.name.
Apr�s
quoi dans la m�me structure nous ferons appel � nouveau � :
global.number
= mplay_player_find();.
Afin de d�finir quel joueur est en train de se connecter et ainsi de
d�finir
l�id de l�objet de ce dernier dans un des slots entre 51 et 99. Si global.number
est �gal � 2, nous �crirons ainsi dans le slot 52 : mplay_data_write(52,obj_jo_2);. Enfin nous fermerons la
structure.
!Note : Pour que la connexion se fasse entre deux jeux Game Maker il faut qu�ils aient le m�me Game ID, autrement les deux ex�cutables ou fichiers sources ne pourront se connecter l�un � l�autre.
Cela nous donnera un code tel que celui-ci :
Listing 1 : scr_connexion();
ip = get_string("Ip:","127.0.0.1");
if (mplay_init_tcpip(ip) != 1) { show_message("Connexion Impossible."); break;} else {global.name = "onsenfout"}
if (mplay_session_find() == 0) { mplay_session_create("Ex1",2,global.name); global.number = mplay_player_find(); mplay_data_write(51,obj_jo_1); } else { mplay_session_join(mplay_session_name(0),global.name); global.number = mplay_player_find(); if global.number = 2 { mplay_data_write(52,obj_jo_2); } } |
2) Script de Cr�ation des
Joueurs
Cela fait
il est temps de nous atteler au script de cr�ation des joueurs.
Ce script permet � tout moment de cr�er les joueurs dans le jeu,
c'est-�-dire
ceux qui se connectent, il est donc n�cessaire qu�il soit ex�cut� en
permanence
dans draw
, ou dans step
.
Il est
tr�s simple, on reprend la valeur des slots de 51 � 99 et si cette
valeur
v�rifi�e avec instance_number est inf�rieure � 1 on cr�e l�objet en
question.
Il ne g�re cependant pas la destruction des objets lors de la
d�connexion, mais
si on voulait le faire il suffirait de mettre dans l��v�nement room end
, une ligne telle que
celle-ci :
with (mplay_data_read(50+global.number)) instance_destroy(); mplay_data_write(50+global.number,obj_noone); |
Ainsi l�objet serait d�truit et le script que nous sommes en train
d�expliquer
ne cr�erait plus rien que l�objet obj_noone,
serait un objet que nous aurions pr�alablement cr�� et mit dans la
room. Ne
confondez cependant pas avec l�objet : noone, qui a un id
de -4 et
qui signifie : pas d�objet.
Le code de cr�ation des objets serait donc ainsi :
Listing 2 : scr_jo_create();
//Cr�ation Joueur 1 p1 = mplay_data_read(51); if instance_number(p1) < 1 { instance_create(obj_spawn.x,obj_spawn.y,p1); }
//Cr�ation Joueur 2 p2 = mplay_data_read(52); if instance_number(p2) < 1 { instance_create(obj_spawn.x,obj_spawn.y,p2); } |
L�objet obj_spawn est un objet
vide, c�est simplement
un marqueur d�finissant o�, en quel x et y il faut cr�er les objets
joueurs.
3) Script
de Maintenance, le c�ur du Multijoueur
Avant de passer au code central du multi, c'est-�-dire celui de
synchronisation
des donn�es des joueurs, nous allons cr�er les objets n�cessaire, et
justement
les objets joueurs en eux-m�mes.
Comme vous avez pu le remarquer nous avons cod� de fa�on � ce que les
objets de
chaque joueur soient des objets diff�rents, c�est un choix fait pour
simplifier
les explications, mais rien n�emp�che de prendre un seul objet pour
chaque
joueur et d�y mettre des variables fluctuantes, c�est d�ailleurs mieux
pour
gagner de la place dans le jeu final et du temps en d�veloppement, par
contre
si vous �crivez un tutorial � propos, �vitez. J�en ferai un, un jour
qui
prendra en compte cela, mais pour le moment j�ai assez de mal � ne pas
m�emp�trer dans des explications complexes qui ne peuvent �tre
comprises que
par celui qui l��nonce, car il ne sait comment clarifier les choses.
Ces 4
derni�res lignes en sont une preuve. :D
Par exemple pour la programmation de jeux tels que les mmorpg on n�a
besoin que
de deux objets, un objet joueur et un autre que l�on nomme en
g�n�ral : dummy,
c�est en fait le repr�sentant de tous les autres objets synchronis�s en
multi
par les autres joueurs. Ainsi pour dummy on peut ne synchroniser que
les
donn�es importantes et en cr�er des milliers d�instances qui se
comporterons
chaque fois de la fa�on de l�objet joueur de chaque ordinateur connect�
� qui
elles sont attribu�es. Un peu complexe, pour mieux comprendre r�f�rez
vous �
l�exemple de SleepinJohnnyFish
du GM6_Pack_4.
Bien, il est temps de cr�er les objets en question, avant cela faites
donc des sprites,
faites des sprites de sph�re de 16x16 du nom de spr_jo_1
et spr_jo_2,
chacun d�une autre
couleur. Faites un bloc de 32x32 du nom de spr_dec_bloc.
Et enfin un projectile de 6x6 du nom de : spr_projectile.
Ensuite
faites 7 objets : obj_connexion,
dans lequel vous allez faire ex�cuter le script : scr_connexion(); dans l��v�nement create
.
Puis l�objet : Ynit,
dans lequel
vous mettrez un �v�nement create
contenant : mplay_data_mode(false);
Ce qui signifie que les donn�es seront envoy�es en mode non garanti
durant le
jeu, c�est moins s�r, c�est pourquoi nous le faisons apr�s l�objet obj_connexion, mais c�est
extr�mement plus
rapide qu�en mode garanti. Dans draw
nous ferons ex�cuter le
script : obj_jo_create();
et dans Keyboard Press
Enter
:
execute_string(get_string("Code:",""));
Il est
toujours utile
de pouvoir d�boguer le programme en pleine ex�cution.
Ensuite
l�objet obj_spawn,
que nous avons d�j�
abord� et qui n�est qu�un marqueur, vous le laisserez donc ainsi.
Suivi de l�objet : obj_dec_bloc,
� qui vous donnerez le sprite que vous avez cr�� et vous le r�glerez
en : solid.
Vous ferez �galement l�objet obj_projectile,
m�me chose donnez lui son sprite mais laissez le ainsi.
Passons
aux objets centraux, qui sont : obj_jo_1
et obj_jo_2, ils
seront exactement
pareils, simplement dans l��v�nement step
vous veillerez � ce que
chacun ait son script � ex�cuter, script que
nous allons bient�t �crire, pour obj_jo_1 :
scr_update_jo_1();
et
�videmment pour obj_jo_2 :
scr_update_jo_2();
Donc
dans create
de l�obj_jo_1 et 2 vous
mettrez ce
code-ci :
Vie = 100; score_kill = 0; selected_weapon = "pistol"; //Pistolet cadence_pistol = 0; munition_pistol = 60; |
Il d�clare les variables de Vie du joueur, le score du nombre de tu�s,
l�arme
s�lectionn�e, et des variables qui vont nous servir pour la cadence et
les
munitions de l�arme. Toutes ces variables vont �tre utile dans les
scripts
principaux : scr_update_jo. Vous
verrez alors l�utilit� de ces variables.
Vous
cr�erez un �v�nement : Alarm[0]
, dans
lequel vous
mettrez la variable cadence_pistol � 0.
Enfin dans step
vous
r�glerez la
gravit� � l�aide de ce code-ci :
gravity_direction = 270; if place_free(x,y+1) gravity=0.5; if not place_free(x,y+1) gravity=0; if vspeed>12 vspeed=12; scr_update_jo_1(); |
Ce
code est
simple, il r�gle la direction de la gravit� � chaque d�but de step
, ensuite
si � x et y+1
il n�y a pas d�objet la gravit� est r�gl�e � 0.5 et si au contraire il
y a
quelque chose elle est mise � 0, enfin si sa vitesse verticale d�passe
12 pixel
alors elle est ramen�e � 12. Ensuite le script principal : scr_update_jo_1(); est
ex�cut�.
Ensuite dans l��v�nement de collision
avec
l�objet : obj_dec_bloc ins�rez
les lignes qui suivent :
if (vspeed > 0 && not place_free(x,y+vspeed)) move_contact(270); vspeed = 0; |
Maintenant que cela est, passons au principal du tutorial, au code
central du
multi joueur, la gestion des joueurs et les synchronisations de leurs
valeurs.
Ce script va g�rer aussi bien les d�placements et la gestion des
contr�les que l��criture
dans les slots et leur lecture, le principe c�est que chaque
objet : obj_jo_1 et obj_jo_2 �crivent
les slots de
leurs joueurs et les lisent.
Par exemple, l�obj_jo_1 lorsque il est sur l�ordinateur du joueur 1, c'est-�-dire lorsque la variable global.number est �gale � 1, alors il �crit dans les slots et l�on peut le guider, mais aussi et ce pour tous les ordinateurs ainsi que lui-m�me il lit les slots qu�il a �crit.
L�explication du script va clarifier ce principe, commen�ons :
Listing 3 : scr_update_jo_1();
//Script de maintenance pour obj_jo_1 if global.number = 1/*D�but de if global.number*/ { if (keyboard_check(vk_left)) { x -= 3 } if (keyboard_check(vk_right)) { x += 3 }
if (keyboard_check(vk_up)) { if not place_free(x,y+1) vspeed = -12; } //Ecriture donn�es { mplay_data_write(51,obj_jo_1); mplay_data_write(100,x); mplay_data_write(101,y); mplay_data_write(102,vspeed); mplay_data_write(105,"false"); mplay_data_write(107,Vie); mplay_data_write(108,score_kill); } /////Armes///// ////////////// //Pistolet if keyboard_check(vk_control) {
if selected_weapon = "pistol" { if cadence_pistol = 0 && munition_pistol > 0 {cadence_pistol = 1;alarm[0] = 13; munition_pistol -= 1; mplay_data_write(105,"true"); mplay_data_write(106,point_direction(x,y,mouse_x,mouse_y));} }
}
}/*Fin de if global.number A partir d'ici jusqu'� la prochaine execution du script on a ferm� la possibilit� � l'utilisateur: global.number d'agir sur quoi que ce soit! */
//Lecture donn�es pour tout le monde, m�me celui qui a �crit ces donn�es. x = mplay_data_read(100); y = mplay_data_read(101); vspeed = mplay_data_read(102); Vie = mplay_data_read(107); score_kill = mplay_data_read(108); //Armes du joueur //Pistolet if mplay_data_read(105) = "true" { with (instance_create(x,y,obj_projectile)) {motion_set(mplay_data_read(106),20);} }
//Dommages pouvant �tre caus�s aux joueurs if place_meeting(x,y,obj_projectile) { Vie -= 5 }
//Vie du Joueur if Vie <= 0 { Vie = 100; score_kill -= 1; mplay_data_write(125,"killed");//On envoie � l'autre que le J1 est mort pour augmenter son score_kill. Non r�alis� dans ce tutorial. x = obj_spawn.x; y = obj_spawn.y; } |
Lisez le
script avant tout.
La premi�re structure principale composant le code, marqu�e par : D�but
de if global.number et Fin
de if global.number.
Comporte tout d�abord trois sous structure qui permettent � celui chez qui la valeur global.number est �gale � 1, c'est-�-dire celui qui a cr�� la session, d�influer directement sur les d�placement de l�objet.
Apr�s quoi on �crit toutes les donn�es relatives aux d�placements, dans la fourchette de slot que nous nous sommes allou�s pour le joueur 1 :
//Ecriture donn�es { mplay_data_write(51,obj_jo_1); mplay_data_write(100,x); mplay_data_write(101,y); mplay_data_write(102,vspeed); mplay_data_write(105,"false"); mplay_data_write(107,Vie); mplay_data_write(108,score_kill); } |
On �crit donc ces valeurs 30 fois par step
(si on
laisse le nombre de FPS � 30), la valeur 105 est
remise � "false" � chaque
�tape, elle va nous servir pour les tirs, vous
allez la comprendre sous peu.
Ensuite vient donc la gestion des tirs, si la touche control est
press�e, et si
l�arme choisie est le pistolet alors si la cadence le permet et qu�il
reste des
munitions, bloquer la cadence, ne la r�autoriser que dans 13 �tapes,
enlever
une munition et �crire dans le slot 105 que l�on est en train de tirer,
puis
dans le slot 106 la direction dans laquelle on tire.
Fin de la
structure if global.number.
Ce qui suit est donc ex�cut� chez tout le monde, m�me chez le joueur 1,
d�ailleurs sans cela les projectiles ne seraient pas cr��s chez lui. On
lit
donc la valeur x, la valeur y etc. de l�objet. Ensuite vient le
probl�me des
armes, il est simple (comme tout ce tutorial).
Si la
valeur 105 est sur true, c�est donc que celui qui a la
valeur de global.number � 1 a press� sur Control et qu�il avait l�arme
pistolet
de s�lectionn�. (Vous pourriez d�ailleurs faire plusieurs armes, et les
diff�rencier en faisant �crire dans le slot 105:
� trueM4 � par
exemple.)
Comme la valeur 105 est true, alors on va cr�er le projectile chez tout
le monde
�tant donn� qu�on est au dehors de la structure if global.number,
et lui
donner la direction que le joueur 1 avait d�finie. Vous allez
dire :
� Mais le joueur va tirer �ternellement ? �
Eh bien non, car justement nous avons d�finie que 30 fois pas step
, le joueur
1 remet la
valeur 105 � false. Ce qui suit n��tant que la gestion de la vie et du
respawn
des joueurs n�a pas lieu d��tre expliqu�.
Pour le second joueur c�est exactement le m�me script, il faut juste modifier la centaine des slots, par exemple � la place du slot 105, on aura le slot 205. Voici le listing de ce script :
Listing 4 : scr_update_jo_2();
//Script de maintenance pour obj_jo_2 if global.number = 2/*D�but de if global.number*/ { if (keyboard_check(vk_left)) { x -= 3 } if (keyboard_check(vk_right)) { x += 3 }
if (keyboard_check(vk_up)) { if not place_free(x,y+1) vspeed = -12; } //Ecriture donn�es { mplay_data_write(52,obj_jo_2); mplay_data_write(200,x); mplay_data_write(201,y); mplay_data_write(202,vspeed); mplay_data_write(205,"false"); mplay_data_write(207,Vie); mplay_data_write(208,score_kill); } /////Armes///// ////////////// //Pistolet if keyboard_check(vk_control) {
if selected_weapon = "pistol" { if cadence_pistol = 0 && munition_pistol > 0 {cadence_pistol = 1;alarm[0] = 13; munition_pistol -= 1; mplay_data_write(205,"true"); mplay_data_write(206,point_direction(x,y,mouse_x,mouse_y));} }
}
}/*Fin de if global.number A partir d'ici jusqu'� la prochaine execution du script on a ferm� la possibilit� � l'utilisateur: global.number d'agir sur quoi que ce soit! */
//Lecture donn�es pour tout le monde, m�me celui qui a �crit ces donn�es. x = mplay_data_read(200); y = mplay_data_read(201); vspeed = mplay_data_read(202); Vie = mplay_data_read(207); score_kill = mplay_data_read(208); //Armes du joueur //Pistolet if mplay_data_read(205) = "true" { with (instance_create(x,y,obj_projectile)) {motion_set(mplay_data_read(206),20);} }
//Dommages pouvant �tre caus�s aux joueurs if place_meeting(x,y,obj_projectile) { Vie -= 5 }
//Vie du Joueur if Vie <= 0 { Vie = 100; score_kill -= 1; mplay_data_write(225,"killed");//On envoie � l'autre que le J2 est mort pour augmenter son score_kill. Non r�alis� dans ce tutorial. x = obj_spawn.x; y = obj_spawn.y; } |
Vous
avez
d�sormais un jeu de plateforme pour deux joueurs via Internet, il vous
est
facile de coder des nouveaux joueurs et je vous ai expliqu� comment
g�rer leur
destruction et leur d�connexion, je vous laisse donc le gm6 en fin de
ce
tutorial, au cas o� vous auriez des probl�mes �ventuels.
J�esp�re avoir �t� assez complet, je sais cependant que mes explications ont du mal � �tre claires, car la programmation du multi est une logique que l�on trouve par soi, et chacun a la sienne. La difficult� d�expliquer le multi joueur est surtout d� au fait que toute l�approche de la programmation de jeu est orient�e objet, alors que le multijoueur n�a aucune logique objet, et les gens ont donc du mal � comprendre que ce qui est r�alis� dans un objet sur un ordinateur ne se fait pas sur un autre joueur pour ce m�me objet sans la n�cessit� d�une synchronisation. Ils ne comprennent pas n�cessairement non plus qu�un objet chez un joueur �crive ses donn�es, et qu�ils les lisent lui-m�me, mais que cela soit effectif chez tous les joueurs. C�est pourquoi je vous laisse l�exemple en .gm6 car il n�y a pas de meilleures fa�ons d�apprendre que de regarder les choses faire, si ce n�est peut-�tre de chercher par soi-m�me.
II) Les routeurs de type
NAT et
comment leur permettre de jouer avec des jeux Game Maker.
Cette
section sera courte, mais certainement utile, car beaucoup de gens ont
des
routeurs.
Tout d�abord si vous voulez faire serveur et si vous passez par un
routeur il
va vous falloir un d�bit �norme, dans l�ordre de 100 Megaoctet par
seconde,
mais aussi un r�seau interne rapide, ou alors il faut faire en sorte
que le
script de connexion prenne bien son temps pour chaque action. Une
derni�re
option est d�utiliser des autres protocoles pour le multi joueurs, par
exemple
avec les dll�s SOC, 39Ster DLL, GMSock, EasySock etc.
Cette configuration ne vous concerne que si vous voulez jouer via Internet, si vous restez sur le r�seau local du routeur, c'est-�-dire avec les ordinateurs qui y sont branch�s cela n�est pas n�cessaire, il suffit d�utiliser les ips internes qui sont allou�es par le routeur � ces derniers.
Donc pour
que les routeurs puissent se connecter, il faut que le joueur qui cr��
la
partie ouvre un port sur son ip, de nombreux sites listent les
fourchettes de
ports libres, je vous conseille de prendre le port 3020, pour
l�utiliser sur un
ordinateur qui n�a pas de routeur, c�est simple, il suffit lorsque l�on
vous
demande d�entrer l�ip de l�entrer comme suit : �192.23.122.11:3020�.
Pour quelqu�un qui a un routeur s�il veut se connecter � ce serveur, il
lui
faut d�abord, avant de d�marrer le jeu, se connecter au syst�me de
configuration de son routeur, en g�n�ral cela se fait � l�aide d�une
page web.
Vous trouverez l�adresse de la page de configuration de votre routeur
dans son
mode d�emploi, sur le site de votre FAI, ou alors il existe des sites
Internet
expliquant pour chaque marque de routeur comment faire.
A partir de cette page vous aurez acc�s � la configuration de votre
routeur,
vous pourrez ouvrir un port. Il vous faudra ajouter le port 3020 et lui
dire de
rediriger tout ce qui y vient vers l�ip de votre ordinateur dans le
r�seau
local, c'est-�-dire l�ip que le routeur alloue � votre ordinateur.
Ainsi tout
ce qui viendra sur votre ip vers le port 3020, sera envoy� sur l�ip de
votre
ordinateur dans le r�seau local et la connexion pourra se faire.
Une fois ce port ouvert il vous suffit de d�marrer le jeu et d�entrer l�ip du serveur, suivi du double point et du num�ro de port. Et cela fonctionnera !
Attention toutefois, il faut que ce port soit ouvert et chez le serveur et chez le client ! Il faut donc que le d�veloppeur du jeu pr�voit cela � l�avance, autant donner un port pour le jeu, puisque de toutes mani�res cela ne g�ne pas ceux qui n�ont pas de routeur et cela permet de faire fonctionner le jeu chez ceux qui en ont un. Nous voil� heureux !
Buhl Damien
alias daminetreg
http://www.gamemaker.fr/
Plus Qu�une Communaut�, Une Synergie.