SlideShare wird heruntergeladen. ×
0
Beginning Android Games      Mario Zechner
Who am I?
Who am I?
Who am I?
Who am I?
Who am I?
Who am I?
Who am I?
Who am I?
Who am I?   @badlogicgameshttp://www.badlogicgames.com/
What I‘ll Talk About•   Why Android?•   What‘s in a game?•   Android for game developers•   Frameworks & engines
Why Android?
Why Android?
Why Android?
Why Android?… or how to not make an infographic …
Why Android?A Gaming Machine For Everyone!
What‘s in a Game?
What‘s in a Game?  DESIGN
What‘s in a Game?
What‘s in a Game?
What‘s in a Game?
What‘s in a Game?
What‘s in a Game?
What‘s in a Game?
What‘s in a Game?Technology
What‘s in a Game?•   Window & Life-Cycle Management•   File I/O•   Input Devices•   Audio•   Graphics•   Networking•   Soc...
Android for Game Developers
Android for Game Developers + Tooling       + Performance + API Access    + Portability - Performance   - Tooling - Portab...
Android for Game Developers
Android for Game Developers
Android for Game Developers• Store files in   – APK (read-only)   – Internal Storage (read/write, limited space)   – Exter...
Android for Game Developers• OnTouchListener and OnKeyListener on  View• SensorManager for  compass, accelerometer, gyro, ...
Android for Game Developers• SoundPool for sound effects• MediaPlayer for streaming music• OpenSL ES in C/C++             ...
Android for Game Developers                            Canvas                                         OpenGL EScanvas.draw...
Android for Game Developers                            Canvas                                         OpenGL EScanvas.draw...
Android for Game Developers                            Canvas                                         OpenGL EScanvas.draw...
Android for Game Developers•   Bugs in shader compilers•   Deviations from OpenGL ES specification•   Highly varying perfo...
Android for Game Developers• And if you use Java …• Garbage Collector pauses (+200ms)• Varying maximum heap memory• Direct...
Android for Game Developers•   A lot better since 2.2, great since 4.0•   Concurrent GC•   JIT•   Tons of bug fixes•   GOT...
Android for Game Developers
Android for Game Developers       FRAGMENTATION
Android for Game DevelopersScreen Sizes, Aspect Ratios, Resolutions
Android for Game Developers•   Pick target resolution/aspect ratio•   Stretch or Clip on other aspect ratios•   Ship multi...
Android for Game Developers
Android for Game Developers• Device-specific driver bugs (audio, OpenGL ES)• Android version-specific bugs• Multiple test ...
Frameworks & Engines       Not exhaustive, visithttp://mobilegameengines.com/
Frameworks & Engines$$$Free$$$Free$$$FreeFree$$$              Not exhaustive, visit       http://mobilegameengines.com/
WIP
• Java (lots of C/C++ under the hood)• Develop on the desktop 90% of the time (no  slow deploys, no emulator madness)• Abs...
Spine, 2D skeletal animation editorhttps://plus.google.com/100248578810918104811
Source & Releaseshttp://libgdx.badlogicgames.com/download.htmlDocshttp://libgdx.badlogicgames.com/documentation.htmlForumh...
Questions?   @badlogicgameshttp://www.badlogicgames.com/
Beginning android games
Nächste SlideShare
Wird geladen in ...5
×

Beginning android games

1,619

Published on

Slides for the talk "Beginning Android Games" at Apps World 2012 by Mario Zechner

@badlogicgames
http://www.badlogicgames.com
http://libgdx.badlogicgames.com

Published in: Technologie
0 Kommentare
2 Gefällt mir
Statistiken
Notizen
  • Hinterlassen Sie den ersten Kommentar

Keine Downloads
Views
Gesamtviews
1,619
Bei Slideshare
0
Aus Einbettungen
0
Anzahl an Einbettungen
1
Aktionen
Geteilt
0
Downloads
38
Kommentare
0
Gefällt mir
2
Einbettungen 0
No embeds

No notes for slide

