SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
Series 40 Developer Training
Getting Started with 3D Game
Development on Nokia Series 40 Asha
Phones

Michael Samarin, Ph.D
Director,
Developer Training and Evangelism
Futurice Oy
Resurrect
                                         Walking
    Bring      Interest to
                                       Through 3D
Attention to   Mobile Java
                               Brief    Examples
Real 3D APIs        3D
                             JSR-184      with
     on          JSR-184
                              (M3G)     NetBeans
   Nokia          (M3G)
                               Tour     and Nokia
 Series 40      For Game
                                       SDK 1.1 for
   (Asha)        Making
                                          Java
Series 40
› 675 Million Devices
› 3.9 Million Daily Downloads
› Price range 35 – 140 Euro


› Gaming Studios to compete with: EA, Gameloft, Rovio, India
  Games
http://youtu.be/AnD0nfAwNUY
Nokia X3-02     Nokia Asha 303




      3D: 30 to 40 FPS
http://youtu.be/4wsGh-AOSzE
› Object-Oriented 3D
                › Scene Graph based
                › Optional MIDP JSR
Enter JSR-184   › Very compact API
                › Very fast development
        M3G     › Optimized for small memory
                  and budget CPU
                › Excellent implementation on
                  Series 40
M3G Tour
APIs and Tools
Lightweight API, only 30 classes
AnimationController   IndexBuffer        RayIntersection
AnimationTrack        KeyframeSequence   SkinnedMesh
Appearance            Light              Sprite3D
Background            Loader             Texture2D
Camera                Material           Transform
CompositingMode       Mesh               Transformable
Fog                   MorphingMesh       TriangleStripArray
Graphics3D            Node               VertexArray
Group                 Object3D           VertexBuffer
Image2D               PolygonMode        World
› Immediate mode
           › Similar to OpenGL ideology

        › Retained mode

Modes      › Scene Graph based
           › Entire Scene Graph can be
             restored from file
           › Well defined M3G format

        › Can be freely mixed
Scene Graph
        Background         Mesh


          Group        Morphing Mesh


World                   Skinned Mesh
                                       Sprite 3D
                           Group
                                       Sprite 3D   User Object
          Group           Camera


                           Light
› World
                  › Background
               › Morphing and Skinned Mesh
       Most       › Animated Geometry Objects
 Interesting   › Mesh
Scene Graph
   Elements       › 3D Geometry of Visible Object

               › Sprite 3D
                  › 2D image in 3D space
public class SimpleWorld extends MIDlet {
    Canvas3D canvas3D;
         public void startApp() {
        canvas3D = new Canvas3D();
        Display.getDisplay(this).setCurrent(canvas3D);
    }
    public void pauseApp() {
    }
    public void destroyApp(boolean unconditional) {
    }
}
public class Canvas3D extends Canvas

            implements Runnable {

     public Canvas3D(){

     }

     public void paint(Graphics g) {

     }

     public void run() {

     }

}
public class Canvas3D extends Canvas

            implements Runnable {
                                       private Thread thread;
     public Canvas3D(){
                                       private long startTime;
     }
                                       private Graphics3D graphics3D;
     public void paint(Graphics g) {
                                       private World world;
     }
                                       private Camera camera;
     public void run() {
                                       private boolean running = false;
     }

}
setFullScreenMode(true);

                                       thread = newThread(this);
public class Canvas3D extends Canvas
                                       startTime= System.currentTimeMillis()
            implements Runnable {
                                       graphics3D= Graphics3D.getInstance();
     public Canvas3D(){
                                       world = new World();
     }
                                       camera = new Camera();
     public void paint(Graphics g) {
                                       floataspect = (float) getWidth()/ (float) getHeight();
     }
                                       camera.setPerspective(30.0f,aspect, 1.0f, 1000.0f);
     public void run() {               world.addChild(camera);

     }                                 world.setActiveCamera(camera);

}                                      running = true;

                                       thread.start();
public class Canvas3D extends Canvas

            implements Runnable {
                                       graphics3D.bindTarget(g);
     public Canvas3D(){
                                       world.animate(
     }
                                             (int)(System.currentTimeMillis() -
     public void paint(Graphics g) {         startTime));

     }                                 graphics3D.render(world);

     public void run() {               graphics3D.releaseTarget();

     }

}
public class Canvas3D extends Canvas

            implements Runnable {

     public Canvas3D(){                while (running){
     }                                       repaint();
     public void paint(Graphics g) {         Thread.sleep(20);
     }                                 }
     public void run() {

     }

}
Claus
Höfele




         http://www.ibm.com/developerworks/wireless/library/wi-mobile1/
         http://www.ibm.com/developerworks/wireless/library/wi-mobile2/
