Alexandre LHUILLIER - Software projects, stories & opinions
Home Blog Projects Miscellaneous About

Version Française

Koalabs

Koalabs is a fusion of 2 companies: Tetraedge, responsible for several games and ports on PocketPC and Nintendo DS, and Home Design 3D’s development team, which was then part of Anuman Interactive.

At the time I joined them, Koalabs had already released a number of ports for iPhone and iPad: l’Amerzone, Return to Mysterious Island 2, Dracula 1 to 3 (4 and 5 were still in development), Atlantis 1 to 5...

Since they didn’t have the original games’ source codes, first TetraEdge then Koalabs had to develop its own engine, first used for porting Syberia 1 to the DS, at a time Unity was hardly usable and the cost of licences for other proprietary engines was around millions of €s.
Only sound and graphic sources were available, code or scripts were not, so they had to be completely written, while playing the original game to know how the flow of the game had to be made.

When I arrived, I spent 2 months and a half scripting one of those games, then I joined the team responsible for the engine and the game’s code.
One of my most important endeavours in this team has been to port this engine, first to Android, then to the Nintendo Switch.

The engine and its tools

The Android port

Actually, the engine had been ported to Android for a first time using Marmalade: choosing this multi-platform technology seemed to make sense then, since we did expect to have to also port the games to Windows Phone, which meant making 2 ports at once. Also, Android NDK wasn’t really a thing when this port began. One game using this version of the engine had already been released on Amazon’s Android store.
The mysterious bugs we encountered while porting the next games, missing features (Marmalade didn’t even support multithreading on Android at the time) and the license cose dug the grave of that choice. I then decided to port the engine again using Android’s NDK, which had reached version r9d at that time.

Android’s NDK and SDK came with their share of problems, but at least they allowed us to have more control and to know where problems came from.
Some parts of the engine had to be completely re-written for Android:

I was then able to port the first 2 Syberia, Dracula 4 and 5 which were then still being developed, as well as around ten other games.

The build tool

A tool allowing us to build a version of the game had been created for this engine: it allowed us to configure many aspects of the build we needed to make (monolingual or multilingual, which platform, complete app or "Freemium"...). You could choose every build necessary in a list, they were then built one after the other.
I had to update this tool so it could build Android versions of the games.

The Nintendo Switch port


Anuman had decided the first 2 Syberia had to be released on the Nintendo Switch. Therefore I had to port the engine again.

It must be noted that the first 2 Syberia had already been ported to the PS3 and the Xbox360 a while ago, so many console-specific issues had already been solved.

Having our own engine for which we knew the sources, as well as the modernity of Ninteodo’s tools for the Switch made this task relatively easy.
Unfortunately I can’t go into more detail, Nintendo’s tools are under severe NDA.

We took this opportunity to fix issues and add missing things from previous versions. I also made it so the game can be controlled in every possible way on the Nintendo Switch:
I also had to program a version containing both games, allowing to switch from one game to the other from the main menu, which wasn’t easy because the engine of each game was slightly different and therefore incompatible. I sorted this out by putting in common the most possible code of both engines (making some parts that were different for no real reasons identical on the way), and putting everything else, next to the code specific to each game, inside 2 dynamically linked libraries. The game links the right library each time you switch from one game to another.

This version will be released on November 8th, 2018. Its development has gone on after I left Koalabs: Cloud saves have been added :)

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

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

Syberia for Nintendo Switch: https://www.nintendo.com/games/detail/syberia-switch

Syberia 2 for Nintendo Switch: https://www.nintendo.com/games/detail/syberia-2-switch

Other games

Other games using this engine had been delivered to our client at that period, for which I was responsible for the Android port, including Dracula 4 & 5, two new adventure games by Koalabs and Totm Studios, as well as much older games like the Atlantis series, the first three Dracula games, or RTMI 2.