Lua, Java and a little bit of history

Browsing the web I’ve discovered that LUA reached a popularity of 15 in tiobe rank. This is incredible, but also very interesting. Lua is a very simple but smart language that was designed to extend existing applications. Typically, to add scripting capacities in existing programs. This is a not a new idea, and a lot of technologies where available at that time, but most of them where not easy to implement.

The key differentiator of LUA was the integration simplicity. LUA is now very popular, but when I’ve first discovered it, it was not the case. I’ll do an “historical post” of what happened in the early days of In-Fusio regarding LUA, mobile, and Java.

In 1999, when we started In-Fusio, I’ve created the first connected game embedded in Mitsubishi device. At that time, the most advanced mobile game was snake (V1!) and we were delivering console quality game on mobile, but even more, we introduced connectivity with SMS. User was able to download new game levels each week through SMS….These games (BrainDrain, Push, Crazy Pet) also contained some hidden part, but obviously very hidden as not so many found them: there was the first 3D real time demo on a mobile phone, done using Vector Ball, a reminder of my early Amiga days

Some snapshots of Push, a Sokoban clone, embedded in Mitsubishi phones

But the issue was that the game where embedded, and not downloaded. User was not able to change his game. We started then to think to a way to download games.
Technically, it seems that it was possible, even with limited resources of the phone. We could expect around 16 to 32kb of available writeable flash memory for game. But due to security reasons and cross platform issues we needed to find either a scripting language, or a VM based engine.

So I started to evaluate the various technical solutions for this: from Python, Tcl/Tk, Java, JavaScript and of course Lua. Even Perl! I also looked at some alternative solution, mainly used in SetTopBox.

Rapidly , it appears that Python, Tcl/TK, JavaScript where really too heavy in terms of code size to fit into a mobile. Perl…no, definitvely not Perl for game!

So the remaining two where Java, and Lua. Remember, it was in 99 and MIDP was not yet even discussed. I’ve evaluated a couple of the “light java “implementation, like Waba, and another one that has been used in some lego engine.
But Lua looked great also, and was compliant with our requirement:

  • small footprint
  • easy integration
  • simple to understand and to use

I made a prototype of an integration with a “kind of” R-Type game on a Mitshubishi phone that worked well.But my godfeeling was that Java will be here for long time, and strategically speaking, it was better to follow the Java path. The KVM on Palm was also presented in JavaOne’99, the first JavaOne I’ve attended!
So we look deeper on the Java side, and found a nice JavaCard implementation by Schlumberger. It was really an amazing implementation, tailored for highly constrained JavaCard, so it could feet easily in mobile.
At that time we also discussed with Sun about Java licensing, but fee were really beyond expectations (Sun started by talking of a 10$ per handset license!). We decided to choose the VM implementation, a clean room implementation so no fee for Sun as long as we did not put any Java logo on the mobile. So we decided to use Java instead of LUA.

The first implementation took some time, but when we had the first real handsets, we had a big surprise: it was ssoooooo slow, and unusable for games! Was hard to go beyond a simple minesweeper game. So we decided two things:

  • improve the speed of the VM, by working with Schlumberger
  • create high level game API

So we created Sprite, Layer component, animation, etc…to speed up things, a complete game api. We also added a raycast engine that could be used to create 3D effects with processing power of mobile of that time. In fact, all the rendering and the animation was done natively, while Java was used more as a scripting engine. And that’s where the MIDP2 game API came. Here are a few snapshot of the first black and white created for the platform:

Some of the early Exen games….

The first prototype was demonstrated in September 2000. Even internally, the game developer team was not convinced with the ability to create arcade quality game on mobile. But the first game produced externally on this platform, by Kalisto, “Tinies Farter” (yes!) was a great and really playable arcade games, and gave us confidence in the ability to create more cool games.

With a launch early 2001 with D2 in Germany, closely followed by Orange in France, and more operators later on.
Since day one, the system has been conceived with an ecosystem for game developer, operators, and us, so we started to make revenue from day1, while it took years for J2me to reach maturity. We thought that we had a 6 to 12 month windows of opportunity with Exen, but it appears that the window was more 24 to 36 months, with a total deployment of more than 50 millions of handsets….Not bad for a small window of opportunity.

The story is not yet ended, but we will write this another time….
Identificateurs Technorati : , , ,

6 thoughts on “Lua, Java and a little bit of history”

  1. Yeah, I worked with you, Tom, as a game programmer.
    So many constraints to get the thing working at decent speed / memory footprint, it was definitively challenging !
    Had a great time !! (I never had so much fun at work since that time, to be honest)

  2. Yeah Arnaud & Tom, I also worked with you :)

    “all these new 3d holographic games are crap , remember how much fun we had playing with monochrome games”

    50 millions handsets are embedded with some bugs i introduced in first exen release (then had to be kept for “platform consistency”) , a nice figure i should add on my CV …

    this period was fun and challenging, but i don’t miss the 32 Kb of heap memory limitation ! now 1Megabyte is not enough :)

  3. Hello Arnaud and Typlan! Yes, it was great fun, and hard work! Exen was the Android of these days… ;-)

    And Arnaud (and then me) is looking for videos of this famous “Exen demo contest” taking place during the Poitier event, does anybody of you got them?

  4. Hey! Are there any decent interpreters for MIDP today? I would love a simple JVM-on-JVM approach. I know my phone has 96MB of RAM, it should almost be possible :)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>