private static final byte[] VERTEX_POSITIONS = {

     -1, -1, 1, 1, -1, 1, -1, 1, 1, 1, 1, 1,

     -1, -1, -1, 1, -1, -1, -1, 1, -1, 1, 1, -1

};

private static int[] TRIANGLE_INDICES = {

     0, 1, 2, 3, 7, 1, 5, 4, 7, 6, 2, 4, 0, 1

};
// Create vertex data.

VertexBuffer cubeVertexData = new VertexBuffer();

cubeVertexData.setDefaultColor(0x000000FF);

VertexArray vertexPositions =

    new VertexArray(VERTEX_POSITIONS.length / 3, 3, 1);

vertexPositions.set(0, VERTEX_POSITIONS.length / 3,VERTEX_POSITIONS);

cubeVertexData.setPositions(vertexPositions, 1.0f, null);

// Create the triangles that define the cube; the indices point to

// vertices in VERTEX_POSITIONS.

TriangleStripArray cubeTriangles = new TriangleStripArray(

    TRIANGLE_INDICES, new int[]{TRIANGLE_INDICES.length});
Material material = new Material();

material.setVertexColorTrackingEnable(true);

Appearance appearance = newAppearance();

appearance.setMaterial(material);

// Create a Mesh that represents the cube.

Mesh cubeMesh = new Mesh(cubeVertexData, cubeTriangles, appearance);

cubeMesh.setOrientation(20.0f, 1.0f, 2.0f, 3.0f);

cubeMesh.setUserID(1);

world.addChild(cubeMesh);
Light light = new Light();

light.setMode(Light.SPOT);

light.setSpotAngle(80);

light.setSpotExponent(0);

light.setTranslation(0.0f, 0.0f, 3.0f);

world.addChild(light);
Live Demo
http://youtu.be/JAP0y9moeao
http://youtu.be/i51juyXAW-4
› Serialized entire Scene
             Graph
M3G File   › Animations, Textures, etc.
 Format    › Compressed
           › Well defined structure
setFullScreenMode(true);
public class Canvas3D extends Canvas   thread = newThread(this);
            implements Runnable {      startTime= System.currentTimeMillis()

     public Canvas3D(){                graphics3D= Graphics3D.getInstance();

     }                                 Object3D[]objects = Loader.load("/cube.m3g");

     public void paint(Graphics g) {   world = (World)objects[0];

     }                                 Camera camera = world.getActiveCamera();

                                       floataspect = (float) getWidth()/ (float) getHeight();
     public void run() {
                                       camera.setPerspective(60.0f,aspect, 1.0f, 1000.0f);
     }
                                       running = true;
}
                                       thread.start();
Blender 2.49
› Blender Plugin for 2.49
             › Created by Nelson Games:
M3G Export   › http://www.nelson-games.de
Live Demo
M3GToolkit   › http://www.java4ever.com/
“Bebe”   › Blender Scene
 Model   › Created by David Sanguinett
Live Demo
http://youtu.be/V6Zy1NFFGrk
http://www.developer.nokia.com/Resources/Library/Java
Live Demo
› Java Heap size (1 – 4 MB)
           › JAR file size ( 1 – 2 MB)
           › CPU speed
           › Screen Size 240x 320, 320x240, 128x160
Consider   › Input Type: T9, Qwerty, Touch-And-Type
           › Use Nokia Device Matrix
           › Remote Device Access
Textures by: http://www.filterforge.com, http://www.squidoo.com
http://youtu.be/O36PQOGMqMM
Nokia C2-02
http://youtu.be/aolNL0jQ940
http://youtu.be/3a-LqHrVbko
http://youtu.be/Z8B07rp0N_I
Thank you!




  @MichaelSamarin
http://www.futurice.com

Weitere ähnliche Inhalte

Was ist angesagt?

libGDX: Simple Frame Animation
libGDX: Simple Frame AnimationlibGDX: Simple Frame Animation
libGDX: Simple Frame AnimationJussi Pohjolainen
 
