J-Mad

Jan 102010
 

Cela fait quelques temps que je n’avais pas fait de billet ‘théorique’ sur les mécanismes du jeu vidéo. L’actualité (on va dire ça comme ça) me donne l’occasion d’en faire un, non pas directement sur un mécanisme bien précis des jeux vidéos mais sur une appropriation par les éditeurs de logiciel non jeux vidéos (je n’allais quand même pas dire sérieux) de ces mécanismes.

1- Succès et titres, mais c’est quoi ça ?

1.1 Les succès

En anglais on les appelle achievement, en français vous les trouverez sous le nom de succès ou d’accomplissement. Le principe est très simple. Pour gagner un succès, il faut le débloquer. Pour le débloquer, il faut faire quelque chose ou N fois quelque chose (tuer 45 sangliers pour avoir le succès Boucher, se balader complètement nu pendant 10 heures de jeu pour avoir le succès naturiste). Suivant les jeux vous saurez ou vous ne saurez pas quoi faire. Savoir quoi faire simplifie les choses, vous n’aurez alors plus qu’à faire la chose en question. Ne pas savoir quoi faire rajoute un peu de piment à la chose, parce que vous allez devoir découvrir comment avoir le succès. Et quand vous l’aurez vu, vous croiserez les doigts pour rester le plus longtemps possible le seul à avoir ce succès là. Il existe également des succès ‘qui se moquent de vous’, comme le succès maladroit, par exemple, que l’on pouvait gagner dans un MMORPG après être mort souvent. Ou le succès lâche lorsque l’on s’enfuit trop de fois d’un combat.

Dans tous les cas, vous l’aurez compris, le mécanisme de succès a un seul but: vous faire jouer plus longtemps sans que vous vous ennuyez. En faisant appel à deux sentiments très courants chez les joueurs : l’ego et la fièvre du collectionneur.

L’ego, parce que oui, tout de même, vous ne pouvez pas être le seul de votre guilde a ne pas avoir ce succès là. Tant pis si vous devez chasser 3458 araignées géantes des abysses, tant pis si cela vous prend 34 heures, mais vous l’aurez ce succès et vous pourrez alors le clamer haut et fort et ainsi maximiser votre vie sociale comme jamais.
La fièvre du collectionneur, parce qu’il vous les faut les 532 succès du jeu. Il vous les faut tous, absolument. Ce n’est pas possible de contempler votre feuille de profil avec tous ses emplacements manquants. Non, vous les aurez tous.

Et puis les succès ont un avantage, c’est du contenu ludique facile à mettre en place et à ajouter (à propos des succès, un bon article qui en parle sur New Game +).

1.2 Les titres

Les titres, en fait c’est presque comme les succès. Sauf qu’en plus de pouvoir les gagner en faisant des choses, on peut aussi parfois les acheter, quand le jeu intègre une dimension économique.

Succès et titres ont toutefois des différences importantes :

  • Les titres sont souvent ‘uniques’. Imaginons que nous soyons dans un jeu médiéval fantastique où les titres de noblesse existeraient, il ne pourrait y avoir qu’un seul baron de la contrée des quatre collines ;
  • Vous pouvez les perdre. Si le titre correspond par exemple à une performance. Si un autre joueur fait mieux que vous, c’est lui qui gagne le titre (on se retrouve là avec la notion de champion de…) ;
  • Un titre peut être ‘anonyme’. Ce peut être un simple classement et le numéro un sera le meilleur, le champion donc.

2- Bon ok, et maintenant ?

Maintenant, je vais en venir au sujet de mon billet. A savoir, le fait que ces deux mécanismes commencent à être intégré dans des applications autre que les jeux vidéos. Un exemple, que j’ai découvert très récemment, c’est Foursquare. Foursquare est un réseau social tout neuf qui vous fait découvrir des endroits où vous pourriez aller (restos, bars, théâtres, discothèques…). A chaque fois que vous allez dans un lieu, vous gagnez un checkin dans ce lieu. Dès que vous avez un checkin dans un lieu, vous pouvez lire les avis laisser par les autres utilisateurs.

J’en avais entendu parlé mais cela n’avait pas plus piqué ma curiosité que ça. Jusqu’à ce que je reçoive un tweet, de @xpoxpo qui disait : “‘I just unlocked the “Newbie” badge on @foursquare! http://4sq.com/5SfMFD”. Étrange me suis-je alors dit… Qu’est-ce que c’est que ce truc de badge. Et je suis donc aller voir (j’ai même fini par créer un compte pour tester). En fait les badges c’est des succès. Vous avez le badge newbie (un passage dans un endroit), aventurer (10 passages dans 10 lieux différents), local (3 passages dans le même lieu), etc. Mais ce n’est pas tout. Il y a mieux. Il y a même la gestion des titres. Enfin, d’un titre pour être précis. Celui de maire (mayor) d’un lieu. L’utilisateur qui a le plus de checkin dans un lieu devient alors maire de ce lieu. Mais attention, dès qu’un autre utilisateur a plus de checkin que lui, hop c’est ce nouvel utilisateur qui devient maire de ce lieu.

3- Et l’intérêt de tout ça ?

3.1 Pour l’utilisateur

L’utilisateur lui permet de rajouter un peu de fun dans son expérience utilisateur. Il n’utilise plus simplement un logiciel, il joue en même temps, il s’amuse et il peut se mesurer aux autres utilisateurs, chose qui en ces temps de ‘web social’ et de ‘mesurage de qui a la plus grosse de toutes les manières possibles’ intéressent au plus au point les gens.

3.2 Pour les éditeurs

Là, les bénéfices sont les mêmes que dans le jeu vidéo. Les utilisateurs deviendront bien plus rapidement addict à un service si le service leur procure, en plus de ce pourquoi il est là, du fun. Et puis n’oublions pas les deux leviers sur lequel s’appuient le mécanisme des succès. Ego et esprit de collectionneur. Si je reprends l’exemple de Foursquare, le fait de savoir qu’il y a des badges à collectionner va créer une barrière à la sortie. Et le titre de maire, plus encore. Comment va réagir l’utilisateur lambda s’il se rend compte qu’il s’est fait ‘voler’ son titre de maire ? Il va foncer dans le lieu en question et faire en sorte de redevenir maire.

3.3 Mais encore…

Foursquare a d’ailleurs bien compris l’intérêt du titre maire. Et semble avoir réussit à le faire bien comprendre à certains des gestionnaires des lieux dans lesquels les utilisateurs vont. Pourquoi dis-je cela ? Parce que si vous allez sur cette page, vous aurez la liste des lieux qui offrent des réductions ou des verres gratuits au maire. De quoi rendre la bataille pour le titre de maire encore plus intéressante…

4- Mais dis moi, ce billet, c’est pas un billet sponsorisé pour Foursquare ?

Non, mais il se trouve que l’idée du billet étant venu en découvrant ledit service, il était donc facile pour moi de l’utiliser comme exemple. Un autre exemple de l’intégration des accomplissements dans une application non jeu vidéo que je pourrais citer (et d’ailleurs je le fais) c’est le Nokia Image Space. Pour plus d’infos sur cette intégration, il faut aller voir le pdf appelé ‘Applying Game Achievement Systems to Enhance User Experience in a Photo Sharing Service’ que vous pourrez récupérer sur cette page.

Pour finir, je rajouterais que cette démarche (utiliser les mécanismes des jeux vidéos dans des applications autres) me semble normale et va aller en s’accélérant. Et cela pour deux raisons :

  • Je pense que le principe du ‘c’est une application sérieuse, elle n’a pas besoin d’être jolie ou agréable à utiliser’ a vécu. Que de plus en plus, les applications, même de gestion, vont avoir tendance à s’embellir et à rendre leur utilisation plaisante. Et être plaisant à l’utilisation, ça, c’est un truc que savent faire les jeux vidéos ;
  • Les jeux ont le même problème que les applications web-sociales d’aujourd’hui. Faire en sorte que les utilisateurs les utilisent le plus longtemps possible. Par tous les moyens. Et les jeux étant plus vieux que les applications web d’aujourd’hui, il est normal que les secondes aillent piquer des idées éprouvées aux premiers.

(Sinon, pour la franche rigolade de fin de billet, en faisant quelques recherches sur le sujet, je suis tombé sur la description d’un vieux brevet logiciel américain qui ‘protège’ le fait de mettre en place un mécanisme d’accomplissement… Youpi… Regardez qui l’a déposé, le brevet).

Jan 092010
 

Je sais, je suis impardonnable, je n’ai pas fait de billet sur la django-application de décembre. Vous pourriez même rajouter que je le suis encore plus parce que décembre c’est le mois des vacances de Noël et que qui dit vacances dit temps pour écrire un billet.

