jump to navigation

Final Update Before the Beta December 31, 2010

Posted by luciusdxl in Uncategorized.

DarkXL Beta

I’m continuing to work on the Beta, fixing many bugs and issues that have been around for a while. For example I recently fixed various smaller issues such as the punching sound when near a wall, making sure that the fist/mines aren’t full bright when attacking, tweaking the punching animation speed, fixing the Bryar Pistol animation – which was missing a frame before and thus the playback speed was also incorrect and various other issues that were, up until now, considered low priority. Later today I will be working on polishing up all the weapons, as well as weapon effects. This includes “physical” reactions by enemies, such as being knocked up in the air by a well placed punch to flying up in the air after dying by an explosion. After that I’ll fix up some rendering and UI issues – such as the sky offsets, difficulty icons next to completed levels, mouse position in the window (there is an offset that makes some buttons hard to hit) and so on, and finally finish tweaking the AI.

Once that stuff is done, probably tonight or early tomorrow, I will work on cut-scene issues (sounds getting cutoff, the occasional animation glitch and music playback). Finally once the game is fully playable, including the ending working correctly, I will go through a final UI and optimization pass. I just want to clarify that I’ve been saying the Beta will be released around New Years because it may not be released exactly on New Years day. If these tasks take me a little longer I may release a few days after. The goal, though, is to get  the Beta released this weekend.

Outlaws and Blood Support

And to avoid misunderstandings about what this Beta release will contain, despite statements to the contrary floating around the internet, you will not be able to play Outlaws or Blood yet with this release. The build after the first Beta build will introduce those as games you can select and interact with, but the support will be very early and incomplete. But the idea is that once the games are selectable I will build on that with future builds.

Below you’ll see the initial plan for supporting Outlaws and Blood – continued bug fixes and enhancement will still be going on for Dark Forces as well as work on the editor. Note that the implementation plans are more “broad” and staged then the original Dark Forces implementation. This is due to engine maturity and a slight shift in my development methods from lessons learned from DarkXL.

* Support all engine features to render the levels correctly – this includes sprites and objects (not enemies or “NPCs”). So far no additional engine work has been done so the first Beta could be released. This may occur over one build or a couple, depending on time spent and issues encountered. The first pass will be included in the second Beta build, with a third build following to finish it up if necessary.

* First pass on weapons – the idea is to implement all the weapons but save fine tuning and secondary effects until later.

* First pass on enemies/”NPCs”. This means implementing all the enemies but only with basic AI.

* First pass on combat effects (weapon effects, blood splats).

* First pass on game-specific physics and controls. Tweak walking, running, crouching speeds. Tweak jumping heights and distances. Tweak landing animations, weapon bob animations, friction, slope interaction.

* First pass on game specific UI. Things like the in-game HUD, episode and difficulty selection, save and load games.

* Support engine features needed to make the levels interactive – this would be for things like doors, light switches, flickering lights, exploding walls, etc.. Most of the work is already done for Outlaws, so most of the work here will be for Blood. This will probably occur over a couple of builds, starting with basic functionality and then layering on top of that. Once this is done, levels should be fully complete-able and playable.

* Sound support and music playback. This includes any ambient sounds and sound triggers. This should occur in just one build since the engine already supports playback of simple sound files and midi files.

* First pass on Game Flow – this includes cut-scenes and level flow (like the level ending stats).

* Fine tune weapons and implement secondary effects. This will be done for each weapon in turn (probably one build per couple of weapons).

* Implement proper enemy AI, again considering each enemy type in turn (i.e. two enemies that act in a similar way except for stats and damage would be one type).

* Polish pass on game-specific physics and controls, including object physics (effecting interactive objects, such as zombie heads, and enemies).

* Polish combat effects.

* Finish and polish UI.

* Finish game flow elements.

* Game specific multi-player support.


Beta Update and Christmas Bonus December 22, 2010

Posted by luciusdxl in Uncategorized.

Beta Update

I’m currently working on finishing the sound system as I’ve stated last update. This means fixing the iMuse playback issues (hung notes, volume, speed), properly supporting switching tracks and transitions, fixing the sound attenuation to match Dark Forces better and adding proper volume controls to the configuration menu. Next up is fixing any remaining progression or level interaction bugs, including making the ending work properly. After that I will work on tweaking and finishing the AI. Finally I’ll go through a final polish and optimization pass for the Beta – fixing the occasional VUE issue, making sure music plays in cutscenes, a better way a setting the Dark Forces data plus better validation before the program even starts and more.

I’m planning on releasing the DarkXL Beta around New Years, so not a very long wait remaining.

Christmas Bonus