HoloLens Programming Tutorial: AirTap & Spatial Mapping
HoloLens Programming Tutorial: AirTap & Spatial MappingHoloLens Programming Tutorial: AirTap & Spatial Mapping
HoloLens Programming Tutorial: AirTap & Spatial MappingTakashi Yoshinaga
 
Geometry Shader-based Bump Mapping Setup
Geometry Shader-based Bump Mapping SetupGeometry Shader-based Bump Mapping Setup
Geometry Shader-based Bump Mapping SetupMark Kilgard
 
CUDA by Example : Constant Memory and Events : Notes
CUDA by Example : Constant Memory and Events : NotesCUDA by Example : Constant Memory and Events : Notes
CUDA by Example : Constant Memory and Events : NotesSubhajit Sahu
 
Implementing a Simple Game using libGDX
Implementing a Simple Game using libGDXImplementing a Simple Game using libGDX
Implementing a Simple Game using libGDXJussi Pohjolainen
 
OpenGL L07-Skybox and Terrian
OpenGL L07-Skybox and TerrianOpenGL L07-Skybox and Terrian
OpenGL L07-Skybox and TerrianMohammad Shaker
 
"Используем MetricKit в бою" / Марина Звягина (Vivid Money)
"Используем MetricKit в бою" / Марина Звягина (Vivid Money)"Используем MetricKit в бою" / Марина Звягина (Vivid Money)
"Используем MetricKit в бою" / Марина Звягина (Vivid Money)Egor Petrov
 
Gdc2011 direct x 11 rendering in battlefield 3
Gdc2011 direct x 11 rendering in battlefield 3Gdc2011 direct x 11 rendering in battlefield 3
Gdc2011 direct x 11 rendering in battlefield 3drandom
 
Gdc09 Minigames
Gdc09 MinigamesGdc09 Minigames
Gdc09 MinigamesSusan Gold
 
Shadow Volumes on Programmable Graphics Hardware
Shadow Volumes on Programmable Graphics HardwareShadow Volumes on Programmable Graphics Hardware
Shadow Volumes on Programmable Graphics Hardwarestefan_b
 
Custom SRP and graphics workflows - Unite Copenhagen 2019
Custom SRP and graphics workflows - Unite Copenhagen 2019Custom SRP and graphics workflows - Unite Copenhagen 2019
Custom SRP and graphics workflows - Unite Copenhagen 2019Unity Technologies
 
[C++ GUI Programming with Qt4] chap8
[C++ GUI Programming with Qt4] chap8[C++ GUI Programming with Qt4] chap8
[C++ GUI Programming with Qt4] chap8Picker Weng
 

Was ist angesagt? (15)

libGDX: Simple Frame Animation
libGDX: Simple Frame AnimationlibGDX: Simple Frame Animation
libGDX: Simple Frame Animation
 
HoloLens Programming Tutorial: AirTap & Spatial Mapping
HoloLens Programming Tutorial: AirTap & Spatial MappingHoloLens Programming Tutorial: AirTap & Spatial Mapping
HoloLens Programming Tutorial: AirTap & Spatial Mapping
 
Geometry Shader-based Bump Mapping Setup
Geometry Shader-based Bump Mapping SetupGeometry Shader-based Bump Mapping Setup
Geometry Shader-based Bump Mapping Setup
 
libGDX: Tiled Maps
libGDX: Tiled MapslibGDX: Tiled Maps
libGDX: Tiled Maps
 
CUDA by Example : Constant Memory and Events : Notes
CUDA by Example : Constant Memory and Events : NotesCUDA by Example : Constant Memory and Events : Notes
CUDA by Example : Constant Memory and Events : Notes
 
Implementing a Simple Game using libGDX
Implementing a Simple Game using libGDXImplementing a Simple Game using libGDX
Implementing a Simple Game using libGDX
 
OpenGL L07-Skybox and Terrian
OpenGL L07-Skybox and TerrianOpenGL L07-Skybox and Terrian
OpenGL L07-Skybox and Terrian
 
"Используем MetricKit в бою" / Марина Звягина (Vivid Money)
"Используем MetricKit в бою" / Марина Звягина (Vivid Money)"Используем MetricKit в бою" / Марина Звягина (Vivid Money)
"Используем MetricKit в бою" / Марина Звягина (Vivid Money)
 
Gdc2011 direct x 11 rendering in battlefield 3
Gdc2011 direct x 11 rendering in battlefield 3Gdc2011 direct x 11 rendering in battlefield 3
Gdc2011 direct x 11 rendering in battlefield 3
 
