• Gefällt mir
Beginning android games
Nächste SlideShare
Wird geladen in ...5
×

Beginning android games

  • 1,371 Views
Hochgeladen am

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

Mehr in: Technologie
  • Full Name Full Name Comment goes here.
    Sind Sie sicher, dass Sie...
    Ihre Nachricht erscheint hier
    Hinterlassen Sie den ersten Kommentar
Keine Downloads

Views

Gesamtviews
1,371
Bei Slideshare
0
Aus Einbettungen
0
Anzahl an Einbettungen
1

Aktionen

Geteilt
Downloads
35
Kommentare
0
Gefällt mir
1

Einbettungen 0

No embeds

Inhalte melden

Als unangemessen gemeldet Als unangemessen melden
Als unangemessen melden

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

Löschen
    No notes for slide

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/