Beginning android games
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Beginning android games

on

  • 1,686 Views

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

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

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

Statistiken

Views

Gesamtviews
1,686
Views auf SlideShare
1,390
Views einbetten
296

Actions

Gefällt mir
1
Downloads
32
Kommentare
0

1 Einbettung 296

http://www.scoop.it 296

Zugänglichkeit

Kategorien

Details hochladen

Uploaded via as Microsoft PowerPoint

Benutzerrechte

© Alle Rechte vorbehalten

Report content

Als unangemessen gemeldet Als unangemessen melden
Als unangemessen melden

Wählen Sie Ihren Grund, warum Sie diese Präsentation als unangemessen melden.

Löschen
  • Full Name Full Name Comment goes here.
    Sind Sie sicher, dass Sie...
    Ihre Nachricht erscheint hier
    Processing...
Kommentar posten
Kommentar bearbeiten

Beginning android games Presentation Transcript

  • 1. Beginning Android Games Mario Zechner
  • 2. Who am I?
  • 3. Who am I?
  • 4. Who am I?
  • 5. Who am I?
  • 6. Who am I?
  • 7. Who am I?
  • 8. Who am I?
  • 9. Who am I?
  • 10. Who am I? @badlogicgameshttp://www.badlogicgames.com/
  • 11. What I‘ll Talk About• Why Android?• What‘s in a game?• Android for game developers• Frameworks & engines
  • 12. Why Android?
  • 13. Why Android?
  • 14. Why Android?
  • 15. Why Android?… or how to not make an infographic …
  • 16. Why Android?A Gaming Machine For Everyone!
  • 17. What‘s in a Game?
  • 18. What‘s in a Game? DESIGN
  • 19. What‘s in a Game?
  • 20. What‘s in a Game?
  • 21. What‘s in a Game?
  • 22. What‘s in a Game?
  • 23. What‘s in a Game?
  • 24. What‘s in a Game?
  • 25. What‘s in a Game?Technology
  • 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. Android for Game Developers
  • 28. Android for Game Developers + Tooling + Performance + API Access + Portability - Performance - Tooling - Portability - API Access
  • 29. Android for Game Developers
  • 30. Android for Game Developers
  • 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. 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. 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. 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. 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. 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. Android for Game Developers• Bugs in shader compilers• Deviations from OpenGL ES specification• Highly varying performance• GPU dependent optimizations• Texture compression formats• …
  • 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. Android for Game Developers• A lot better since 2.2, great since 4.0• Concurrent GC• JIT• Tons of bug fixes• GOTCHA
  • 40. Android for Game Developers
  • 41. Android for Game Developers FRAGMENTATION
  • 42. Android for Game DevelopersScreen Sizes, Aspect Ratios, Resolutions
  • 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. Android for Game Developers
  • 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. Frameworks & Engines Not exhaustive, visithttp://mobilegameengines.com/
  • 47. Frameworks & Engines$$$Free$$$Free$$$FreeFree$$$ Not exhaustive, visit http://mobilegameengines.com/
  • 48. WIP
  • 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. Spine, 2D skeletal animation editorhttps://plus.google.com/100248578810918104811
  • 51. Source & Releaseshttp://libgdx.badlogicgames.com/download.htmlDocshttp://libgdx.badlogicgames.com/documentation.htmlForumhttp://badlogicgames.com/forum/Bloghttp://www.badlogicgames.comIRCirc.freenode.org, #libgdx
  • 52. Questions? @badlogicgameshttp://www.badlogicgames.com/