Tuesday, March 29, 2005

Saving Earth On A Cellphone Can Be Hell on Earth For The Developer

Joystiq is reporting that John Carmack, co-owner of id Software and developer of the Doom 3 engine, is working on a cell phone based title of Doom. The game is tentatively titled "DoomRPG."

While the prospects of a Doom title on a mobile phone developed by Carmack (not a third party) are exciting, his thoughts on the limitations of cellphone development are much more interesting. He suggests that the primary limitations of cellphone development are the type of software which is most supported - Java over alternatives like BREW which support C/C++ - and the current sophistication and power of mobile hardware.

The problem with the hardware is a result primarily of the widespread inclusion of Java. The ubiquity of Java severly limits the potential of mobile phones. While Java is a wonderful solution for desktop environments primarly because of portability and the hardware technology - which are typically much faster and advanced when compared to mobile technologies - it proves to be the Achilles Heel of development for mobile phones. This is because Java is an interpretive langauge. In other words, the Java bytecode is interpreted by the Java Virtual Machine and then processed by the operating system. C/C++ and assembly language run directly on the operating system without the need of a mediary interpretor slowing the execution of the code. Java intrinsically operates slower then C/C++ which is a huge problem for game developers. The interpretive nature can cause problems in the way programs behave on other cell phone platforms as well.

Developing games in Java for cellphones often requires builds created for a specific model of phone. The reason is that each cellphone handles the bytecode differently, which can have undesired results at run time. If developers could write code which would directly interface with the hardware instead of running through an interpreter, there would be no need to tailor builds to specific phones (unless a version of the game was designed specifically to implement hardware features of a phone not available in other phone models).

Java limits the sophistication of games that can be developed. While it may be a great tool to develop simple games or become familiar with development on wireless environments, Qualcomm's Binary Runtime for Wireless Environments, or BREW, offers a developer a greater level of complexity and freedom and should become a major player in the mobile market. There is a place for Java, but the inclusion of alternatives will only progress what can be done with cellphones. It's time for manufacturers to embrace change.

You can read more about John Carmack's ideas for mobile development and his thoughts on change at his blog.

No comments: