Title: 1112 Oct 2005 Kuala Lumpur
1Developing Cross-platform Games for Mobile Devices
- Panutat Tejasen (A.K.A. Jimmy)CEO
FounderJimmy Software Ltd. - Chiang Mai Digital Works Ltd.
2Whos this guy?
- Panutat Tejasen
- (A.K.A. Jimmy)
- The Serial Entrepreneur
- www.jimmysoftware.comwww.cmdworks.com
3Our Business
J2ME MOBILE GAMES
MOBILE CONTENT
POCKET PC SOFTWARE
Producing advanced J2ME games for mobile phones
is one of our specialties. We pride ourselves on
the quality of games we produce both for the
smartphone and standard mobile phones.
We have created a large range of wallpapers. MMS
and animated screen savers for mobile devices
using our cute character sets. We also offer
custom design services.
Our advanced pocket PC games use the latest in
gaming technology and have won awards in both
Europe and America. We currently distribute our
extensive range of PPC games to over 50 countries
world wide.
CHARACTER DESIGN
LICENSING AGENT
DESIGN / RE-DESIGN
We specialize in cartoon design / development and
have produced 3 world class character sets. Each
set includes over 150 posses. 2D/3D animations,
games and merchan.
As well as producing our own cartoon character
series, we are also the licensing agents for
other cartoon character developers within Asia.
We license these character sets for all kinds of
animations and merchandise.
We have a fully equipped design studio with many
experienced graphic designers and character
developers for design projects. Our services
include Graphic Design, Corporate Design, Web
Design, Flash Animation and General Publications.
4Games
5Awards
6Developing Cross-platform Games for Mobile Devices
7Cross-Platform
- Desktop PC
- Windows / Macintosh / Linux
- Special Device
- HDLP (100 Dollar Laptop Project)
- Linux for iPod (just for fun)
- Windows Mobile
- Pocket PC
- MS Smartphone
- Symbian Phone
- Nokia S60,80,90
- Symbian UIQ
- J2ME Phone (Limited Support)
8What is the 100 Laptop, really?
- The proposed 100 machine will be
- a Linux-based, full-color, full-screen laptop
that will use innovative power (including
wind-up) and will be able to do most everything
except store huge amounts of data. - These rugged laptops will be WiFi- and cell
phone-enabled, and have USB ports galore. - Its current specifications are 500MHz, 1GB, 1
Megapixel.
9HDLP - 100 Dollar Laptop Project
10HDLP - 100 Dollar Laptop Project
11HDLP - 100 Dollar Laptop Project
12OLPC - One Laptop Per Child Project
- MIT cooperative with the governments.
- Brazil, China, Thailand, Egypt, South Africa
- Free 600,000 800,000 Laptops per year for
primary school students in Thailand
13Software?
- Additional Software needed
- Educational Software
- E-Book
- E-Learning
- Entertainment
- Games
- Government Sponsored Project
- Cross-platform educational software for PC and
HDL 600,000 HDL/year to student - Lower the software development cost for ISV
- Software Development Framework including the Game
Engine - Compatible with Mobile Devices
- 800,000 Mobile Phones Sales / month
- Symbian vs. J2ME
14Cross-PlatformSoftware Development
Frameworkwith Game Engine
- Desktop PC
- Windows / Macintosh / Linux
- Special Device
- HDLP (100 Dollar Laptop Project)
- Linux for iPod (just for fun)
- Windows Mobile
- Pocket PC
- MS Smartphone
- Symbian Phone
- Nokia S60,80,90
- Symbian UIQ
- J2ME Phone (Limited Support)
15Architecture
- Device dependent
- System memory, file, I/O
- Math floating point (with fixed point
implementation) - Display surface, double buffer, direct screen
access - Input keyboard, mouse, touch screen, joy stick
- Sound wave buffer mix, volume, stereo
- Device Independent
- 2D Graphics surface, bitmap, sprite
- 3D Graphics scene, 3d math, full-textured model
animation - Game Template Game Loop, Flip, Input state poll
- User Interface button, menu, textbox, list box,
check box, radio button - Script Supported
- Lua Script (selected among Python, Lua and
AngelScript)
16Development Tools
- PC
- Visual C 6.0 (OK, we know -- dont flame us!!!)
- MinGW, GCC
- wxWidgets, DialogBlocks
- Windows Mobile
- MS Embedded Visual Tools 3.0
- Symbian
- Nokia Series 60 1.2 SDK (Symbian 6.1)
- Nokia Series 60 2.0 SDK (Symbian 7.0s)
- Nokia Series 60 2.1 SDK (Symbian 7.0s)
- Nokia Series 60 2nd FP2 SDK (Symbian 8.0a)
- Nokia 9200 Communicator 1.2 SDK (Symbian 6.0)
- Nokia Series 80 2.0 SDK (Symbian 7.0s)
- Nokia7710 (Series 90) SDK (Symbian 7.0s)
- Symbian UIQ 2.1 SDK (Symbian 7.0)
17Hello World
- Write everything from scratch (May be released
as Open Source project) - We took 1 month to make it run on all real
devices - Symbian is a nightmare for Windows
Programmers(Finally, we need to separate team) - No multiple library support in Symbian ARMI
- Global Modifiable Data (GMD) is not allowed on
ARMI(Error message is .APP has initialized
data) - non-const global variables
- non-const static class member variables
- non-const local static variables
- Floating Point Exception in Symbian ARMI (Divided
by zero, overflow, underflow) - Everything OK on WINS
- I hate MMP, BLD.inf, BLDMAKE.bat, ABLD.bat
18Phase of Development
- Phase 1 (Released)
- E-Book Reader
- Phase 2 (Alpha)
- 2D Game Engine
- Phase 3 (Proofed of concept)
- 3D Game Engine
- 1500 polygons with full texture at minimum 25 FPS
using software render - Support both DirectX (Windows Mobile) and OpenGL
ES (Symbian) in the future
19Run-Time Device Identification
- Not reliable / Impossible in some devices
- Big difference among devices
- Dynamic Screen Size, Orientation, Bit Depth
- Double Resolution Support
- Double Buffer Support
- Input code changed in new model
- Key pad, Keyboard, Touch screen, Wheel, Joy
Stick, Mouse - No way to create one binary for all
20(No Transcript)
21(No Transcript)
22(No Transcript)
23(No Transcript)
24EXE INI RES - LUA
- Software Package for redistribute to users
- Executable File EXE, APP
- Engine Runtime DLL
- Resource RES
- Data pack of Bitmap, Sprite, Sound, Model,
Texture, Animation Files - Encrypted version of INI and LUA
- Configuration File INI
- Start-up Screen size, Orientation, Mode
- Default Input code
- Initialized value for device dependent variables
- Script File LUA
- For quick customization when we have no time to
compile or cant compile successfully on deadline
25J2ME
- PC, Linux, Windows Mobile, Symbian
- Share the same C Source Libraries
- Binary, INI, RES, LUA for each program
- J2ME
- Different source tree libraries
- Share INI
- Converter for RES
- No script support (no time yet, sorry)
26Code Modules
- Device dependent - Big mess here
- System memory, file, I/O
- Math floating point (with fixed point
implementation) - Display surface, double buffer, direct screen
access - Input keyboard, mouse, touch screen, joy stick
- Sound wave buffer mix, volume, stereo
- Device Independent Same on all devices (with
many ifdef) - 2D Graphics surface, bitmap, sprite
- 3D Graphics scene, 3d math, full-textured model
animation - Game Template Game Loop, Flip, Input state poll
- User Interface button, menu, textbox, list box,
check box, radio button - Script Supported
- Lua Script
27DEBUG in Win32 Simulation
- Device Independent part of code are exactly the
same for every devices - Simulate on Desktop PC (Win32 mode)
- Most of the program can debug on Desktop PC
Simulation - We hate real device debug (Actually, we never
success doing that on some devices)
28Application Class
- Initialize Screen
- Symbian use CCoeControl Derived Object (Not its
own Window created) - Infinite Loop
- Pump up message
- Poll Input Status
- Call Flip function to update and switch back
buffer
29Display Class
- Support many bit depth
- 8 Bit Palette (limited support using R-G-B 2-3-2)
- 16 Bit (R-G-B 4-4-4)
- 16 Bit (R-G-B 5-5-5)
- 16 Bit (R-G-B 5-6-5)
- 24 Bit (R-G-B 8-8-8)
- 24 Bit (B-G-R 8-8-8)
- 32 Bit (A-R-G-B 8-8-8-8)
- Need to use device specific graphics resource due
to speed problem to convert - Impossible to do one binary for all devices
because of resource file size
30Font
- Different size between each language model of
phone - Locale Identification is not support on some
devices - Some phone use 3rd party Language Tools
- Solve problem by using BITMAP FONTS
- Could not support full Unicode due to size of
BITMAP FONTS - Can do pixel level anti-alias
- Try to support sub-pixel anti-alias (Like
ClearType but too hard to do due to the LCD
alignment are vary
31Memory Class
- Use in Win32 Debug or Symbian WINS
- Prevent memory leak
- Use MACRO to allocate and free memory
- Create static variable to track memory allocation
and free - Report memory leak when program end
- Not support in real devices (Symbian ARMI)
- Use to simulate memory limitation when debug on
desktop PC
32Input
- Windows Mobile GAPI
- Define only 3 Key (A, B, C)
- Other key is totally different on each devices
- Symbian Phone
- Key code is not consistency
- Response time is vary
- Use Message and KeyState together to solve
problem - Very device dependent
- Table translation (via INI) to our key code to
solve problem - All key need to customizable many Bluetooth
joy-stick available
33Sound
- Support WAVE playback with multiple wave buffer
mix - Resume / Continue when phone called
- Stereo / Pan Control
- Volume Control
- Port the MOD player to play music save memory
but reduce speed
34Math
- Floating point math
- Use compiler supported
- Not use Double due to memory and speed
- Dont forget to turn off exception on Symbian
- Support Fixed point math
- Full compatible class (floating point / fixed
point) - Support future devices easily
- Easy to overflow / underflow
- We like its speed
35Future (Nightmare)
- Windows Mobile 5.0
- Nokia UI 3.0 (Symbian 9.0)
- Dynamic Screen (Size, Resolution, Orientation)
- Double Resolution
- Double Screen
- Direct X (Windows Mobile) vs. Open GL (Symbian)
36Game Design
- Screen Design
- Display Size Bit Depth
- Display Orientation / Dynamic Change
- Double Resolution / Pixel Pitch
- Sharp new 3D Screen
- No glasses 3D Screen
- Switch between 2D and 3D mode
37(No Transcript)
38(No Transcript)
39Game Design
- Input Problem
- Keypad
- Keyboard
- Touch Screen Button
- Stylus
40(No Transcript)
41Vector Graphics
- We ported Flash player to our library
- Good for title or cut-scene
- Too complicate to add script control
- Windows Meta File support
- Good result in speed
- Looks bad BITMAP is much better
- Need to pre-render to create sprite
- 3D textured surface
- May be the best solution
- Still need multiple texture file
- Get back to use multiple bitmap file
42Question?
- E-Mail jimmy _at_ jimmysoftware.com