Release Notes for Build 129

From C4 Engine Wiki
Jump to navigation Jump to search

Release date: November 3, 2006

  • Designed and implemented an animation blending system. The Entity class can now own a tree of Animator objects that calculate transforms for the node hierarchy rooted at the entity node. Each animator has its own target root node so that it can be assigned to a subtree of the whole entity. Animators can calculate transforms in any way they wish, and the final transforms output by the root animator are ultimately applied by the Entity class.
  • NOTE: Some parts of the animation blending system have been intentionally removed from this release because they are being redesigned. The complete system will be included with the next release.
  • Implemented horizon maps. It is now possible, while importing a normal map, to generate two auxiliary textures that contain data about how bumps cast shadows onto themselves. When the "Generate horizon maps" check box is selected in the Texture Importer dialog, two additional textures with suffixes -h1 and -h2 are created along with the normal map. Once these exist, horizon mapping can be enabled for a material by selecting the "Apply horizon maps" check box in the General pane of the Material Manager. Horizon maps can only be applied when a single normal map is present in a material, and they use the same texture coordinates as the normal map.
  • There is a new setting in the Graphics Options dialog that enables or disables horizon mapping globally.
  • Removed the two-sided and alpha test flags from the GeometryObject class. These rendering flags can now only be set in a material.
  • Added a new type of particle that can be used for ribbon/trail effects. When the kParticlePolyboard constant is specified as a particle's style, then the PolyParticle structure must be the base structure used in the particle pool. It contains a tangent direction, a texture coordinate, and a flag indicating whether the particle is the last in a single polyboard. If it is not the last, then the polyboard continues to the next particle in the system. If it is the last, then the next particle begins a new polyboard. The radius of a particle controls the width of the polyboard.
  • Several big changes have been made to the Message Manager. The PlayerMgr class has been removed from the engine and replaced with a system based on events that are passed to handler functions in the Application class.
  • Two new general classes have been defined for distributing information to client machines in a multiplayer game. The StateSender class is used to send initial state when a new client joins a game, and the SnapshotSender class is used to send state at fixed intervals during gameplay.
  • Added a new script function to the PanelController that activates panel items. This runs the scripts attached to the panel items as if the player had clicked on them.
  • Removed the PositionMarker class and renamed the LocationMarker class to LocatorMarker. All position markers will be converted to locator markers automatically. There was really no need to have two different marker types that essentially mean the same thing.
  • In the Game Module, the player's weapon is now visible in the first-person view. Both the weapon and the flashlight are now hooked up to a special mount node that the attached to the character. The player's hands do not yet grasp the weapon correctly—we are planning to use IK in a future release to keep the hands in the right place. There are a couple of additional minor issues: projectiles do not yet fire directly out of the weapons, and motion blur around the border of the weapon is not acceptable when the background is in motion. These will both be addressed in a future release.
  • The geometry building code now splits vertices along edges that are too sharp to share normals. The Collada Importer now preserves the normal vectors on all imported geometry.
  • The Collada Importer now recognizes the custom bump map settings written by 3DS Max.
  • The Graphics Manager will now attempt to auto-configure some rendering options. On lower-end graphics chips, some options will be turned off automatically the first time the engine is run.
  • Fixed a problem in which some geometries in a zone may not be lit properly if the zone is visible through multiple portals simultaneously and a particular light region doesn't intersect all of the camera regions.
  • Made some small changes to the material manager layout. The two-sided flag, alpha test flag, and texture blend mode menu have been moved to a new Options pane. New settings for enabling horizon mapping in a material are also in the Options pane.
  • Made several updates to the Texture Importer tool. You can now specify a different output name in the import dialog. The itexture command can now take command line parameters to specify import settings. If any parameters are specified, then the import dialog is not displayed. This allows batch texture imports to be performed by storing a bunch of itexture commands in a cfg file and executing it (with the exec command). See the Texture Importer page for a description of the command line parameters.
  • Added a check box to the Texture Viewer tool that lets you turn alpha blending on and off.
  • Fixed a minor glitch that would cause the in-air propulsion to be too high for the first frame during which the player is falling. This caused a noticeable burst of acceleration on slower machines when you did something like walk off the edge of a platform.