Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: [Tuto/NDS] LibLobby pour les nuls 2 : Le retour (avancé)  (Lu 1225 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Kram Hors ligne
Sr. Member
****
Messages: 308


Voir le profil
Un jour j'aurais un super avatar !!!

« 14 Juin 2008, 11:09:21 »

Voilà un tuto qui va vous permettre de passer au niveau supérieur avec Liblobby. Il regroupe toutes les fonctions de cette lib, ainsi qu'une description de chacune d'elles. Pour ceux qui n'ont pas lu le premier tuto, LIENWink

Sommaire :
I) - Gérer les users.
II) - Gérer les rooms.
III) - Envoyer des données.



I) - Gérer les users :

Code
(c):
void     LOBBY_SetOwnName(char *name) ;
Change le nom de la DS actuelle par name (31 caractères max + \0 final).


Code
(c):
LPLOBBY_USER     LOBBY_GetUserByID(unsigned short id) ;
Renvoi le nom au format LPLOBBY_USER de la DS numéro id. Renvoi 0 si la fonction échoue (par exemple, la DS numéro id n'existe pas).


Code
(c):
USERID_MYSELF
Numéro id de la DS actuelle, pour récupérer le nom de la DS actuelle, faites LOBBY_GetUserByID(USERID_MYSELF) ;


Code
(c):
LPLOBBY_USER     LOBBY_GetUserByMAC(unsigned char *mac) ;
Renvoi le nom de la DS dont l'adresse MAC est mac. Renvoi 0 si la fonction échoue.


Code
(c):
unsigned short     LOBBY_GetNumberOfKnownUsers(void) ;
Renvoi le nombre de DS connues. (Si une DS se déconnecte, elle sera quand même comptée dans LOBBY_GetNumberOfKnownUsers(void) ; car elle est "connue" !) La DS actuelle n'est pas comptée.


Code
(c):
int     LOBBY_IsTimedOut(LPLOBBY_USER user) ;
Détermine si l'utilisateur user est "hors ligne" depuis un certain temps. Renvoi 0 si il est toujours actif, 1 sinon.


Code
(c):
void     LOBBY_UserResetTimeout(LPLOBBY_USER user) ;
Remise à zéro du temps depuis lequel l'utilisateur user n'est plus actif. (LOBBY_IsTimedOut(LPLOBBY_USER user) ; renvoi donc 0).


Code
(c):
const char *     LOBBY_GetUserName(LPLOBBY_USER user) ;
Renvoi une chaine de caractères contenant le nom de la DS user.


Code
(c):
int     LOBBY_UserIsAllSent(LPLOBBY_USER user);
Vérifie si tout à été transmit à l'utilisateur user. Renvoi 0 si il reste des données à envoyer, renvoi 1 si le dernier paquet a été envoyé (même si aucune confirmation n'a été reçu de la part de la DS cible.).


Code
(c):
int     LOBBY_UserIsStreamSent(LPLOBBY_USER user,unsigned short streamID) ;
Même chose que LOBBY_UserIsAllSent(LPLOBBY_USER user); mais sur un canal précis (ici la Lobby vérifie si tout à été envoyé à user sur le canal streamID).



II) - Gérer les rooms :

Une room est une chambre gérée par un leader dans laquelle peuvent se regrouper plusieurs utilisateurs (users).

Code
(c):
void     LOBBY_CreateRoom(char *name, int maxUsers, unsigned short gameCode, unsigned short gameVersion) ;
C'est la fonction qui permet de créer une chambre. Le leader est celui qui crée la chambre, donc celui qui utilise cette fonction. La chambre s'appelle name et peut accueillir jusqu'à maxUsers utilisateurs, leader inclut. gameCode et gameVersion vous permettent de personnaliser la room.


Code
(c):
void     LOBBY_SetRoomVisibility(int visible);
Ne peut être utilisé que par le leader de la chambre. Si visible vaut 1 : la chambre devient visible, si visible vaut 0, la chambre devient invisible (elle est cachée).


Code
(c):
unsigned short     LOBBY_GetNumberOfKnownRooms(void) ;
Renvoi le nombre de chambre connues (fonctionne de la même manière que LOBBY_GetNumberOfKnownUsers(void) ; ).


Code
(c):
LPLOBBY_ROOM     LOBBY_GetRoomByID(unsigned long id) ;
Renvoi le nom au format LPLOBBY_ROOM de la chambre numéro id.


Code
(c):
ROOMID_MYROOM
Même principe que USERID_MYSELF (Faites LOBBY_GetRoomByID(ROOMID_MYROOM) ; ==> Renvoi 0 si l'utilisateur n'est pas dans une chambre, renvoi le nom de la chambre sinon.).


