As many Cedega users have remarked, too much time has passed between the last development report and this one. For that, we sincerely apologize. Wulfie has an update on what's been happening in The Den. That so much time has passed does not mean that our caffeine supplies are running low and our developers have been slacking. On the contrary, TransGaming's taskmasters have been merciless over the past several months, and we've made significant strides in several critical areas.
As Wulfie's blog describes, many of those development strides have borne their first fruit on the Mac side with our Cider based games. As you'll see, these efforts are also critical to the future of Cedega on Linux.
The last many months have seen a significant research and development effort within TransGaming that we have not talked about publicly to this point. Starting in mid-2006, we undertook a significant project to provide replacements for the D3DX and Visual C++ runtime DLLs. These DLLs ship with many Windows-based games, but are licensed under restrictive terms which do not allow them to be redistributed for non-Windows platforms such as Mac OS X and Linux. As a result, any game that ships on Linux or Mac OS X as a standalone product requires replacements for these critical and very complex libraries. We now have our replacement DLLs in place, which has allowed us to do things such as ship the Mac and Linux clients for EVE Online simultaneously.
This is particularly vital for future work to support DirectX10 on both Linux and Mac. The D3DX components are critical, as they include the HLSL shader compiler and effects engine used by many modern games. With DirectX 10, Microsoft has incorporated the HLSL compiler and effects system directly into the core DirectX APIs, so the work that we have done here is going to provide a good basis as we move to future support of DirectX 10.
Another major area of development that went into Cider that you will soon be enjoying in Cedega is a system that we refer to as 'Mixed Mode Shaders'. As of Cedega 6.0, Shader Model 2.0 shaders are supported through the use of OpenGL's GLSL shader language. This language is capable of supporting the features required by SM 2.0 shaders, but it has some limitations that have become apparent to us, particularly with performance. In many cases, using GLSL can cause performance issues due to runtime compilation speed as well as driver overhead issues.
The polls show our users want the best performance possible so we couldn't let things stand. To combat performance issues, we have made extensive changes to our shader translation systems to allow a mix of GLSL shaders along with the more assembly-oriented ARB shader system. GLSL will be used when it's required, but otherwise we generate ARB shaders as much as possible. This results in performance increases in several areas, one of which is reducing the stuttering that could sometimes be caused by GLSL shaders being compiled and optimized at runtime.
Another key aspect of our development work over the last several months has been the deployment of new copy protection systems. Several of the titles now shipping with Cider are protected with recent versions of SecuROM or SafeDisc, just as the original Windows versions of these games are. In order to support this, we have deepened our relationships with DRM providers and worked hard to support them on both Mac and Linux.
Upcoming versions of Cedega will incorporate these copy protection improvements and be able to play several recently released games that use them.
Being able to support the copy protection and graphics systems required for a game are all very well and good, but without support for actually installing those games, there is no easy way to actually get them into Cedega in the first place. To remedy this, TransGaming has made a number of internal changes to our code to be able to share more code with the Wine project, particularly in the area of installers. The MSI installation system has now surpassed InstallShield in popularity among game developers, and support for MSI within Wine is very good. As a result, we have moved to integrate this support into Cedega as well. This is not a one way street; TransGaming's developers have been contributing some changes back to Wine as well, including in several networking and debugging libraries.
We have also almost completed making our move to the Git source code control system, used by the Linux kernel and Wine projects, which will help considerably in future open source collaboration.
Another major area that we have been doing significant work on has been the Cedega User Interface. The first iteration of this has been released with EVE Online for Linux.
We have been focusing on the area of usability. The first step was to provide a simple method to automatically update all aspects of Cedega from UI to Engine to optional components. Being able to provide packages that work with distribution package management tools that are also self updating is quite a task. The updated features also allow for Cedega and games to be installed globally. This means you only need to install a game once and it can be played by all users on your system. It also means that you get to choose where Cedega stores installed games. With more changes planned we think the Cedega UI is going to become a boon to all Linux gamers. Other work In addition to the above areas, we've made countless minor changes that will be released in future versions of Cedega. These include:
Various correctness and compatibility changes for Shader Model 2.0 and higher
Performance improvements in our 3D code
Better support for OpenGL Vertex Buffer Objects (VBO), used by modern OpenGL implementations in place of the vendor-specific Vertex Array Range (VAR) extensions
Various low level file management and kernel API fixes
Shared memory wineserver support for POSIX IPC
Improved support for international keyboards, including dead keys
Work on Shader Model 3.0 support
Improved audio input handling across all audio back-ends
Joystick and gamepad hot swapping support