Oui, mais non. Parce que faut pas croire, ça prend du temps tout ces repas de fêtes. Plein de temps. Sans compter le temps que l’on passe à arpenter les magasins (IRL ou sur le net d’ailleurs) pour trouver des cadeaux. Et sans parler du fait que comme décembre est un mois de vacances, pendant les jours de non-vacances, faut bosser encore plus pour essayer de faire autant que pendant un mois normal, mais en moins de jours.

Autant dire que non, je n’ai pas eu le temps pour la django-app du mois.

Et que vu mon emploi du temps en janvier, ça va être tendu pour le billet de celle de janvier. Mais, mais, dans ma grande mansuétude, j’ai décidé de faire un billet de django app du mois de décembre, en retard.

Et pour une fois, je ne parlerais pas de django-app, mais de middleware. Mais oui, les middleware django, vous savez, ce mécanisme génial qui permet de pluger de petit bout de code à différents niveaux de traitement des requêtes. Ce qui permet de modifier plus ou moins profondément le comportement de django au niveau de la gestion de ses entrées / sorties.

Ca permet de faire plein de trucs, et plus encore.

Aujourd’hui je parlerais de deux d’entre eux, un que j’utilise très souvent et un autre que je vais utiliser sous peu..

1- Loguer les requêtes SQL que fait django

from django.db import connection
from django.template import Template, Context
from django.conf import settings

#
# Log all SQL statements direct to the console (when running in DEBUG)
# Intended for use with the django development server.
#

class SQLLogToConsoleMiddleware:
    def process_response(self, request, response):
        if settings.DEBUG and connection.queries:
            time = sum([float(q['time']) for q in connection.queries])        
            t = Template("{{count}} quer{{count|pluralize:"y,ies"}} in {{time}} seconds:\n\n{% for sql in sqllog %}[{{forloop.counter}}] {{sql.time}}s: {{sql.sql|safe}}{% if not forloop.last %}\n\n{% endif %}{% endfor %}")
            print t.render(Context({'sqllog':connection.queries,'count':len(connection.queries),'time':time}))                
        return response

J’ai trouvé ce tout petit middleware sur djangosnippets. Il se contente d’afficher la liste de toutes les requêtes SQL faites par django, en donnant le temps pris par leur execution.

C’est bien utile pour vérifier que ces vues ne font pas de la merde et pour tenter d’optimiser en factorisant des choses.

2- Django-maintenancemode

Celui-là, je l’ai découvert au détour d’une conversation sur #django-fr. Carrément plus pratique que la bête page html qui dit ‘en maintenance’, utile à connaître et à avoir dans sa django-boîte à outil.

Jan 092010
 

Avant de commencer à te faire perdre ton temps, je tiens à te prévenir cher lecteur. Si tu as lu la release note de django 1.2 alpha 1, tu n’apprendras rien de plus en lisant ce petit billet.

Pourquoi alors l’écrire ?

Au cas où tu n’aurais pas encore lu la release note et que lire du français t’amuse plus que lire de l’anglais. Et puis comme ça, en plus, tu as le lien vers la release note.

1- Les trucs nouveaux

1.1- protection contre les attaques CSRF.

Les attaques CSRF (Cross-Site Request Foregery) sont rendus  possible par le partage des données de login/session entre les différents onglets d’un navigateur. Du coup, si vous êtes logués sur un site quelconque (prenons facebook comme exemple) et que vous allez sur le site d’un vilain méchant pirate, le vilain méchant pirate pourrait faire des actions sur Facebook, comme si c’était vous qui les faisiez. (Bon pour pouvoir faire cela, il faut que vous cliquiez sur un lien du site du vilain pirate, ou que vous soumettiez un formulaire ou que vous executiez du js).

Django implémente maintenant une façon cool de s’en protéger. (avant il existait un middleware pour le faire). Moralité, si Facebook était en django 1.2, les attaques CSRF ne seraient pas possible.

1.2- Backends des emails

On peut maintenant configurer la façon que django aura d’envoyer des emails. Sympa pour pouvoir debugger et tester les envois d’emails, ça évitera d’avoir à passer par des simulateurs de SMTP.

1.3- Le framework d’envoi de messages

Il remplacera l’ancienne API d’envoi de message et apparemment, il va être juste terrible. Les users authentifiés ou anonyme pourront en envoyer, on pourra les stocket en session ou en cookie, gérer des levels, des tags, que du bon quoi

1.4- Support des multiples bases de données

Alors ça, je l’attendais avec une impatience extrême. On pourra maintenant dire à django de se connecter à X bd différentes, choisir pour chaque requête bd sur quelle base on veut la faire ou où est ce que l’on veut sauver une instance de modèle. Que du bon quoi. Pour ne pas dire de la tuerie

1.5- Un tag if coolos

Là on peut résumer en une phrase : ‘Fini le ifnotequal a b et vive le if a != b’.

Les opérateurs de comparaisons sont enfin supporté. On pourra donc utiliser :

  • ==
  • !=
  • <
  • >
  • <=
  • >=
  • in
  • et and or et not (qui fonctionnaient déjà).

Et en plus, on pourra utiliser des filtres en même temps. Avec un {% if  inst1.var1|bla == inst2.var2|tut %}

Le pied je vous dis.

1.6- Gestion du cache des templates

On pourra configurer un truc de gestion de cache des templates. Et ça, c’est bien.

1.7- Clés en BD

On peut maintenant utiliser les naturals keys dans les fixtures (j’ai pas trouvé de traduction française qui me convenait). Ce qui peut-être bien sympa quand par exemple on a des fixtures qui bossent avec des content types (au hasard hein )

Et on peut maintenant utiliser des int de 64 bits avec le BigIntegerField .

1.8- En vrac

  • une commande en plus sur le runtest qui permet de faire sortir le lanceur de test dés qu’il y a une erreur.
  • Une amélioration de la localisation pour les dates et les nombres qui seront affichés (si l’option est activée) de la façon qui va bien en fonction de la locale.
  • L’ajout de la  propriété readonly_fields pour les champs non éditable (enfin)
  • la possibilité de customiser les couleurs pour les highlight dans la parti admin.

2- Les trucs  obsolètes ou incompatibles

Bon alors déjà, une nouvelle qui va faire que tout le monde va respirer, dans le 1.2 les trucs obsolètes seront encore supportés. Le support n’en sera supprimé que dans la version 1.4.  Ça laisse donc un peu de temps pour organiser ses migrations.

2.1- Le middleware CSRF

Forcément si la protection anti CSRF est refait d’une manière mieux, l’ancienne manière devient obsolète.

2.2- SMTPConnection

Ceux qui utilisaient la classe SMTPConnection pour envoyer des mails devront changer leur code. Heureusement les modifs sont légère (il suffit apparemment de remplacer l’appel au constructeur de la classe par un appel a get_connection () )

2.3- La configuration de la base de données

Forcément ça change. Faudra passer dans la syntaxe multidb, même si on a qu’une seule db.

2.4- L’API d’envoi de message.

Là encore, faut passer à la nouvelle version. Mais ça n’a pas l’air super compliqué. Du replace de nom de fonction et ça devrait le faire.

2.5- Les helpers de formatage de date.

Les fonctions django.utils.translation.get_date_formats() et django.utils.translation.get_partial_date_formats() sont obsolètes et il faudra les remplacer par django.utils.formats.get_format()

2.6- En vrac

  • Du fait des nouvelles fonctionnalités du if, appeler des variable ‘and’, ‘or’ ou ‘not’ est encore moins une bonne idée, vu que vous allez vous manger des TemplateSyntaxError. Bon de toute façon, c’était déjà une très très mauvaise idée d’appeler des variables ‘and’, ‘or’ ou ‘not’, donc …
  • Le LazyObject. Ceux qui utilisaient cette classe non documentée vont devoir modifier leur façon de l’utiliser.
  • Modification de ce que contient le __dict__ dans les instances de Model : Jusqu’à présent le __dict__ ne contenait que les attributs qui correspondaient au champ du modèle. Maintenant il contient un attribut _state qui sert à gérer les db multiple. Ceux qui itere sur le __dict__ de Model devront faire attention à filtrer le _state
  • les fonction get_db_prep_* des Fields ont changé de signature (et il y en a 2 de plus get_db_prep_save et get_prep_lookup )
  • du fait de l’utilisation du cache loader, il faut bien vérifier que les templates tags utilisés sont bien thread-safe (je sais pas pourquoi je sens que ce point là va être le point de départ de dizaines de touffes de cheveux de geeks arrachées).
  • Code de retour du lanceur de test : Le code de retour du lanceur de test ne correspond plus au nombre de test raté. C’est maintenant 0 si aucun test n’a merdé, 1 si il y a eu des merdes.

