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

 

Fichier Source: Cliquez Ici