Release Notes for Build 127

From C4 Engine Wiki
Jump to navigation Jump to search

Release date: September 15, 2006

  • Implemented a large amount of new multiplayer functionality. The overall system is a work in progress and will be completed in build 128. The primary enhancement in this release is a new message journal that stores certain controller messages. The journal is sent to client machines when they join a game in order to update the state of various controllers before the current world is displayed. When a client machine receives the messages in the journal, it plays them as if it had been connected to the server all along, ensuring that the correct state is set for controllers that have changed since the game was started.
  • A controller message is added to the Message Manager's journal when it is sent from the server using the MessageMgr::SendMessageJournal function instead of the SendMessageAll function. Journaled messages are also tracked on a per-controller basis, and new messages may override previous messages in the journal for the same controller. The ControllerMessage class now has a virtual function named ControllerMessage::OverridesMessage that is called once for each message in the journal that was previously sent to the same controller. It can inspect the previous message object and return true to knock the previous message out of the journal.
  • It is now possible to assign a generic controller to a node. The only purpose of the generic controller is to receive built-in controller messages used by the built-in script methods (such as Enable Node and Disable Node). Any node that is the target of a built-in script method must have a controller assigned to it in order to receive the messages send to it by the script. Any type of controller will do, but if the node doesn't have a controller assigned to it for any other purpose, then it will need a generic controller.
  • Scripts now always run only on the server machine. The "script runs on server only" flag has been removed.
  • Split the color for light sources into a diffuse color and a specular color. Ordinarily, these are the same, but you can now set a separate specular color for a light source that will be used in the specular component of the shading formula.
  • Added a brightness scale box to the Get Info dialog for lights. The overall brightness of a light is scaled by whatever number is entered, as long as it's greater than 1.0.
  • Added a beam effect node that renders a cylindrical beam between two points. The beam is rendered as a quad that always faces the camera. The beam may have a custom texture assigned to it that repeats a given number of times along the beam, or it can use a default built-in texture.
  • Implemented the Convert to Generic Mesh command in the World Editor. This independently converts each selected geometry into a generic mesh geometry. This will be useful for future vertex/face editing tools because they will only operate on mesh geometries and not primitive geometries.
  • The Merge Geometry and Convert to Generic Mesh commands now perform internal T-junction elimination. This is very useful if you build up a multi-material mesh by creating several different components that don't necessarily all share the same vertex positions.
  • The concept of group space has been removed from the engine. Vertex coordinates for a geometry are now always stored in either object space or world space.
  • Added command line parsing. The same commands that can be put in a CFG file can now be appended to the command line, and these are executed immediately after the Variables.cfg file is executed. Commands are separated by semicolons, and variables begin with a dollar sign. As an example, the following line resets the display resolution to 1024×768 and sets the application module to Skeleton.dll.
   C4.exe $displayWidth=1024; $displayHeight=768; $applicName="Skeleton"
  • Further improved the Collada Importer's ability to locate texture files. It will now recognize the substring "/../tga/" and treat anything that comes after it as the full path to a texture image.
  • The Collada Importer will now recognize multiple objects being instanced for a single node. It's a bit odd for a Collada file to have this (and its legality is questionable), but Google SketchUp likes to do it.
  • (Bug #0000078) The Collada Importer now imports lights specified in the manner defined by Collada 1.4.
  • Added two new built-in script methods that enable and disable interactivity for a node.
  • Added a script function to the panel controller that changes the text for a panel item.
  • (Bug #0000001) Fixed a problem in the demo game module that would cause a weapon to get stuck in the firing mode if you engaged an interactive object while firing. Interaction events are now simply ignored if you're firing your weapon.
  • (Bug #0000035) Fixed a problem in the material manager that was not correctly invalidating changed materials on a mesh with multiple materials.
  • (Bug #0000057) Fixed a problem that prevented subfolders from being created on the Mac when new resources were imported.