jb3 1.0

I have released jb3 1.0, a webapp designed to include every feature needed by a modern mouling solution:

  • bouchot with XML, TSV and Websocket/JSON backends.
  • b2b with out the box alive tribune support: Batavie, Dlfp, Euromussels and Sveetch.
  • responsive coincoin with a cool paster: file upload, multiline text, audio record, image drawing, emoji and totoz search.
  • multi user webcam visio conference.
  • norloge timezone translation.
  • fortunes and archives search engine.
  • trollmeter radar.
  • sara, a nice bot assistant that can tell you jokes, forecasts, cultural and political facts.
Main view Webcam support Totoz search Emoji search Sketch upload Audio record upload Text upload Mobile main view

RMLL 2014

Ce week end, je présentais aux Rencontres Mondiales du Logiciel Libre Newton Adventure et Ned et les maki en compagnie de al.jes, producteur intermittent du spectacle du second, avec trois objectifs:

  • faire la promotion du platformer rotatif et du sokoban au goût de poisson cru.
  • observer le comportement et les réactions des joueurs.
  • rencontrer d’autres âmes perdues au nom de la liberté logicielle.

Le moins que l’on puisse dire, c’est que les circonstances n’étaient favorables à la réalisation du premier.

Notre stand, placé en retrait loin du passage, au dessus d’une bouche d’égoût, coincé entre une barraque à frites et des toilettes publiques avait bien du mal à attirer un autre public que les habitants typiques du centre ville de Montpellier, consommateurs de stupéfiants et punks à chien, certes sympathiques, mais venant plus par intérêt pour l’emprunt définitif de biens matériels que par passion vidéoludique.

Les vents violents de la ville de Georges Freches nous aidaient parfois à attirer un peu de monde en chassant les odeurs, mais nous compliquaient aussitôt la tâche en renversant nourritures et boissons sur nos claviers, en emportant les affiches imprimés à prix d’or par notre graphiste bien aimée ou encore en faisant s’effondrer les panneaux sur nos rares visiteurs.

Notre prévoyance nous a permis toutefois d’éviter les sorts moins enviables de nos amis de Salut à Toi dont le stand a été emporté à une altitude suffisante pour provoquer l’intervention de la force de défense antiaérienne ou de nos collègues de l’Aful qui ont du dormir dehors blottis entre punks et chiens tel Jésus dans sa crèche suite à un léger problème de réservation de chambre. Je ne féciliterais jamais assez al.jes d’avoir pris un hôtel sérieux et des sacs de sable lestés de plombs.

C’était la première fois que je voyais le leader charismatique des GGP et j’ai été très surpris: 1m80, blond au regard bleu d’acier plein de vie, il était exactement tel que je me l’étais imaginé!

Même s’il a fait fuir la moitié des visiteurs en hurlant BONJOUR sur un ton de waffen SS contrarié, notre VRP aryen a noté avec une rigueur allemande les compliments, critiques et rapports de bug des rares courageux à avoir pris les manettes disposées de façon à inciter les joueurs à essayer nos créations. Les analyses statistiques et qualitatives sont en cours, les conclusions devraient être disponibles dans la semaine.

Outre notre stand, nous avons eu le temps de parcourir rapidement le reste des exposants et découvrir de très beaux projets comme Medintux (un logiciel de fichage des malades au bénéfice des assurances santé) ou Openpandora (une sorte de Gamegear libre).

Entre un radotage de RMS et un concours de mise en chanson des plus belles revues de presse de l’APRIL, nous avons même eu le temps de participer à une émission de radio malheureusement interrompu par un orage. Si l’ingénieur du son a pensé à appuyer sur “save” avant d’être frappé par la foudre, elle sera bientôt en ligne.

Peut être même avant que mon train arrive à destination: j’écris ses lignes pour passer le temps. Et du temps j’en ai: après avoir du ralentir à cause d’un panneau de signalisation lui aussi foudroyé, un arbre s’est suicidé sur les voies obligeant le conducteur à le débiter avec son canif. Une alerte à la bombe et une grève des portes bagages obligeant à la conduite à vue ayant suivi, j’envisage de braquer le service restauration avec ma brosse à dent pour survivre jusqu’à la semaine prochaine - date estimée de notre arrivée.

Jnuit, une bibliothèque pour créer des interfaces pour les jeux

J’ai créé jnuit, une bibliothèque pour créer des interfaces graphiques pour les jeux avec Java/lwjgl.

Pour créer mes jeux, j’ai suivi le conseil d’un article célèbre dans le milieu, Write Games, Not Engines, qui explique en gros qu’il est beaucoup plus efficace de se concentrer sur la réalisation d’un jeu spécifique plutôt que de tenter de créer un moteur générique.

Ce principe m’a beaucoup aidé, mais aujourd’hui j’ai du mal à maintenir du code pour mes deux jeux, j’ai donc décidé de factoriser petits à petits leurs parties communes dans des bibliothèques réutilisables:

jnuit

jnuit est une bibliothèque de composant pour la création d’interfaces homme-machine pour les jeux vidéos. Elle tient compte des contraintes suivantes:

  • un joueur peut utiliser un clavier, une souris, un écran tactile, une manette ou une combinaison des quatre.
  • les manettes peuvent être très différentes: joystick, gamepad, stick arcade… Le nombre d’axes, leurs orientations, le nombre de boutons sont très divers.
  • il faut s’intégrer dans la boucle d’évènement d’un jeu.