3- Conclusion

Que du bon dans cette nouvelle version donc. Et en plus pas spécialement beaucoup de modifications à faire pour profiter des nouvelles améliorations. Vivement le 9 mars que la stable sorte quoi. 🙂

Jan 072010
 

Un chef d’entreprise se doit de gérer (ou piloter) son entreprise. Jusque là, on est tous d’accord. Mais pour arriver à faire cela, il lui faut des infos, des données, des choses sur lesquelles s’appuyer pour prendre des décisions. C’est ou ça ou se faire tirer les cartes pour décider quoi faire. Alors je sais qu’à différentes époques, les plus hautes instances ont pu faire confiance aux cartes, aux étoiles ou à d’autres systèmes pas vraiment cartésiens de prise de décisions.

Mais imaginons que notre gentil entrepreneur décide de ne pas s’en remettre à ce qui ressemble à du hasard. Non, il prendra des décisions réfléchies, qui s’appuie sur du concret.

Mais comment faire pour avoir ces données concrètes ? C’est tout simple. Il faut prendre les données que l’on a sous la main et les hiérarchiser, les traiter, les synthétiser et au final s’en servir pour calculer des indicateurs qui se mettront à jour, dans le meilleur des cas, automatiquement. Ce qui nous donnera des tableaux de bords qui nous permettront :

  • d’avoir une vision globale , d’un seul coup d’œil de la santé de sa société,
  • de prendre des décisions,
  • de voir les résultats des décisions prises.

On peut (que dis-je, on doit) bien entendu avoir des tableaux de bords pour tous les domaines où l’on a besoin de visibilité. Dans le domaine commercial, cela peut être pour mesurer une action ou les performances commerciales, pour voir les dérapages sur les projets, etc. Dans ce billet, quand je donnerais des exemples, je resterais sur des indicateurs de gestion d’entreprise. Si le sujet des indicateurs de pilotage vous intéresse mes chers lecteurs, je ferais d’autres billets (promis).

1- Où prendre les données et quoi en faire

J’aurais envie de dire “là où elles sont”.
En fait, ça dépend, là encore, du pourquoi de vos indicateurs. Pour des indicateurs de pilotage d’entreprise vous pouvez par exemple prendre votre pile de factures, vos liasses de bons de commandes et vos classeurs de devis, ainsi que tous vos calculs prévisionnels des charges de votre entreprise.

Ensuite, une fois que vous avez toutes vos données, il faut les consolider, en faire un tout qui ait du sens. Par exemple, à partir de calculs de vos charges de l’année d’avant, vous pouvez mettre en place un calcul de vos charges prévisionnelles de l’année prochaine (ou en cours) que vous ventilerez par mois. Ça vous donnera en même temps votre point mort prévisionnel.

De même, votre pile de factures vous permettra d’avoir votre CA fait, vos bons de commandes validés, votre CA à venir ainsi que vos devis et votre portefeuille futur.

Vous pouvez aussi du coup, rapprocher le CA mensuel ensuite (ainsi que le CA prévisionnel) pour voir quels sont vos bons ou vos mauvais mois.

2- Less is more (merci monsieur Mies)

Une fois que vous avez toutes vos données bien rassemblées ensemble, avec plein de tableaux, de calculs, de totaux, etc., il faut sélectionner vos indicateurs.

Pour cela, il n’y a qu’une règle. Il vous en faut peu. Et qu’ils soient vraiment percutant.

Pourquoi peu ? Parce qu’il faut que, chaque matin, vous puissiez en un coup d’œil, voir tout ce qu’il y à voir. Savoir là ou ça va et où ça ne va pas.

Vous aurez toujours le temps après d’aller voir plus loin dans les données brutes ou dans les dizaines de calculs intermédiaires que vous avez fait, l’explication du pourquoi du comment de la valeur de votre indicateur.

Si je prends mon cas comme exemple, j’ai en ce qui concerne la partie “gestion financière”, quatre indicateurs principaux :

  • la visibilité au niveau trésorerie en nombre de mois qui correspond au nombre de mois pendant lesquels on peut payer les charges,
  • le nombre de jour/hommes qu’il faut que l’on facture encore à notre taux journalier moyen pour atteindre le point mort,
  • le total de tout ce qui a été facturé mais non encore encaissé,
  • la valeur du portefeuille client possible (la somme des devis pondérés à chaque fois par la probabilité d’avoir le contrat).

Pour les deux premiers indicateurs, je les calcule de deux façons différentes :

  • avec les montants facturés (même si non encaissés),
  • avec les montants facturés et qui seront facturés (on bosse souvent sur de longs projets qui durent plusieurs mois, avec des facturations multiples en cours de projet, il est donc intéressant d’avoir cette vision de ce qui est signé mais pas encore facturé).

J’ai bien entendu des indicateurs secondaires comme :

  • le chiffre d’affaires déjà effectué,
  • le total des charges prévisionnelles de l’année (que je recalcule en fonction des charges réelles des mois passés),
  • les indicateurs de gestion de fonds de roulement.

Pourquoi avoir les indicateurs de besoins en fonds de roulement en indicateurs ‘secondaires’ ? Parce qu’on a un besoin en fonds de roulement assez faible et très stable. Et qu’au vu de l’historique de la société, on a mis les moyens pour se prémunir, en tout cas pour l’instant, de problèmes de BFR.

Au final, j’ai donc seulement quatre indicateurs qui me font six valeurs. Facile à regarder, rapide à comprendre. Et je n’ai pas besoin de plus pour voir la situation globale.

3- Tips

Bon, allez, je vais vous faire part de ma grande sagesse (…) et finir ce billet par quelques petits conseils.

3.1 De la couleur

Pensez à colorer vos indicateurs. C’est bien plus parlant qu’une valeur numérique. Deux exemples.
Mon indicateur de visibilité peut avoir trois couleurs :

  • vert quand la visibilité est supérieure à 6 mois,
  • orange entre 3 et 6,
  • rouge en-dessous.

Idem le nombre de jours à  facturer qui peut être rouge ou vert. Il est vert quand les jours à facturer sont en phase avec le temps restant, en rouge sinon (expliqué simplement, cela veut dire que s’il nous reste 70 % du CA point mort à faire, donc 70 % des jours à facturer alors qu’on est en novembre, l’indicateur sera rouge. Si par contre on a déjà fait 80 % du CA point mort, et qu’il donc reste que 20 % de CA à faire alors qu’on est en mai, le nombre de jours restants à facturer sera vert).

3.2 Les mises à jour

Vous allez mettre vos données à jour assez souvent. A chaque devis, chaque modification du calcul des charges, chaque facture. Pensez donc à construire dès le début une structure qui puisse se mettre à jour simplement et dont les maj se propagent. Ajouter 1 000 € par mois dans les charges prévisionnelles doit permettre de tout recalculer, CA point mort, visibilité, etc.

4- Conclusion

Je suis sûr que je ne vous ai rien appris en vous disant qu’il fallait définir des indicateurs pour pouvoir piloter son entreprise.

Mais je voudrais vraiment insister sur deux points. Il est vraiment important d’être capable d’avoir peu d’indicateurs. 3, 4 , 6 maxi. Pour avoir eu beaucoup de mal avec ce point là, je sais que ça peut être difficile. Avoir 20 indicateurs, ça peut rassurer. Mais au final, vous vous en rendrez compte, c’est bien moins productifs que 4, 5 ou 6.

Il y a autant de tableaux de bord que d’entreprises. Vos indicateurs, ça doit être les vôtres. Ceux qui vous seront vraiment utile. Alors posez vous, réfléchissez et définissez ceux qui seront les plus pertinents pour votre activité.

Et puis quel bonheur ensuite, de voir ces jolis petits indicateurs, qui nous indique en un clin d’oeil, comment vont les choses.

Jan 052010
 
Ayant offert à mon frère le tout nouveau (en tout cas en VF, vu qu’il est sorti en novembre) jeu de plateau MUNCHKIN QUEST à Noël, j’ai eu l’occasion de le tester dans une longue partie débridée (que j’ai fini, bien entendu, par gagner malgré le fait que tous les autres se soient ligués contre moi dès qu’ils leur aient apparu que j’étais le plus fort…  Les vils).

Et qui dit test, dit petit billet pour en parler. J’avais prévu de commencer par un billet sur la version deux joueurs des Colons de Catane (qui se transforme pour l’occasion en jeu de cartes), ça sera pour une prochaine fois.