You may have read that I plan on adding DarkXL support for Outlaws and a mysterious “third game.” On the side I’ve been working on loading the different file formats for these games in the DarkXL editor in preparation for the work I’d be doing after the Beta is released. Below you will see screenshots of levels rendering both games in the DarkXL editor, please note that they are very early and represent only a few hours of work. But I can actually run around the levels in the DarkXL editor and expect to get real interaction and functionality soon after the Beta. The plan is to work on these games pretty much simultaneously rather than one and then the other. So without further ado:


*This is the “official” DarkXL support announcement for the following games*

Images are thumbnails, click on them for a larger view. Images are taken from within the in-engine DarkXL editor, which is why there is no game UI and a small toolbar at the bottom of the screenshots. Also the top 3 screenshots of each set are taken with texture filtering disabled, the bottom 3 with filtering enabled. This is done so it is clear that texture filtering is optional, since it seems to be a controversial and important issue to some players.



A first-person shooter released by LucasArts in 1997 using an enhanced version of the “Jedi (engine)” – the same engine as Dark Forces. It is one of the very few FPS games with a Wild West setting. CG animation sequences, with special filters to look hand drawn, play between each mission and set up the action in the next area. It’s the first video game to feature sniper zoom. Source: Wikipedia Article

This is a natural extension of DarkXL since it basically means expanding the engine to support features that I wanted to support anyway. One key new element is multiplayer, which will be added to Dark Forces as well. This game becomes more and more difficult to run with every version of Windows and is a game that really deserves to be preserved and enhanced.





A first-person shooter game developed by 3D Realms and Monolith Productions and distributed by GT Interactive. Released on May 31, 1997, it utilized an enhanced version of the Build engine from Ken Silverman which featured the addition of voxels. A first-person shooter in the spirit of schlock horror/slasher flicks, the gameplay of Blood is witnessed through the eyes of the player controlled character and consists of fighting with all the means available, firearms or magical weapons, the different enemies which populate the levels of the game. Source: Wikipedia Article

The Blood community has long yearned for a good port which has been made difficult due to the lack of a source code release. The enhanced Build engine uses features that are already required by Outlaws or were already planned – such as hardware accelerated voxel objects (which will be supported in the upcoming Beta release) – and supports gameplay mechanics similar to those already supported by DarkXL. With the lack of source code, the desire for a good port, the game’s excellent atmosphere and gameplay and the similar engine – this game is a natural fit for the DarkXL project.

Merry Christmas!

Path to Beta: Weapons December 18, 2010

Posted by luciusdxl in Uncategorized.

As you probably already know, the DaggerXL Character Creation build has been released. That means that I’m pushing ahead again with the DarkXL Beta! Since this is the final push for Beta, it will be up 2 weeks for another build. So I’ve decided that I will blog about my progress throughout the process, so you can see what’s happening to make the Beta a reality.

Today I’ve been working on implementing all the remaining weapons, which are almost complete, including secondary fire. To start with, I’m doing all the work in the Pure Renderer to help ensure consistency with DOS Dark Forces. Below I show screenshots of the weapons in action in DarkXL using the Pure Renderer. You’ll also notice that I fixed the font alignment issues and properly show the number of missiles.

Next up: Complete iMuse implementation and sound attenuation fixes. 🙂

Beta Update and a Short Detour December 11, 2010

Posted by luciusdxl in Uncategorized.

[Update: New screenshots Added Below]

Beta Update

As some of you may know, I’ve taken a short break from work on the DarkXL Beta in order to get the Character Creation build done for DaggerXL. Don’t worry, it is nearly finished and DarkXL Beta should arrive within a week or two from now. Beta basically means that the program has all the features complete that are necessary to fully play the original Dark Forces levels. This means music playing properly, all the weapons working, remaining completion issues fixed, AI fully functioning and so on. At this point DarkXL should be full replacement for DosBox. It will even feature a “Pure Renderer”, as discussed in recent posts, that is designed to emulate the original software rendered look – but still have all the other features of DarkXL.

A Short Detour – Voxels

I’ve been talking about adding voxel support to DarkXL and DaggerXL lately for various reasons. So recently when I had a little bit of time and wanted to do something different, I started to implement KVX file support and a first pass simple voxel renderer to view the results. The KVX format is one of Ken’s voxel model formats, supported by his Slab6 tool and used in some Build games such as Blood. Note that none of Ken’s code was used to either use the file format or to render the voxel models. Fortunately he was nice enough to describe the format well enough that code was not necessary. I’ve only spent a few hours working on this, so it’s not ready for use yet, but it’s something that I will get back to once I finish the current builds (Beta for DarkXL, Character Creation for DaggerXL). Though I will probably support previewing voxel models in the various projects in the next builds, I’ll discuss this more once those builds are released.

