connect
 

Description:
Blog à quatre mains, mais sans sous-entendus sexuels.
Thématiques:

Dev
DS
Mendeleiev
C++
Autre
Gfx
WIFI
Chaoui!
CNFDS
php
NightStalker

[+]

Abonnement aux flux
Flux rss
Virtua Peanuts : Blog de Dev

05 avr
2007

[Wifi] Code source du serveur

oyez oyez
oyourd'hui est un grand oyur ... je release la première version du serveur que l'on utilise dans notre homebrew de chat (chaoui) qui est en cours de réalisation.

La partie du client DS fonctionne, mais est encore très laide, donc elle nécessite encore un peu de temps pour être montrable.

Par contre, la partie serveur est opérationnelle pour une V1 (entendez par là que le minimum fonctionne, mais qu'y a encore des choses à faire).
Donc je vous la met à dispo pour que vous regardiez et puissiez faire vos premiers pas dans le dev réseau pour la DS.

Alors, grosso modo le principe est très simple et très classique :
un thread qui attend les connexions de sockets et pour chaque connexion un thread qui écoute les paquets. Et à chaque reception de paquet, un thread qui traite le paquet. En fonction du paquet, on regarde s'il est à broadcaster, et si c'est le cas, on le broadcaste aux clients présents...

Donc, ca c'est le principe général.

J'ai écrit le serveur en C++/CLI, donc j'utilise la capacité du framework dotnet à gérer les sockets et les threads simplement.
J'ai essayé de rendre le serveur assez générique, et il sera paramétrable à distance dans l'avenir.
 Après, pour le traitement des messages, c'est dans la classe traitement buffer.
Soit on la modifie pour l'adapter à son besoin, soit il pourrait etre interessant de faire une classe abstraite à dériver. Vous pouvez me donner vos suggestions avec plaisir.

Les messages echangés ont pour but d'etre en xml, c'est facile avec le framework .net ; pour la DS, pour l'instant je fais un parsing à la bourrin, mais j'essaierai d'intégrer tinyxml par exemple.

Ensuite, je compte rajouter un encodage en base64 pour les échanges, et à la rigueur, pourquoi pas une compression, mais bon, faut pas que ca devienne ingérable sur la DS.

Si vous avez des remarques, des questions ; si vous voulez plus d'explications, n'hésitez pas à me demander.

Comme je le disais, j'ai fait un ptit client .nds qui tourne mais qui est moche, je vais l'améliorer et vous le proposer prochainement.
Ce qui faut savoir, c'est qu'il utilise les fonctions de palib pour initialiser le wifi, et les sockets ensuite (non bloquant pour la réception, car je pense pas qu'il y ait de thread sur la DS). En tous cas, avec masterdjé, on parle par DS interposées ... YEAH !!

Sources du serveur

Bonne prog,

Nico

ps : j'arrive pas à uploader, mollusk ???
pps : il est pas dit que le serveur est exempt de tout bug, si vous en constatez, merci de me le signaler

05 avr
2007

[Wifi] Choix d'un type d'encodage, et news ...

Bonsoir,

le serveur s'améliore, se consolide.
jusqu'à ce soir, je bossais dessus exclusivement en C++/CLI, avec un client C++/CLI aussi. Là, je m'attaque à la réalisation concrète d'un client NDS.
Et je rencontre les premières difficultés ...

Déjà, j'étais parti sur un encoding en unicode sur le serveur, et après plusieurs essai de wchar_t sur la DS, je me retrouve à arriver à faire communiquer dans un sens en UTF32 mais pas dans l'autre.
Ce qui fait que pour l'instant, j'ai décidé de revenir à un encoding ASCII, et tant pis pour les accents, de toutes facons, notre clavier est pas au point pour les accents, et je vous parle pas de la font personnalisée ... (pas taper djé ).

J'ai mis au point un système de ping pour voir si le client était toujours là et s'il n'y avait pas eu de déconnexion bourrine ; ca marchait plutot bien avec les clients .Net, mais là, avec la DS, dès fois, ca met du temps à comprendre que la DS n'est plus connectée ....

J'ai pas l'impression que ce soit un problème de code, peut-etre que la DS a un TTL élevé. De plus amples tests me le diront peut-etre ultérieurement.

Le serveur est bientot au point, et le client DS communique plutot bien, il lui manque les finitions, notamment l'affichage (fais-je arriver à faire un semblant de scroll ?).

Il y a encore un cas que j'ai pas traité, c'est l'arrivée conjointe de deux (ou plusieurs) trames successives. Elles se concatènent lorsque les envois sont rapprochés ; c'est pas grand chose à faire, mais bon, faut le faire .

Voila pour les news, bientot les sources ...

Nico

04 avr
2007

Chaoui !

1er Screen, pour l'ecran titre,
absolument pas définitif...
mais c'est pas impossible que ça reste ! :)


02 avr
2007

Wifi

Alors,

juste un ptit mot pour dire qu'on commence le dev wifi et que ca passe plutot pas mal.

J'entrerai un peu plus dans les détails prochainement, mais si vous avez des commentaires, n'hésitez pas.

J'ai écrit un ptit serveur de socket en C++/CLI (pourquoi ? parce que faut se faire plaisir un peu , et parce que je préfère les sockets de dotnet à winsock2). Donc pour l'instant, je ne m'interesse pas aux performances, si y a besoin, je verrais plus tard.

J'ai écrit aussi un ptit client PC pour tester et un ptit client pour la DS, qui se connecte avec les sockets.

J'ai encore quelques erreurs de compilation en "C++", mais en "C", ca passe bien.
Pour l'instant c'est très restreint, notamment au niveau de l'affichage, mais on arrive à s'envoyer des phrases avec masterdjé, à nos deux adresses différentes respectives.

Le serveur est hebergé chez moi pour l'instant.

Donc, voilà ce qu'il vous attends dans les prochains jours / semaines :
- des explications sur le serveur
- des explications sur la connexion depuis la DS
- un homebrew de "tchat"

A+

Nico

29 mar
2007

Les sprites

Bonsoir,

dans ce billet je vais vous parler un peu des sprites de palib et de ce que j'en ai fait pour me simplifier l'utilisation.

Si vous avez suivi le day 4 du tutoriel sur palib.info www.palib.info/wikifr/doku.php, vous aurez appris qu'on peut afficher 128 sprites par écran, ces sprites étant numérotés de 0 à 127 (donc 256 en tout).
Ce tuto nous parle de palette de 16 couleurs, de 256, etc ... pour finir par nous expliquer que la plupart du temps, on allait utiliser des sprites de 256 couleurs.
Et utiliser un certain nombre de tailles, 8, 16, 32, 64, etc ...

Finalement, on apprend qu'une création de sprite, se fait par :
PA_CreateSprite(0, // Screen
0, // Sprite number
(void*)vaisseau_Sprite, // Sprite name
OBJ_SIZE_32X32, // Sprite size
1, // 256 color mode
0, // Sprite palette number
50, 50); // X and Y position on the screen
On voit donc entre autres qu'il faut un numéro de sprite et un numéro de palette, qu'on aura préalablement chargé avec
PA_LoadSpritePal
Pour essayer de se simplifier tout ca, et surtout pour ne pas avoir à se souvenir des numéros de sprite, j'ai voulu laisser à un objet le soin de s'en charger pour moi. Le but étant d'encapsuler certaines fonctionnalités de sprites de palib dans un objet.

J'ai donc créé une classe Sprite :
on aurait à lui passer l'écran sur lequel on veut afficher le sprite, le numéro de palette (chargé au préalable avec loadpal (on verra plus tard que cette solution ne me plait pas non plus, et on l'encapsulera)), le pointeur vers le tableau qui représente le sprite, et sa taille.
Ce qui fait, qu'on a pas à se soucier du mode de couleur (256 par défaut), des positions X et Y (pour l'instant, elles seront déportées dans une méthode d'affichage) et surtout, du numéro de sprite.