MUNCHKIN Quest est donc l’adaptation 3D et en mode plateau du jeu de cartes du même nom. On y retrouve donc l’humour potache, les blagues débiles, les monstres ridicules (comme le monstre nez flottant ou encore mieux l’ombre du nez flottant) et les cartes à la description totalement déjantée. C’est d’ailleurs une partie importante du fun du jeu, s’amuser à lire la description des cartes ou à regarder les dessins des monstres (bon faut avoir le sens de l’humour Munchkin, moi ça me fait beaucoup rire).
Les règles sont en fait assez simples, surtout si l’on connait le jeu de carte. Le but est d’arriver le plus rapidement possible à être niveau 10 (niveau que vous comptabiliserez sur la roue des niveaux).

Pour cela il convient d’explorer un donjon qui se construit aléatoirement et d’occire tous les monstres que l’on croisera. Le donjon se construit petit à petit grâce à des tuiles (représentant de salles) qui sont piochés aléatoirement par les joueurs. Les salles sont séparées par des couloirs, portes, passages secrets qui là aussi sont agencés aléatoirement. Chaque salles ont des caractéristiques bien précises, comme les salles marché où l’on peut vendre et acheter son équipement, mais aussi la salle fosse puante, la salle de torture ou au trésor, etc.

Pour tuer un monstre, rien de plus simple. Si le niveau du Munchkin est plus élevé que celui du monstre, le monstre est mort. Pour augmenter son niveau, on peut utiliser de l’équipement (armes, armure, collier, casque, chaussures, main en plus pour pouvoir utiliser encore plus d’armes). Et pour ajouter un peu de piment le joueur et le monstre lance un ou plusieurs D6 qui s’ajouteront à leur niveau respectif. Et comme Munchkin est un jeu hautement coopératif, les autres joueurs pourront vous aider à rendre votre combat plus palpitant… Après tout, se battre contre une pinacolata niveau 2, ça serait trop facile et hop elle passe niveau 12 grâce à l’intervention d’un joueur…

Remporter un combat contre un monstre vous ferra gagner des niveaux mais aussi des trésors. Trésors qui vous permettront de vous équiper ou d’augmenter votre argent de poche.

Comme dans le jeu de cartes, on peut également choisir une race et une classe, si on a les bonne cartes qui vont bien (la classe voleur qui permet de poignarder un autre joueur dans le dos pendant un combat, j’adore). Il y a cependant quelques différences comparé au jeu de cartes.

Tout d’abord, alors que dans le jeu de cartes on peut jouer à N joueurs, on sera ici limité à 4 joueurs. Quelques autres points de règles ont également changé. Les Munchkins ne peuvent s’aider que lorsqu’ils sont dans des salles adjacentes (ou dans la même salle) .
Enfin, les monstres ne sont plus défaussés lorsque l’on déguerpit. C’est d’ailleurs un des points importants du jeu et stratégiques. Les monstres que l’on ne tue pas restent dans le donjon et errent de pièces en pièces, se regroupant parfois en meute. Gare alors au Munckin qui croisera une meute de monstres aux abois…

Au final Munchkin Quest est un excellent jeu de plateau, si vous êtes rolistes ou geek et que vous avez le sens de l’humour. Pour les autres, vous vous ennuierez assez vite surtout que les parties sont plutôt longues (comptez plus 4 h que 2/3 h comme c’est indiqué sur la boite) et que la mécanique du jeu, assez simpliste, pourrait paraître répétitive.

Dec 292009
 

Ce billet a bien failli ne jamais être écrit. Et pourtant, jamais aucun de mes billets n’a failli être écrit aussi souvent.

Je m’explique.

J’ai une caractéristique assez spéciale, j’adore regarder des navets. Que ce soit série ou film, j’adore ça. Mais quand je dis navet, c’est le vrai navet, pas juste le film pourri sans saveur. Non, le navet de classe internationale, par exemple la saison 4 de Prison Break (et les deux épisodes longs finaux) sont trop mauvais pour être de vrais navets, mais bon, j’ai tout regardé tout de même. C’est un vrai plaisir pour moi.

Et donc forcément, je n’ai pu m’empêcher de regarder toute la saison 1 et toute la saison 2 de Knight Rider. Et comme mon plus grand plaisir (après celui de regarder un navet) est de partager après chaque épisode, le lendemain au boulot je me faisais un plaisir de raconter par le menu, l’épisode de la veille. J’en étais venu à discerner les recettes de base des scénaristes (d’ailleurs ça me revient peu à peu là). Je les ai tellement gonflés au boulot, qu’ils voulaient que je chronique chaque épisode, sur un blog monté exprès pour, histoire qu’ils ne soient pas les seuls à souffrir. Mais au final, ça ne s’est pas fait. Et l’idée fut oubliée.

Et puis quand j’ai vu la chronique de genma sur le film “Chasse à l’homme” de John Woo (avec Van Damne… une perle ce film, je l’ai vu au moins trois fois),  l’idée m’est revenue. Ce fourbe de genma a d’ailleurs RT mon tweet à ce sujet.

Mais là encore, au final, je n’ai pas pris ma plume et mon OpenOffice. Après tout, je ne les avais plus les épisodes, et puis mon blog est un blog ‘sérieux’ plutôt orienté boulot, création d’entreprise et logiciel libre, je ne pouvais pas me mettre à écrire des billets sur des séries et des films miteux non ?

Et puis au final, ce soir, voilà. Je me lance. Ça ne sera pas, comme je l’avais au départ dit, un billet par épisode de Knight Rider, mais un billet général pour parler de cette magnifique série. 🙂

Et tant pis si j’écorne la réputation de sérieux de cet espace, après tout, il faut bien savoir ne pas se prendre au sérieux.

1- La genèse

Au début, il n’y avait rien. Et puis il y eu David Hasselhoff, ses pantalons en cuir et la fondation Knight. K2000 fut une série phare des années 80 et je dois bien avouer que j’ai du passer de nombreux après-midi, de weeks-end, à regarder l’épisode de la semaine, verre de lait et BN à la main.  Mais tout cela, c’était les années 80… Les temps ont changé, les séries ont changé, Xena et Hercule ont eu le temps d’avoir leur heure de gloire respective.

Et puis, un jour (un vendredi je crois, ou peut-être un jeudi, mais sûrement pas un mardi), un scénariste d’Hollywood eut une idée géniale. Faire un revival de K2000 qui s’appellerait Knight Rider. Je vois d’ailleurs dans cet événement, la preuve qu’une fois encore lorsqu’une idée géniale doit apparaître, elle est ‘dans l’air’ et qu’elle peut jaillir dans plusieurs cerveaux à la fois. Parce qu’après Knight Rider, c’est au tour de V d’être ramené à la vie, et je suis sûr que bientôt on va avoir droit à MacGyver et WonderWoman.

Une fois l’idée eut, il fallait la réaliser… Mais avant cela il fallait étudier son marché.

2- Étude de cible et cahier des charges

Le gentil scénariste qui avait eu son idée géniale pris l’initiative d’aller voir de gentils producteurs. Les gentils producteurs furent, bien entendu, emballés par l’idée du gentil scénariste. Mais avant de lancer la mise en boîte des épisodes, ils voulurent être sûrs que la série marcherait (ce qui en fait veut dire qu’il y aurait plein de spectateurs qui regarderaient plein de spots publicitaires permettant aux gentils producteurs de gagner plein d’argent, parce qu’ils n’en ont pas tant que ça, de l’argent).

Ils étudièrent donc leur cible de spectateur. Et ils durent trouver que les principaux spectateurs de Knight Rider nouvelle formule serait de jeunes adultes de sexe masculin.

Les gentils producteurs cherchèrent alors dans leur grille de classement des spectateurs en fonction de leur centres d’intérêts et ils virent que les jeunes adultes de sexe masculin voulaient  :

  • des voitures qui vont vite et qui les ferraient rêver,
  • des effets spéciaux avec de gros boums souvent,
  • des filles à gros seins qui les ferraient rêver,
  • un héros bien musclé qui sortiraient toujours vainqueur de toutes les bagarres ce qui flatterait leur virilité de spectateur.

Histoire de tenter de séduire aussi quelques spectatrices filles, les gentils producteurs décidèrent de rajouter un peu de romance dans le cahier des charges du scénario.

Ils se rendirent compte aussi qu’il était impossible de garder David Hasselhoff comme héros principal. Trop gros, il ne rentrait plus dans la voiture. Trop vieux, il ne serait pas crédible dans une romance ou pire dans une bagarre…

