Release Notes for Build 135

From C4 Engine Wiki
Jump to navigation Jump to search

Release date: May 12, 2007

  • Antialiasing has been re-implemented in the engine using the GL_EXT_framebuffer_multisample extension. The number of samples per pixel can be set in the Graphics Settings dialog, and the engine supports up to 8 samples when available.
  • The weapon code in the demo game has received a big upgrade. All weapons now shoot precisely from their barrels. More importantly, the proton cannon is now implemented. When it's fired, the barrel takes a moment to spin up before the beams actually shoot, but the gun has a devastating effect on its target.
  • The configuration interface for customizable settings has been completely reworked. It now displays a two-column scrollable list of settings. Slider-based settings now also accept text entry. The only affect this has on existing code is that the TextSetting constructor no longer takes a width parameter.
  • There is a new HeadingSetting class that lets you insert a section heading into a list of settings.
  • There is a new Transform page in the World Editor that displays the position, rotation, and size of the node for which the gizmo is currently shown. (Remember that the gizmo can be advanced through the selected nodes by pressing Tab.) Entering new data in the Transform page has an immediate effect on the node. All changes to the position and rotation are clumped together for a single undo step, and all changes to the size are clumped together for a separate single undo step. Keyboard focus in the Transform page is ended whenever you click in a viewport, select one of the standard tools at the top of the editor, or hit the Escape key.
  • The size fields in the Transform page require a little explanation. These aren't to be confused with scales, which are not included in transformation matrices in C4. All objects that have well-defined sizes can express their dimensions using 1–4 measurements. For most primitive geometries, the measurements correspond to the size of the geometry in the x, y, and z directions. The annulus and hole primitives are exceptions where two numbers correspond to the size of the inner boundary, and two numbers correspond to the size of the outer boundary. For things like lights and sound sources, the first size parameter corresponds to the light's range.
  • There is a new Info page in the World Editor that displays various kinds of information about the node for which the gizmo is currently shown. Currently, the Info page displays the node name, the controller type, the number of connectors, and the number of properties for every type of node. For geometry nodes, the Info page also displays the vertex count, face count, surface count, material count, and detail level count. More information may be added in a future release.
  • There is a new Grid page in the World Editor that contains controls for all grid-related settings. The toggle buttons for showing gridlines, snapping to the grid, and showing the coordinate axes have all been moved to the Grid page. The settings for gridline spacing and grid color have also been moved to the Grid page from their previous home in the Editor Settings dialog. There is a new setting called "major grid" that specifies how many grid squares separate each brighter major gridline. There are also two new buttons that immediately double or halve the gridline spacing.
  • The grid snap mechanism in the World Editor has been changed. Instead of being applied to everything, grid snap is now only applied where it makes sense. In general, grid snap is applied when nodes are placed, moved, or resized. Furthermore, grid snap now applies when nodes are moved in the perspective viewport.
  • The motion blur algorithm has been upgraded in several ways. It's now more accurate, and it takes depth gradients into account so that distant objects don't blur together with close objects. Previously, you could see a halo around the weapon in the demo game because the background was moving, but the weapon was stationary with respect to the camera. This no longer happens, and additionally, the spinning barrel of the proton cannon won't blur with the stationary parts of the same gun.

It was not possible to implement the motion blur as nicely on ATI hardware because the ATI drivers do not support derivative instructions in ARB_fragment_program. So the ability to separate motion blur into different depth layers is limited on ATI hardware, but it's still better in this release than in the previous ones. In particular, the engine can't stop the stationary part of the proton cannon from blurring into the spinning barrel on ATI hardware. Derivative instructions are available on ATI hardware in GLSL, but GLSL has serious limitations that don't exist in ARB_fragment_program, such as a lack of shared global variables, that have prevented the engine from using it.

  • The cursor in an interface panel no longer blurs into the rest of the panel when the camera moves (since it's stationary with respect to the camera). Again, this isn't 100% perfect on ATI hardware for the reasons mentioned above.
  • The Script Editor will now automatically assign generic controllers to nodes that are the targets of script methods, but don't already have controllers assigned to them. This removes the extra step that was necessary before in order for a script method to send messages to a node.
  • Added a new function called SetInputManagementMode to the Interface Manager class. Passing kInputManagementManual to this function will stop the Interface Manager from changing the input mode based on whether a window capable of receiving events is currently active. Passing kInputManagementAutomatic to the function will cause the Interface Manager to switch the input mode to gameplay mode whenever all interactive windows are closed.