Gdc09 Minigames
Gdc09 MinigamesGdc09 Minigames
Gdc09 Minigames
 
Cross Platform Qt
Cross Platform QtCross Platform Qt
Cross Platform Qt
 
Shadow Volumes on Programmable Graphics Hardware
Shadow Volumes on Programmable Graphics HardwareShadow Volumes on Programmable Graphics Hardware
Shadow Volumes on Programmable Graphics Hardware
 
Custom SRP and graphics workflows - Unite Copenhagen 2019
Custom SRP and graphics workflows - Unite Copenhagen 2019Custom SRP and graphics workflows - Unite Copenhagen 2019
Custom SRP and graphics workflows - Unite Copenhagen 2019
 
[C++ GUI Programming with Qt4] chap8
[C++ GUI Programming with Qt4] chap8[C++ GUI Programming with Qt4] chap8
[C++ GUI Programming with Qt4] chap8
 
GLSL
GLSLGLSL
GLSL
 

Andere mochten auch

The complete srs documentation of our developed game.
The complete srs documentation of our developed game. The complete srs documentation of our developed game.
The complete srs documentation of our developed game. Isfand yar Khan
 
Android Application And Unity3D Game Documentation
Android Application And Unity3D Game DocumentationAndroid Application And Unity3D Game Documentation
Android Application And Unity3D Game DocumentationSneh Raval
 
Game Development Step by Step
Game Development Step by StepGame Development Step by Step
Game Development Step by StepBayu Sembada
 
An Introduction To Game development
An Introduction To Game developmentAn Introduction To Game development
An Introduction To Game developmentAhmed
 
Final project report of a game
Final project report of a gameFinal project report of a game
Final project report of a gameNadia Nahar
 

Andere mochten auch (6)

The complete srs documentation of our developed game.
The complete srs documentation of our developed game. The complete srs documentation of our developed game.
The complete srs documentation of our developed game.
 
Android Application And Unity3D Game Documentation
Android Application And Unity3D Game DocumentationAndroid Application And Unity3D Game Documentation
Android Application And Unity3D Game Documentation
 
Game Development Step by Step
Game Development Step by StepGame Development Step by Step
Game Development Step by Step
 
Introduction to Game Development
Introduction to Game DevelopmentIntroduction to Game Development
Introduction to Game Development
 
An Introduction To Game development
An Introduction To Game developmentAn Introduction To Game development
An Introduction To Game development
 
Final project report of a game
Final project report of a gameFinal project report of a game
Final project report of a game
 

Ähnlich wie Getting Started with 3D Game Development on Nokia Series 40 Asha Phones

2011.05.27 ACC 기술세미나 : Adobe Flash Builder 4.5를 환경에서 Molehill 3D를 이용한 개발 소개
2011.05.27 ACC 기술세미나 : Adobe Flash Builder 4.5를 환경에서 Molehill 3D를 이용한 개발 소개2011.05.27 ACC 기술세미나 : Adobe Flash Builder 4.5를 환경에서 Molehill 3D를 이용한 개발 소개
2011.05.27 ACC 기술세미나 : Adobe Flash Builder 4.5를 환경에서 Molehill 3D를 이용한 개발 소개Yongho Ji
 
WPF L03-3D Rendering and 3D Animation
WPF L03-3D Rendering and 3D AnimationWPF L03-3D Rendering and 3D Animation
WPF L03-3D Rendering and 3D AnimationMohammad Shaker
 
Unconventional webapps with gwt:elemental & html5
Unconventional webapps with gwt:elemental & html5Unconventional webapps with gwt:elemental & html5
Unconventional webapps with gwt:elemental & html5firenze-gtug
 
Java ME - 08 - Mobile 3D Graphics
Java ME - 08 - Mobile 3D GraphicsJava ME - 08 - Mobile 3D Graphics
Java ME - 08 - Mobile 3D GraphicsAndreas Jakl
 
Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Takao Wada
 
Mochi London 2011
Mochi London 2011Mochi London 2011
Mochi London 2011Mike Jones
 
Game development with Cocos2d
Game development with Cocos2dGame development with Cocos2d
Game development with Cocos2dVinsol
 
Useful Tools for Making Video Games - XNA (2008)
Useful Tools for Making Video Games - XNA (2008)Useful Tools for Making Video Games - XNA (2008)
Useful Tools for Making Video Games - XNA (2008)Korhan Bircan
 