Note the voxels are rendered, intentionally, in a way that looks similar to the way early 3D games would have rendered them. Basically the result looks more like columns of pixels then tiny cubes. In other words, converting these to a model and then rendering them would not look the same. This is equivalent to no filtering – which fits with the Pure Renderer – the pixels generally appear the correct size and fit well with the scene (though the actual art not as much – but it’s just a test). For rendering voxel models in the regular rendering mode, other filters will be possible to allow for smoother rendering. More on this later.

The screenshots below show some voxel models that I extracted from Blood being rendering in DarkXL using the Pure Renderer. Note that the Death Star Plans was temporarily replaced, so I could see the models rotating in the scene. Note also that the voxel models sort correctly with the environment, including sprites and 3D models (which you can’t see here). Click on the pictures to see high resolution versions of them.

New Screenshots

(High resolution/fullbright – non-voxel geometry shown in wireframe)

Pure Renderer Preview November 27, 2010

Posted by luciusdxl in Uncategorized.
1 comment so far

I recorded a short video of the Pure Renderer in action, which I posted on YouTube. There are still some bugs but it is almost finished. 🙂  The Pure Renderer has been so useful in finding inconsistencies that will effect even the regular renderer, that I’m going to do the same thing for DaggerXL very soon as well.

The game is rendered into a 320×200 buffer (or into a 320×200 portion of the backbuffer and copied if your hardware doesn’t support render targets) and then upscaled using integral scales for the X axis and as close to integral scales as possible for the Y axis. This reduces upscaling artifacts and blurring, ensuring that any artifacts are slight at most – and only occur on one axis. After scaling, the result is then letter/pillar boxed in order to fit on the display. Any native resolution is supported, though the image will only be upscaled to specific resolutions (integral scales) and then centered to fit. This produces a 4:3 image with rectangular pixels (5:6), just like the original Dos version. In the future “Mac mode” will also be supported, and general high resolution support – with widescreen – with palette support will be added as well.

For the video, the window resolution is 1024×768, the 320×200 image is scaled to 960×720 and then letter/pillar boxed to fit.

Upcoming DarkXL Build 9.09 Feature – Pure Renderer November 20, 2010

Posted by luciusdxl in Uncategorized.

The next build will introduce the “Pure Renderer.” The point of this renderer is to emulate the software rendered look of the original game, while using hardware to do it. There are several reasons to have this capability:

* Nostalgia – some people want to play the game as it originally looked but still have better compatibility, better performance on modern systems, limit removal (for modding), mouse look (but you’ll be able to use keys to) and so on. This would appeal to the “Chocolate Doom” type fans.

* When tweaking elements of the game I’d like the ability to directly compare DarkXL and DosBox, graphics, controls and all. This way I can get all the default behaviors to be correct but allow users to turn up AI difficulty or other features if they want to. This is directly applicable to the next build, when I finish up all the functionality.

Of course I expect that many people won’t play in this mode (I’ll mainly use it for testing, I prefer the clean look of the standard renderer) – but some will enjoy it and it’s good for testing. And it will be possible to play in higher resolutions with palette support, though the scaling won’t be as accurate or faithful to the DOS version.

In this mode DarkXL renders the view in 320×200, using the palette and color map for shading. I’m still tweaking the depth cueing, but this gives the same rendered result (except for bugs) as the original game. I will be adding support that would allow sprites to be rendered without clipping into floors and ceilings to finish it off.

It also fits the 320×200 resolution into the selected (ideally native) resolution in a way that preserves the aspect ratio, like Chocolate Doom, rendering pixels with a 5:6 ratio (16:10 fit into a 4:3 space). To avoid as much stretching as possible, the display is letterboxed as needed. With 1600×1200 native resolution or higher, this gives you perfect scaling. With lower resolutions, there may be some fractional scaling on the Y axis, but this isn’t generally noticeable (though the X axis is still precise).

In the screenshots, the weapon is not using the colormap/palette for lighting but everything else is. And something weird happens with the ammo text in 320×200. These issues will be fixed.

In the screenshots click on the thumbnails to see the full resolution – you can see what it does to fit the screen to my 1920×1200 widescreen display. Notice that the image is crisp, not blurry due to scaling.

DarkXL Build 9.08 Released! November 17, 2010

Posted by luciusdxl in Uncategorized.

DarkXL Build 9.08 has finally been released! This release features a lot of work on getting most of the remaining enemies in the game as well as resolving most of the INF issues. With these changes, you can now play through every level in the game and even get to the final boss battle with Mohc. The final battle doesn’t play out right and you may have to cheat to actually finish the game, but that will come in the next build. A variety of things went into this build in order to get to this point:

