Dev Blog #10: The Process of Game Testing

Dev Blog #10: The Process of Game Testing

HeartBleed

Hello les techos! Vous avez surement lus diverses choses sur HeartBleed, un bug révélé il y a maintenant deux semaines qui a secoué tout l’Internet. Si ce n’est pas le cas, lisez ce qui suit avec attention car votre sécurité en ligne est en jeu !

HeartBleed, c’est quoi?

HeartBleed est un bug du logiciel openSSL. Il a été révélé au grand public le 1er avril 2014 mais existe vraisemblablement depuis deux ans.

Son nom qui signifie saignement de cœur est lié au terme heartbeat, battement de cœur, qui est un protocole utilisé dans le SSL.

Pour faire simple, quand vous utilisez une connexion sécurisée sur internet, votre navigateur discute avec le serveur de manière encryptée, c’est SSL. De nombreux serveurs, comme ceux de facebook, google, microsoft et au moins 500000 autres sites web dans le monde utilisent un programme gratuit et open source appelé openSSL pour ne pas avoir à programmer cette sécurité eux même.
Seulement, lors de cette échange de donné, la connexion est maintenue par une sorte de ping pong entre le serveur et votre pc, le battement de cœur, et Heartbleed, permet, en trichant un peu dans la demande de battement de cœur, d’obtenir des données que le serveur ne devrait pas offrir au clients. Pour les hardcores, les infos techniques sont par ici, pour les autres, ça marche grosso modo comme ça:

image

Ou est le problème?

Le problème c’est que n’importe qui d’un peu compétent et mal intentionné peu lire les informations contenues sur un serveur: Mots de passe du site, mais aussi données bancaire, bases clients, numéros de carte bleu…

Sachez donc que n’importe quelle donnée que vous avez confié à un site web sécurisé ces deux dernières années est susceptible d’être perdu dans la nature.

Que faire pour se protéger?

Le boulot principal revient aux administrateurs serveurs des sites concernés, ils doivent mettre à jour vers la version corrigé d’openSSL qui corrige le bug.

Vous, vous devez absolument changer vos mots de passe sur tous les sites concernés, sauf si vous utilisez la double identification.

Et si vous ne l’utilisez pas, mettez vous à l’utiliser. C’est très simple, dans les options des sites, il y a un endroit pour l’activer. Une fois que c’est fait, lorsque vous vous connectez à un site depuis un autre ordinateur que d’habitude vous devez fournir un code supplémentaire qui vous est fourni par mail, sms, ou une application de votre smartphone.

La plupart des sites importants proposent ce service: Google, Facebook , Twitter, Yahoo, Apple, Microsoft, LinkedIn, Paypal

Et après?

Un des problèmes dans cette histoire, maintenant qu’elle est en voie d’être réglé, c’est la malhonnêteté de certaines entités. Par exemple, la NSA connaissait le bug depuis longtemps, et l’exploitait pour obtenir des informations de manière tout à fait illégale. Il y a aussi Google qui a réglé le problème au mois de mars sur ses serveurs et n’a averti personne du bug.

Et malheureusement de nombreux autres bugs du même acabit se prommènent probablement sur notre internet adoré. Alors restez prudents.

Java Tip: labels

Vous qui codez en java, vous avez surement déjà eu affaire à cette situation, une boucle dont vous voulez sortir sous certaines conditions, autres que celles la définissant.

Et comme tout bon programmeur, vous avez fait usage de l’instruction break, logé dans un petit if.

Maintenant, comment faire si vous êtes dans une boucle dans une boucle dans une boucle dans une boucle et que vous voulez quitter la première?

Eh bien java vous permet de placer un label avant votre boucle. Et lorsque vous faite appel à votre instruction break, spécifiez le label, et vous serez à la sortie de la boucle principale.

Simple et efficace, allez, un exemple pour la route:

outerloop:
for (int i=0; i < 5; i++) {
  for (int j=0; j < 5; j++) {
    if (i * j > 6) {
      System.out.println("Breaking");
      break outerloop;
    }
    System.out.println(i + " " + j);
  }
}
System.out.println("Done");

Ce qui vous affichera:

0 0
0 1
0 2
0 3
0 4
1 0
1 1
1 2
1 3
1 4
2 0
2 1
2 2
2 3
Breaking
Done

