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

30 avr
2007

New Project : un indice...

Nous sommes en train de travailler sur un nouveau projet.
C'est pas complement original, mais pas encore vu sur DS... c'est déjà ça.

L'objectif est de capitaliser notre savoir-faire (client serveur, sprites, etc) pour pas trop s'emmerder et pouvoir sortir quelque chose rapidement...
Keep In touch...

ah, au fait, l'indice :


en même temps, c'est pas bien dur à trouver
Djé


24 avr
2007

Conversion avec PaGfx

En prenant l'exemple DemoPalettes, on peut trouver dedans les fichiers graphiques convertis par PAGFX.

Il me reste des TAS de choses à apprendre au sujet de cette conversion, mais je pense avoir compris quelques bricoles :

le fichier pafgx.ini contient :

------------------------------------------------------------------
#TranspColor magenta

#Sprites :
logo_vp.gif 256colors palette_logo 
pion_rouge.gif KeepPal palette_pions
pion_vert.gif KeepPal palette_pions

#Backgrounds :

-----------------------------------------------------------------

il y a plusieurs choses très importantes :

  • la couleur transparente : magenta n'est prise en compte pour les sprites  QUE si leur paramêtre de conversion est "256colors" : avec KeepPal, la gestion de la tranparence est differente...
  • le paramêtre KeepPal permet de récupèrer une palette COMPLETE : toutes les couleurs de la palette de l'image d'origine sont indexées et présente dans le fichier _Pal.c généré.

C'est bien, pour se preparer une palette aux petits ognions, et la réutiliser pour
tous les sprites (ou pour une selection de sprites dessinés avec la meme palette...)
MAIS
il faut se méfier, ce paramêtre ne tient plus compte de la couleur transparente indiquée
en tête du fichier, mais utilisera la première couleur de la palette comme couleur transparente

  • Le paramêtre 256Colors indique que l'on souhaite que PAGFX optimise la palette utilisée par le sprite en "virant" les couleurs non utilisées dans l'image
Attention : la palette générée ainsi contiendra probablement moins de couleurs que la palette du fichier image d'origine... gare à la confusion... :)

---



Capture de la palette des images pions_rouge/vert.gif dans ProMotion

Cette palette très classique me permet d'avoir la couleur magenta (255.0.255) en position #1 : Avec ça, je suis tranquille : un image basée sur cette palette sera TOUJOURS transparente sur la valeur magenta, peut importe son mode de conversion.


Capture de la palette de l'images logo_vp.gif dans ProMotion

Un detail frappe : y a beaucoup de violet ;). Or, pour PALib le canal transparent est strictement unique : soit Magenta soit la premiere couleur de palette.

Ayant dessiné ce logo en 3 secondes dans photoshop, j'ai utilisé sa technique d'exportation en .gif pour pas me casser le c*l.
Par conséquent, je subis la palette qu'il m'attribue...

et le p'tit effet d'ombre si sympa, maintenant, je le paie au prix fort : chaque degradé de magenta correspond à une valeur de cette ombre plus ou moins foncée "applatie" sur le fond magenta.

Compilez donc l'exemple pour voir à quel point c'est moche :P

...to be continued...

24 avr
2007

Les palettes

Bonjour,


aujourd'hui je vais vour parler un peu des palettes et de palib, en tous cas, de la partie code. La partie graphique, ca sera MasterDjé, car moi, j'y connais rien

Si vous avez suivi le day 4 de palib http://www.palib.info/wikifr/doku.php?id=day4 , vous aurez appris qu'on peut utiliser 16 palettes par écran en mode 256 couleurs. Ces palettes sont numérotées de 0 à 15 et sont fonction d'un écran.

Vous l'avez sans doute compris, mon but ici est de simplifier l'utilisation de ces numéros pour un sprite donné.
Dans le cadre d'un homebrew, il devient compliqué de savoir quel numéro de palette correspond à quel numéro de sprite, et si je veux en créer un autre ? ma palette est-elle déjà chargée ? et quel est son numéro ?
Bref, tout cela, je veux pas m'en préoccuper.

J'ai donc créé une classe, dont l'essentiel des méthodes est static. Mon but est d'utiliser une chaine de caractères pour identifier une palette et de m'affranchir de son chargement (avec PA_LoadSpritePal). Je veux aussi que cette classe m'attribue un numéro de palette automatiquement et sache faire la corrélation synallagmatique entre son numéro et son nom.