Ainsi, on ne manipulera plus un "numéro", mais bien un objet, sur lequel on pourra appeler des méthodes.

La gestion du numéro est automatique, et pour cela, on utilise un vecteur statique d'entier pour indiquer si un numéro de sprite est déjà pris ou pas, en fonction de son écran.

Ce qui fait que maintenant, je pourrais utiliser mes sprites ainsi :

Sprite *sPion = new Sprite(ECRAN_DU_HAUT, numeroPalette, 
vaisseau_Sprite, OBJ_SIZE_32X32);
sPion->afficheSprite(50, 50); 

Il y a quelques méthodes supplémentaires dans la classe, comme masquerSprite, getWidth, getHeight, setPriority, etc ... c'est très incomplet encore, mais c'est largement étoffable, et ca le sera suivant les besoins que je découvrirai dans nos futurs développements.
Par exemple, pour gérer le déplacement du sprite avec le stylet...

Pour plus de renseignements, vous pouvez aller voir dans le code du puissance 4, les fichiers sprite.cpp et sprite.h

Pour plus d'explications sur le code de la classe, laissez un commentaire...

(ps : n'oubliez pas bien sur la destruction de l'objet avec delete, je n'ai pas encore regardé si on pouvait utiliser des pointeurs intelligents avec palib, mais pour l'instant, on le fait à l'ancienne)

Voila pour cette fois

Dans le prochain billet, je vous parlerai de la classe de gestion des palettes, car un numéro encore et toujours, est suceptible d'engendrer des erreurs, et puis ... je ne suis pas un numéro !!!!

Bonne prog,

Nico

27 mar
2007

Puissance 4 Bidon

Notre premier homebrew DS terminé ! ... enfin, presque ;)
Il ne manque que le réseau et une IA décente...
Code visible chez PA Lib ... Chez PA LIB !
    

27 mar
2007

Ouverture du blog

Bienvenue sur le blog de l'équipe Virtua Peanuts.

Cette équipe est composé de MasterDjé et de moi même, Nico (sur le forum de palib : nicoDS).
Nous blogerons surement à tour de rôle pour présenter nos travaux sur la DS, nos déboires suite à l'utilisation de palib, nos astuces, nos développements, nos gfx, etc ...

Bref, de quoi suivre des débutants amateurs qui aiment partager et apprendre.

Vous pourrez suivre aussi l'avancement des nos devs et etre au courant de nos release de homebrew, on a plein d'idées, et peu de temps, donc on fait ce qu'on peut

Moi, mon truc c'est le C++, ne me demandez pas d'ouvrir paint ou de savoir ce qu'il y a dans une palette, ca me fait mal au coeur rien que d'y penser
Djé vous le dira lui meme, lui c'est plutot le gfx, par contre, quand il s'agit de pointeurs ou de classes, il file doucement aller chercher le coca light pour que je puisse être confortablement installé ...
Note de Djé : Mince, mon secret est révélé
Voila pour cette breve présentation

J'en profite pour saluer mollusk et le remercier pour le blog et pour palib


To be continued ...

<< | 0 | 1 | 2 | 3 | 4 | 5 | 6 | >>
lache tes com dev fr scrutator irc bot
created by Jerome Wax based on LT version 0.3.2 - dev-fr.org 0.4 install