Les doigts dans le code

Hier, microsoft a décidé de relacher le code de MS-DOS 1.1 et 2.0, ainsi que word 1.0. Vous aimez pas l’assembleur? Mais j’en ai rien à fiche. Un bon, un vrai programmeur, c’est quelqu’un qui a posé ses yeux au moins une fois sur le code de linux. Alors avec cette occasion de tripoter la base d’un système d’exploitation historique, développé pour IBM, il ne faut pas hésiter.

Facebook rachète Oculus VR

Vous connaissez tous facebook, et la plupart d’entre vous connaissent oculusVR, mais si, vous savez, la société qui produit le fameux Oculus rift, ce casque de réalité virtuelle récemment copié par sony, qui irait si bien avec le Myo.

Eh bien voilà, hier soir, facebook a décidé de racheter Oculus pour la modique somme de 2 milliards de dollars. Oui oui, deux gros milliards de dollars US !

Alors les réactions ne se font pas attendre. Un certain nombre de personnes ayant techniquement ou psychologiquement investi l’oculus rift craignent un rachat destructif. D’autres prétendent que Zuckerberg va laisser cela évoluer indépendamment au sein de facebook, au moins pour la partie gaming.

Au milieu de tout ça, je me pose une question, Mark Zuckerberg qui ne connaissait pas oculus il y a encore un mois, alors que tous les geeks dignes de ce nom en on eu un entre les mains, que compte-t-il en faire? Parce que toutes craintes pour le projet initial et toutes considérations mises à part, quelles promesses nous apporte ce rachat? Voici quelques idées/supposition/projets possibles:

Un système de chat virtuel: Vous voyez skype ou hangouts? Imaginez la même chose, sauf que vous oubliez l’endroit ou vous êtes réellement, et vous voyez vos interlocuteurs en 3D, dans un décor choisi par l’hôte de la conversation. Évidement, il y a des obstacles techniques, comment modéliser chacun sachant qu’il a un immonde casque sur la tête?

Un cinéma: Facebook veut clairement s’étendre, son réseau social ne lui suffit pas en tant que tel, alors pourquoi ne pas faire cinéma? Vous êtes tranquillement en train de lurker sur facebook, et au bout d’une demi/heure, le réseau detecte que vous allez le quitter pour regarder le dernier film que vous avez téléchargé (oui, facebook connait vos actions avant vous), eh bien, comme vous avez le casque sur les yeux, il vous propose une séance de ciné. Quel film? Eh bien le dernier captain america qui vous fait si envie, puisque vous avez liké la page tout à l’heure. Et hop, on vous balance dans cette salle de ciné. Vous tournez la tête et vous voyez des gens assis sur des sièges tout pareils au votre, et en face, le film commence, en 3D évidement. Pas besoin de se déplacer, pas besoin de faire la queue à la caisse (votre CB est débité automatiquement).

Un magasin en ligne instantané: Vous venez de mater la page d’un magasin d’art et déco, et leur dernier produit vous fait envie. Allez, scannez votre appart’ avec votre webcam, et hop, on vous fait visualiser ce petit truc bien placé là ou il faut, vous pouvez tourner autour, le déplacer, le replacer. Vous voulez l’acheter, pas de problème, utilisez votre imprimante 3D 😉

Alors oui, c’est de la science fiction, mais Zuckerberg nous réserve surement des choses encore plus folles, et je n’attends que de voir les annonces imminentes.

Robot Tetris

Voilà enfin la présentation de mon projet annuel.
Il s’agit d’un robot Lego qui doit être capable de jouer à Tetris en appuyant sur les touches d’un clavier. L’acquisition des données du jeu doit se faire par une webcam.
Nous sommes cinq à travailler sur ce projet. La partie qui m’est revenue est l’intelligence artificielle et je vous propose de jeter un œil à cette petite vidéo pour juger l’avancement:

Dans cette vidéo, l’IA joue directement en envoyant des ordres internes au jeu et en recevant les infos depuis le jeu.
Les autres parties étant à peu près finies aussi, la prochaine étape est l’intégration. Donc mon prochain billet sur ce projet devrait être une vidéo avec le robot fonctionnant réellement, prenant ses infos depuis une webcam.