Tutoriel
Jeux 2 Joueur Online - Topic Forum Correspondant
Fonction a
connaitre :
mplay_init_tcpip('127.0.0.1')
//On
initialise le online sur le ip local 127.0.0.1
Cette Fonction dois etre la premiere a etre utiliser dans le jeu *Dois
avoir un
room_goto() apres*
mplay_session_create('Adamo
Session',2,'Adamo') //On creer
une session
sous le nom de Adamo Session qui peut contenir 2 Joueur et le nom du
host est
Adamo
mplay_session_find()
//Fonction
pour trouver les partie existante
retourne true si une session est trouver et retourne false si aucune
partie est
trouver
mplay_session_join(0,'Joueur2')
//Sert
a rejoindre une partie (a utiliser apres
FIND) *On rejoin la partie 0 avec le nom Joueur2*
mplay_message_send(0,1,x)
//Sert
a envoyer la Variable X dans le messageID
1
mplay_message_receive(0)
//Quand
on recois un message du joueur 0 (tous
les joueur) a utiliser avec un while ou if
mplay_message_value()
//La
valeur du message recu
mplay_message_id() //A
utiliser avec
mplay_message_receive *while mplay_message_receive(0){if
mplay_message_id() = 1{joueur1.x
= mplay_message_value()}}*
mplay_player_find()
//Sert
a savoir combien de joueur sont present
dans le jeu
Creation
d'un jeu en ligne pour 2 joueur
Partie
Connection
Bon
tout dabors pour creer un jeu en ligne pour deux personne il ya deux
fois le
travail a faire a moin de copier coller -_-'
Ouvrez game maker on va commencer par creer une nouvel objet que vous
apellez (Init_obj)
pour initialis� le mode online avec la fonction mplay_init_tcpip('127.0.0.1')
Vous mettez
la fonction
mplay_init_tcpip('127.0.0.1') dans le
create de
lobjet qui a pour but d'initialis� le online en mode tcpip creer deux
room
room_init et room_menu on dois
creer deux room parceque quand on initialize on dois
changer de room apres linitialization donc vous mettez avec la fonction
if
mplay_init_tcpip('127.0.0.1') = true
{
room_goto(room_menu)
}
else
{
game_end()
}
cette ligne
aura pour
but de changer de room si linitialization reussi sinon elle ferme le jeu
bon apres
creer deux nouveau objet apeller : create_obj et join_obj pour
l'objet create_obj
assignez lui un sprite de boutton create ajoutez l'event de
mouse_left_pressed
et mettez y la ligne mplay_session_create('Nom
de la Session',2,'Nom') quand on
va cliquer sur
le boutton create ca va creer une session ensuite ajoutez
deux autre
room : room_wait et room_play on dois
verifiez que la session est bien creer comme pour
mplay_init
if
mplay_session_create('Nom de la
Session',2,'Nom') = true
{
global.host
= true
room_goto(room_wait)
}
else
{
game_end()
}
ca vous
donne alors que si vous cliquer sur le boutton on verifie
si la
partie peut ce creer si oui on vous amene dans une room
dattente sinon le jeu ce ferme. ensuite ajoutez un objet : wait_obj ouvrez
lobjet join_obj
vous allez y mettre un sprite de boutton rejoindre et vous allez mettre
l'event
de mouse_left_pressed dedans vous mettez mplay_session_find()
et
comme pour tous les
autres
fonction on va devoir faire une verification donc inutile
de lajouter tout de suite pour la verification ce script cherche si une
une
partie existe si elle existe on verifie si on peut rejoindre si oui
(true) on
rejoin la partie sinon pour les 2 condition on end_game()
if
mplay_session_find() = true
{
if
mplay_session_join(0,'nom') = true
{
global.host
= false
room_goto(room_play)
}
else
{
game_end()
}
}
else
{
game_end()
}
Ouvrez
lobjet wait_obj on va lui mettre une fonction pour voir si
quelqun ce connecte dentrer dans le jeu a la place de toujours rester
dans la
room wait
mettez dans
step if
mplay_player_find() = 2{room_goto(room_play)} cette
fonction regarde
toujours si une 2ieme personne ce connect si deux personnes sont
connect�
aussitot
que la deuxieme personne ce connect on va de room_wait a
room_play
Partie
Jeu
Bon une
fois la partie connection terminer vous pouvez passer ici
ajouter deux objet : joueur1_obj et joueur2_obj ensuite
ouvrez l'objet joueur1_obj
on va
commencer par un petit script de mouvement dun personnage
style RPG je vous donne un script si vous voulez vous en servir a
mettre dans
step
if
global.host = true //variable qui dis si on est le HOST ou le CLIENT
(ICI C'EST HOST)
{
if
keyboard_check(vk_up){y-=4} //Permet a lobjet de monter si on
pese sur la touche haut
if
keyboard_check(vk_down){y+=4} //Permet a lobjet de descendre
si on pese sur la touche bas
if
keyboard_check(vk_right){x+=4} //Permet a lobjet de monter si
on pese sur la touche droite
if
keyboard_check(vk_left){x-=4} //Permet a lobjet de
monter si on pese sur la touche gauche
}
apres avoir
ajouter un script de mouvement qui n'est pas
obligatoire mais preferable :D et aussi joubliais on dois aussi ce
servir de la
variable defini dans les connection
que jai mis
global.host
elle
est defini sur "true" si on est le host et defini
sur "false" si on est le client donc ici le host dois envoy� les donn�e
au client donc dans step
if
global.host
= true // si on est le HOST
{
mplay_message_send(0,1,x)
// on envoie le message 1 avec la
valeur X a tout les joueur
mplay_message_send(0,2,y)
// on envoie le message 2 avec la
valeur Y a tout les joueur
//dans ce
tutoriaux on envoie seulement les position X et Y mais
on peut aussi envoyer des chose comme le sprite par exemple avec
//mplay_message_send(0,10,sprite_index)
on envoie la valeur
sprite index dans le message #10 donc plus loin vous allez voir le
client
recois les message si vous voulez
//essayer
de mettre le sprite_index dans vos script vous devez
aussi ajouter dans le receive du client exemple
//if
mplay_message_id() = 10{joueur1_obj.sprite_index =
mplay_message_value()}
pour les description voir plus loin
}
on ce
dirige maintenant dans lobjet joueur2_obj mais on va revenir
a lobjet joueur1_obj par la suite dans levent step on dois mettre un
script de
mouvement
if
global.host = false //variable qui dis si on est le HOST ou le
CLIENT (ICI C'EST CLIENT)
{
if
keyboard_check(vk_up){y-=4} //Permet a lobjet de monter si on
pese sur la touche haut
if
keyboard_check(vk_down){y+=4} //Permet a lobjet de descendre
si on pese sur la touche bas
if
keyboard_check(vk_right){x+=4} //Permet a lobjet de monter si
on pese sur la touche droite
if
keyboard_check(vk_left){x-=4} //Permet a lobjet de
monter si on pese sur la touche gauche
}
apres avoir
mis ca pour le CLIENT comme vous avez pu le voir
global.host = false (pour client) donc il reste a envoyer les position
au
joueur1
if
global.host = false // si on est le CLIENT
{
mplay_message_send(0,3,x)
// on envoie le message 3 avec la
valeur X a tout les joueur
mplay_message_send(0,4,y)
// on envoie le message 4 avec la
valeur Y a tout les joueur
//dans ce
tutoriaux on envoie seulement les position X et Y mais on
peut aussi envoyer des chose comme le sprite par exemple avec
//mplay_message_send(0,11,sprite_index)
on envoie la valeur
sprite index dans le message #11 donc plus loin vous allez voir le
client
recois les message si vous voulez
//essayer
de mettre le sprite_index dans vos script vous devez
aussi ajouter dans le receive du client exemple
//if
mplay_message_id() = 11{joueur2_obj.sprite_index =
mplay_message_value()}
pour les description voir plus loin
}
bon
on va commencer par le joueur2_obj on est deja dedans alors
vous allez encore dans step mais cette fois ci on met sur
CLIENT
pas sur le host parceque le joueur2_obj va etre attribuer
des message recu dans lobjet1... vous comprendrez en
regardant
le script sinon... bah je sais pas
if
global.host
= true // si on est le HOST dans lobjet joueur2_obj
{
while(mplay_message_receive(0))
//Si on recois un message (une
donn�e)
{
if
mplay_message_id() = 3{x = mplay_message_value()} //(explication)
quand on recois le message de joueur_obj2 le X de joueur_obj2 (pour le
host est
egale a la valeur)
if
mplay_message_id() = 4{y = mplay_message_value()} //(explication
suite) si le HOST recois le message 4 du client la valeur Y du
joueur_obj2 du
host est = a la valeur
//je sais pas si vous avez compris avec les explication mais en gros le
client
envoie la position du X et Y sur les message 3 et 4 a partir du
joueur_obj2 et
le host a partir
//du
joueur_obj2 il lis les 2 valeur X et Y et met lobjet
joueur_obj2 a la meme place que ou le client la bouger
//a
ajouter ici si vous voulez mettre le sprite_index
}
}
On
passe a l'objet joueur1_obj pour recevoir les don�e
if
global.host = false // si on est le CLIENT dans lobjet joueur1_obj
{
while(mplay_message_receive(0))
//Si on recois un message (une
donn�e)
{
if
mplay_message_id() = 1{x = mplay_message_value()} //(explication)
quand on recois le message de joueur_obj1 le X de joueur_obj1 (pour le
host est
egale a la valeur)
if
mplay_message_id() = 2{y = mplay_message_value()} //(explication
suite) si le HOST recois le message 2 du client la valeur Y du
joueur_obj1 du
host est = a la valeur
//je sais pas si vous avez compris avec les explication mais en gros le
client
envoie la position du X et Y sur les message 1 et 2 a partir du
joueur_obj1 et
le host a partir
//du
joueur_obj1 il lis les 2 valeur X et Y et met lobjet
joueur_obj1 a la meme place que ou le client la bouger
//a
ajouter ici si vous voulez mettre le sprite_index
}
}
Bon c'est
la fin du tutoriaux vous mettez les 2 objet dans la
room_play et vous tester ca devrais marcher si vous avez suivi tout si
quelquechose n'est pas clair
ou mal fait
me dire sur adamoadamo12323@hotmail.com
Ecrit par
Adamo