Code
(c):
LPLOBBY_ROOM    LOBBY_GetRoomByMAC(unsigned char *mac) ;
Renvoi la chambre au format LPLOBBY_ROOM dirigée par l'utilisateur dont l'adresse MAC est mac.


Code
(c):
LPLOBBY_ROOM    LOBBY_GetRoomByUser(LPLOBBY_USER user) ;
Renvoi la chambre au format LPLOBBY_ROOM dirigée par l'utilisateur user.


Code
(c):
LPLOBBY_ROOM    LOBBY_GetRoomByGame(LPLOBBY_ROOM anchor, unsigned short gameCode) ;
Renvoi la chambre numéro anchor (0 ou plus) au format LPLOBBY_ROOM dont le code jeu est gameCode.


Code
(c):
void    LOBBY_JoinRoom(LPLOBBY_ROOM room) ;
La DS actuelle joins la chambre room si celle-ci n'est pas pleine. (Il n'y a pas d'information directe comme quoi l'opération a réussie. Pour le savoir, il faut faire LOBBY_GetRoomByID(ROOMID_MYROOM) qui ne renvoi plus 0 si l'utilisateur a rejoins la chambre.)


Code
(c):
void    LOBBY_LeaveRoom(void) ;
La DS actuelle quitte la chambre dans laquelle il se trouve. Ne renvoi rien car n'échoue jamais.


Code
(c):
unsigned short    LOBBY_GetUsercountInRoom(LPLOBBY_ROOM room) ;
Renvoi le nombre d'utilisateurs actuellement dans la chambre room.


Code
(c):
unsigned short    LOBBY_GetMaxUsercountInRoom(LPLOBBY_ROOM room) ;
Renvoi le nombre maximum d'utilisateur pouvant se connecter à la chambre room (leader inclut).


Code
(c):
LPLOBBY_USER    LOBBY_GetRoomUserBySlot(LPLOBBY_ROOM room, unsigned char slot) ;
Renvoi le nom de l'utilisateur numéro slot qui se trouve dans la chambre room. (de 0 à LOBBY_GetMaxUsercountInRoom(LPLOBBY_ROOM room) - 1).


Code
(c):
char*    LOBBY_GetRoomName(LPLOBBY_ROOM room) ;
Renvoi une chaîne de caractère contenant le nom de la chambre room.


Code
(c):
unsigned short    LOBBY_GetRoomGameCode(LPLOBBY_ROOM room) ;
Renvoi le code jeu de la chambre room.


Code
(c):
unsigned short    LOBBY_GetRoomGameVersion(LPLOBBY_ROOM room) ;
Renvoi la version du jeu de la chambre room.


III) - Envoyer des données.

Code
(c):
void    LOBBY_SetStreamHandler(unsigned short streamID, LOBBY_STREAMHANDLER_PROC callback) ;
Créer une nouvelle fonction qui reçoit des données sur le canal streamID (Voir le premier tuto).


Code
(c):
void    LOBBY_SendToUser(LPLOBBY_USER user,unsigned short stream, unsigned char *data, int length) ;
 
Envoi length caractère de la chaîne data ainsi que le nombre length à l'utilisateur user sur le canal stream.


Code
(c):
void    LOBBY_SendToRoom(LPLOBBY_ROOM room, unsigned short stream, unsigned char *data, int length) ;
Même chose que LOBBY_SendToUser(LPLOBBY_USER user,unsigned short stream, unsigned char *data, int length) ; mais envoi les données à toutes les DS présentes dans la chambre room si la DS actuelle se trouve aussi dans cette room, envoi le données seulement au leader de la chambre si la DS actuelle n'est pas dans la chambre room.


Code
(c):
void    LOBBY_SendToAll(unsigned short stream, unsigned char *data, int length) ;
Même chose que LOBBY_SendToUser(LPLOBBY_USER user,unsigned short stream, unsigned char *data, int length) ; mais envoi les données à toutes le DS connues.


Code
(c):
void    IPC_WaitForAllSent(void) ;
Attend que toutes les données soient envoyées.



Voilà, vous connaissez maintenant toutes les fonctions présentes dans Liblobby. Vous allez pouvoir faire pleins d'homebrews tip top pour jouer en famille ou entre copains  Cheesy.
Bonne chance !!!

RE-PUB : RE-Téléchargez DS2DS, parce que vous le RE-valez bien !
Journalisée

unkwar Hors ligne
Sr. Member
****
Messages: 494


Voir le profil
Oeil de L1NX

« Réponse #1 : 14 Juin 2008, 11:28:19 »

 Shocked Kram t'as la classe !!!