Voici donc la classe GestionnairePalette. Elle utilise plusieurs vectors STL static pour connaitre les éléments internes qui la composent.

Voilà comment créer une nouvelle palette :

 

Je charge donc la palette Palette1_Pal (elle est de type const unsigned short *, comme produit en résultat pagfx) pour l'écran du bas, et je lui donne le nom "PAL_PIONS".

Sprite * pionRouge = new Sprite(ECRAN_DU_BAS, GestionnairePalette::getPaletteFromName(ECRAN_DU_BAS, "PAL_PIONS" ), pion_rouge_Sprite, OBJ_SIZE_64X64);

Maintenant, il me reste à créer mon sprite et pour l'associer à ma palette préalablement chargée, je vais utiliser la méthode getPaletteFromName :

 

GestionnairePalette::add(ECRAN_DU_BAS, palette_pions_Pal,"PAL_PIONS");

Voila, simple non ?

Pour l'instant, la classe est très light, elle possède une méthode supplémentaire qui décharge toutes les palettes : removeAll(). J'envisage, dès que j'en aurai besoin, de permettre de décharger une palette par son nom. Et si je vois d'autres choses à rajouter, je le ferais.

Je vous propose l'exemple suivant, qui va charger 2 sprites (des pions) qui possèdent la meme palette et un autre sprite (un logo) qui utilise une palette différente, puis je les affiche à l'écran. Voila comment faire :

 // on ajoute la palette des pions
 /*Important : PAGFX ajoute le suffixe _Pal au noms de fichiers de palette... méfiance :) */
 GestionnairePalette::add(ECRAN_DU_BAS, palette_pions_Pal,"PAL_PIONS");

 // on crée les deux sprites
 /*Important : PAGFX ajoute le suffixe _Sprite au noms de fichiers de sprites... méfiance :) */
 Sprite * pionRouge = new Sprite(ECRAN_DU_BAS, GestionnairePalette::getPaletteFromName(ECRAN_DU_BAS, "PAL_PIONS" ), pion_rouge_Sprite, OBJ_SIZE_64X64);
 Sprite * pionVert = new Sprite(ECRAN_DU_BAS, GestionnairePalette::getPaletteFromName(ECRAN_DU_BAS, "PAL_PIONS" ), pion_vert_Sprite, OBJ_SIZE_64X64);

 // on ajoute la palette du logo
 GestionnairePalette::add(ECRAN_DU_BAS, palette_logo_Pal,"PAL_LOGO");

 // on crée le sprite du logo
 Sprite * spriteLogo = new Sprite(ECRAN_DU_BAS, GestionnairePalette::getPaletteFromName(ECRAN_DU_BAS, "PAL_LOGO" ), logo_vp_Sprite, OBJ_SIZE_64X64);


 while(1) // Infinite loops
 {
  pionRouge->afficheSprite(10, 10);
  pionVert->afficheSprite(80, 10);
  spriteLogo->afficheSprite(40, 100);

  PA_CheckLid();
  PA_WaitForVBL();
 }

 

Vous pourrez retrouver l'exemple complet en pièces jointes : DemoPalettes.rar

Bonne prog,

Nico

 

 


13 avr
2007

VP et Folding@Home : Team n°59021



J'ai créé une Team Virtua Peanuts qui plie les mollécules contre la maladie d'Alhzeimer et plein d'autres trucs degueux.