Le cahier des charges devint donc :

  • avoir une belle voiture qui se transforme en plein de trucs,
  • trouver un jeune premier baraqué pas trop intelligent façon quaterback,
  • trouver des ressorts scénaristiques qui permettraient d’avoir des filles très courts vêtues partout,
  • mettre des effets spéciaux qui font boum,
  • rajouter un peu de romance, mais sans que cela bloque le héros dans sa course aux filles courts vêtues,
  • trouver des acteurs pas chers parce que les belles voitures et les filles courts vêtues ça coûte chers,
  • avoir des intrigues pas trop compliquées à mettre en œuvre pour la même raison financière que juste au-dessus.

3- Le résultat…

Le résultat, c’est l’un des plus beaux navets de l’histoire des séries télévisuelles.

3.1- Les acteurs

Là, le cahier des charges a été respecté, mais à la lettre. Les acteurs sont tellement mauvais que je me demande si ce n’était pas eux qui payaient pour avoir le droit de jouer. La palme du jeu le plus ridicule du monde allant au héros principal joué par Justin Bruening ainsi qu’au vieux physicien (le papa de la jolie fille amoureuse du héros) joué par Bruce Davison. Je n’ai vraiment pas pu les départager tellement ils sont… Enfin voilà quoi, même moi, je pense que je ferrais mieux.

3.2- Les belles voitures qui se transforment

L’ancienne Kitt n’avait qu’un mode de transformation, celle en mode ‘rapide’ quoi. Là, il fallait faire mieux. La nouvelle Kitt se transforme donc en voiture super rapide, bien entendu mais aussi en :

  • pickup,
  • sous-marin,
  • et le mieux du mieux : en utilitaire (dans l’un des épisodes les plus mauvais des deux saisons d’ailleurs de cette nouvelle version).

3.3- Les effets spéciaux qui font boum

Là aussi, objectif rempli à 100 %. Avec parfois un peu trop de ridicule tout de même.

L’un de mes préférés étant le coup de la roquette. Je m’explique. Un méchant méchant veut faire exploser Kitt et décide donc de lui tirer une roquette dans le buffet.  Mais heureusement notre super héros (qui s’appelle Mike Traceur d’ailleurs, au secours) a une super idée. Faire faire un dérapage avec plein de fumée à Kitt et ouvrir les fenêtres. La roquette rentre par la fenêtre avant passager et sort par la fenêtre avant conducteur, sans même décoiffer Mike. Et le méchant méchant, il est bien marrie…

Dans la catégorie effets spéciaux, je rajouterais aussi la super base super bien cachée. Parce que tout le monde le sait, il faut forcément une super base aux supers gentils. Bon je n’ai pas trop compris le concept de ‘cacher’ le sas d’entrée au fond d’un énorme entrepôt complètement vide, mais c’est parce que je ne suis pas un super gentil.

3.4- Des filles à gros seins partout et cela grâce à des scénarios crédibles

Là aussi, c’est un franc succès. Et en plus les scénaristes se sont creusés la tête pour trouver des moyens de rentre plausible ce déballage de peaux bronzées… Ben oui, ce n’est pas sa faute à Mike si les super méchants décident de se cacher dans un hot spot de surfeurs. Ou si le richissime trafiquant d’armes vit dans une maison qui ferrait rougir le manoir Playboy où se tient une fête perpétuelle. Sans parler du bar plein de jolies serveuses que le méchant veut absolument acheter pour y construire son complexe immobilier (ou exploiter un gisement de gaz qui se trouve juste en dessous du bar, je ne me souviens plus).

Que du ressort scénaristique de qualité internationale, je vous le dit.

3.5- De la romance et du suspense

Là aussi, les scénaristes ont fait très fort. Ils ont inventé quelque chose que l’on avait jamais vu avant. Mike Traceur, le super dur, super baraqué qui fait craquer toutes les filles en bikini en pince pour Sarah Graiman, la fille du vieux scientifique. C’est son premier amour de lycée. Et d’ailleurs, elle aussi craque pour lui. Mais comme il faut ménager le suspense, ils ne se le disent jamais. Ou alors que dans les situations extrêmes et que l’autre ne peux pas entendre. Quand Mike (le héros, je rappelle) meurt, par exemple. Non, ne vous inquiétez pas, il meure plusieurs fois Mike. Mais à chaque fois c’est pas pour de vrai. Sarah le sauve. Ca me rappelle d’ailleurs un autre super effet spécial. Dans un des épisodes, Mike est empoisonné. Pour qu’il soit sauvé, il faut lui trouver l’antidote. Mais les gentils ne trouvent pas. Finalement 30 secondes avant que Mike meure, on découvre qu’il faut que l’antidote soit fait à partir du sang de Sarah (pourquoi je ne m’en souviens plus), sauf que Mike agonise sur le bitume et que Sarah est près de lui. Qu’importe, Kitt a un laboratoire dans sa boite à gants. Sarah se ponctionne un tube de sang qu’elle met dans la boite à gants de Kit. 30 secondes après, la boite à gants s’ouvre et hop Sarah en sort une seringue qui contient l’antidote. Comment Kitt a récupéré le sang du tube à essaie fermé, à synthétisé l’antidote, puis l’a mis dans une seringue fermée… J’en suis encore comme deux ronds de flan.

3.6- De l’intrigue, mais pas trop compliquée, parce que ça coûte cher

Je viens déjà de parler du ressort dramatique qui consiste à faire souvent mourir le héros. Mais de la romance et du drame, ça ne suffit pas. Il faut aussi des méchants. Mais de petites carrures les méchants, sinon ça coûte cher à mettre en oeuvre. Le pire étant, à un moment un mec, qui a un entrepôt plein de bidules informatiques, engage un assassin pour tuer l’ingénieur concepteur des bidules en question pour pouvoir après spéculer et se faire des sous en revendant son stock. Y a pas à dire, ça c’est du méchant.

Pour rajouter encore un peu de rebondissement, les scénaristes ont bien entendu ajouter l’incontournable geek looser qui ne comprend rien à la vraie vie et aux filles. Ça permet de faire rire facilement le spectateur viril et puis on peut même l’utiliser parfois dans le mode ‘on a toujours besoin d’un plus looser que soi’…

4- Et en conclusion ?

Cette série est un pur moment de bonheur si on aime les navets. J’ai rarement vu une aussi belle réussite. C’est tellement bien fait que je pense que les producteurs, scénaristes, acteurs n’avaient pas conscience de faire de la merde. Ils devaient être à fond dans leur truc. Je me demande si un jour ils sortiront des DVD… Ça vaudra le coup de les acheter sur eBay pour pouvoir les regarder, un jour, avec mes enfants ou mes petits enfants.

Bon allez, je ne résiste pas au plaisir de vous rajouter le générique de la saison 1…

Dec 282009
 

J’avais calé mon changement de PC boulot avec les vacances de Noël, histoire de simplifier la migration et de ne pas nuire de trop à ma productivité (3 ans d’utilisation d’un PC, ça ne se migre malheureusement pas en un jour). Bien que la réception de mon PC fut assez rocambolesque je finis par le recevoir (directement sur le lieu de mes vacances au final) et pu me lancer dans l’installation de ce nouveau petit bijou (un très joli, si on aime le design ‘industriel’, lenovo W500).

Cette installation (d’une petite Ubuntu au final, pour des raisons de simplicité) fut l’occasion de tester différents services et comme j’étais un peu en panne d’idées concernant le sujet de ce billet, j’en profite pour vous les faire découvrir.

1- Les todo list faciles avec Remember The Milk

Je l’ai dit dans un précédent post, j’utilisais Gtodo pour avoir un ‘truc’ rapide de gestion de todolist. En commentaire, Tristan répondait que lui utilisait Remenber The Milk. L’ayant testé moi-même il y a quelques temps (plus d’un an), je n’avais pas été convaincu du tout. Ma curiosité fut piquée et je refis donc un test.

Et je dois avouer que le service avait bien changé. Différentes listes pour les todo, alertes mail/SMS, système de tags en plus des listes et surtout, le critère indispensable pour moi, une API et des clients lourds qui permettent de ne pas être obligé de passer par le site web (actuellement j’utilise Tasque qui même s’il n’est pas parfait, fait son boulot en attendant que je trouve mieux).

Une autre fonctionnalité sympa est celle qui permet d’envoyer des tâches à d’autres utilisateurs de Remember The Milk, je n’ai pas encore testé, mais ça peut être rigolo (surtout associé à un téléphone et une mise à jour en temps réel de ces listes de tâches, quelle joie ça doit être de voir apparaître des tâches à faire, envoyé par d’autre, sur son téléphone…).

J’ai donc migré mes todo Gtodo et en suis très heureux.

2- Dropbox

