Homemade Pixels

Des pixels frais qui sortent du four le blog de MrHelmut.

Archive pour la catégorie ‘Hoy’

Derrière ce titre de billet d’une totale désinvolture se cache un petit coup de gueule envers Microsoft. Et pourtant, ce n’est pas dans mes habitudes car, de manière générale, j’aime les technologies Microsoft (ou plutôt je les préfère largement à certaines autres). Mais là, ils ont vraiment fait n’imp’ autour du SDK de Kinect.

Quand Microsoft a commercialisé Kinect, il y a eu un véritable engouement de la “scène” PC. Un tel périphérique ouvre beaucoup de possibilités en termes d’interactions, notamment pour la recherche et l’industrie. Problème : Microsoft a décidé de fermer l’usage de Kinect exclusivement à sa Xbox 360. Le principe est simple, ils n’ont pas fourni de pilote PC pour Kinect, résultant en un “périphérique non reconnu” bien inutile. Soit.

Forcément, c’était une invitation aux bidouilleurs pour percer les mystères de son fonctionnement et programmer un pilote non-officiel. Il y a même eu une prime de quelques milliers de dollars à celui ou celle qui produirait un pilote exploitant tous les capteurs de la bêtes. C’est ainsi que quelques SDK non-officiels sont nés. Kinect a donc commencé à être pas mal utilisé dans le domaine de la recherche (les Natural User Interface font rêver tous les scientifiques depuis le début de l’informatique). Mais bon, les SDK non-officiels, basés des recherches toutes fraiches, ce n’est pas ce qu’on appel un exemple de fiabilité.

Devant cet intérêt de la part des chercheurs et de certaines industries (et donc des potentiels brouzoufs à se faire), Microsoft a décidé de faire incuber un projet de SDK chez Microsoft Research (le pôle recherche scientifique du groupe). Pourquoi faire re-développer un SDK par des scientifiques alors qu’on a un SDK Xbox 360 tout prêt que l’on peut porter sur PC les doigts dans le nez ? Pour protéger les recettes magiques des algorithmes du SDK Xbox 360 ? Allez savoir. Soit (bis).

Jusque la, tout va bien. Microsoft Research pond une première beta du SDK, puis une seconde. Le SDK est super bien foutu (quelques lignes de code et hop on a un squelette de reconnu) et propose un bind pour C++ et pour .NET (et donc XNA). Du coup, la communauté XNA monte au créneau car, si il est bien possible d’utiliser Kinect avec XNA sur PC, la chose n’est pas possible pour les Xbox Indie Games. La réponse de Microsoft est claire, le support n’est pas prévu afin de préserver la consistance de l’expérience Kinect sur Xbox 360. Mouais. Mon petit doigt me dit plutôt qu’ils ont les boules que des indies sortent des jeux à 1€ qui soient mieux que les AAA Kinect actuels. L’avenir nous dira si Microsoft ouvrira la chose, mais avec le mystère qui plane au dessus de l’avenir d’XNA, il ne faut pas trop espérer (UPDATE : c’est cuit).

Lors du Global Game Jam du mois dernier, j’ai développé Hoy, un jeu PC programmé avec XNA et utilisant Kinect. A l’époque j’avais basé mon code sur le SDK beta 2 de Kinect et il fonctionne avec n’importe quel Kinect. Le problème est que, en l’état, je ne peux pas redistribuer mon jeu car le SDK beta 2 ne le permet pas (il n’y a pas de pilote et la licence ne l’autorise pas). Il ne marche donc que sur ma machine qui a le SDK beta 2 d’installé.

Puis Microsoft annonce ses plans concernant Kinect et le PC. Tout d’abord, Microsoft commercialise un nouveau Kinect : “Kinect for Windows” (et renomme l’existant en “Kinect for Xbox 360″). Côté hardware, Microsoft dit qu’ils sont différents. Dans la pratique, seule la lentille de la caméra infra-rouge est différente, pour reconnaître des objets plus proches (au détriment de la profondeur), ce qui en soi est logique compte tenu du public visé. Premier bémol, “Kinect for Windows” n’est pas compatible Xbox 360. Second bémol, il coûte 100€ plus cher (250€ donc, mai cela inclus les coûts de licencing commercial). Troisième et plus gros bémol, la sortie du SDK final.