*3DO Texture fixes – now most 3DO’s are textured correctly, included 3DO bridges.
*Shoot switches now work correctly.
*Due to INF fixes, things like Force Fields now work correctly.
*Magnetically Sealed Rooms now work (rooms that cause blaster bolts to be reflected off the walls).
*Land Mines now work (though the explosion radius seems too big still).
*Exploding walls work.
*Dynamically switching adjoins now work.
*Stop delays of less then 1 second are now supported, fixing many areas with strobing lights and texture animation.
*Non-Player objects now honor second heights properly.
*Order of loading issues fixed, which fixes issues with objects being assigned to the wrong sectors in some cases.
*Teleport Chutes implemented.
*Secret tracking, the proper percentage of found secrets is now displayed in your PDA.
*Most enemies are now implemented.
*First pass (incomplete) Dark Trooper (Phase 1, 2 and 3) AI and Boba Fett AI. These will be finished next build but are in so the levels are completable.
*Boss elevators work correctly.
*Fixed jumping/falling so that you can jump onto very skinny ledges (needed for the Arc Hammer)
*Implemented Damage Floors, Walls and Gas.
*Implemented the Gas Mask.
*All Briefing screens now render correctly.
*A lot of INF fixes (too numerous to list).
*All levels completable (except maybe the last boss – this is glitchy still).

Despite the length of this list, most of the time was spent working on INF. There are still some rendering glitches, AI needs refinement and various bugs – but this is a large step towards Beta. Note that in the Imperial City, ending the level is a little confusing due to the simplistic Boba Fett AI. Normally you would beat him then go into the start sector and end the level. Right now, since he never leaves the start sector, when you beat him you actually have to back track a little then re-enter the final sector to complete the level. In the Executor level, moving the cargo unit to the end looks a little weird – it doesn’t render properly until after you hit the first switch and there are some visual glitches – but it works correctly and the level ends properly. Finally the puzzle near the end of the Arc Hammer doesn’t quite look right, but it works correctly. And as I’ve already stated, the final battle is glitchy, so you might have to cheat through the last doors in the level to finally beat it. So it’s not perfect, but I will be dealing with these problems and others in the next build.

Also, remember – using the Plasma Cutter will crash the game. Sorry, this too will be fixed next build.

The next build will see AI refinements (and completion in the case of the bosses), the rest of the weapons implemented, remaining level issues tackled and the last few logics implemented. As of the next build (9.09), DarkXL will be almost feature complete – as far as what is needed to play vanilla Dark Forces (of course other features will follow as I’ll discuss in the future). The following build (10.0) will be the first Beta and should be a complete replacement for vanilla Dark Forces as far as playing the original game. Builds beyond that will start fixing issues with user mods – until everything works correctly.

The Future of DarkXL
Beyond the Beta, DarkXL has a bright future. In addition to fixing bugs, making improvements needed for user mods to work correctly – past and future, and in general preparing for the Release Candidate there are other things in the pipe.

Once Beta is released, I will start working on the built-in level editor again. I will also start adding Outlaws level support, as well as adding the additional functionality found in the Outlaws version of the Jedi Engine to DarkXL – including slopes, double adjoins, vertical adjoins, per-sector gravity and so on. In addition to making these features available for DarkXL modding, it will also pave the way for Outlaws support. DarkXL will become a multi-game engine (“port”) similar to projects like ZDoom, Doomsday and so on. In order to support Outlaws and to add new interest in Dark Forces, I will also be adding full multiplayer support for both games – including new game modes. There is a third, suprise, game I’m planning on adding support for – though I won’t mention it here yet.

Anyway, to get the latest build go the the downloads page.

Build 9.08 Progress October 27, 2010

Posted by luciusdxl in Uncategorized.

DarkXL version 9.08 is well on it’s way now. Once it is done Gromas Mines and the Detention Center (level 5 and 6) will be fully functional, the secret area in level 4 that uses a shoot switch will work properly, the central core will move up and down once you pick up the Phrik in level 4, Phase 1 Dark Troopers will be functional (needed to beat Gromas Mines), solid color 3DO’s that should be textured (such as bridges and the shuttle in the Detention Center) will be textured correctly and more.  In addition – due to fixes I’m making for Level 5 and 6 – Ramsees Hed and the Robotics Facility will most likely be completable. And Nar Shaddaa is already beatable for me in the current build I’m working on. This means that as of the next build – 9.08 – levels 1-9 will most likely be fully playable and completable.  This build should be out in a few days. 😀

