Synopsis
This patch against blender-v2.74-release allows blenderplayer to function despite Python or audio being disabled. A number of issues related to WITH_AUDASPACE and WITH_PYTHON are fixed.
WITH_PYTHON
The KX_PythonInit module is absorbing functionality outside its intended domain. It is currently responsible for initializing mandatory global state unrelated to python in other modules. When WITH_PYTHON is disabled these global symbols remain exported, but uninitialized. We fix the forced dependence on KX_PythonInit.setupGamePython by adding the new function KX_KetsjiEngine.setupGameGlobals, which properly initializes gp_KetsjiEngine and gp_KetsjiScene regardless of build flags. Additionally KX_RasterizerDrawDebugLine, KX_RasterizerDrawDebugCircle, KX_GetActiveEngine, KX_GetActiveScene, KX_SetActiveScene are moved out of KX_PythonInit and into KX_KetsjiEngine.
WITH_AUDASPACE
Addresses minor #ifdef related issues.
Larger Perspective
The long term goal of this patch series will be aimed at improving and modularizing BGE as a standalone unit. Ideally, the blender conversion routines of BGE will remain in the main blender repository, while the rest of the game engine is separated into its own tree, similar to cycles-standalone.