KEMBAR78
Android game engine | PDF
GAME ENGINE
ON
ANDROID




Julian Chu
Agenda   We Love Game
         Why need Game Engine
         What is Game Engine
         How many Game Engine
         Get one for You
         Implementation
We Love Game
Do You Love Playing Game?




         I DO
Everybody Love Playing Game
My Father plays
Solitaire
My Sister plays
Labyrinth
My Colleague plays
AngryBird
I play Dracula X, Super Mario III,
Final Fantasy III, Tetris, Frozen
Bubbles, ZooKeeper, Dragon Ball Z2
Z3, DDR...blah blah
Why Do We Love a Game
Art
  It looks awesome

Story
  It is realistic

Social
  We may make friends via game
      By exchanging information
      By sharing common experience

Fun
  The most important part of a game
GAME EVERYWHERE
Playing Game Everywhere
FC
MD, SFC
SS, PS
.......
NOW ?
   Long time ago we use GameBoy in toilet. Now we
   use mobile phone.
Why need Game Engine
Create a Game
Everyone has creativity
We might want to clone a existing
game
We have a good idea for game
Writing Game is COOL, and We
are COOL!!
Game Engine helps us
Faster Developement
Easier Developement
  You might don't know OpenGL...

Abstract Layer
  You might need to port your game to another platform....

Focus on FUN
  If you spend more time on fighting with code, you has less time to think
  about your game, especially most of us are independent programmer.
What is Game Engine
Game Engine might has
Sprite, Scene, Animation   Renderer
Modifier                   Physics Engine
Particle System            Collision Detection
Event Handling             Script Language
Game Thread
Normal Android application




An Activity contains some Views. We interactive with some activities
In a Game




An Activity holds one GLSurfaceView.
Game Engine switch one of scenes to display
Sprite
Collision Detection
How many Game Engine on
        Android
Lots of Game Engines
If you search "android game" at   Age
Google Code, you will see lots    Angle
of game engines.
                                  Candroidengine
Some of them are Graphics
                                  Catcake
Engine
                                  Cloak
                                  Cocos2d
                                  Forget3d
                                  JMonkeyEngine
                                  ReplicaIsland
                                  Rokon
                                  AndEngine
                                  .........more
Target
               There are too many good game
               engines, I can only choose some of
               them.
                   Rokon
                   Cocos2D
                   AndEngine




Important: I believe there should be some great game engine but I missed
Rokon
Rokon 2.0.3
 http://rokonandroid.com/tutorials
 http://code.google.com/p/rokon/

Useful staffs
 Sprite, Modifier, Audio, Sprite
 Animation, Polygon Collision...blah
 You can see Particle System at
 Rokon 1, but nothing about Particle
 System at Rokon2 yet.
Rokon
Rokon




images borrows from Replica Island
Rokon




Layer accepts GameObject.

You can extends GameObject and
create your own class then add to Layer
Rokon (touchable sprite)
TextureAtlas atlas = new TextureAtlas();
Texture textureDoll = new Texture("doll.png");
Sprite mDoll;
mDoll = new Sprite(X, Y, Width, Height);
mDoll.setTexture(textureDoll);
mDoll.setTouchable();
add(0, mDoll);



@Override
public void onTouchDown(Drawable object, float x, float y,
  MotionEvent event, int pointerCount, int pointerId) {
  if (object == mDoll) {
      android.util.Log.i("Hi", "touch down doll");
  }
}
Rokon (Audio)

/* Longer audio file */
RokonMusic.play("audio/music.mp3", true); //true means loop




/* Shorter sound effects */
RokonAudio mAudio = new RokonAudio();
SoundFile mSound = mAudio.createSoundFile(sMenuTap);
mSound.play();
Rokon(Animation)
Sprite explosion = new Sprite(x, y, width, height);               1

Texture texture = new Texture("explosion.png", 5, 5)
explosion.setTextureTile(texture, 25); // 25 is the lastest one

/* tile 1 to tile 25, one frame spends 35ms, repeat once */
explosion.animate(1, 25, 35, 1, false);




                                                                      25
