• Teilen
  • E-Mail
  • Einbetten
  • Gefällt mir
  • Speichern
  • Privater Inhalt
Beginning android games
 

Beginning android games

on

  • 1,505 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,505
Views auf SlideShare
1,227
Views einbetten
278

Actions

Gefällt mir
1
Downloads
28
Kommentare
0

1 Einbettung 278

http://www.scoop.it 278

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.
    Are you sure you want to
    Ihre Nachricht erscheint hier
    Processing...
Kommentar posten
Kommentar bearbeiten

    Beginning android games Beginning android games Presentation Transcript

    • 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• Social Media Integration• Payment System• Tools• … you actually read all of this?
    • Android for Game Developers
    • Android for Game Developers + Tooling + Performance + API Access + Portability - Performance - Tooling - Portability - API Access
    • Android for Game Developers
    • Android for Game Developers
    • 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
    • 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
    • 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()
    • 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
    • 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
    • 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
    • Android for Game Developers• Bugs in shader compilers• Deviations from OpenGL ES specification• Highly varying performance• GPU dependent optimizations• Texture compression formats• …
    • 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
    • Android for Game Developers• A lot better since 2.2, great since 4.0• Concurrent GC• JIT• Tons of bug fixes• GOTCHA
    • 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 multiple asset sizes• We‘ve done this on the PC, we can do it on Android!
    • Android for Game Developers
    • 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!
    • 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)• 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
    • Spine, 2D skeletal animation editorhttps://plus.google.com/100248578810918104811
    • Source & Releaseshttp://libgdx.badlogicgames.com/download.htmlDocshttp://libgdx.badlogicgames.com/documentation.htmlForumhttp://badlogicgames.com/forum/Bloghttp://www.badlogicgames.comIRCirc.freenode.org, #libgdx
    • Questions? @badlogicgameshttp://www.badlogicgames.com/