Maintenant, ça se goinfre de bande passante, ça fait ramer violent MAIS j'ai une super excuse pour ne plus éteindre le pc, et ça, ça n'a pas de prix ! (et on peut limiter l'utilisation de bande passante & du CPU :) )

En plus ça fait économiseur d'ecran très joli.

Téléchargez le client ici : ici pour windows

Et voila le n° de la Team Virtua Peanuts :

59021

Rentrez le à l'écran de choix de la team, c'est enfantin !

Pour en savoir plus : Le site officiel : http://folding.stanford.edu/french/
Chez Wikipédia : http://fr.wikipedia.org/wiki/Folding@Home

P.S. : Bien entendu, vous n'êtes pas obligé de rejoindre l'équipe, c'est du calcul distribué, l'essentiel est de participer, ça coute rien et c'est bon esprit ! Très Virtua Peanuts en somme... :)

11 avr
2007

Chaoui, beta pour maintenant

Bonsoir,
comme j'ai pas trop de temps en ce moment à accorder à la DS et que la béta a une tête honnorable, la voici !

Donc, ca fonctionne bien sur avec le serveur dispo dans les posts précédents.

On configure le serveur grace au fichier app.config (mettez le port sur 80 ou alors, il faudra changer le client, lui n'est pas configurable et va aller attaquer le port 80)
Oubliez pas d'ouvrir le port 80 sur les firewalls, surtout si vous l'attaquez ailleurs que chez vous.
Les autres params ne sont pas à toucher, sauf si vous changez le code du .nds

Alors, le client est tout simple
le splash, puis l'écran de config
rentrer le pseudo et l'ip du serveur, appuyez sur retour et hop ... ca devrait se connecter
Masterdjé y arrive, donc vous devriez y arriver.

après, y a pu qu'a écrire, et ca communique avec les gens présents
sachant que les clients ne savent pas encore qui sont les gens présents, sauf s'ils les voient se connecter
Donc, essayez à plusieurs, ou essayez avec le client .net
ou alors, choppez moi sur msn pour faire un test ensemble
ou demandez à masterdjé

enfin bref,

le mieux est de le lancer chez soi ou de l'heberger chez qqun ... molluskkkkk ?

chaoui.rar

Voila, les commentaires sont les bienvenus

Si vous voulez des explications sur le code, sur l'architecture, ou quoi que ce soit, hésitez pas.

A+
Nico

11 avr
2007

Chaoui ! Beta pour bientot !

... on la prépare ! On la fignole ! ça va pas tarder ! Serveur ET client Nds...

08 avr
2007

Mon détecteur de WFC...

... un blog, c'est aussi pour raconter des trucs comme ça :

J'ai un detecteur personnel de connection WFC : dès que je tente un Mario Kart, son alarme se déclenche...

pas bon pour mes stats, en tout cas...

C'est Raphaël, il a deux mois et demi...
by the way, j'ai pas joué à ma Wii depuis... 2 mois et demi ... :)

07 avr
2007

Chaoui! Preview #2

Voila à quoi ça devra ressembler...



Accueil


Menu


Ecran de config


Fenetre de Chat...

...illustrations non contractuelles ! :)

07 avr
2007

[Wifi] Serveur et Client C++/CLI

Bonjour à tous,

un ptit mot pour dire que j'ai rebossé un peu sur le serveur en .net et donc que je releasais la nouvelle version du serveur et un client en .net aussi pour les tests.

Ils sont disponibles ici : http://virtuapeanuts.free.fr/c-s.rar

Sachant que le serveur est paramétrable pas fichier xml (app.config). J'ai bossé aussi sur la synchro des threads pour éviter l'accès multiples aux ressources, avec les mutex de .net.

Voilà pour les changements.

Je bosse toujours sur le client DS, qui s'améliore de jour en jour, mais j'ai peu de temps pour le finaliser à fond, et il me reste encore à intégrer un lib xml pour la DS.

Pour ceux qui veulent démarrer le wifi sur la DS, je mets un bout de code quand même pour voir ... grosso modo le principe de la reception

void receiveTrame()
{
    char buf[4096];
    memset(buf, 0, 4096);
    int ret = recv(sock, buf, 4096,0);
    if (ret >0)
    {
        std::string s = buf;
        if (s != "PING")
            traiteTrame(s);
    }
}

Pour l'envoi :

char chaine[4096];
sprintf(chaine, "<message emetteur=\"%s\" date=\"\">%s</message>", PA_UserInfo.Name, currentString.c_str());
int ret = send(sock, chaine, strlen(chaine), 0);


Et pour l'initialisation :

    PA_OutputSimpleText(1,0,0,"Connexion ...");
    PA_InitWifi();
    PA_ConnectWifiWFC();

    PA_InitSocket(&sock, "192.168.1.100" , 80, PA_NONBLOCKING_TCP); // changer l'ip pour mettre celle du serveur
    char chaine[4096];
    sprintf(chaine, "<init idunique=\"%s\">initVP</init>", PA_UserInfo.Name);
    int ret = send(sock, chaine, strlen(chaine), 0);
    if (ret ==0)
    {
        PA_OutputSimpleText(1,0,1,"erreur ! client incompatible avec le serveur ");
        return;
    }


Je regarderai aussi la remarque de costello sur la reception d'une trame supérieure à 536 octets, car je n'en ai pas eu l'occasion encore...

Bonne prog,

Nico

ps : mollusk, il faudrait un système de balise code ... :)

05 avr
2007

Chaoui! Preview

enjoy...

Preview : Nom féminin (latin previare) : Ce dit de quelque chose de prévu

<< | 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