Transcript of "Beginning android games"

  1. 1. Beginning Android Games Mario Zechner
  2. 2. Who am I?
  3. 3. Who am I?
  4. 4. Who am I?
  5. 5. Who am I?
  6. 6. Who am I?
  7. 7. Who am I?
  8. 8. Who am I?
  9. 9. Who am I?
  10. 10. Who am I? @badlogicgameshttp://www.badlogicgames.com/
  11. 11. What I‘ll Talk About• Why Android?• What‘s in a game?• Android for game developers• Frameworks & engines
  12. 12. Why Android?
  13. 13. Why Android?
  14. 14. Why Android?
  15. 15. Why Android?… or how to not make an infographic …
  16. 16. Why Android?A Gaming Machine For Everyone!
  17. 17. What‘s in a Game?
  18. 18. What‘s in a Game? DESIGN
  19. 19. What‘s in a Game?
  20. 20. What‘s in a Game?
  21. 21. What‘s in a Game?
  22. 22. What‘s in a Game?
  23. 23. What‘s in a Game?
  24. 24. What‘s in a Game?
  25. 25. What‘s in a Game?Technology
  26. 26. What‘s in a Game?• Window & Life-Cycle Management• File I/O• Input Devices• Audio• Graphics• Networking• Social Media Integration• Payment System• Tools• … you actually read all of this?
  27. 27. Android for Game Developers
  28. 28. Android for Game Developers + Tooling + Performance + API Access + Portability - Performance - Tooling - Portability - API Access
  29. 29. Android for Game Developers
  30. 30. Android for Game Developers
  31. 31. Android for Game Developers• Store files in – APK (read-only) – Internal Storage (read/write, limited space) – External Storage (read/write)• SharedPreferences for simple settings• GOTCHAS – APK size limit (50mb) – Asset file compression bug until Android 2.3 – No direct access via NDK in older Android versions
  32. 32. Android for Game Developers• OnTouchListener and OnKeyListener on View• SensorManager for compass, accelerometer, gyro, …• USB/NFC since Android 3+• GOTCHAS – Horrible Touch API – Multi-touch broken on many devices
  33. 33. Android for Game Developers• SoundPool for sound effects• MediaPlayer for streaming music• OpenSL ES in C/C++ setVolumeControlStream(AudioManager.STREAM_MUSIC); soundPool = new SoundPool(20, AudioManager.STREAM_MUSIC, 0);• GOTCHAS explosionId = soundPool.load(descriptor, 1); soundPool.play(explosionId, 1, 1, 0, 0, 1); – High latency (+100ms) – Broken drivers mediaPlayer = new MediaPlayer() mediaPlayer.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength()); mediaPlayer.prepare(); mediaPlayer.setLooping(true); mediaPlayer.start()
  34. 34. Android for Game Developers Canvas OpenGL EScanvas.drawRGB(255, 255, 255);paint.setColor(Color.RED);canvas.drawLine(0, 0, canvas.getWidth()-1, canvas.getHeight()-1, paint);paint.setStyle(Style.STROKE);paint.setColor(0xff00ff00);canvas.drawCircle(canvas.getWidth()/2, canvas.getHeight()/2, 40, paint);paint.setStyle(Style.FILL);paint.setColor(0x770000ff);canvas.drawRect(100, 100, 200, 200, paint); + Ease-of-Use + Performance - Performance + 2D / 3D - 2D-only - Ease-of-Use
  35. 35. Android for Game Developers Canvas OpenGL EScanvas.drawRGB(255, 255, 255);paint.setColor(Color.RED);canvas.drawLine(0, 0, canvas.getWidth()-1, canvas.getHeight()-1, paint);paint.setStyle(Style.STROKE);paint.setColor(0xff00ff00);canvas.drawCircle(canvas.getWidth()/2, canvas.getHeight()/2, 40, paint);paint.setStyle(Style.FILL);paint.setColor(0x770000ff);canvas.drawRect(100, 100, 200, 200, paint); + Ease-of-Use + Performance - Performance + 2D / 3D - 2D-only - Ease-of-Use MY GOD, IT‘S FULL OF GOTCHAS
  36. 36. Android for Game Developers Canvas OpenGL EScanvas.drawRGB(255, 255, 255);paint.setColor(Color.RED);canvas.drawLine(0, 0, canvas.getWidth()-1, canvas.getHeight()-1, paint);paint.setStyle(Style.STROKE);paint.setColor(0xff00ff00);canvas.drawCircle(canvas.getWidth()/2, canvas.getHeight()/2, 40, paint);paint.setStyle(Style.FILL);paint.setColor(0x770000ff);canvas.drawRect(100, 100, 200, 200, paint); + Ease-of-Use + Performance - Performance + 2D / 3D - 2D-only - Ease-of-Use MY GOD, IT‘S FULL OF GOTCHAS
  37. 37. Android for Game Developers• Bugs in shader compilers• Deviations from OpenGL ES specification• Highly varying performance• GPU dependent optimizations• Texture compression formats• …
  38. 38. Android for Game Developers• And if you use Java …• Garbage Collector pauses (+200ms)• Varying maximum heap memory• Direct ByteBuffers and Bitmaps counted against Java heap• Method call overhead
  39. 39. Android for Game Developers• A lot better since 2.2, great since 4.0• Concurrent GC• JIT• Tons of bug fixes• GOTCHA
  40. 40. Android for Game Developers
  41. 41. Android for Game Developers FRAGMENTATION
  42. 42. Android for Game DevelopersScreen Sizes, Aspect Ratios, Resolutions
  43. 43. Android for Game Developers• Pick target resolution/aspect ratio• Stretch or Clip on other aspect ratios• Ship multiple asset sizes• We‘ve done this on the PC, we can do it on Android!
  44. 44. Android for Game Developers
  45. 45. Android for Game Developers• Device-specific driver bugs (audio, OpenGL ES)• Android version-specific bugs• Multiple test devices (3-4) – PowerVR, Mali, Snapdragon, Tegra – Low-end to high-end phones – Tablet• Or use a framework/engine!
  46. 46. Frameworks & Engines Not exhaustive, visithttp://mobilegameengines.com/
  47. 47. Frameworks & Engines$$$Free$$$Free$$$FreeFree$$$ Not exhaustive, visit http://mobilegameengines.com/
  48. 48. WIP
  49. 49. • Java (lots of C/C++ under the hood)• Develop on the desktop 90% of the time (no slow deploys, no emulator madness)• Abstraction layers – Low-level: OpenGL ES, file i/o, input, audio, ... – Mid-level: shaders, textures, linalg, … – High-level: fonts, sprites, scene graph, …• Pick and choose, see feature listhttp://libgdx.badlogicgames.com/features.html
  50. 50. Spine, 2D skeletal animation editorhttps://plus.google.com/100248578810918104811
  51. 51. Source & Releaseshttp://libgdx.badlogicgames.com/download.htmlDocshttp://libgdx.badlogicgames.com/documentation.htmlForumhttp://badlogicgames.com/forum/Bloghttp://www.badlogicgames.comIRCirc.freenode.org, #libgdx
  52. 52. Questions? @badlogicgameshttp://www.badlogicgames.com/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×