Augmented Reality With FlarToolkit and Papervision3D
Augmented Reality With FlarToolkit and Papervision3DAugmented Reality With FlarToolkit and Papervision3D
Augmented Reality With FlarToolkit and Papervision3DRoman Protsyk
 
Game development with_lib_gdx
Game development with_lib_gdxGame development with_lib_gdx
Game development with_lib_gdxGabriel Grill
 
HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?Ankara JUG
 
426 lecture 4: AR Developer Tools
426 lecture 4: AR Developer Tools426 lecture 4: AR Developer Tools
426 lecture 4: AR Developer ToolsMark Billinghurst
 
14multithreaded Graphics
14multithreaded Graphics14multithreaded Graphics
14multithreaded GraphicsAdil Jafri
 
Game Development for Nokia Asha Devices with Java ME #2
Game Development for Nokia Asha Devices with Java ME #2Game Development for Nokia Asha Devices with Java ME #2
Game Development for Nokia Asha Devices with Java ME #2Marlon Luz
 
How to Create Custom Shaders in Flutter?
How to Create Custom Shaders in Flutter?How to Create Custom Shaders in Flutter?
How to Create Custom Shaders in Flutter?Flutter Agency
 

Ähnlich wie Getting Started with 3D Game Development on Nokia Series 40 Asha Phones (20)

2011.05.27 ACC 기술세미나 : Adobe Flash Builder 4.5를 환경에서 Molehill 3D를 이용한 개발 소개
2011.05.27 ACC 기술세미나 : Adobe Flash Builder 4.5를 환경에서 Molehill 3D를 이용한 개발 소개2011.05.27 ACC 기술세미나 : Adobe Flash Builder 4.5를 환경에서 Molehill 3D를 이용한 개발 소개
2011.05.27 ACC 기술세미나 : Adobe Flash Builder 4.5를 환경에서 Molehill 3D를 이용한 개발 소개
 
WPF L03-3D Rendering and 3D Animation
WPF L03-3D Rendering and 3D AnimationWPF L03-3D Rendering and 3D Animation
WPF L03-3D Rendering and 3D Animation
 
Unconventional webapps with gwt:elemental & html5
Unconventional webapps with gwt:elemental & html5Unconventional webapps with gwt:elemental & html5
Unconventional webapps with gwt:elemental & html5
 
WebGL 3D player
WebGL 3D playerWebGL 3D player
WebGL 3D player
 
Java ME - 08 - Mobile 3D Graphics
Java ME - 08 - Mobile 3D GraphicsJava ME - 08 - Mobile 3D Graphics
Java ME - 08 - Mobile 3D Graphics
 
Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5Trident International Graphics Workshop 2014 1/5
Trident International Graphics Workshop 2014 1/5
 
Mochi London 2011
Mochi London 2011Mochi London 2011
Mochi London 2011
 
3D everywhere
3D everywhere3D everywhere
3D everywhere
 
Game development with Cocos2d
Game development with Cocos2dGame development with Cocos2d
Game development with Cocos2d
 
Useful Tools for Making Video Games - XNA (2008)
Useful Tools for Making Video Games - XNA (2008)Useful Tools for Making Video Games - XNA (2008)
Useful Tools for Making Video Games - XNA (2008)
 
Augmented Reality With FlarToolkit and Papervision3D
Augmented Reality With FlarToolkit and Papervision3DAugmented Reality With FlarToolkit and Papervision3D
Augmented Reality With FlarToolkit and Papervision3D
 
Three.js basics
Three.js basicsThree.js basics
Three.js basics
 
Game development with_lib_gdx
Game development with_lib_gdxGame development with_lib_gdx
Game development with_lib_gdx
 
HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?
 
426 lecture 4: AR Developer Tools
426 lecture 4: AR Developer Tools426 lecture 4: AR Developer Tools
426 lecture 4: AR Developer Tools
 
Cocos2d 소개 - Korea Linux Forum 2014
Cocos2d 소개 - Korea Linux Forum 2014Cocos2d 소개 - Korea Linux Forum 2014
Cocos2d 소개 - Korea Linux Forum 2014
 
MIDP: Game API
MIDP: Game APIMIDP: Game API
MIDP: Game API
 
14multithreaded Graphics
14multithreaded Graphics14multithreaded Graphics
14multithreaded Graphics
 