Pour cela, j’ai réalisé jnuit suivant un modèle très simple avec seulement quelques concepts:

  • widget: l’élément de base de l’interface.
  • layout: des widgets destinés à en contenir d’autres.
  • curseur: un focus sur un widget qui peut être déplacé.
  • peu d’événements: déplacement du curseur, “ok”, “annuler”.

Sur cette base, j’ai implémenté des widgets génériques (select, toggle, label…) et spécifiques (configuration des clavier/souris/manettes, réglages du son, changement de la résolution, de la langue…).

Demo

Voici un exemple simple en image et en vidéo:

Créer son propre jeu en une commande!

Cet exemple est ce que l’on obtient en utilisant l’archetype maven que j’ai créé pour l’occasion et qui permets de démarrer un projet de jeu vidéo moderne (injection de dépendances, système d’entités, GUI complète, génération de paquets/installeurs pour la plupart des OS…) avec une simple commande:

mvn archetype:generate -DarchetypeGroupId=im.bci -DarchetypeArtifactId=jnuit-archetype -DarchetypeVersion=LATEST -DgroupId=comycompagny.superbaryo2 -DartifactId=superbaryo2 -Dgame-name=superbaryo2 -Dgame-package=com.mycompagny.superbaryo2 -Dversion=1.0-SNAPSHOT

Ensuite pour apprendre l’api, il suffit de consulter les exemples et la javadoc (fournit avec les livrables récupérés par maven).

Exemples de code

Note: pour ces exemples, il faut considérer que l’on a déjà créé deux objets toolkit et root. Leur création étant dépendante de l’API graphique utilisée (pour l’instant seulement lwjgl, mais je prévoie des portages sur playn), je ne la détaille pas ici.

Hello world

Label hello = new Label(toolkit, "Hello world!");
root.show(hello);

Formulaire simple avec un layout de type “table”

Table table = new Table(toolkit);
table.setBackground(new ColoredBackground(0, 0, 0, 1));
table.defaults().expand().fill();

Label fruitsLabel = new Label(toolkit, "Do you like fruits?");
table.cell(fruitsLabel);
Toggle fruitsToggle = new Toggle(toolkit);
table.cell(fruitsToggle);
table.row();

Label kindLabel = new Label(toolkit, "What kind?");
table.cell(kindLabel);
Select<String> kindSelect = new Select<String>(toolkit, Arrays.asList("banana", "apple", "orange"));
table.cell(kindSelect);
table.row();

table.cell(new Button(toolkit, "quit") {

    @Override
    public void onOK() {
        System.exit(0);
    }
}).colspan(2);

table.layout();

root.show(table);

Newton Adventure 1.15

Une nouvelle version de Newton Adventure est disponible. Elle apporte essentiellement des corrections de bugs et des améliorations du code, mais aussi quelques nouveautés:

  • Un menu d’options entièrement refait avec jnuit, la bibliothèque que j’utilise aussi pour développer Ned et les maki.
  • Le son sur la version web
  • Un logo tout neuf.

Newton Adventure Bald Mod

Pour soutenir la cause des chauves dans le jeu vidéo, j’ai créé un mod spécial pour Newton Adventure afin de défendre le droit de cette minorité capillaire à être représentée dans les jeux vidéos de façon non caricaturale.

Newton Adventure sur Android et sur le web

J’ai profité des vacances de noël pour ~~manger trois fois mon poids par jour~~ faire une implémentation du moteur de Newton Adventure avec l’API PlayN. Celle-ci permets à partir d’une seule base de code Java de générer des applications desktop, android, ios et html5.

Newton Adventure est donc maintenant jouable via un navigateur web et sur Android.

Je n’ai pas pu compiler de version pour iPhone, car il faut posséder un Mac pour cela…

Newton et Ned aux JM2L 2013

Samedi 30 décembre 2013, je présentais les jeux Newton Adventure et Ned et les maki aux Journées Méditerranéennes des Logiciels Libres.

Avec un stand situé à l’entrée du salon et les deux jeux jouables, j’ai pu avoir un bon nombre de retours. Ceux-ci étaient plutôt habituels pour Newton Adventure, qui existe depuis plusieurs années: le jeu est facilement accessible et semble plaire (certaines personnes sont revenus faire une seconde partie), mais donne mal à la tête à certains et il y a une certaine attente pour une version mobile.

C’était la première sortie de Ned et les maki. La démo a été finalisé vendredi soir et permettait d’essayer quelques niveaux. Un peu perturbés par la vue en 3d isométrique, les joueurs trouvent leurs marques au bout d’un moment et ont beaucoup aimé les graphismes. La difficulté semble trop élevée: la moindre erreur demande de recommencer entièrement le niveau. Heureusement pour la prochaine version, il est prévu de pouvoir revenir en arrière.

Il est intéressant de noter que les deux jeux ne plaisent pas au même public: les plus âgés n’osent pas trop essayer Newton Adventure mais les enfants adorent alors que c’est plutôt l’inverse pour Ned et les maki.

Enfin j’ai vu sur des affiches que les RMLL seront à Montpellier l’an prochain, ce sera peut être le prochain salon de ces jeux!