Release Notes for Version 2.1.1
Release date: September 20, 2010
Core Engine
Graphics
- A new material flag called "Use alpha multisample coverage" has been added. This turns on transparency antialiasing when a multisampled rendering context is being used. Alpha multisample coverage can be used to soften up the outlines of alpha-tested materials.
- A global light detail level has been added to the engine. Any light source can now specify a detail level, and the light will only be rendered if the global detail level setting is at least as high as that specified by the light source. This is useful for turning off dynamic lights for things like projectiles on lower-end hardware.
- The method for determining the default graphics settings has been rewritten. There are three general initial quality settings, and one is chosen based on the number in the name of the graphics card. If the second digit is 5 or less, then the lowest quality setting is used. If the second digit is 6 or 7, then the normal quality setting is used. If the second digit is 8 or 9, then the highest quality setting is used. All of this only matters if the user hasn't yet changed any graphics settings, creating a new
variables.cfg
file.
Terrain
- The scale for triplanar texture coordinates has been made an independent parameter in the material object settings. It used to share the scale for texcoord 0, but this interferes with the use of ordinary 2D textures on the terrain. Materials for existing terrains will need to be updated if the texcoord scale is anything other than the default 1/16.
Physics
- New code has been added for collision detection between shapes and arbitrary geometry meshes, and the continuous collision detection code has been completely replaced. Performance has improved drastically.
- The
RigidBodyContact
class contains a new function calledGetWorldContactPosition()
that can be used to simplify the extraction of world-space contact information in a consistent manner.
- A new Truncated Dome shape has been added to the engine. Like the other truncated shapes, this is a dome with its top cut off by a plane parallel to its base.
- Problems that arose in previous versions when multiple shapes were used for a single rigid body have been corrected.
- The amount of collision data stored in a world file for most types of geometry has been reduced considerably. To update existing worlds, select all and then select Rebuild Geometry from the Geometry menu (or just type Ctrl-A followed by Ctrl-R). Be sure to make a backup copy of your worlds first.
World Manager
- A new
Modifier
class has been added to the engine, and one or more of them can be attached to reference markers in order to modify the appearance or structure of the referenced world in some way. This allows some variation among different instances of a referenced world while still preserving the data-sharing benefits. In this release, there are three built-in modifier types, and a game module can define its own custom modifiers.
Miscellaneous
- The variable
$applicName
has been removed from the engine as the method for identifying the name of the game module to load. The engine now determines the name of the game module through the following steps, in this order:
- If the symbol
GAME_MODULE_NAME
is defined (in the project properties), then its value is used as the name of the game module. The symbol should begin and end with double quotes, so to load the SimpleBall game, you would defineGAME_MODULE_NAME
to be"SimpleBall"
, with the quotes. - If the symbol
GAME_MODULE_NAME
is not defined, then the engine checks to see if the variable$gameModuleName
exists, possibly because it was defined on the command line. If this variable exists, then its value is used as the name of the game module to load. - If the
$gameModuleName
doesn't yet exist, then the engine executes the filegame.cfg
, which can be stored in any subfolder of theData
folder or in a PAK file. This file should define the variable$gameModuleName
by assigning the name of the game module to it. For example, to load the SimpleBall game, thegame.cfg
file would contain the line$gameModuleName = "SimpleBall";
. - If the
$gameModuleName
variable still isn't defined, either becausegame.cfg
doesn't exist or it didn't define the variable$gameModuleName
, then the name of the game module defaults toGame
.
- A generic lossless data compression algorithm has been added to the engine, and it is now used for all texture resources. Most textures will get smaller if they are re-imported, but all existing textures will continue to work just fine (re-importing is not required).
- Backwards compatibility with releases preceding version 1.4.10 has been removed.