Game Development for Nokia Asha Devices with Java ME #2
Game Development for Nokia Asha Devices with Java ME #2Game Development for Nokia Asha Devices with Java ME #2
Game Development for Nokia Asha Devices with Java ME #2
 
How to Create Custom Shaders in Flutter?
How to Create Custom Shaders in Flutter?How to Create Custom Shaders in Flutter?
How to Create Custom Shaders in Flutter?
 

Mehr von Microsoft Mobile Developer

Intro to Nokia X software platform 2.0 and tools
Intro to Nokia X software platform 2.0 and toolsIntro to Nokia X software platform 2.0 and tools
Intro to Nokia X software platform 2.0 and toolsMicrosoft Mobile Developer
 
Location based services for Nokia X and Nokia Asha using Geo2tag
Location based services for Nokia X and Nokia Asha using Geo2tagLocation based services for Nokia X and Nokia Asha using Geo2tag
Location based services for Nokia X and Nokia Asha using Geo2tagMicrosoft Mobile Developer
 
Lumia App Labs: Lessons learned from 50 windows phone 8 design consultations
Lumia App Labs: Lessons learned from 50 windows phone 8 design consultationsLumia App Labs: Lessons learned from 50 windows phone 8 design consultations
Lumia App Labs: Lessons learned from 50 windows phone 8 design consultationsMicrosoft Mobile Developer
 
Windows Phone 8 speech: parliamo con la nostra app
Windows Phone 8 speech: parliamo con la nostra appWindows Phone 8 speech: parliamo con la nostra app
Windows Phone 8 speech: parliamo con la nostra appMicrosoft Mobile Developer
 
La pubblicazione di un'applicazione sullo store
La pubblicazione di un'applicazione sullo storeLa pubblicazione di un'applicazione sullo store
La pubblicazione di un'applicazione sullo storeMicrosoft Mobile Developer
 
Il pattern mvvm come strutturare al meglio il vostro progetto
Il pattern mvvm come strutturare al meglio il vostro progettoIl pattern mvvm come strutturare al meglio il vostro progetto
Il pattern mvvm come strutturare al meglio il vostro progettoMicrosoft Mobile Developer
 

Mehr von Microsoft Mobile Developer (20)

Intro to Nokia X software platform 2.0 and tools
Intro to Nokia X software platform 2.0 and toolsIntro to Nokia X software platform 2.0 and tools
Intro to Nokia X software platform 2.0 and tools
 
Lumia App Labs: Lumia SensorCore SDK beta
Lumia App Labs: Lumia SensorCore SDK betaLumia App Labs: Lumia SensorCore SDK beta
Lumia App Labs: Lumia SensorCore SDK beta
 
Nokia Asha from idea to app - Imaging
Nokia Asha from idea to app - ImagingNokia Asha from idea to app - Imaging
Nokia Asha from idea to app - Imaging
 
Healthcare apps for Nokia X and Nokia Asha
Healthcare apps for Nokia X and Nokia AshaHealthcare apps for Nokia X and Nokia Asha
Healthcare apps for Nokia X and Nokia Asha
 
Push notifications on Nokia X
Push notifications on Nokia XPush notifications on Nokia X
Push notifications on Nokia X
 
DIY Nokia Asha app usability studies
DIY Nokia Asha app usability studiesDIY Nokia Asha app usability studies
DIY Nokia Asha app usability studies
 
Lessons learned from Nokia X UI reviews
Lessons learned from Nokia X UI reviewsLessons learned from Nokia X UI reviews
Lessons learned from Nokia X UI reviews
 
Location based services for Nokia X and Nokia Asha using Geo2tag
Location based services for Nokia X and Nokia Asha using Geo2tagLocation based services for Nokia X and Nokia Asha using Geo2tag
Location based services for Nokia X and Nokia Asha using Geo2tag
 
HERE Maps for the Nokia X platform
HERE Maps for the Nokia X platformHERE Maps for the Nokia X platform
HERE Maps for the Nokia X platform
 
Nokia In-App Payment - UX considerations
Nokia In-App Payment - UX considerationsNokia In-App Payment - UX considerations
Nokia In-App Payment - UX considerations
 
Introduction to Nokia Asha SDK 1.2 (beta)
Introduction to Nokia Asha SDK 1.2 (beta)Introduction to Nokia Asha SDK 1.2 (beta)
Introduction to Nokia Asha SDK 1.2 (beta)
 