Rokon(Physical)
http://code.google.com/p/rokon/source/browse
/examples/donate_app/src/com/stickycoding
/rokondonatefree/DonateScene.java
Cocos2D
Python Cocos2d
→ iPhone Cocos2d
→ Android Cocos2d
 http://code.google.com/p/cocos2d-android/

Android cocos2d matches version 0.8 of
cocos2d for iPhone
 0.9 is still in development
Cocos2D
Cocos2D
CocosNode accepts Action
Most classes extends CocosNode
  Sprite
  Label
  Scene        Action rotate = RotateBy.action(2, 360);
               Sprite sprite = Sprite.sprite("ball.png");
  Layer        sprite.runAction(rotate);
  ColorLayer
  Menu
  MenuItem
Cocos2D




1. addChild: every CocosNode may has child CocosNode
2. action: every CocosNode may has Action
Cocos2D
CocosNode.runAction(action);
Cocos2D


CocosNode
    +
  Action
Cocos2D(Physical)
Cocos2D
Some problems
Particle System Example
SceneTest Example
Transition Example




                          Particle System
AndEngine
Fast Development
  http://www.andengine.org/

Extension
  Box2d
  Multiplayer
  MultiTouch
  ......etc

Amazing examples
  http://code.google.com/p/andengineexamples/
  You can download the example at Market.
AndEngine
AndEngine(Camera)
           See Example
              TMXTiledMapExample




setChaseShape(IShape);
AndEngine
AndEngine



Touch and Multi Touch




                        Custom Font
AndEngine
AndEngine
Particle System
Replica Island
Well designed game
Open Source
 http://replicaisland.net/
 It is very possible to split engine
 from the game
 http://code.google.com/events/io/2009/sessions/WritingReal
 TimeGamesAndroid.html (it is worth reading)


Mailing list
 https://groups.google.com/group/replica-island-coding-
 community/topics

 Highly activity!!
Compare
                        Rokon2         Cocos2d     AndEngine
   FPS
   (one sprite)          52(*1)         60(*2)        58(*3)
   FPS
   (50 physics)          46(*4)         18(*5)        60(*6)
   FPS
   (100 physics)           42             8             36
   Physics Engine        box2d         box2d          box2d
   Particle System         No             ?            Yes
   License                BSD           BSD           LGPL
   Examples               ?(*7)         Yes(*8)       Yes(*9)
                                                      Aug
   Lastesd Update        Aug 8         Jun 26
                                                   14(ouch!!)

                     Tetronimo(*10)                 Snake(*12)
   Game Implement
                     Drop Block(*11)              AlienStars(*13)


Tested on Nexus One, Froyo (FRF91)
Ref
1. http://rokonandroid.com/tutorials/41-beginner/63-using-sprites
2. http://code.google.com/p/cocos2d-android/source/browse/trunk/src/org/cocos2d/tests/SpritesTest.java
3. http://code.google.com/p/andengineexamples/source/browse/src/org/anddev/andengine/examples/SpriteExample.java
4. http://code.google.com/p/rokon/source/browse/examples/donate_app/src/com/stickycoding/rokondonatefree/DonateScene.java
5. http://code.google.com/p/cocos2d-android/source/browse/trunk/src/org/cocos2d/tests/JBox2DTest.java
6. http://code.google.com/p/andengineexamples/source/browse/src/org/anddev/andengine/examples/PhysicsExample.java
7. http://code.google.com/p/rokon/source/browse/#svn/tags/release/1.1.1/src/com/stickycoding/RokonExamples
These examples were written for Rokon 1.1.1
8. http://code.google.com/p/cocos2d-android/source/browse/trunk/src/org/cocos2d/tests/
9. http://code.google.com/p/andengineexamples/source/browse/
10. http://www.rokonandroid.com/community/rss/index.php?option=com_agora&task=topic&id=150&Itemid=60
11. http://rokonandroid.com/games/67-drop-block
12. http://code.google.com/p/andengineexamples/source/browse/src/org/anddev/andengine/examples/game/snake/
13. http://www.andengine.org/forums/project-development-blogs/galaga-like-game-t291.html
Game Implementation

                   Nobunaga's Puke