Oui, je sais. C’était une honte de ne pas avoir de compte Dropbox. Bouhhh honte à moi. Je m’autoflagelle avec des orties. Mais c’est un oubli maintenant réparé. Dropbox permet, tout le monde le sait, d’avoir un espace de stockage online (2 giga pour les comptes gratuits). Un peu comme un serveur ftp que l’on se déploierait tout seul me dirait vous. C’est effectivement le cas. L’avantage là, c’est que ce n’est pas vous qui gérez le FTP. 🙂

Sinon, le fonctionnement est très simple, en tout cas sous Linux. Un petit démon tourne et scrute un répertoire pour en détecter les modifications. Dès qu’un nouveau fichier est mis dans ledit répertoire ou qu’un fichier existant est modifié, hop le fichier en question est automatiquement synchronisé. On peut, de plus, déclarer des répertoires comme étant publics (par défaut il y en a d’ailleurs un, nommé, très logiquement Public, sous-répertoire du répertoire spécial Dropbox). Les fichiers étant stockés dans un répertoire public étant librement accessible par tous. Pour les autres on peut définir s”ils seront accessibles à certains users de dropbox ou à personne.

3- Xmind

Je l’ai twitté, j’utilise de plus en plus Xmind comme outil de mind-mapping, histoire de poser mes idées quelque part et de les laisser décanter un peu. Si je l’utilise de plus en plus, c’est que je l’utilise depuis longtemps, logiquement. Pourquoi donc en parler dans un billet qui parle des nouveaux services que je teste ? Parce que je n’avais encore jamais essayé la partie webservices de Xmind. Qui dans la version non payante de ceux-ci se limite à peu de choses, à savoir pouvoir uploader ses cartes sur le site et choisir si les utilisateurs peuvent ou non les télécharger (un petit exemple ici avec une carte de test).

4- Instapaper

J’ai découvert ce petit service iPhone/desktop il y a seulement quelques jours, grâce à Twitter. Le principe en est tout couillon, pouvoir de son navigateur ou de son iPhone, sauvegarder le fait que l’on veut lire une page web, plus tard. Disons que c’est un peu comme un répertoire de bookmarks synchronisé entre son iPhone et son(ses) PC(s). Il y a en plus, la possibilité (en bêta) de dl une page instapapée pour la lire en pdf, ou avec un kindle ou un ePub, mais ça je ne l’ai pas encore essayé.

5- Les trucs, pour tester comme ça, inutile ou presque

5.1- Twittercounter

Je ne suis pas vraiment un grand fan de stats sur mon activité twiterrienne. Mais j’avoue que j’ai été surpris par, par exemple, le nombre de tweets par jour que je poste (en moyenne 4 par jour, je ne pensais pas autant). Donc pour l’instant, hop, je teste.

5.2- The whuffie bank

The whuffie bank est une tentative de créer une énième monnaie, pour les échanges sur les réseaux sociaux et qui se base sur la réputation. L’initiative a été lancée lors de la conférence TechCrunch50 et bon, j’ai trouvé l’idée rigolote. Comme en plus, je me suis toujours intéressé, même de loin, au phénomène des monnaies alternatives ou complémentaire (tout est la faute des dragons-dollars de dragon magazine),  je teste là aussi, pour voir.

6- Et vous ?

Vous utilisez quoi comme petits services web soit vraiment indispensables, soit inutiles, donc là aussi indispensables ?

Vous être en train de tester quels nouveaux outils ?

Dec 222009
 

Non, non, je ne deviens pas fou.

Et oui mes titres de posts veulent dire quelque chose. En fait, ce billet est un simple billet de bon sens, inutile donc au final, parce que tout le monde sait ce que je vais écrire, mais bon, quand même, parfois c’est bon de dire des trucs inutiles.

Le principe de cette catégorie de billet est de lutter contre la procrastination. Par tout les moyens et dans toute les situations.

Et mon billet du jour lui, est un billet pour vous pousser à procrastiner. Et je l’écris dans un espace dédié à la chasse à la procrastination.

Et non, je ne suis toujours pas fou.

Et non, ce n’est pas juste pour dire que la procrastination c’est un bon moyen pour faire de la sérépendité, que au hasard de vos procrastinations, vous allez apprendre des trucs nouveaux, découvrir la vérité sur le monde et ainsi devenir plus intelligent et plus riche (et donc plus beau).

Non, ce billet se limite à une seule chose. Un appel à la procrastination. Mais à la procrastination contrôlée. Parce que parfois on a besoin de faire décompresser son cerveau et qu’il est bon de pouvoir le faire sans, juste après, culpabiliser atrocement.

Donc, je maintiens ce que je dis, il faut savoir se laisser des moments de procrastination pure. Des moments où l’on fait des petites taches inutiles mais qui permettent de se vider le cerveau, de se rassurer, de se dire ‘voilà ça c’est fait, et bien fait’ et de repartir, le cerveau plus aéré que jamais sur des tâches ‘importantes’.

Moi, par exemple, j’aime bien ranger mes mails ou les millions de post-its que j’ai sur mon bureau. Je range tout ça, bien parfaitement, sachant que (en tout cas pour les posts-its) même pas 4h après il y en aura de nouveau plein sur mon bureau,  que j’aurais jeté une bonne partie de ceux que j’avais rangé, et que ca sera de nouveau un vrai capharnaüm mes post-its.

Mais parfois, ca fait vraiment du bien, de perdre son temps en futilité.

Donc procrastiner, un peu, avec modération, à des moments bien définis et pour des durées bien précises, vous verrez que tout ira mieux.

Django : Dict’s Rivers, toi aussi devient fan.

 Django  Comments Off on Django : Dict’s Rivers, toi aussi devient fan.
Dec 202009
 

C’est benoitc qui en me parlant des dicts fournis par Django m’a fait découvrir les quelques classes bien utiles définis dans datastructures.py du module utils de django.

Ce sont donc, comme le titre de ce petit billet (plus mémo que billet) l’explicite bien des dicts.

1- Le MergeDict

On le construit en lui donnant plusieurs dict. Il en fait une espèce de gros dict virtuel qui contient tout les dicts. Si on tente une opération sur une clé (un has_key, un get ou un __get_item__ ) il la cherchera  dans tout les dicts. Par contre si elle est présente dans plusieurs dict, il utilisera la première occurrence qu’il trouve (pour le get par exemple).

Un dict qui peut être utile, surement.

2- Le MultiValueDict

Là encore, le nom parle de lui-même. C’est donc un dict qui permet d’avoir non pas une seule valeur, mais une liste de valeur par clé. En plus des fonctions classiques des dicts, elle offre donc getlist, setlist, setlistdefault et appendlist pour pouvoir interagir avec les instances de la classe.

3- Le DotExpandedDict

Ce Dict est un peu un OVNI. En fait la classe se contente de redéfinir un constructeur qui va vous permettre de construire des dicts qui contiennent eux mêmes des dicts et celant en passant en paramètres des chaînes de caractères construite d’une manière précise (en utilisant des .)

Un exemple (celui donné dans le code) sera surement plus parlant.

>>> d = DotExpandedDict({'person.1.firstname': ['Simon'], \
'person.1.lastname': ['Willison'], \
'person.2.firstname': ['Adrian'], \
'person.2.lastname': ['Holovaty']})
>>> d
{'person': {'1': {'lastname': ['Willison'], 'firstname': ['Simon']}, '2': {'lastname':['Holovaty'], 'firstname': ['Adrian']}}}
>>> d['person']
{'1': {'lastname': ['Willison'], 'firstname': ['Simon']}, '2': {'lastname': ['Holovaty'], 'firstname': ['Adrian']}}
>>> d['person']['1']
{'lastname': ['Willison'], 'firstname': ['Simon']}

4- Le SortedDict

C’est mon préféré, tout simplement parce que j’ai déjà du l’utiliser et qu’il m’a permis de ne pas avoir à le recoder moi-même. Il se contente de garder l’ordre dans lequel on insère des choses dedans. Pour être clair, lorsque l’on itère dessus, il va utiliser l’ordre d’insertion des données. Et ça, c’est vraiment cool.

5- Le reste

il reste encore deux classes dans ce sympathique petit fichier.

