the latest Ca3DE 8.03 (March 2008) version has just been released!
An incredible amount of development work has been spent since the last major release in July 2007, adding all the features listed below. They include support for map scripting, better collision detection, many enhancements to the Ca3DE World Editor CaWE, much improved in-game console handling, and much more.
I'm very grateful to all the wonderful people who helped with testing and debugging the release candidates that have irregularly been published since December, and I'm proud that this piece of work is finally available for public download.
The download is available at the Ca3DE Download section.
As always, have fun with the new release, and if you find any problems with it, please let me know!
The changelog for this release is posted immediately below. It's only a high-level overview of all the changes since last July, but it's still quite big.
The changes since the previous release (7.07, July 2007) broadly fall into three categories:
- the introduction of Map Scripting combined with a new Clip System for collision detection,
- enhancements to the Ca3DE World Editor "CaWE",
- everything else.
Map Scripting and the ClipSys
The introduction of map scripting went hand in hand with a thorough revision of the Ca3DE clip and collision detection code, as well as many accompanying code design enhancements.
- Finally separated the clip world from the render world: Before, collision detection was performed as a by-product of the render system. Now there is a clear separation of the two concepts that exist in parallel (the clip and render worlds).
- Exemplary reimplemented the "ladder" game code in terms of the new clip system.
- Created explicit collision models for all static detail models in this release as demonstrated in the second part of the tutorial at http://www.ca3d-engine.de/flash/Placing_a_Model.htm and updated the map files accordingly.
- Added a fully scripted two-part slide door to the TechDemo map for demonstration.
- Introduced the new "mover" (EntFuncMoverT), "trigger" (EntTriggerT) and "doors" (EntFuncDoorT) entity classes that use and demonstrate further aspects of both the new scripting and clip systems. Plenty of door instances have been placed into the TechDemo map.
- Improved the "connection" between 3D world GUI scripts and map-scripts, so that GUI scripts can access and manipulate entities easily. This is also demonstrated in the TechDemo map with the light source near the "emergency exit".
- Map scripting provides coroutine management, so that functions like wait(), waitFrame() and thread() are possible. See http://www.ca3d-engine.de/forum/viewtopic.php?f=4&t=365 for more details.
Enhancements to CaWE
Thanks to the efforts of Jörn Koch, CaWE has undergone many improvements:
- The two old dialogs "Patch Surface" and "Edit Face Props" were merged into one: the "Surface Properties" dialog, which included a thorough conceptual revision and rewrite almost from scratch. See http://www.ca3d-engine.de/wiki/mapping: ... tfaceprops for the result.
- Completed and augmented documentation about all tools, dialogs and menu items, as well as several step-by-step flash tutorials about crucial topics.
- Much simplified the setup and configuration dialog. CaWE essentially works "out of the box" now, no complicated and error-prone initial setup required any more.
- Game (MOD) configurations now work automatically, too.
- 3D cameras are now displayed in the 2D views even when the Camera tool is not active. This makes precise 3D camera movement and orientation more intuitive.
- Maps can now be compiled from within CaWE with custom options to the compile tools.
- Several improvements to the 2D and 3D rendering of objects (e.g. bounds texts stay within view, mouse cursor depicts a small "+" when cloning objects, Bezier patches, etc.)
- The Material Browser dialog has been cleaned up and finally shows more essential material attributes.
- The number of Bezier patch subdivisions can now be controlled explicitly, and for new Bezier patches, "endcaps" can optionally be created with them.
- Game definition files that describe all entity classes of a MOD are now Lua scripts.
- Added a first, experimental incarnation of the new "Entity Inspector" dialog, which is going to replace the old "Object Properties" and "Entity Report" dialogs in the next release. Documentation is already available here.
All other improvements do not fall into one of the two broad categories above, but are not the less important:
- Upgraded to wxWidgets 2.8 (latest revision from SVN branch).
- Revised the in-game command console once more: The "convars" and "confuncs" of the C++ code are now much better integrated into the underlying Lua state. This enables the full power of Lua at the Ca3DE in-game console, makes processing a config.lua file (with e.g. user default settings) trivial, includes a powerful TAB command-line completion feature, etc. See http://www.ca3d-engine.de/forum/viewtop ... 2467#p2467 for more details.
- Introduced many new console variables and function in the sequence, type list() for a full list and see http://www.ca3d-engine.de/forum/viewtopic.php?f=6&t=374 for an example.
- CaLight can now create lightmaps for entities other than worldspawn.
- Cleanup of old client and server code. The server ("remote") console feature has been entirely rewritten. It's now based on connection-less network packets. The client has been adapted accordingly as well, it now also acts as a client for connection-less server communications! Both the client and server side got the appropriate password handling facilities added.
- The game (MOD) code now accesses the Ca3D-Engine world representation via the proper C++ interface "GameWorldI", an abstract base class. This clarifies the code design significantly.
- Added support for the new Microsoft Visual C++ 9 (2008) compiler.
- Server-controlled NPC (non-player character) entities now get their graphics position interpolated for stutter-free movement.
- Addressed and fixed a huge number of other issues and bugs.