UX considerations when porting to Nokia X
UX considerations when porting to Nokia XUX considerations when porting to Nokia X
UX considerations when porting to Nokia X
 
Kids' games and educational app design
Kids' games and educational app designKids' games and educational app design
Kids' games and educational app design
 
Nokia X: opportunities for developers
Nokia X: opportunities for developersNokia X: opportunities for developers
Nokia X: opportunities for developers
 
Lumia App Labs: Nokia Imaging SDK 1.1
Lumia App Labs: Nokia Imaging SDK 1.1Lumia App Labs: Nokia Imaging SDK 1.1
Lumia App Labs: Nokia Imaging SDK 1.1
 
Intro to Nokia X software platform and tools
Intro to Nokia X software platform and toolsIntro to Nokia X software platform and tools
Intro to Nokia X software platform and tools
 
Lumia App Labs: Lessons learned from 50 windows phone 8 design consultations
Lumia App Labs: Lessons learned from 50 windows phone 8 design consultationsLumia App Labs: Lessons learned from 50 windows phone 8 design consultations
Lumia App Labs: Lessons learned from 50 windows phone 8 design consultations
 
Windows Phone 8 speech: parliamo con la nostra app
Windows Phone 8 speech: parliamo con la nostra appWindows Phone 8 speech: parliamo con la nostra app
Windows Phone 8 speech: parliamo con la nostra app
 
La pubblicazione di un'applicazione sullo store
La pubblicazione di un'applicazione sullo storeLa pubblicazione di un'applicazione sullo store
La pubblicazione di un'applicazione sullo store
 
Il pattern mvvm come strutturare al meglio il vostro progetto
Il pattern mvvm come strutturare al meglio il vostro progettoIl pattern mvvm come strutturare al meglio il vostro progetto
Il pattern mvvm come strutturare al meglio il vostro progetto
 

Kürzlich hochgeladen

Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 

Kürzlich hochgeladen (20)

Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 