Some screenshots of various features/fixes that I’ve already implemented for Build 9.08:

[3DO texturing fixes – now the various 3DO bridges in the game are properly textured]

[The shuttle in Detention Center is now rendered correctly and functions properly as well]

[Shoot switches now function properly]

DarkXL Build 9.07 October 22, 2010

Posted by luciusdxl in Uncategorized.

DarkXL Build 9.07 has been released! Get it here.

I’ve put implemented the rest of the weapons and enemies on hold to fix the remaining INF issues. I accomplished part of that goal with this build. Level 4 is now fully completable without cheats, for example. All the switches are now rendered correctly, which will effect most of the levels in the game. In addition various other bugs have been fixed, such as crashes when going between levels, the position of the Crow at level startup changing depending on the previous levels loaded, issues with jumping in liquids which could cause you to get stuck, and more.

The next build will see level 5 completable if not more levels. At this point fixes I’m making have wide ranging effects, where eventually – and very soon – everything will come together. 🙂

Level Editor October 19, 2010

Posted by luciusdxl in Uncategorized.
add a comment

Once DarkXL reaches BETA, which is just a few major builds away as I’ve been saying, I plan on continuing the built-in level editor.

The fact is, however, that the current version of the level editor is already built into DarkXL and has been for many versions. It’s kind of broken right now, as expected since I haven’t worked on it in a long time, but you can try it out. You can load and save a level, edit sector geometry and create new sectors. 3D mode is broken right now – not sure why it’s something that I’ll have to debug when I get back to it. In addition splitting sectors and connecting sectors is a little wonky right now, again things have changed in the core a bit so naturally I’ll have to fix a few things.

So if you want to try it out, just to play around with it, here are the instructions. Please note that I haven’t worked on this thing in months, backup any levels before using the editor with them and expect bugs and wonkiness. That said, if you avoid 3D mode (the ‘M’ key) then it’s actually pretty stable.

First extract your level using WDFUSE, make sure the “*.lev” file is in your directory. If you pass in a level that doesn’t exist, it will be created on save.

To load a level, run DarkXL with this command line:
DarkXL.exe -eLevelName.lev

Use the arrow keys to move around

+ – to zoom in and out

[ ] to change the grid size

L SHIFT-L to change the map level.

T brings up the texture palette

G brings up the geometry palette

Right-Mouse Click near a sector/wall/vertex to select it.

Left-Mouse and Drag on a handle to move the selected sector/wall/vertex (depending on handle selected).

Click on Sector/Wall/Vertex on the toolbar on the bottom to bring up the associated dialog.

To assign a texture, select it in your texture palette (left click) then left click on the texture slot in the wall or sector dialog.

To put a different texture in a palette slot, right click on it, use the arrow keys to scroll through the texture list, then left click on the new texture that you want.

To draw a sector, left click in an open spot. Keep left clicking to place new vertices – you’ll notice that they’re connected to the previous vertex by a line. Once your shape is complete, hit ENTER. Note that it automatically creates the last line between the last vertex and the first vertex. You you draw a sector inside another sector it automatically becomes a subsector. You do not need to create a hole before creating a subsector.

To create a hole or column, draw you sector inside another sector and hit SHIFT-ENTER.

To cancel your drawing without creating a sector, Click on the Right Mouse button.

To place a predefined shape from the geometry palette, bring it up (‘G’ or click on Geometry on the toolbar), left click on the desired shape (default is line). Then left-click on the map to place. Right click cancels (just like the lines), ENTER creates a sector or subsector, SHIFT-ENTER creates a hole or column. Point mode currently does not work in the 2D view, but later you can use it to insert vertices.

To split a wall, draw a line that intersects it and hit enter. If you draw across multiple walls, they should all be split at the intersections.

To create and adjoin, make sure two vertices of the new sector lie on an existing sector line. This is a little flaky at the moment and will probably only work on horizontal or vertical edges. See the picture below:

[Before Hitting Enter – Notice that two vertices from the shape that I’m drawing lie on an edge of the sector on the left. The overlapping portion of the edges will become the adjoin]

[After Hitting Enter – Notice that the new adjoin is where the edges overlapped, it is lighter green]

To set sector or wall flags, select the sector/wall, bring up the dialog (toolbar on the bottom) and click the boxes for the various flags.

It is not currently possible to change floor or ceiling heights, light levels, texture offsets, etc. in 2D mode.

To save, simply click on Save on the toolbar.

To exit click on Exit.

Anyway play with it if you want. Use at your own risk. Feedback is good, just remember that this is not in what I’d normally consider a releasable state. But it’s good enough to play around with and get a feel for some of the concepts.