Quake 3: OpenGL → GL ES:                                   Overview
• Porting the Engine...
    • Overview of the changes from OpenGL to GL ES.
    • Quick-n-dirty optimization: 1/sqrt(x)


• Input Challenges...
    • Dealing without a conventional keyboard and mouse.
    • Exploring different input methods on N900.
    • Aiming assist, and why it's not cheating.



• Demonstration!

• Closing remarks, comments, etc.

                                              1
Porting the Engine...
• Everything is native OpenGL ES/EGL
    • Except PulseAudio sound via SDL (but this could be done natively too.)
    • Modest amount of changes to the source code:
          – 58 files changed, 3071 insertions(+), 502 deletions(-)


• 1/sqrt(x) Optimization:
    • Required for vector normalization and a major bottleneck in the engine.
          – Fast Inverse Square Root, by Chris Lomont
    • ARM performs much faster by simply using the standard libc version,
        • But optimizing with NEON instructions would certainly help.




                                                 2
Input Challenges...
• We don't have a conventional keyboard and mouse, but, we do have:
    • Mini-keyboard,
    • Touchscreen,
    • Accelerometer, and
    • Proximity sensor.
        • Special thanks to Phil Carmody for his efforts and code for the accelerometer/proximity sensor.


• Added support for auto-aim (aka aiming assist)
    • Limitations from not having a full keyboard and mouse.
    • The game must still be fun!


• The best way to show how these are used is in the demonstration.
    • I will also take questions/comments during the demo.


                                                3
Demonstration!

        Email comments,
Maybe you'll see this in Ovi store!




               quake.on.maemo@gmail.com
           4
Thanks!




5

Maemo Summit Quake3

  • 1.
    Quake 3: OpenGL→ GL ES: Overview • Porting the Engine... • Overview of the changes from OpenGL to GL ES. • Quick-n-dirty optimization: 1/sqrt(x) • Input Challenges... • Dealing without a conventional keyboard and mouse. • Exploring different input methods on N900. • Aiming assist, and why it's not cheating. • Demonstration! • Closing remarks, comments, etc. 1
  • 2.
    Porting the Engine... •Everything is native OpenGL ES/EGL • Except PulseAudio sound via SDL (but this could be done natively too.) • Modest amount of changes to the source code: – 58 files changed, 3071 insertions(+), 502 deletions(-) • 1/sqrt(x) Optimization: • Required for vector normalization and a major bottleneck in the engine. – Fast Inverse Square Root, by Chris Lomont • ARM performs much faster by simply using the standard libc version, • But optimizing with NEON instructions would certainly help. 2
  • 3.
    Input Challenges... • Wedon't have a conventional keyboard and mouse, but, we do have: • Mini-keyboard, • Touchscreen, • Accelerometer, and • Proximity sensor. • Special thanks to Phil Carmody for his efforts and code for the accelerometer/proximity sensor. • Added support for auto-aim (aka aiming assist) • Limitations from not having a full keyboard and mouse. • The game must still be fun! • The best way to show how these are used is in the demonstration. • I will also take questions/comments during the demo. 3
  • 4.
    Demonstration! Email comments, Maybe you'll see this in Ovi store! quake.on.maemo@gmail.com 4
  • 5.