Une ImmutableList, qui fonctionne comme un tuple et qui est complétement imutable (et l’on peut même choisir le message d’erreur qu’il vous envoie à la figure pour vous le dire qu’il est immutable.

Un DictWrapper qui permet de s’assurer que les valeurs contenues dans le dict seront passées à travers une fonction avant d’être donné à l’utilisateur, si la clé en rapport commence par un préfix donné.

Dragon Age Origins, ça c’est du jeu

 Critiques de jeux vidéos  Comments Off on Dragon Age Origins, ça c’est du jeu
Dec 202009
 

Il y a des années que je n’avais plus joué à un jeu solo sur PC. C’est bien simple, à part Call of Duty premier du nom auquel j’avais joué pour m’entrainer avant de jouer en réseau, je crois que mes derniers jeux solos sont Warcraft 3, Morrowind et Neverwinter Night (quant au dernier Fallout, je n’y ai pas joué de peur d’y passer trop de nuits…). Même pour Red Alert, je n’ai joué que en réseau, sans même jeter un œil sur la campagne solo.

Parce que bien souvent, jouer en solo, ça me gonfle. Je m’ennuie super vite. Pour les RTS ça me gonfle de ne pas avoir toutes les unités dispos tout de suite et les IA sont bien souvent connes comme leurs pieds. Pour les FPS… Pareil. A part pour s’entrainer avant d’aller cribler de balles de vrais joueurs, je ne touche pas au mode solo.

Mais pourtant, pourtant j’ai commencé à jouer à Dragon Age. Parce que Baldur’s Gate, Neverwinter et Morrowind (sans parler de titres plus anciens que seuls les vieux briscards connaitront tels que Dagerfall, Ultima et Dungeon Master) font partie des jeux qui ont raccourcis mes nuits et qui m’ont fait oublié que je n’aimais que les jeux online. Et que je ne pouvais passer à côté de Dragon Age.

Et après quelques heures de jeux, je ne le regrette pas, mais alors pas du tout (même si c’est mes heures de sommeil qui vont le regretter).

1- Dragon Age Origins, qu’est-ce que c’est ?

Un jeu de rôle dans un univers med fan avec des humains, des nains et des elfes. Un univers sombre que l’on découvre peu à peu. Un univers où la magie est crainte, où les magiciens sont surveillés par un ordre de chevalier qui se charge de détruire toute menace de déviance, un univers où de vilains démons, contrôlés par un archidémon, essayent d’envahir le monde connu pour détruire, tuer et dévorer (comme tout bon démon qui se respecte quoi).

Un univers plein de royaumes, de trahisons, de sacrifices, d’intrigues et qui semble bien prêt de basculer dans la terreur et la mort.

Mais heureusement il y a un ultime espoir, la garde des ombres, qui se dresse contre le déferlement du mal et qui essaie tant bien que mal de lever une armée pour venir à bouts des vagues de démons et tuer l’archidémon.

Ce qui est plaisant dans l’univers de Dragon Age, c’est que tout n’est pas manichéen. Il n’y a pas les gentils qui vont gagner et les méchants qui vont perdre. On se retrouve plus dans des nuances de gris, assez souvent sombres d’ailleurs.

un petit feu de camp

Rencontre à l'auberge

2- Caractéristiques

Dans Dragon Age,  vous contrôlez un groupe (limité à 4) de personnages (sachant que cela peut être des animaux, comme un chien). Votre groupe de personnage aura un but assez simple au final : survivre. Mais comme ça n’est pas vraiment très glorieux comme but, en plus vous devrez sauver le monde (tout de même).

Vous pourrez choisir entre trois races  :

  • humaines
  • elfes
  • nains

et également entre trois carrières :

  • guerrier
  • mage
  • voleur

Chaque carrière permettant ensuite de se spécialiser dans des ‘sous-carrières’.

En plus de votre carrière, vous pourrez choisir des branches d’artisanat pour confectionner des pièges, des poisons, des soins, etc. Un petit exemple d’artisanat (herboristerie pour être exact) sur le screen juste en dessous.

Artisanat

3- Dragon Age, pourquoi je l’aime

3.1- Un vrai JDR

Enfin, ai-je enfin de dire. Enfin, un jeu vidéo qui ressemble à un vrai jeu de rôle papier. Enfin un jeu où lorsque l’on va chez un marchand, il n’a pas toujours tout à vendre et où lorsqu’on lui achète tout son stock, il ne réapparait pas (le stock) dans la seconde après un bête je sors/je rentre du bâtiment.

Comme dans un JDR qui se respecte, vos personnages vont évoluer, gagner des sorts, des techniques de combats. Ils pourront également se spécialiser dans des branches précises de leur carrière (métamorphes pour les mages par exemple, templiers pour les guerriers, assassins ou duellistes pour les voleurs).

En pleine baston

3.2 Une liberté… qui pourrait presque faire peur et une histoire qui ‘bouge’

On n’est pas dans un MMO là, il n’y a pas d’assistanat. Lorsque l’on sort d’un village, la question “où aller maintenant ?” se pose vraiment. Et personne pour nous aider, non, il va falloir choisir seul, quitte à se tromper. Pareil pour les rencontres avec des PNJ. On peut tuer les PNJ et parfois (c’est le cas actuellement pour moi), on se rend compte que même si cela nous a défoulé de châtier ce lâche qui se cloitrait dans sa maison, maintenant qu’il faut repousser une attaque de zombies, on est bien embêté… (et que l’on va devoir, sans aucun doute, repartir d’une vieille sauvegarde).

Pareil pour le choix de son équipe. Le fait de garder ou pas certains PNJ dans son équipe, modifie vraiment le cours de l’aventure et pas que superficiellement.

En fait, chacun des choix que l’on fait, va modifier l’histoire, dès la création du personnage, le choix de sa race/carrière change le début du jeu. Le screenshoot suivant montre l’un de ses choix. Vais-je libérer cet homme de sa cage et le prendre dans mon groupe ou l’y laisser pourrir ?

Un homme, dans une cage

3.3 Un jeux sanglant

C’est un gadget, d’accord, mais c’est sympathique quand même. A savoir que Dragon Age est un jeu sanglant, très sanglant. Vos PJ se retrouveront très rapidement couverts de sang ennemi, que ce soit leur armure ou leur visage. Tâches sanglantes qui seront reprises dans les animations vidéos qui parsèment le jeu. Bon d’accord, à certains moments (changement de lieu ou autre), les persos redeviennent tout beau, tout propre… Mais c’est parce que c’est le lavage en machine est compris dans chaque changement de zones :).

Equipe de trois après combat cinématique avec chien Ce fut juste mais le vilain pas beau est mort

3.4 Une vraie part de tactique

Plusieurs points à mettre en avant. Le fait de pouvoir combiner des actions (principalement des sorts) pour avoir des effets supplémentaires.
Ensuite vos persos ont des tactiques. Une tactique qu’est-ce ? C’est un ensemble pouvant aller de 2 à 5 conditions qui va vous permettre de scripter le comportement de vos persos en combats. Taper l’ennemi le plus fort avec ce sort là, lancer un sort de soin sur votre pote dès que celui-ci à moins de X % de vie, etc etc. Plus le personnage en question sera doué dans la compétences tactiques, plus vous pourrez lui définir de tactiques de combats.

L’air de rien, c’est un point essentiel du jeu. Tout d’abord parce que peut-être que comme moi, vous n’avez pas envie de tabasser votre barre espace à chaque seconde pour définir les actions suivantes de vos persos. Mais aussi parce que c’est un vrai plaisir d’arriver à définir des tactiques qui vont vous permettre de venir à bout d’un combat sans jamais appuyer sur espace (eh oui, ça m’est arrivé de faire plusieurs fois le même combat, même si je le gagnais à chaque fois, pour peaufiner mes tactiques).

3.5 Des personnages avec un vrai comportement

Les PNJ que vous allez croiser, tout comme (et surtout) les personnages que vous gardez dans votre groupe vont avoir un vrai comportement ‘humain’. Ils ont chacun leur caractère, discutent parfois entre eux (et se vannent souvent entre eux), approuvent ou désapprouvent vos actes et vos paroles. C’est vraiment plaisant (et on apprend pas mal de choses sur leur passé) de les écouter discuter, se raconter leur vie ou se moquer les uns des autres.

On peut même leur offrir des cadeaux, ce qui permet d’augmenter l’approbation qu’ils ont de vous (et qui sait peut-être même de faire démarrer une romance entre personnages, il paraît que c’est possible). Attention toutefois à ne pas se tromper, il vaut mieux offrir les bijoux aux persos féminins et les pichets de bières aux persos masculins.

4- Dragon Age : ce qui fait que, bon, il aurait pu être mieux

4.1 La rigidité des déplacements

Alors autant l’histoire évolue au gré des actions du joueur autant les déplacements des personnages au sein d’une carte, là par contre, faut pas trop en demander. Les zones sont clairement délimitées par des murs invisibles. Vous aimeriez bien aller voir de l’autre coté de la colline là, ah ben non, vous êtes bloqués au sommet, impossible d’aller plus loin.

Vous aimeriez bien nager pour traverser plus rapidement ce put*** d’étang au lieu de faire le tour ? Là aussi impossible, vos personnages ne sachant pas nager, apparemment, mais seulement marcher et courir. De même, on ne leur a jamais appris à sauter, même des hauteurs ridicules de quelques dizaines de centimètres… S’il n’y a pas un escalier ou un plan incliné, impossible de passer.

