Release Notes for Version 5.0

From C4 Engine Wiki
Jump to navigation Jump to search

Release date: September 20, 2016

(C4 version 5.0 corresponds to Tombstone version 1.0.)

Core Engine

  • All C-style casts have been changed to constructor syntax.
  • The * and % operators for dot product and cross product have been removed from the engine. The Dot() and Cross() functions should always be used instead.
  • The container modification and iteration functions have been made more verbose.
  • In all callback-type functions, the term "proc" has been changed to "callback".
  • The GraphEdge class has been renamed to GraphRelation.
  • The Singleton template has been named to Global.
  • The Manipulator class has been renamed to Director.
  • The BuildSettingList() and CommitSetting() functions have been added to replace the GetSettingCount(), GetSetting(), and SetSetting() functions.
  • CPU timings have been added to engine, and they are displayed in the Time window.
  • All of the various resource formats have been updated. There is now a common header followed by resource-specific data.

World Manager

  • The cell graphs into which objects are organized for each zone are now octrees instead of tall quadtrees.
  • Detail rings have been added to the engine. Each geometry node has a detail ring setting that determines at what distance the geometry starts to fade out. A world can have detail property that specifies the detail ring sizes. Indirect portals and camera widgets can specify a distance scale that modifies the sizes of all detail rings for geometry that is rendered through them.
  • A special root region graph has been added for lights to solve shadowing problems when lights are rooted in multiple zones that can see each other through portals.
  • The impostor system has been updated. Impostors now have better transition blends, and they are no longer required to be vertical.
  • The remote portal cover render stage has been removed from the engine.
  • Remote cameras have been renamed to indirect cameras, and remote portals have been renamed to indirect portals.
  • Parallel code for shadow map generation has been added to the engine to improve performance.
  • Multisampled rendering is now permanently on, and the engine uses a custom downsampling shader.
  • Infrastructure necessary for upcoming secondary frame buffer effects has been implemented.

Graphics Manager

  • The motion blur effect has been improved for discontinuous screen-space velocities.
  • Clipping plane support has been added to vertex shaders. Clipping planes are exposed for widgets.
  • The engine now has the ability to reference material resources from material objects.
  • The fog rendering code has been enhanced.

Interface Manager

  • All text rendering in the engine has been replaced with a new technology that renders glyphs directly from outline data directly on the GPU. Support for kerning and tracking have been added.

Sound Manager

  • The engine now uses a new proprietary audio format.
  • The sound streaming code has been changed to use triple buffering. This ensures that there can be no breaks when a streaming sound loops or starts a new file.


  • The Controller::ScheduleSleep() function and Schedule Sleep script method have been added to the engine.
  • The ability now exists for a script method to delete the node to which the script is attached or one of its predecessors.


  • The Shape node now supports dynamic shape substances.
  • The Set Shape Substance modifier has been added to the engine.

Math Library

  • Custom versions of all transcendental functions and inverse trig functions have been implemented in the engine.
  • The various vector, bivector, and trivector classes have been improved.


World Editor

  • The World Editor now has a complete set of landscaping paint tools.
  • The performance of radiosity space generation has been improved by breaking the work into parallel jobs.
  • A new tilt setting has been added to the placement adjuster in the World Editor and Landscaping Editor.
  • A new director cell graph has been implemented in the World Editor. This drastically improves performance for scenes containing a lot of vegetation.
  • The rendering code and picking code in the World Editor have been modified to use the cell graph. Director bounding spheres have been removed.
  • Material Editor functionality for external material resources has been added.

Script Editor

  • The method appearance in the Script Editor has been changed to a larger box size.

Texture Tool

  • The configuration files for Texture Importer have been updated to use the OpenDDL format.

Sound Tool

  • A Sound Importer tool has been added, and it converts .wav files to the new format.