Le SDK final est sorti le 1er février, et avec lui le pilote officiel PC. Joie ? Bonheur ? Je me dis que je vais pouvoir finaliser Hoy et le sortir sur PC pour tous les possesseurs de Kinect. Premier obstacle : l’API a radicalement changée ! Elle est toujours aussi top, mais tout mon code fait avec la beta doit être quasi-entièrement ré-écrit. D’habitude, quand Microsoft change une API, ils préparent le terrain, via des blogs qui expliquent avant la sortie d’une nouvelle version les changements qu’il y aura. Comme ca on peut s’y préparer et comprendre les décisions de re-design de l’API. Pour le SDK de Kinect, il n’y a rien eu de tout ca et quand la version finale a débarqué, elle est tombée comme un cheveu sur la soupe.

Bref, je ré-écris Hoy. Et la, c’est le drame : “DeviceNotSupported” lorsque je veux le lancer sur un autre PC, sans le SDK. Pourquoi ? Microsoft a décidé que les “Kinect for Xbox 360″ ne soient pas supportés par le pilote PC. Alors même que cela marche parfaitement avec le SDK, toujours sur PC. Surement en partie parce que la version 360 n’englobe pas dans son prix la licence d’utilisation commerciale.

Grosso modo, pour développer une application Kinect sur PC, on peut utiliser un “Kinect for Xbox 360″ ou un “Kinect for Windows”. Alors que pour distribuer une application Kinect sur PC, seul “Kinect for Windows” fonctionnera chez monsieur tout le monde.

Il s’agit donc d’une limitation volontaire. Et c’est d’autant plus absurde qu’avec le SDK cela fonctionne (le pilote existe donc). Kinect s’est vendu à plus de 10 millions d’exemplaires dans sa version Xbox 360, alors que la version PC a un usage quasi-exclusivement limité à la recherche (soit quelques milliers de “Kinect for Windows” dans la nature, à tout casser). Empêcher d’atteindre ces 10 millions de joueurs existants, c’est tué dans l’oeuf toutes possibilités de sortir un jeu Kinect pour PC.

Pour distribuer Hoy, j’ai donc les possibilités suivantes :

  • Rester sur le SDK beta 2, ce qui limitera mon public uniquement aux gens ayant le SDK beta 2.
  • Rester sur le SDK final, ce qui limitera mon public uniquement aux gens ayant un “Kinect for Windows” (genre ceux qui auront dépensé 250€ pour un Kinect non-compatibe Xbox 360, soit le même public que le point précédent, les chercheurs et industriels).
  • Passer à un SDK non-officiel, ce qui limitera mon public aux gens qui ont installé le pilote non-officiel correspondant, et qui m’embetera car je devrais encore ré-écrire le jeu et avoir potentiellement plus de boulot à faire pour un résultat moins bon (avantage : ca pourrait tourner sous linux et mac).

Dans tous ces cas, la probabilité que d’autres personnes dans le monde joue un jour à Hoy est quasi-nulle. Pourquoi nous entuber avec une telle limitation alors qu’il y aurait un plus grand intérêt à l’ouvrir à l’ensemble des possesseurs d’un Kinect ? Pour exploiter un public niche avec une licence à 100€ ? Pour empêcher que le marché du jeu Kinect sur Xbox soit court-circuité par des indé’ plein d’idées sur PC ?

Screw you, Microsoft!

Hoy! Mon jeu Kinect du GGJ12

Dimanche 29 janvier 2012

Ce week end, c’était le Global Game Jam. J’ai eu le bonheur de l’avoir organisé à Metz, mais j’ai aussi trouvé le temps de faire mon propre jeu : Hoy!

YouTube Preview Image

La page du jeu : http://globalgamejam.org/2012/hoy

Oui, je l’ai codé en 2h. L’organisation m’a pris une bonne partie du week-end, et quand on m’a fait la remarque “t’es pas deg de pas pouvoir coder ?”, j’ai craqué ! La personne à l’origine de la remarque (Hellgy, voir le jeu de sa team) m’a d’ailleurs fait les graphismes ^^.

Les autres jeux fait à Metz durant ces 48h : http://globalgamejam.org/og/games/17219/list

Tout le monde s’est bien éclaté :-].

Organiser et vivre cet événement a vraiment été génial ! Je reviendrai plus tard sur cette grande aventure. La, j’ai besoin de sommeil ^^.