SlideShare wird heruntergeladen. ×
0
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Beginning android games
Nächste SlideShare
Wird geladen in ...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Beginning android games

1,579

Published on

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

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

Keine Downloads
Views
Gesamtviews
1,579
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

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/

×