C’est là, vraiment déstabilisant. Surtout quand on a l’habitude de pouvoir sauter, courir, nager un peu partout.

4.2 Les temps de chargements

Ca devient rapidement agaçant. Chaque zone, boum, un temps de chargement qui, sur mon PC qui est tout de même un peu un bon gros PC pour jouer, sont d’autant plus ennuyeux.

Du chargement (court mais quand même) à chaque fois que l’on rentre dans un bâtiment.
Du chargement, long, très long, à chaque changement de zone …

5- En conclusion

Un très bon jeu, que je conseille, malgré ses petits défauts. Si vous avez aimé Neverwinter et Baldur, vous pouvez foncer les yeux fermés.

Son principal problème au final, si on oublie le temps que vous allez passer à raler après les temps de chargement, va surement être le temps que vous allez passer à y jouer.

(Si on veut vraiment raler, on pourrait aussi regretter l’absence de mode ‘en réseau’ comme il y avait dans Neverwinter, ce qui avait permis de monter des serveurs privés pour jouer en petit comité à des jeux qui n’était plus Neverwinter mais des aventures de JDR persos).

Dec 142009
 

“Mon prochain rdv est en retard de 5 minutes, j’ai plus qu’à attendre, la pause de midi est dans 10 minutes, il faut que j’appelle dans 20 minutes, réunion dans 2 minutes…”

Qui n’entend pas une phrase de ce genre au moins une fois par jour ? Et la plupart du temps, à ce moment là, on se dit en 5 minutes, je ne peux rien faire” ou10 minutes, si peu, ça ne vaut pas le coup que je commence à coder ce ticket, j’aurais à peine le temps de commencer”. Et résultat, on se retrouve à attendre, les yeux dans le vague à chercher ce qu’on pourrait faire pendant ces quelques minutes ou pire à attendre que le temps passe.

Alors niveau sérépendité, c’est excellent. On ne sait jamais, on risque de tomber sur un truc super utile. Mais niveau productivité, c’est loin d’être ça. Et puis c’est un appel à la procrastination ou je m’y connais pas.

Je dois d’ailleurs avouer que bien souvent, je suis dans ce cas là, et au bout des 5 ou 10 minutes, je me rends compte que j’ai passé ce temps à… rien.

Pour essayer de contrer cela, j’ai mis en place une tactique simple. J’ai une liste de tâches courtes à faire. Des tâches qui naissent alors que j’en fais une autre plus longue et que je ne fais pas tout de suite pour ne pas interrompre ce que je fais. Ça peut être écrire un mail à quelqu’un, rédiger la partie description d’un ticket, classer un répertoire de mon PC. J’ai du coup toujours une liste de tâches courtes, qui se vide aussi vite qu’elle se remplit.

Dès que j’ai un trou de quelques minutes, hop, j’en profite, je sors ma todolist et je fais 1 ou 2 ou 3 tâches. Pour que ça soit intéressant, il faut toutefois que la manière de noter une tâche de ce type soit super rapide. Tout comme celle de la noter comme faite. Pour ces tâches là, j’utilise gToDoList, l’outil de gestion de tâches de Gnome. Un clic sur le bouton ajouter, un titre, une description (non obligatoire) et un clic sur le bouton de validation. Pour la signaler comme faite, un simple clic sur une case à cocher. Et il est configuré pour se lancer au démarrage, tout seul comme un grand.

Nov 302009
 

Je vais continuer sur mes billets de ‘vulgarisation de la gestion d’entreprise’ en parlant un peu de comment on fait pour définir le prix de vente d’une prestation. Parce qu’après tout, c’est quand même important le prix de nos prestations. Trop cher, on ne vend rien, pas assez cher, on vend mais on finit par fermer boutique…

1- Savoir calculer les coûts

Une démarche enfantine serait de dire : “C’est tout simple, je travaille une journée, je veux un salaire de tant, une journée de travail coûte donc tant, je vends un peu plus cher et c’est bon”… Ne souriez pas, amis lecteurs, c’est une méthode couramment utilisée. Sauf que, si c’était aussi facile, ça se saurait. Limiter les coûts d’une prestation au salaire du bonhomme qui l’effectue est une grave erreur à laquelle j’ai donné un nom, le “syndrome de Tatie Tupperware”. Pourquoi un tel nom ? C’est tout simple, qui n’a pas eu une tante qui un jour s’est mise à faire des réunions Tupperware ou assimilé ? Parcourant la campagne avec son coffre plein de bols en plastique colorés, passant ses après-midi à en faire la réclame, en vendant à quelqu’un et gagnant ainsi une petite commission. Cette même Tatie qui après, pendant les réunions de famille, pouvait alors se vanter du petit pécule, qu’elle se faisait, facilement, en un après-midi. Sauf que, notre bien aimée Tatie, elle oublie de compter le temps passé à appeler ses amies pour préparer la réunion, l’essence consommée (et l’usure de la voiture) pour se rendre à la réunion, etc. Au final, si elle prenait tout cela en compte, peut-être qu’elle se rendrait compte qu’elle gagnerait plus de sous en restant chez elle à regarder la télé…

Ne faites pas comme votre Tatie, ne succombez pas au syndrome Tupperware et lister tous les coûts de vos prestations. N’oubliez pas le loyer de vos locaux, l’électricité, les déplacements, tout ce qui a été effort commercial, avant vente et service après vente.

“Mais comment je fais pour quantifier des choses aussi changeantes que mon coût en avant-vente ?”, êtes-vous en train de penser… Faites des moyennes ou alors prenez le pire cas que vous ayez vécu et utilisez le comme étalon (ici le souci est le risque de faire gonfler un peu trop vos prix).

Mais ce n’est pas tout. Le salaire de votre secrétaire, qui va le payer si ce n’est pas vos prestations ? N’oubliez donc pas de l’inclure dans vos coûts, tout comme le paiement de votre expert comptable.

2- De l’inter-contrat et des imprévus

Vous avez listés tous vos coûts, vous les avez tous évalués, vous avez maintenant le vrai prix de revient de vos prestations. Et vous pensez avoir fini ? Vous pensez pouvoir vous dire : “C’est bon si je vends plus cher que mon prix de revient, tout ira bien et je pourrais bientôt allez boire des Gin Tonic sur une plage, quelque part dans un paradis tropical ?”.

Eh ben, vous vous trompez.

Avez-vous pensé à intégrer la possibilité d’avoir un long passage à vide, qui vous laisse sans contrats (et qui dit pas de contrats dit chiffre d’affaires en chute libre et dépenses commerciales qui augmentent) ? Et une petite réserve pour parer aux arrêt maladies ? Ou tout simplement aux vacances ?

Non ? Alors hop, vous pouvez rajouter quelques lignes.

3- Le financement de la croissance

Bon, on en a presque finit, mais pas encore tout à fait. Il manque encore quelques lignes aux calculs de notre prix.

Pour produire ce que vous vendez, que ce soit une chaise en paille ou du code informatique, vous utilisez des outils. Ciseau à bois ou PC de dév, ce matériel, il faut penser à le renouveler, il faut donc en intégrer le coût de renouvellement dans votre prix de vente.

Mais surtout il faut penser à financer votre croissance.

Votre petite entreprise ne connait pas la crise et marche bien, mais un jour ou l’autre vous allez vouloir grossir. Embaucher des gens, des commerciaux, des techniciens, qui dans tous les cas vont coûter plus que ce qu’ils vont générer de CA, dans un premier temps. Et il va falloir les payer les salaires de ces nouveaux employés, ainsi que le matériel qu’ils utilisent. Autant de frais qu’il faut avoir prévu de longue date et donc intégrer dans son prix de vente (je profite de parler de croissance pour rappeler que les problèmes de financement de la croissance sont bien souvent responsables de dépôts de bilan dans les premières années de vie des entreprises).

4- Marge

Il ne faudrait pas l’oublier tout de même, la dernière tranche d’un prix c’est la marge, la marge et tout ce qui est constitution de réserve si l’on veut se rassurer. Faites attention tout de même à ne pas trop abuser avec la marge, histoire de ne pas avoir un prix abracadabresque.

5- Conclusion

J’espère avoir su donner quelques éclaircissements et quelques conseils sur la manière de calculer un prix de vente. Dans ce billet, je me suis limité à lister les différentes ‘tranches’ qui constituent un prix. Je n’ai pas pris en compte tout ce qui est calcul d’un prix en fonction de la concurrence, des prix du marché, de la façon dont on veut positionner notre prestation. Tout cela sera l’occasion de faire d’autres billets, d’ici quelques temps.