UPBGE Documentation

Known compatiblity issues

Mouse look scriptSince UPBGE 0.2.2 the pixel dimension were fixed, now the python functions getWindowHeight/getWindowWidth are returning the number of pixels on X or Y and not anymore the maximum pixel position on X or Y. Some scripts have to take care of it and add an extra - 1 to get the maximum pixel position.
Cube map APIIn the 0.1.0 the cube map were accessed through BL_Texture.cubeMap, but with the implementation of the planar reflections in 0.1.5, the variable is replaced by BL_Texture.renderer which return a KX_CubeMap or a KX_PlanarMap.
Joystick Hat.Since the version 0.1.0, the joystick doesn't support any more hats. In consideration the attributes SCA_PythonJoystick.hatValues and SCA_PythonJoystick.numHats are returning dummy values.
Billboard axisSince UPBGE 0.1.0, the billboard axis is the object Z axis instead of the world Z axis, this allow the user to use a billboard in any world axis possible. It requests to check that the billboard object Z axis was the same as world Z axis to avoid compatibility issues.
GLSL light positionIn BFBGE the light position appears to be not in view space. Some shader are so using gl_LightSource[0].position as it. To be sure to have a world space light position use gl_ModelViewMatrixInverse * gl_LightSource[0].position.
Custom shader versionSince UPBGE 0.1.0, all the custom shaders must not define the #version directive at the beginning of theirs programs. The compilation of the shader add the #version directive at the beginning with the latest version supported.
Constant material performanceSince UPBGE 0.0.6 the materials can be constant otherwise everything can be dynamic. The second effect can create performance decrease with files opened from BF BGE since the convertion behaviour is to set everything dynamic as we don't know how the user modifiy the material.
The user has two way to solve it. First check in all material all constant value categories unwanted. Second use a script to set all material constant and later disable some constant value categories. To do this run the conversion script in blender UI.
OpenGL texturesCalling OpenGL texture related functions is strongly not recommended because it interfere in the other OpenGL calls called by the UPBGE during the rendering.
Instead the user must use the BL_Texture class, for example replace a glBindTexture call from python by a set to BL_Texture.bindCode.
Background colorIn BF BGE in the case where it was no world the background color was set to a default grey color. Since the UPBGE use the world shader and not only clear the screen with the world background color, the same situation will produce a black or the color of the letter box as background. To avoid issue never render a scene without world, there's no optimizations done by removing it.
UV conversion orderIn BF BGE the mesh UV channels are converted in the order there were used by the material's textures. So if you have two UV channels and two textures using it, the first texture use the last UV and the second texture the first UV, the UV order will be inverted. To fix these issues the UPBGE convert all existing UV channels in the natural order, it let you use the index taken from the UI.

For other issue related to non-compatiblity issue, please see the github issue page