Alexis Bauchu - On est pas des machines

Aller au contenu | Aller au menu | Aller à la recherche

mardi, avril 16 2013

Migrer du PC au Mac, épisode 2

Encore du pense bête pour le développement iOS et la découverte de l'environnement Mac.

Lire la suite...

mardi, avril 9 2013

Migrer du PC au Mac, épisode 1

A la fois par curiosité personnelle et par besoins professionnels, je me retrouve à migrer de l'environnement PC (principalement Windows, mais parfois GNU/Linux) à l'environnement Mac. Il y a quelques surprises (bonnes et mauvaises) et je voudrais en garder une trace et me faire un pense-bête.

Lire la suite...

samedi, mars 30 2013

Dotclear, c'est trop pas 2.0

Après des années et des années de toutes petites updates, Dotclear stagne et s'enlise dans le passé. Le divorce avec le CMS des tous débuts est proche.

Lire la suite...

vendredi, décembre 14 2012

Polices de charactères OTF qui ne fonctionnent pas

Si vous avez subi des problèmes soudains d'affichage (mauvaise police ou pas d'affichage) ces derniers temps avec des fontes provenant de fichiers .otf, ne cherchez plus, c'est Microsoft qui a introduit le bug dans un de ces patchs récent pour Windows. C'est très classe...

Pour régler le problème: direction le menu démarrer > panneau de configuration > programmes > programmes et fonctionnalités > afficher les mises à jour installées > filtrez avec le nom KB2753842 > désintaller.

vendredi, octobre 26 2012

Optimisation de performances en Flash

Voilà un sympathique diaporama qui sera utile à ceux qui font des jeux en Flash:

Lien originel: Flash performance tuning (EN)

Page de l'auteur: Andy Hall

jeudi, octobre 25 2012

Projet: Player du Peuple

Salut les cocos,

Comme je suis un fan des deux minutes du peuple, j'ai un rêve depuis longtemps: retrouver au même endroit tous les épisodes, et surtout, pourvoir retrouver des épisodes en recherchant une blague ou terme particulier. Mais je n'ai jamais trouvé un tel outil. Aujourd'hui j'ai pris les choses en main, et j'ai commencé à construire cet outil. Bienvenue, au Player du Peuple et à son pote le Wiki du player du peuple.

Rock Lee est trop content de pouvoir écouter les 2 minutes du peuple grâce au player du peuple!

Bon vous emballez pas, c'est toujours des travaux en cours, c'est à dire que ça fonctionne, mais l'ergonomie est un peu pourrie, on entend pas de son sous Firefox (merci à la balise <audio> qui supporte pas les mp3...), etc. Donc pour l'instant je recommande de visiter le player avec un navigateur récent, genre Google Chrome.

