Alexandre LHUILLIER - Projets, histoires & opinions
Accueil Blog Projets Divers À propos

English Version

Koalabs

Koalabs est une entreprise issue de la fusion entre Tetraedge, responsable de plusieurs jeux et portages sur PocketPC et Nintendo DS, et de l’équipe de développement d’Home Design 3D, alors partie intégrante d’Anuman Interactive.

À l’époque où j’y suis entré, Koalabs avait déjà sorti de nombreux portages de jeux sur iPhone et iPad: l’Amerzone, Retour sur l’Île mystérieuse 2, Dracula 1 à 3 (le 4 et le 5 étaient alors en cours de développement), Atlantis 1 à 5...

N’ayant pas à leur disposition les codes sources des versions originales de ces jeux, TetraEdge puis Koalabs a du développer son propre moteur, utilisé pour la 1ère fois pour le portage DS de Syberia 1, à une époque où Unity n’en était qu’à ses balbutiements et où les prix des licences des autres moteurs propriétaires se comptaient dans les millions d’€.
Seul les sources graphiques et sonores des jeux originaux étaient disponibles, ni les scripts ni le code, il fallait donc les réécrire tout en jouant aux originaux pour savoir comment le jeu était scripté.

À mon arrivée, j’ai passé deux mois et demi à scripter l’un de ces jeux, j’ai ensuite rejoint l’équipe qui s’occupait du moteur et du code des jeux.
L’un de mes travaux les plus importants dans cette équipe a été de porter ce moteurs d’abord vers Android, puis la Nintendo Switch.

Le moteur et ses outils

Le portage vers Android

Le moteur avait en fait déjà été porté une première fois vers Android à l’aide de Marmalade: le choix de cette techno multiplateforme semblait alors une bonne idée vu qu’il était alors envisageable de porter les jeux également vers Windows Phone, ce qui aurait permis de faire 2 portages pour le prix d’1. De plus, le NDK Android n’était alors pas une option viable à ce moment. Un jeu utilisant le moteur porté sous Marmalade était même déjà sorti sur le store Android d’Amazon
Les bugs mystiques rencontrés pendant le portages des jeux suivants, les features absentes (Marmalade ne supportait même pas le multithreading sur Android à l’époque) et le prix de la licence ont fini par avoir eu raison de ce choix. J’ai alors choisi de re-porter le moteur en utilisant cette fois-ci le NDK d’Android, qui avait alors atteint sa version r9d.

Le NDK et le SDK d’Android apportaient leur lot de défauts, mais les avoir choisi permettait au moins d’avoir le contrôle et de savoir d’où venait les problèmes.
Certaines parties du moteur ont du être complètement réécrites pour Android:

J’ai alors pu porter les 2 Syberia, Dracula 4 et 5 qui étaient encore en développement, ainsi qu’une dizaine d’autres jeux.

L’outil de build

Un outil permettant de builder une version en 1 clic avait été conçu pour le moteur: il permettait de paramétrer la build qu’on voulait créer (monolingue ou contenant plusieurs langues, plate-forme, version payante à l’achat ou "Freemium"...). L’outil permettait de choisir toutes les builds à créer dans une liste, puis les créait l’une à la suite de l’autre.
J’ai du mettre à jour cet outil pour qu’il puisse builder les versions Android de nos jeux.

Le portage vers la Nintendo Switch


Il a été décidé que les deux premiers Syberia sortiraient sur Switch. J’ai alors du porter ce moteur à nouveau, cette fois vers la Nintendo Switch.

Il faut savoir qu’auparavant, les 2 premiers Syberia avaient d’abord été portés vers la PS3 et la Xbox360, donc certaines problématiques relatives aux jeux console avaient déjà été résolues.

Le fait d’avoir notre propre moteur dont on connaissait les sources, ainsi que la modernité des outils que Nintendo avait mis à disposition pour la console ont rendu la tâche relativement facile.
Je ne peux bien évidemment pas rentrer beaucoup dans les détails car les outils de Nintendo sont soumis à NDA.

Nous en avons profité pour corriger des soucis et des manques présents dans les versions précédentes. J’ai aussi fait en sorte que le jeu puisse être contrôlé de toutes les façons possibles pour une Nintendo Switch:
J’ai aussi du développer une version contenant les 2 jeux, permettant de switcher d’un jeu vers l’autre depuis le menu principal, ce qui n’était pas évident car les moteurs des 2 jeux était légèrement différents et donc incompatibles. Je m’en suis sorti en mettant en commun le maximum de code des 2 moteurs (en rendant certaines parties dont les différences n’étaient pas justifiées identiques), et en mettant le reste, avec le code spécifique à chaque jeu, dans 2 librairies linkées dynamiquement. Le jeu linke alors la librairie du jeu choisi à chaque fois qu’on change de jeu.

Cette version sortira le 8 novembre prochain. Son développement a manifestement continué après que j’ai quitté Koalabs: les sauvegardes sur le Cloud ont été ajoutées :)

Syberia sur Android: https://play.google.com/store/apps/details?id=com.microids.syberia&hl=fr

Syberia 2 sur Android: https://play.google.com/store/apps/details?id=com.microids.syberia2&hl=fr

Syberia sur Nintendo Switch: https://www.nintendo.fr/Jeux/Nintendo-Switch/Syberia-1293176.html

Syberia 2 sur Nintendo Switch: https://www.nintendo.fr/Jeux/Nintendo-Switch/Syberia-2-1310659.html