Getting Started with 3D Game Development on Nokia Series 40 Asha Phones

  • 1. Series 40 Developer Training Getting Started with 3D Game Development on Nokia Series 40 Asha Phones Michael Samarin, Ph.D Director, Developer Training and Evangelism Futurice Oy
  • 2. Resurrect Walking Bring Interest to Through 3D Attention to Mobile Java Brief Examples Real 3D APIs 3D JSR-184 with on JSR-184 (M3G) NetBeans Nokia (M3G) Tour and Nokia Series 40 For Game SDK 1.1 for (Asha) Making Java
  • 3. Series 40 › 675 Million Devices › 3.9 Million Daily Downloads › Price range 35 – 140 Euro › Gaming Studios to compete with: EA, Gameloft, Rovio, India Games
  • 4.
  • 6. Nokia X3-02 Nokia Asha 303 3D: 30 to 40 FPS
  • 8. › Object-Oriented 3D › Scene Graph based › Optional MIDP JSR Enter JSR-184 › Very compact API › Very fast development M3G › Optimized for small memory and budget CPU › Excellent implementation on Series 40
  • 10. Lightweight API, only 30 classes AnimationController IndexBuffer RayIntersection AnimationTrack KeyframeSequence SkinnedMesh Appearance Light Sprite3D Background Loader Texture2D Camera Material Transform CompositingMode Mesh Transformable Fog MorphingMesh TriangleStripArray Graphics3D Node VertexArray Group Object3D VertexBuffer Image2D PolygonMode World
  • 11. › Immediate mode › Similar to OpenGL ideology › Retained mode Modes › Scene Graph based › Entire Scene Graph can be restored from file › Well defined M3G format › Can be freely mixed
  • 12. Scene Graph Background Mesh Group Morphing Mesh World Skinned Mesh Sprite 3D Group Sprite 3D User Object Group Camera Light
  • 13. › World › Background › Morphing and Skinned Mesh Most › Animated Geometry Objects Interesting › Mesh Scene Graph Elements › 3D Geometry of Visible Object › Sprite 3D › 2D image in 3D space
  • 14. public class SimpleWorld extends MIDlet { Canvas3D canvas3D; public void startApp() { canvas3D = new Canvas3D(); Display.getDisplay(this).setCurrent(canvas3D); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } }
  • 15. public class Canvas3D extends Canvas implements Runnable { public Canvas3D(){ } public void paint(Graphics g) { } public void run() { } }
  • 16. public class Canvas3D extends Canvas implements Runnable { private Thread thread; public Canvas3D(){ private long startTime; } private Graphics3D graphics3D; public void paint(Graphics g) { private World world; } private Camera camera; public void run() { private boolean running = false; } }
  • 17. setFullScreenMode(true); thread = newThread(this); public class Canvas3D extends Canvas startTime= System.currentTimeMillis() implements Runnable { graphics3D= Graphics3D.getInstance(); public Canvas3D(){ world = new World(); } camera = new Camera(); public void paint(Graphics g) { floataspect = (float) getWidth()/ (float) getHeight(); } camera.setPerspective(30.0f,aspect, 1.0f, 1000.0f); public void run() { world.addChild(camera); } world.setActiveCamera(camera); } running = true; thread.start();
  • 18. public class Canvas3D extends Canvas implements Runnable { graphics3D.bindTarget(g); public Canvas3D(){ world.animate( } (int)(System.currentTimeMillis() - public void paint(Graphics g) { startTime)); } graphics3D.render(world); public void run() { graphics3D.releaseTarget(); } }
  • 19. public class Canvas3D extends Canvas implements Runnable { public Canvas3D(){ while (running){ } repaint(); public void paint(Graphics g) { Thread.sleep(20); } } public void run() { } }
  • 20. Claus Höfele http://www.ibm.com/developerworks/wireless/library/wi-mobile1/ http://www.ibm.com/developerworks/wireless/library/wi-mobile2/
  • 21. private static final byte[] VERTEX_POSITIONS = { -1, -1, 1, 1, -1, 1, -1, 1, 1, 1, 1, 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, 1, 1, -1 }; private static int[] TRIANGLE_INDICES = { 0, 1, 2, 3, 7, 1, 5, 4, 7, 6, 2, 4, 0, 1 };
  • 22. // Create vertex data. VertexBuffer cubeVertexData = new VertexBuffer(); cubeVertexData.setDefaultColor(0x000000FF); VertexArray vertexPositions = new VertexArray(VERTEX_POSITIONS.length / 3, 3, 1); vertexPositions.set(0, VERTEX_POSITIONS.length / 3,VERTEX_POSITIONS); cubeVertexData.setPositions(vertexPositions, 1.0f, null); // Create the triangles that define the cube; the indices point to // vertices in VERTEX_POSITIONS. TriangleStripArray cubeTriangles = new TriangleStripArray( TRIANGLE_INDICES, new int[]{TRIANGLE_INDICES.length});
  • 23. Material material = new Material(); material.setVertexColorTrackingEnable(true); Appearance appearance = newAppearance(); appearance.setMaterial(material); // Create a Mesh that represents the cube. Mesh cubeMesh = new Mesh(cubeVertexData, cubeTriangles, appearance); cubeMesh.setOrientation(20.0f, 1.0f, 2.0f, 3.0f); cubeMesh.setUserID(1); world.addChild(cubeMesh);
  • 24. Light light = new Light(); light.setMode(Light.SPOT); light.setSpotAngle(80); light.setSpotExponent(0); light.setTranslation(0.0f, 0.0f, 3.0f); world.addChild(light);
  • 28. › Serialized entire Scene Graph M3G File › Animations, Textures, etc. Format › Compressed › Well defined structure
  • 29. setFullScreenMode(true); public class Canvas3D extends Canvas thread = newThread(this); implements Runnable { startTime= System.currentTimeMillis() public Canvas3D(){ graphics3D= Graphics3D.getInstance(); } Object3D[]objects = Loader.load("/cube.m3g"); public void paint(Graphics g) { world = (World)objects[0]; } Camera camera = world.getActiveCamera(); floataspect = (float) getWidth()/ (float) getHeight(); public void run() { camera.setPerspective(60.0f,aspect, 1.0f, 1000.0f); } running = true; } thread.start();
  • 31. › Blender Plugin for 2.49 › Created by Nelson Games: M3G Export › http://www.nelson-games.de
  • 33. M3GToolkit › http://www.java4ever.com/
  • 34. “Bebe” › Blender Scene Model › Created by David Sanguinett
  • 39. › Java Heap size (1 – 4 MB) › JAR file size ( 1 – 2 MB) › CPU speed › Screen Size 240x 320, 320x240, 128x160 Consider › Input Type: T9, Qwerty, Touch-And-Type › Use Nokia Device Matrix › Remote Device Access
  • 40.
  • 47. Thank you! @MichaelSamarin http://www.futurice.com