Journalisée

Cobain Hors ligne
Hero Member
*****
Messages: 786


Voir le profil WWW
mes talents de graphiste lol

« Réponse #2 : 14 Juin 2008, 12:09:13 »

super ce tuto Smiley
Journalisée

DS fat +
GBAMP + flashme + 3CF 1Go
R4 + MicroSD 2Go

Mes Projets
Mon Blog
Cid2Mizard Hors ligne
Mega Member
***
Messages: 3285


Voir le profil WWW
Disciple Kukulcanien

« Réponse #3 : 14 Juin 2008, 12:30:32 »

Ouep super traduction, bon boulot   Cheesy
Journalisée

Toiletking Hors ligne
Mega Member
***
Messages: 1217


Voir le profil WWW
"Caca Molluskien et kukulcanien de 1807 à 2008"

« Réponse #4 : 01 Juillet 2008, 14:04:38 »

J'ai hate de voir la suite! que l'on puisse bouger des sprites sur une même map! Sur deux ds différente : le reve!  Smiley
Journalisée
Kram Hors ligne
Sr. Member
****
Messages: 308


Voir le profil
Un jour j'aurais un super avatar !!!

« Réponse #5 : 01 Juillet 2008, 15:16:19 »

Ba j'ai vois pas tout à fait ce que tu veux dire, mais ça ressemble à ça :
ICI
?
Journalisée

Toiletking Hors ligne
Mega Member
***
Messages: 1217


Voir le profil WWW
"Caca Molluskien et kukulcanien de 1807 à 2008"

« Réponse #6 : 01 Juillet 2008, 15:56:10 »

ouiiiiiiiiii  Cheesy

Mais ma foi, il y a quelques chose qui me dis que ca doit être chaud a géré : sur la vidéo, on voit que vers la fin , sur un écran, le joueur meurt et pas sur l'autre Cool

Mais ca me fait révé! un alien breed en multi!  Cheesy
Journalisée
Kram Hors ligne
Sr. Member
****
Messages: 308


Voir le profil
Un jour j'aurais un super avatar !!!

« Réponse #7 : 01 Juillet 2008, 16:03:15 »

Au début j'avais des énormes problèmes de synchronisation !! Mais à force de bucher dessus, j'ai réussi à les effacer Azn

Je travail encore sur cet espèce de bomberman (qui n'a actuellement plus rien à voir avec ce que tu vois sur la vidéo) et [scoop] je pense sortir une première version d'ici 1 semaine environs... [/scoop]
Journalisée

Toiletking Hors ligne
Mega Member
***
Messages: 1217


Voir le profil WWW
"Caca Molluskien et kukulcanien de 1807 à 2008"

« Réponse #8 : 01 Juillet 2008, 16:12:30 »

Coooool! en plus bomberman, c'est le jeux multi du siecle! (après mon futur alien breed  Wink )

Merci pour le scoop!   Azn

Sinon juste une toute petite question : les problèmes de synchros, sont-ils liés à la lib, ou au code difficile a mettre en oeuvre?   Roll Eyes

Edit : ca Kram tout!
« Dernière édition: 01 Juillet 2008, 16:17:05 par Toiletking » Journalisée
Kram Hors ligne
Sr. Member
****
Messages: 308


Voir le profil
Un jour j'aurais un super avatar !!!

« Réponse #9 : 01 Juillet 2008, 16:19:16 »

Le code... La lib est pas super facile à prendre en main, surtout si tu fais un jeu en temps réel (et pas du tour par tour, comme pour mon Puissance 4).

Si tu te lance dans liblobby et que tu galère, je suis la pour te servir Mon Sieur le Roi Azn
Journalisée

Toiletking Hors ligne
Mega Member
***
Messages: 1217


Voir le profil WWW
"Caca Molluskien et kukulcanien de 1807 à 2008"

« Réponse #10 : 01 Juillet 2008, 16:25:49 »

Le code... La lib est pas super facile à prendre en main, surtout si tu fais un jeu en temps réel (et pas du tour par tour, comme pour mon Puissance 4).

Si tu te lance dans liblobby et que tu galère, je suis la pour te servir Mon Sieur le Roi Azn

Rah c'est gentille!  Cheesy Pour la proposition, je vais déjà y aller par étape, maitriser les tiles et la colision pour mon jeux (avec tout ce que ca comporte IA, gestion des alien etc Azn)

Mais je me demande, si je dois pas penser mon jeux pour qu'il soit pas nativement multijoueur?

En tout cas merci, de ta part ca me touche! et ca me brule Azn
Journalisée
Pages: [1]   Haut de page
Imprimer

Aller à: