The Debian Package qtepong
----------------------------

Forum Nokia 2011


Introduction

This a MeeGo QtEPong game, which is made as an easy to understand game example
for Qt.  It attempts to separate platform dependant code from the actual game 
code.  The actual game code is thus portable and should be familiar to 
developers with experience on other mobile platforms, e.g. iPhone, Android 
and Meego.

The EPong game was first ported from Symbian^3 platform version to Symbian Qt
version, and then ported to MeeGo platform.

Also, the updated classes for GE::AudioOut, GE::AudioSource, 
GE::PullAudioOut, and GE::PushAudioOut from GameEnabler are now integrated to
the application. They were changed little, because EPong must support also
native Symbian building (i.e., Qt dependencies were removed).


Compatibility

This example is now targeted also towards MeeGo devices.
Also the Symbian^3 devices, e.g. Nokia N8 and Nokia E7, are supported.
Emulator build is not supported, the game relies on OpenGL ES 2.0, which is
not supported in WINSCW emulator.


Highlights

This example demonstrates on the following aspects:

- Entering Symbian or MeeGo game programming without previous Symbian experience
- Writing platform independent game engine
- Writing C++ game with multiple platforms in mind
- Using existing bitmap asset as application icon
- Handling multitasking (game pausing, releasing graphics resources)
- How to incorporate sound engine (public domain OGG decoder)
- How to mix sounds on top of sound engine
- Loading PNG graphics to OpenGL texture (stb_image.c, public domain)
- Handling keyboard events
- Handling touch events (multitouch on E7)
- Implementing hardware volume keys
- Honouring silent profile (warning tones on/off)
- Reading accellerometer sensor
- Using floating point math hardware
- Using haptic feedback
- Launching browser (using no Symbian capabilities)
- Implementing HDMI output with check for cable connection


Required software

- In Carbide-based case:
  * Carbide C++ 3.2
  * Nokia Symbian^3 SDK v1.0
- Nokia Qt SDK with Symbian and MeeGo target installed.

Building

Note about GOOM monitor API:  This API is not supplied with SDK 1.0.  You can
enable it by copying goomapi directory contents to your SDK's epoc32 directory.
Enabling USE_GOOM_MONITOR flag from inc/epong.hrh then set project to use GOOM
to signal memory allocation.

Import project folder into Carbide by selecting File/Import... and selecting
"Symbian OS bld.inf file".  Browse to this example's EpocPong\group directory.
Enable GCCE phone configuration and SBSv1 project builder.

To create a SIS package when building, selct Project/Properties, select Carbide
C++ and Build Settings.  Add sis/epong.pkg file to SIS builder.  Use self-signed
for trial version.

For Ovi Store, you need to use trusted range UID (starts with 0x2), these need to
be signed with developer certificate.  This package also contains full Ovi Store
game, which can be compiled by commenting out TRIAL_VERSION macro in
group/epong.mmp file

In Qt, open the epong_qt_build/qtepong.pro file and select Build > Build
Project "qtepong". NOTE! The Symbian^1 target (default in Qt SDK) is NOT
supported, so use another target.


Directories

This example is structured as follows

game_engine
  Header definitions for platform independent game engine

epong_game_logic
  Platform independent game code

epong_graphics
  Graphics assets

epong_sounds
  Sound assets

epong_s3_build
  group
    Symbian specific project files
  src
    Symbian source code, which implements game engine using Symbian
    application framework
  inc
    Symbian source headers
  gfx
    Symbian icon
  data
    Symbian resource files and includes
  sis
    Symbian packaging files
  tools
    Simple tool for extracting 32bit png into two separate bmp files

epong_qt_build
   Qt source code, project file and assets.


Known Issues

There are problems in multitouch with Nokia N8. This causes the axis to get
mixed from time to time. This makes multiplayer-mode problematic with N8 device.

HDMI output displays game only using HDMI, not on the internal display.


 -- Aleksi Haenninen <aleksi.hanninen@digia.com>  Mon, 17 Oct 2011 13:56:33 +0300