信長的噁望




        Implemented in cocos2d-android and Rokon2
        From scratch in 3 days
        http://code.google.com/p/nobunagapuke/
Q&A
Sponsored
by

           http://0xlab.org




                15 Aug 2010
CC-By-SA        COSCUP

Android game engine

  • 1.
  • 2.
    Agenda We Love Game Why need Game Engine What is Game Engine How many Game Engine Get one for You Implementation
  • 3.
  • 4.
    Do You LovePlaying Game? I DO
  • 5.
    Everybody Love PlayingGame My Father plays Solitaire My Sister plays Labyrinth My Colleague plays AngryBird I play Dracula X, Super Mario III, Final Fantasy III, Tetris, Frozen Bubbles, ZooKeeper, Dragon Ball Z2 Z3, DDR...blah blah
  • 6.
    Why Do WeLove a Game Art It looks awesome Story It is realistic Social We may make friends via game By exchanging information By sharing common experience Fun The most important part of a game
  • 7.
  • 8.
    Playing Game Everywhere FC MD,SFC SS, PS ....... NOW ? Long time ago we use GameBoy in toilet. Now we use mobile phone.
  • 9.
  • 10.
    Create a Game Everyonehas creativity We might want to clone a existing game We have a good idea for game Writing Game is COOL, and We are COOL!!
  • 11.
    Game Engine helpsus Faster Developement Easier Developement You might don't know OpenGL... Abstract Layer You might need to port your game to another platform.... Focus on FUN If you spend more time on fighting with code, you has less time to think about your game, especially most of us are independent programmer.
  • 12.
  • 13.
    Game Engine mighthas Sprite, Scene, Animation Renderer Modifier Physics Engine Particle System Collision Detection Event Handling Script Language Game Thread
  • 14.
    Normal Android application AnActivity contains some Views. We interactive with some activities
  • 15.
    In a Game AnActivity holds one GLSurfaceView. Game Engine switch one of scenes to display
  • 16.
  • 17.
  • 18.
    How many GameEngine on Android
  • 19.
    Lots of GameEngines If you search "android game" at Age Google Code, you will see lots Angle of game engines. Candroidengine Some of them are Graphics Catcake Engine Cloak Cocos2d Forget3d JMonkeyEngine ReplicaIsland Rokon AndEngine .........more
  • 20.
    Target There are too many good game engines, I can only choose some of them. Rokon Cocos2D AndEngine Important: I believe there should be some great game engine but I missed
  • 21.
    Rokon Rokon 2.0.3 http://rokonandroid.com/tutorials http://code.google.com/p/rokon/ Useful staffs Sprite, Modifier, Audio, Sprite Animation, Polygon Collision...blah You can see Particle System at Rokon 1, but nothing about Particle System at Rokon2 yet.
  • 22.
  • 23.
  • 24.
    Rokon Layer accepts GameObject. Youcan extends GameObject and create your own class then add to Layer
  • 25.
    Rokon (touchable sprite) TextureAtlasatlas = new TextureAtlas(); Texture textureDoll = new Texture("doll.png"); Sprite mDoll; mDoll = new Sprite(X, Y, Width, Height); mDoll.setTexture(textureDoll); mDoll.setTouchable(); add(0, mDoll); @Override public void onTouchDown(Drawable object, float x, float y, MotionEvent event, int pointerCount, int pointerId) { if (object == mDoll) { android.util.Log.i("Hi", "touch down doll"); } }
  • 26.
    Rokon (Audio) /* Longeraudio file */ RokonMusic.play("audio/music.mp3", true); //true means loop /* Shorter sound effects */ RokonAudio mAudio = new RokonAudio(); SoundFile mSound = mAudio.createSoundFile(sMenuTap); mSound.play();
  • 27.
    Rokon(Animation) Sprite explosion =new Sprite(x, y, width, height); 1 Texture texture = new Texture("explosion.png", 5, 5) explosion.setTextureTile(texture, 25); // 25 is the lastest one /* tile 1 to tile 25, one frame spends 35ms, repeat once */ explosion.animate(1, 25, 35, 1, false); 25
  • 28.
  • 29.
    Cocos2D Python Cocos2d → iPhoneCocos2d → Android Cocos2d http://code.google.com/p/cocos2d-android/ Android cocos2d matches version 0.8 of cocos2d for iPhone 0.9 is still in development
  • 30.
  • 31.
    Cocos2D CocosNode accepts Action Mostclasses extends CocosNode Sprite Label Scene Action rotate = RotateBy.action(2, 360); Sprite sprite = Sprite.sprite("ball.png"); Layer sprite.runAction(rotate); ColorLayer Menu MenuItem
  • 32.
    Cocos2D 1. addChild: everyCocosNode may has child CocosNode 2. action: every CocosNode may has Action
  • 33.
  • 34.
  • 35.
  • 36.
    Cocos2D Some problems Particle SystemExample SceneTest Example Transition Example Particle System
  • 37.
    AndEngine Fast Development http://www.andengine.org/ Extension Box2d Multiplayer MultiTouch ......etc Amazing examples http://code.google.com/p/andengineexamples/ You can download the example at Market.
  • 38.
  • 39.
    AndEngine(Camera) See Example TMXTiledMapExample setChaseShape(IShape);
  • 40.
  • 41.
    AndEngine Touch and MultiTouch Custom Font
  • 42.
  • 43.
  • 44.
    Replica Island Well designedgame Open Source http://replicaisland.net/ It is very possible to split engine from the game http://code.google.com/events/io/2009/sessions/WritingReal TimeGamesAndroid.html (it is worth reading) Mailing list https://groups.google.com/group/replica-island-coding- community/topics Highly activity!!
  • 45.
    Compare Rokon2 Cocos2d AndEngine FPS (one sprite) 52(*1) 60(*2) 58(*3) FPS (50 physics) 46(*4) 18(*5) 60(*6) FPS (100 physics) 42 8 36 Physics Engine box2d box2d box2d Particle System No ? Yes License BSD BSD LGPL Examples ?(*7) Yes(*8) Yes(*9) Aug Lastesd Update Aug 8 Jun 26 14(ouch!!) Tetronimo(*10) Snake(*12) Game Implement Drop Block(*11) AlienStars(*13) Tested on Nexus One, Froyo (FRF91)
  • 46.
    Ref 1. http://rokonandroid.com/tutorials/41-beginner/63-using-sprites 2. http://code.google.com/p/cocos2d-android/source/browse/trunk/src/org/cocos2d/tests/SpritesTest.java 3.http://code.google.com/p/andengineexamples/source/browse/src/org/anddev/andengine/examples/SpriteExample.java 4. http://code.google.com/p/rokon/source/browse/examples/donate_app/src/com/stickycoding/rokondonatefree/DonateScene.java 5. http://code.google.com/p/cocos2d-android/source/browse/trunk/src/org/cocos2d/tests/JBox2DTest.java 6. http://code.google.com/p/andengineexamples/source/browse/src/org/anddev/andengine/examples/PhysicsExample.java 7. http://code.google.com/p/rokon/source/browse/#svn/tags/release/1.1.1/src/com/stickycoding/RokonExamples These examples were written for Rokon 1.1.1 8. http://code.google.com/p/cocos2d-android/source/browse/trunk/src/org/cocos2d/tests/ 9. http://code.google.com/p/andengineexamples/source/browse/ 10. http://www.rokonandroid.com/community/rss/index.php?option=com_agora&task=topic&id=150&Itemid=60 11. http://rokonandroid.com/games/67-drop-block 12. http://code.google.com/p/andengineexamples/source/browse/src/org/anddev/andengine/examples/game/snake/ 13. http://www.andengine.org/forums/project-development-blogs/galaga-like-game-t291.html
  • 47.
    Game Implementation Nobunaga's Puke 信長的噁望 Implemented in cocos2d-android and Rokon2 From scratch in 3 days http://code.google.com/p/nobunagapuke/
  • 48.
  • 49.
    Sponsored by http://0xlab.org 15 Aug 2010 CC-By-SA COSCUP