Les fonctionnalités qui marchent:

  • lecture (ah ben tu parles!)
  • les boutons suivant / précédent (youpi, c'est trop fort...)
  • le partage d'URL (si vous tombez sur un épisode qui vous plait, vous pouvez copier l'adresse du site et l'envoyer à quelqu'un, par exemple: BIM!)
  • compatible avec les tablettes (pas de souci) et les mobiles (bon là c'est moins bien, niveau ergonomie)
  • lien vers la page wiki de chaque épisode (pour voir le transcript)

Les fonctionnalités à venir:

  • meilleure ergonomie
  • lecture en séquence
  • lecture aléatoire
  • bouton like/share Facebook
  • connexion au wiki via Facebook ou OpenID
  • etc

Le wiki quant à lui est là pour servir de sorte de base de donnée. On y retrouve les épisodes rangés par série par exemple, comme les géniaux "Roger et Caroline" par exemple. On y retrouve aussi les transcripts de chaque épisode. Alors c'est un travail de fourmi, alors si vous voulez filer un coup de main, je vous en serai reconnaissant! Il y a déjà quelques épisodes bien avancés ou complets: Urgences du Peuple - Tumeur au cerveau (merci Gauthier), Célébrités mortes: Einstein (merci Marlène) et Jacques Cartier: départ de France (merci moi).

Tous les retours de votre part m'intéressent! Bonne lecture ;)

samedi, janvier 28 2012

Global Game Jam 2012

Salut tout le monde!

Comme d'hab, ça fait un an que j'ai pas écrit. Comme d'hab, je vais vous parler à moitié de ce que je fais cette année à la Global Game Jam. Et comme d'hab je vous dirais que je taperai "bientôt" la suite, mais elle n'arrivera que l'an prochain, ou jamais. Ah! Au fait, bonnée année!

Sinon vous pouvez voir ce qu'on fait en suivant @abauchu sur twitter, ainsi que les hastags #ggjparis et #ggj12 ou encore voir mon album de photo FB du projet

A suivre!

vendredi, janvier 28 2011

Global Game Jam 2011

Bonjour à tous, ça fait un demi-millénaire que j'avais pas écrit ici. Mais comme je m'apprête à assister à la Global Game Jam de 2011 à Paris, je sens que je me dois de reprendre du service. L'édition de l'an dernier avait été riche en émotion, je préfère prendre de l'avance pour celle-ci et je vais tenter de retranscrire le plus souvent possible les événements! Restez à l'affût, je mettrais à jour ce billet à coups de micro-updates durant les 3 prochains jour. A très vite!

Update Vendredi 23h50 : Ca y est! Ca fait un moment qu'on est lancés maintenant, mais le début a été intense. Retrouvailles avec les amis de l'année précédente, grignotage, présentation de la keynote de cette année (avec une apparition rigolote et débile du créateur de Katamari), dévoilement du sujet, brainstorm, création des équipes et brainstorm encore + pizza, réunion avec la team pour définir les objectifs primaires, configurations des machines, découverte de l'environnement de boulot (Unity3D). Pfiou! C'est tendu! On est vraiment pas couchés. Heureusement la Jam est sponsorisée par Red Bull cette année, c'est open bar, canettes de stimulant à volonté!

Histoire de préciser, le sujet cette année, c'est Extinction. Pas de sujet secondaire ou de mot clé à placer cette année, on part directement là dessus. Notre team part sur un jeu d'arcade en arène avec un gameplay ou on absorbe ou évite des boulettes. J'en dirais plus plus tard. Bisous.

Update Dimanche 15h45 : Je crois que je j'ai vraiment surestimé les opportunités que j'allais avoir d'updater ce blog en temps réel! La course a été intense, le travail soutenu. Nous avons développé le jeu avec Unity3D, et bien que l'outil soit vraiment une bête en accessibilité et efficacité, découvrir un nouvel environnement prend toujours un certain temps et il faut se garder un peu de temps pour manger, décompresser, et dormir! J'ai du dormir 7h au total ces deux derniers jours.

Je suis vraiment content du résultat de notre jeu. On a réussi à boucler dans les temps, en avance même! Notre jeu a 5 niveaux et un mode survival, une belle performance en 48h. Il est maintenant temps d'aller voir ce que nous ont concoctés les autres jammeurs. Il y avait du gros cette année, du jeu sur Twitter, de la réalité virtuelle, etc, j'ai hâte de voir ce que ça donne!

vendredi, juin 11 2010

Team Fortress 2 à -50% + sortie sur le Mac

Ca serait juste con de passer à côté: TF2 à 10€. C'est vraiment un super bon jeu, j'y joue encore (enfin les jours où j'ai un PC...)

Et j'adore la communication de l'équipe de TF2. Vous pouvez voir tout ce que comporte cette mise à jour "Mac" ici : Mac Update (allez au moins voir la vidéo, elle est marrante). On notera notamment l'ajout, 119 updates plus tard, d'un mode tutorial. Comme quoi il n'est jamais trop tard!

vendredi, février 12 2010

Astuce Youtube: commencer la lecture à un instant donné

Il peut être très pratique lorsque vous faites circuler un lien Youtube de faire démarrer la vidéo à un instant précis. C'est ce qui m'est arrivé alors que je voulais donner un exemple de comment le son est géré dans les combats de Zelda Wind Waker. Et comme je passe toujours beaucoup de temps à chercher cette info sur internet, je vais l'écrire ici pour m'en souvenir.

La manoeuvre est plutôt simple. Il faut rajouter un paramètre particulier au bout de l'url:

#t=XmYs

avec X = le temps en minutes et Y = le temps en secondes. Par exemple:

La vidéo originale: http://www.youtube.com/watch?v=zxelhv6sP2c
La vidéo commençant seulement au moment des combats: http://www.youtube.com/watch?v=zxelhv6sP2c#t=1m02s

Et c'est tout!

mercredi, février 10 2010

Retour sur la Global Game Jam 2010, part 3 et fin

Lire la 2ème partie

Pour ce dernier post sur la Global Game Jam 2010, voici mon bilan personnel de l'événement. La GGJ 2010, c'était...

... un jeu vidéo

Parce que le but de l'opération c'est quand même de réaliser un jeu vidéo. Voici donc Meet Me at the Banana Disco, un jeu qui vous mets dans la peau d'un homme qui sort en boîte de nuit et qui tente de récupérer un maximum de numéros de téléphone. Pour cela il faut aller parler avec les gens, ce qui se manifeste dans le jeu de manière musicale.

Meet Me at the Banana Disco - Discuter

Chaque "clubber" émet une phrase musicale (deux notes dans le cas ci-dessus) et il faut répondre par la même phrase musicale pour séduire. Les notes sont produites en maintenant la touche espace et en appuyant sur une flèche du clavier. A l'intérieur du club, la tâche est difficile car la musique est plutôt forte.

Meet Me at the Banana Disco - Discuter

Pour pas un rond, vous avez donc:

  • un gameplay musical
  • un look sobre et marrant en pixel art
  • trois ambiances sonores et visuelles différentes

Vous pouvez jouer en cliquant ici (soyez patients, le chargement au début est un peu long).

... des rencontres

Je ne connaissais pas du tout les gens avec qui j'ai travaillé sur ce projet: Guillaume Martin (programmeur), William David (game designer et graphiste pour l'occasion) et Matthieu Morizet (sound designer). Je tiens à dire que c'est des gens super sympa, super comptétents, et encore une couche de super sympa par dessus. J'étais content qu'on ait des tas de goûts et de références en commun (je suis parti avec le disque dur plein de super sons electro grâce à Matthieu). C'est dans ce genre d'occasion qu'on se rend compte que le monde est très petit: Guillaume et William connaissaient des amis de l'ENJMIN parce qu'ils ont travaillé avec eux. C'est aussi les mecs qui ont fait Tuper Tario Tros que j'avais découvert 2 semaines plus tôt.

... un cours condensé sur la réalisation d'un jeu vidéo

Quand on y pense, bosser 48 heures d'affilées, c'est comme abattre une bonne semaine de travail bien dense! Une semaine durant laquelle vous vivez en avance rapide le cycle complet de la vie d'un jeu: conception, production, validation et livraison. Avec tout ce que ça implique au niveau humain, au niveau logistique, etc. Alors que dans l'industrie, il existe des gens qui n'ont jamais vu la fin d'un projet! Ca arrive: des projets non retenus au bout de leur phase de conception, des annulations pures et simples, des coupes dans le budget. Certains bossent en freelance sur des projets déjà commencés et qu'ils quitteront avant qu'ils soient finis.

... une expérience à ré-itérer

J'ai adoré participer à cet événement. Les gens m'ont demandé: "alors c'est pour quand les résultats?". Je ne comprenais pas la question.
- Mais les résultats de quoi?
- De la Game Jam!
- Mais tu veux que qui dise quoi?
- Ben on veut savoir qui a gagné.
- Personne ne gagne!
Et je trouve ça beau. Les gens qui se retrouvent là le font parce que ça leur fait plaisir. Quand vous retrouvez un ami musicien après un boeuf, vous lui demandez pas qui c'est qui a gagné? Non?

samedi, février 6 2010

Retour sur la Global Game Jam 2010, part 2

Lire la 1ère partie.

Pour cette 2ème partie, Je vais raconter en photos (vous trouverez les images en grand sur cet album Flickr)

Comme je le disais dans le billet précédent, une fois le thème "Deception and Seduction" dévoilé, chacun à eu du temps pour réfléchir et ensuite présenter son idée: 45 secondes seulement pour convaincre le public...

Pitch de Paris by Night

... grâce au texte ou aux images ...

Pitch de Parisian Moon Sheep

... puis démarchage directement auprès des participants.

GGJ 2010 - Discussion

"Je te jure, grosse comme ça!"

Une petite pause pizza (gracieusement offerte par l'ISART)...

Buffet de pizza 2

... et ensuite tout le monde se met au travail

Salle 2 / 2

A ce stade, tous les détails du gameplay ne sont pas encore décidés, il s'agit de rafiner, préciser le concept de départ. Puis de répartir les tâches. Premier objectif: réaliser un premier prototype pour s'assurer que l'idée de départ est la bonne. Il faut en arriver vite là, car si le concept est mauvais, il faut encore prendre le temps de corriger ou d'en inventer un autre. C'est ce à quoi nous occupons nos premières heures, mais ça prend plus de temps que prévu: il faut installer les logiciels manquant sur son ordinateur, mettre en place un pipeline pour travailler en équipe, configurer SVN, etc. Aussi, je me familiarise avec l'Action Script 3 que je n'ai jamais touché de ma vie ainsi qu'avec le framework Flixel. Rien de bien méchant au final, mais notre temps est compté.

Beaucoup font leur première nuit blanche dès le vendredi soir. Moi j'ai vraiment besoin d'une pause à 5h du matin et je vais me coucher sur un matelas pneumatique fourni pour l'événement. A 10h le réveil est difficile: je suis dans le noir, j'ai l'impression d'avoir dormi une heure ou deux et je manque de me rendormir. Par peur de faire mauvaise impression auprès des gens qui comptent sur moi, je regarde tout de même ma montre. AH! C'est le matin, il faut se remettre au travail. Mes collègues n'ont pas dormi du tout. Guillaume (l'autre programmeur) ne viendra même pas manger avec nous vers 13h le samedi. C'est dans le cours de la deuxième nuit qu'il poussera son premier soupir et s'effondrera sur sa table pendant une heure, avant d'aller se coucher un peu plus confortablement. D'ailleurs c'est le moment que beaucoup d'autres choississent pour tomber comme des mouches.

Effets de la fatigue 1
Effets de la fatigue 2

Dimanche à 14h55, nous finissons de corriger quelques bugs qui feraient tache dans la version à uploader 5 minutes plus tard sur le site officiel de la Global Game Jam. A 15h, nous ne sommes pas aussi prêt que nous le souhaiterions, mais c'est comme ça! Notre version est présentable et fonctionnelle, c'est l'essentiel.

Une fois les projets uploadés, nous rangeons nos affaires et nous préparons pour les démonstrations. Chaque groupe joue ou fait jouer à son projet et dois expliquer en quoi il répond aux contraintes et si il atteint des objectifs optionnels.

Demo de Give me your Skin

La presse spécialisée était là à toutes les étapes de l'événement: Game One, JeuxVideo.com (ou .fr??), Gamekult, etc.

Couverture presse

Nous présentons Meet Me at the Banana Disco, un jeu en Flash dans lequel il faut entrer dans un night club et séduire un maximun de personnes, malgré le volume de la musique. Le gameplay repose donc sur de mini séquences musicales à reproduire pour séduire une personne. Les réactions sont bonnes.

Demo de Meet Me at the Banana Disco
Cloture

A suivre...

Si le sujet vous intéresse, inscrivez-vous à mon flux RSS. N'hésitez pas à poser des questions ou faire vos remarques dans les commentaires!

Lire la 3ème partie

mardi, février 2 2010

Retour sur la Global Game Jam 2010, part 1

Global Game Jam Logo

Vous l'avez peut être suivi sur mon compte Twitter, le week-end dernier j'ai participé à la Global Game Jam à Paris. Il s'agit d'un événement mondial qui en est à sa deuxième itération. On pourrait traduire en français par "Session d'improvisation de jeu vidéo mondial". Ce qui veut pas dire grand chose comme ça, mais disons que pendant tout un week-end, des programmeurs, des game-designers, des sounds designers et des graphistes se retrouvent, font connaissance, et développent ensemble un jeu vidéo.

L'événement avait deux sites en France cette année encore: Angoulême et Paris. La GGJ d'Angoulême était hébergée par l'école nationale du jeu vidéo (l'ENJMIN) et cette année la GGJ Paris était hébergée par l'ISART Digital (école de jeu, d'animation 3D et de web). La GGJ c'est l'occasion de rencontrer des professionnels: le sympathique Oliver Lejade du studio Mekensleep (Soul Bubbles) était notre hôte; Fabien Delpiano de PastaGames a fait une apparition et a ouvert la session par un discours de motivation et de conseils. Dommage qu'il n'ait pas pu rester. C'est un gars du Sud et il avait un train à prendre.

Après quelques jeux et un petit pot pour faire connaissance avec les participants, le sujet est dévoilé: "deception and seduction", avec en rab l'obligation de faire apparaitre dans le jeu au moins un des éléments suivants: un singe, un âne, une clé. C'est pas des belles contraintes ça?? Optionnellement, les participants peuvent tenter d'atteindre des objectifs qu'ils choisissent: jeu sans téléchargement, utiliser moins de 16 couleurs, jeu multi ou communautaire, etc.

A partir de là, chacun a réfléchi pendant 45 minutes sur une idée de jeu: il fallait trouver des mécaniques et un contexte qui colle aux contraintes. Je peux vous dire que c'est pas facile. Est venue ensuite la phase de présentation: on nous a donné 45 secondes pour présenter notre idée aux autres participants pour les convaincre de travailler sur ce projet. Ensuite, de manière informelle, les gens ont pu discuter entre eux de leurs idées et former les groupes. Les dernières associations ont eu lieu pendant la dégustation de pizza gracieusement offerte par l'ISART. C'est comme ça que j'ai fait la connaissance de Guillaume, William et Matthieu.

Si le sujet vous intéresse, inscrivez-vous à mon flux RSS. N'hésitez pas à poser des questions ou faire vos remarques dans les commentaires!

Lire la 2ème partie.

mardi, janvier 26 2010

World of Goo décortiqué

World of Goo Screen

Je vous ai déjà parlé de World of Goo dans un billet précédent, plutôt orienté économie, mais finalement je n'ai jamais parlé du jeu en lui même. World of Goo (WoG pour faire court) est un jeu de contruction / réfléxion sorti fin 2008 et développé par 2Dboy, un studio indépendant américain. Et par "studio", j'entends "juste deux talentueux ex-employés d'EA". Le but du jeu est de créer des tours et autres structures composées de petit êtres vivants appelés "balls of Goo" (intraduisible, mais imaginez une boule de pétrôle ou de morve dotée d'une paire d'yeux) afin d'atteindre un tuyau qui va aspirer les boules non utilisées. L'objectif étant d'atteindre le quota requis en fin de chaque niveau.

Dans mon esprit, WoG est, avec Braid, une icône du jeu vidéo indépendant, parce qu'il a prouvé au public que les "jeux de garage" pouvaient être de vraies réussites, à la fois critiques et financières. Le label "indé" en a gagné en crédibilité et la visibilté de cette catégorie de jeux a été améliorée. C'est un de mes coups de coeur de 2008. J'aime chaque élément du jeu: son gameplay de contruction avec ses pièges physiques; sa direction artistique étrange et attachante; sa bande son tantôt enjouée, tantôt mélancolique, tantôt épique; et son humour. Au delà de ça, en tant que développeur, je suis sensible à l'histoire du développement du jeu (un simple jeu expérimental devenu une production couronnée de succès), l'esprit de ses développeurs, etc.

Mais ce dont parlent rarement les test du jeu, c'est aussi les messages que le jeu véhicule, car derrière une façade de jeu cartoon plein d'humour, se cache en réalité une critique de notre société: les grands groupes qui écrasent leurs employés et leur concurence, la course à la beauté, la course au progrès, la main-mise des géants de l'informatique sur nos information personnelles... Beaucoup de thèmes sont ainsi abordés de manière indirecte, camouflés dans le décor ou dans le gameplay. C'est le sujet d'un dossier (en anglais) sur GameObserver.com appelé "We are World of Goo" (à lire ici). En voici quelques extraits:

Quand vous complètez le niveau “Hang Low”, la société "World of Goo" ouvre ses portes et on nous montre une vidéo de sa clientèle. Les clients ont tous le regard porté vers le nouveau bâtiment de la société et quand ils parlent, ils ne s'expriment pas avec des mots mais en poussant de petits cris aigus, à la manière de souris. Serait-ce la façon dont la société World of Goo, et que les entreprises du monde réel qu'elle représente, nous considèrent, comme des souris couinantes qui n'existent que pour consommer leurs produits?

Au début, l'idée d'utiliser la beauté comme source d'énergie pour alimenter le monde semble inspirée, jusqu'à ce qu'on se rende compte de quelle genre de beauté il s'agit. Le genre qui exclut certaines personnes pour le bénéfice d'autres, le genre pour lequel certains "moins chanceux" sont sacrifiés. Une beauté conservée seulement grâce à la chirurgie et aux injections; des visages qui perdent leur abilité à s'exprimer au nom de la "beauté".

Si vous ne connaissez pas le jeu ou si vous vous intéressez à la manière dont est construite le jeu, je recommande chaudement le visionnage de cette vidéo (encore en anglais, mais on peut activer les sous-titres) qui se concentre sur la manière dont le gameplay du jeu est présentée au joueur et comment l'aspect technique soutient ce gameplay.

lundi, janvier 25 2010

Et meilleurs voeux pour 2010!

Opera de Valencia

Mesdames et Messieurs, je vous souhaite une bonne année 2010!

2009 a été pour la moi la fin d'un cycle, d'un grand cycle: c'était la fin de mes études! 2010 sera un repère facile à me rappeler du début de ma vraie vie d'adulte. Tout est à faire et tout et permis: je suis célibataire, j'ai pas de prêt à rembourser, je peux aller où je veux! Mais j'ai aussi tout à prouver, et d'abord à moi-même.

Vous remarquerez que depuis le début de ce billet je parle en français. C'est une de mes résolutions 2010: basculer "Coders are human beings too" en français. Oui ça faisait classe de parler en anglais, oui ça me permettais d'avoir un lectorat plus large... Mais dans les faits, je n'ai que 9 abonnés à mon flux RSS et tous sont français. Google Analytics me le dit, en 2009, j'ai eu 900 visiteurs américains contre 600 français. Sauf que les américains tombent sur le site "par hasard" et repartent en moins de 20 secondes en moyenne, alors que les français restent en moyenne au moins 3 minutes. Il est donc logique que je change la langue d'écriture pour le français.

C'est un choix valide pour plein d'autres raisons:

  • une partie des français qui voulaient me lire ne sont pas à l'aise avec l'anglais
  • il ne faut pas se leurrer, je n'ai pas encore les moyens de prétendre me faire embaucher à l'étranger
  • écrire en anglais me demande des efforts supplémentaires et je me suis souvent retenu d'écrire
  • peu importe la langue, il faut du contenu!!

Tout ça m'amène à une autre résolution 2010 un peu multiplpe: rendre le blog plus attractif, raconter des choses intéressantes, faire des vidéos, coder plus et partager avec vous, etc. Objectif pour janvier 2011, avoir 100 abonnés au flux RSS. C'est pas énorme non plus, mais ça représente une croissance ENORME par rapport à 2008-2009.

A bientôt donc!

Sur la photo: l'opéra de Valence (photo de Guillaume Bauchu)

jeudi, décembre 17 2009

ModDB introduces Desura

Desura

This is big news: ModDB is launching a new service called Desura. Think distribution service (like Steam), except that it will also support mods and custom content and that it will be all community oriented. By community oriented, I mean that for each game / mod, community members can add their comments, reviews, screenshots, etc.

What appeals me the most in the project is the support of mods. Finding, installing and patching a mod is such a hassle, I was thinking of doing a Steam-like app just to support HL2 mods, but ModDB is doing it for just any game. Awesome.

Here's an extract from the FAQ:

Q: Is the idea that Desura will provide an easy way for people to automatically download/install mods for any game they own (possibly excepting games purchased through Steam and the like)? So essentially you just click "Gimmie that mod!" and it downloads, installs, and then patches?
A: Exactly like this

This could be really good! For the moment, the product is in private beta. More when it goes publically live.

War has been declared! (in TF2)

TF2 Soldier Vs Demoman War

War is raging there. And also, TF2 will be available for free the time of a weekend this very weekend, just as the soldier vs demo update is released. I highly recommend that you try it (you can preload the game there).

jeudi, décembre 3 2009

Unit tests with Boost.Test

I've just started using Boost.Test to get to know unit testing a bit better. I use it to try a Fixed Point number class that I made. For those who wonder what a fixed point number is, in short, it's a float in an integer. This is useful when your hardware doesn't have a FPU, like the Nintendo DS. But this is not my point, I'll discuss that in a proper blog post. This is about a problem I had when I tried to compile my unit test program on Linux.

Installing the Boost library on an Ubuntu system is really easy. It's just a sudo apt-get install libboost-dev or a click on this link (note: this link uses the apt protocole that only works on supporting systems, such as Debian and derivatives). On Windows, I preferred to recompile the library than to download the installer because it required me to fill a form for a company I didn't know and don't care about. This was actually not hard: Boost has it's own build system capable of... building itself! Yes! The builder first builds itself and then builds the library.

Compilation is actually not necessary. At least not for all the modules of Boost. In the case that interest me, Boost.Test can work either with headers only or with a runtime version. I still don't know what's in the runtime that you can't find in the headers, but I'll figure this out another time. Trying the Unit Test Framework was a breeze. Here's an extract:

#include "FixedPointMath.hpp"
 
#define BOOST_TEST_MAIN
#include <boost/test/unit_test.hpp>
 

BOOST_AUTO_TEST_CASE( Constructors )
{
    FP12 a(12);
    FP12 b(23);
    FP12 c;
    FP12 d( b );
    FP12 e( 3.4f );
    FP12 f = FP12(42) / FP12(6);
    FP12 ff = FP12(45) / FP12(6);

 
    BOOST_CHECK_EQUAL( a.toInt(), 12 );
    BOOST_CHECK_EQUAL( b.toInt(), 23 );
    BOOST_CHECK_EQUAL( c.toInt(), 0 );
    BOOST_CHECK_EQUAL( d.toInt(), 23 );
    BOOST_CHECK_EQUAL( e.toInt(), 3 );
    BOOST_CHECK_EQUAL( f.toInt(), 7 );
    BOOST_CHECK_EQUAL( ff.toInt(), 7 );

}

And this is all you have to do. The macro BOOST_TEST_MAIN takes care of initializing a main entry point for you and BOOST_AUTO_TEST_CASE creates a test case and a default test suite without any work from you. You just specify the name of the test case. Is the case where all the tests are ok, the output looks like this:

Running 1 test case...

*** No errors detected

Introducing an error on purpose gives you this;

Running 1 test case...
UnitTestFixedPoint.cpp(34): error in "Constructors": check ff.toInt() == 8 failed [7 != 8]

*** 1 failure detected in test suite "Master Test Suite"

You can then move on to more complicated tests. Anyway, this piece of code doesn't compile on Linux. You can't just do g++ UnitTestFixedPoint.cpp -o UnitTestFixedPoint because, obviously, you need to link against the Unit Test Framework and you have to tell GCC which library to pick. Automagically, there's nothing to do in Visual Studio and Boost.Test knows how to tell it what the right library is. Fine. Do:

g++ UnitTestFixedPoint.cpp \
   -o UnitTestFixedPoint \
   -lboost_unit_test_framework

>Undefined reference to `main'

Oh come on! Now what? Some research on the internet bring the following result:

For your program to successfully link with the dynamic library the flag BOOST_TEST_DYN_LINK needs to be defined both during dynamic library build and during your program compilation.

Why didn't you say so? Ok, now with some patching for the 'Nux version only, this works much better:

#define BOOST_TEST_MAIN
 
#if !defined( WIN32 )
    #define BOOST_TEST_DYN_LINK
#endif
 
#include <boost/test/unit_test.hpp>

More on that when I'm satisfiyed with my tests!

lundi, novembre 30 2009

Still very good sales on Steam

Yep, still good sales there.

  • Mirror's Edge at 3.74€
  • Monkey Island Special Edition at 2.24€
  • The Chronicles of Riddick, Assault on Dark Arena at 9.99€

I recommend Mirror's Edge if you've never played it.

jeudi, novembre 26 2009

Steam Season Sales

The season sales started on Steam. It the right occasion to get some good games at a cheap price for example, today, Grid is at 5€. The offers change every day, so check it regularily.

Steam Early Sales Page.

- page 1 de 4