vendredi 31 octobre 2008

Apache ActiveMQ

Voilà un soft intéressant, et que j'ai bien l'intention de creuser. Les queues de message sont un très bon moyen pour construire des applications fortement distribuées, en permettant un traitement asynchrone et transactionnel.

C'est écrit en Java (personne n'est parfait!), mais des bindings existent dans tous les languages.

J'essaie de faire quelque chose avec ça, et je vous tient au courant!

dimanche 19 octobre 2008

Ne me dérangez pas, je joue!

Vous ne vous étonnerez pas de mon silence assourdissant sur ce blog: la version 1 (ou plutôt la version 1.003) de Mount & Blade, le jeu de combat médiéval, est enfin sortie. La page principale du site n'est pas à jour, mais la page de téléchargement l'est. Par rapport à la version précédente, c'est surtout toute une série de finitions très agréables. Parmi celles qui m'ont le plus plu:

- Les tournois dans les villes sont maintenant à thèmes: parfois uniquement arme de jet, parfois à la lance, parfois à l'épée, ce qui rend les joutes plus intéressantes et chaque combat plus homogène.
- Plus de missions, même si assez rapidement je les zappe pour me concentrer sur le combat
- Plus de variété dans les villages, les donjons, les arènes
- Les batailles sont plus grosses!
- Peut-être pas une nouveauté, mais je ne l'avais jamais vu avant: l'on peut joindre un siège du côté des défenseurs, et étriper la piétaille au fur et à mesure qu'elle débarque de la tour

Comme d'habitude, les sauvegardes des versions précédentes ne sont pas supportés, mais l'on peut transférer sont personnage en l'exportant et le réimportant. Par contre, ma renommée est repartie de zéro, il va donc me falloir de longues heures d'exploits avant de retrouver une armée qui me permette de prendre un château!

mercredi 1 octobre 2008

Comment découper son code

Codons! Mais comment diviser son code en bibliothèques? À plus forte raison s'il y a plusieurs applications partageant le code (client serveur, par exemple)?

J'ai tout essayé. Du monolithique à la myriade de bibliothèques hyper-spécialisées. Et j'ai atteint un équilibre qui pour l'instant ne fonctionne pas trop mal.



Game contient le plus de code possible, à l'exception:
- Du code de GUI, qui va dans Client
- Du code réseau et connexion à la base de données, qui va dans Serveur
- Du code suffisamment générique pour ne pas être spécifique à l'application que je développe, qui va dans Common

Je m'interdis d'ailleurs d'inclure les en-têtes de connexion à la BDD, du réseau, et de la GUI, afin de forcer cette distinction.

Ainsi, j'ai par exemple tous mes objets du jeu dans Game, mais chaque objet a des méthodes virtuelles pures pour envoyer un paquet sur le réseau, ou sauver son état dans la BDD. Dans Serveur, ces objets sont dérivés, et le code spécifique y est ajouté.

Je me suis rendu compte que cette séparation était de fait très pratique, puisqu'elle est relativement simple à mettre en œuvre (pas besoin de se casser la tête pour décider d'où mettre le code) et qu'elle rend le code plus propre en séparant la logique de la partie purement communications.