Archive for July 2011
Pretty much got the Blood UI stuff out of the way, at least good enough for the first release. So the next step is re-integrating the sector rendering/collision stuff and adding in the few missing features for Blood and Outlaws.
A few screenshots:
This is a texture browser that I implemented using a simple UI script. If you hover over a texture it tells you the index and size. You can scroll through using up/down or page up and page down. I’m using it to find textures quickly but an enhanced version will wind up in the editor.
And then the title screen. Demos don’t work and won’t on the first release, which is why the background is black but the menu functions, the blood and selection animate. (And I know the border graphic around the word “Blood” is upside down, it has been fixed already as seen in the 4:3 screenshots below).
More UI screenshots in 4:3
And the “Game” screen – note the HUD is rendering though the weapon will be replaced by a proper weapon script later. The next update will show real level geometry again.
As mentioned above, the next step is re-integrating the sector/world system. Since I’ll be adding any missing features that Blood and Outlaws need you’ll see screenshots of that work in action soon.
The console is now re-integrated and fully works. Below you can see some simple screenshots of the console in action, on Windows and Linux (click to see full size). Note that these are older, keep reading for a more recent look:
This may not look like much, but many of the core systems had to be re-written or re-integrated just to get to this point. Remember that for the merger I’ve started with a fresh new project and have been re-integrating and refactoring the code as I import it (or rewritting as needed) to work with OpenGL, be free of D3DX dependence and work on Windows, Linux and OS X while sharing as much as possible.
So far the dynamic game libraries are working, DarkXL is displayed above because the DarkXL.dll / DarkXL.so file is currently loaded. It gets the name and version number from the library since the games can be updated without recompiling the engine. There is also the platform independent Input system, file system, image loader, texture cache, core renderer, vertex and index buffers, bitmap fonts and font rendering, console, high resolution timer and so forth.
The “movie playback” system is in place, with the first supported format being the cutscene system used by Dark Forces. In addition the UI scripts, which control the UI/HUD and general gameflow are working well. DaggerXL UI scripts and movie playback support is next.
I’ve also been taking care to handle widescreen better with 2D elements.
DarkXL Title screen:
And various screenshots from the intro cutscene, notice that the aspect ratio is preserved, which is why there are black borders on either side in widescreen. Note that game UI will recieve similar treatment.
Once more of the UI is finished for DarkXL, I’ll do the same for DaggerXL, BloodXL and OutlawsXL. After that I start getting the 3D gameplay re-integrated and working for all 4 games on all platforms. I’m expecting to start getting the gameplay re-integrated and start outside testing next week.
Here is another quick update about the merger.
I’ve just finished the “cross-platform plugin system” which will allow game libs to be dynamically loaded and used by the engine. The game code is platform independent, with the platform dependent parts being pushed into the engine. Basically this means that the game code only needs to be compiled on a supported platform in order to work with the engine.
I’m reworking the launcher to read some “info” files about each game (small text files that contain information such as name, description, launcher icon, library name and subdirectory) and then auto-populate the UI. The launcher will then be able to query each game regarding additional game-specific UI that it needs. This means that there won’t be a hard coded set of games that are supported, new games can be added simply by adding the necessary resources (library – dll, so, etc., images, icons, scripts, etc.) and the info file. Obviously only the 4 main games will be shipped with the XL Engine releases at this time, but adding new games and the editor will be pretty easy in the future.
In addition I’m considering making the source for the games themselves open when the merger release occurs, though the engine source may not be for a while longer (depending on how clean and optimal the code is at release time).
During the process of refactoring the code, I will be trying to remove some of the annoying little issues with DarkXL, DaggerXL and the Launcher. In this case I’m not talking about missing game features or gameplay bugs, they will be tackled as development continues, but general software or usability related things. Here is my list so far, feel free to post comments about issues that I missed:
* Auto-detect game data path in the launcher when using something like Steam.
* Cursor offset making some buttons hard to hit.
* Alt-Tab issues.
* Performance issues on some GPU’s – such as certain AMD/ATI cards.
* Performance improvements in general.
* Input issues with the menus/dialogs in DaggerXL (popup instantly disappearing, passing through multiple menus, etc.).
* All keys remappable from the launcher – including secondary fire and the console key.
* All graphics and sound settings configurable in the launcher.
* Easy mod support for DarkXL from the launcher.
* 320×200 mode pixel/texel alignment issues in DaggerXL.
* Support for altered Daggerfall executables that are properly patched to 213.
Any other similar issues you guys want to point out, here’s your chance.
If you want to join the discussion, there is a forum topic for this.