D2X-XL Update Notification Thread
Moderators: Grendel, Aus-RED-5
Somehow the stencil tests do not work as they should according to the tutorials I have read ... sigh.
I have run into another problem: While an object may be invisible for the viewer (player), it's shadow may not. D2 doesn't render invisible objects though, and hence not their shadows. The only work-around I can think of is to render every object's shadow in a mine ... but that would simply kill performance.
Edit: I have found a half-way acceptable solution for the 2nd problem.
Edit2: I give up. I have coded everything exactly to the book (NVidia paper by Cass Everitt and Mark J. Kilgard), and it doesn't work in D2.
I have run into another problem: While an object may be invisible for the viewer (player), it's shadow may not. D2 doesn't render invisible objects though, and hence not their shadows. The only work-around I can think of is to render every object's shadow in a mine ... but that would simply kill performance.
Edit: I have found a half-way acceptable solution for the 2nd problem.
Edit2: I give up. I have coded everything exactly to the book (NVidia paper by Cass Everitt and Mark J. Kilgard), and it doesn't work in D2.
-
- DBB Admiral
- Posts: 1113
- Joined: Sun Jan 02, 2000 3:01 am
Some eye candy
after I miserably failed with the shadowing ...
Shields!
This is a true, spatial sphere. It pulsates slightly in-game. When hit, it flashes orange and gets white when invulnerable. Can be turned off by the game host in multiplayer.
Shields!
This is a true, spatial sphere. It pulsates slightly in-game. When hit, it flashes orange and gets white when invulnerable. Can be turned off by the game host in multiplayer.
Rendering speed increase of up to 50%, possibly more
How does a rendering speed increase of up to 50% sound?
The speedup is CPU dependant.
Make sure to specify '-mathformat 2'.
The speedup is CPU dependant.
Make sure to specify '-mathformat 2'.
Homing missiles ...
As you may remember, I had limited homing missile updating to 40 fps. As I was looking over that code recently, I started to wonder about a certain parameter I had been using there ... turned out that I had reversed the influence of fps on homing missile turn rate, instead of neutralizing it. I have fixed this in v1.6.35, and heck, homers fly circles around you again! That's how I remember them.
I can run D2X-XL on an Athlon XP 1800+ Linux system with a GF 2 MX 400 in 640x480 with over 80 fps in the standard campaign. Amazingly, that system is faster than my Athlon 64 3500+ WinXP pro system with a GF FX 5200. Now I am asking myself: Does the M$ compiler suck, or is it the OS, or the drivers?
A wrapper is a piece of software that intercepts calls of a certain kind (in the Voodoo gfx card case, calls of the Glide API), and translates them to some other kind of calls (here: to calls to the OpenGL API).
In other words: The wrapper would pretend to be a Glide driver, but remodel all Glide calls made to it to OpenGL calls.
In other words: The wrapper would pretend to be a Glide driver, but remodel all Glide calls made to it to OpenGL calls.
Awesome rendered Descent 1 movies by deuxsonic
Rendered movies for Descent 1
deuxsonic has sent me rendered intro and end movies and mine exit sequences plus audio messages for the robot briefings for Descent 1. Pretty awesome stuff, I must say!
D2X-XL 1.6.37 supports these files. Unfortunately, they are 471 MB if packed with WinRAR. deuxsonic is working on a smaller version though.
Descent 1 lovers, rejoice (unless you are into the extreme retro style )!
deuxsonic has sent me rendered intro and end movies and mine exit sequences plus audio messages for the robot briefings for Descent 1. Pretty awesome stuff, I must say!
D2X-XL 1.6.37 supports these files. Unfortunately, they are 471 MB if packed with WinRAR. deuxsonic is working on a smaller version though.
Descent 1 lovers, rejoice (unless you are into the extreme retro style )!
Rendered D1 movie and audio download links
Descent 1 rendered movie and audio download links
Find the download links here.
I found that when directly clicking the links, I got the rar file contents returned instead of being asked where to store the downloaded file, so I recommend right-clicking the links and using the \"save target as ...\" command.
The web space has been kindly and generously provided by KoolBear. Thanks a lot, KB!
Find the download links here.
I found that when directly clicking the links, I got the rar file contents returned instead of being asked where to store the downloaded file, so I recommend right-clicking the links and using the \"save target as ...\" command.
The web space has been kindly and generously provided by KoolBear. Thanks a lot, KB!
Are the extra movies just the robot descriptions or should it be the whole intro with the guy behind the desk as well? Something like that starts to run but drops out after a second and then the robot descriptions start.
I am pretty sure that I have Hi-Res movies switched on but can't check right now (morning tea at work)
Thanks
I am pretty sure that I have Hi-Res movies switched on but can't check right now (morning tea at work)
Thanks
- Aus-RED-5
- DBB Friend
- Posts: 1604
- Joined: Fri Apr 23, 2004 7:27 am
- Location: Adelaide, South Australia
- Contact:
Re:
Just take the "-nomovies 1" switch out of the ini file. You'll see the movies then.Weyrman wrote:Are the extra movies just the robot descriptions or should it be the whole intro with the guy behind the desk as well? Something like that starts to run but drops out after a second and then the robot descriptions start.
I am pretty sure that I have Hi-Res movies switched on but can't check right now (morning tea at work)
Thanks
Mouse joystick
What do you think of the idea to handle the mouse like a joystick: D2X-XL measures how far the (invisible) mouse pointer has been moved out of the screen center, and moves the ship to the same direction. Distance from screen center determines movement speed (up to the built-in limits - mouselook will not be active in this mode). Ship movement will cease when the mouse is brought back into the screen center (or to be precise, into a small deadzone around it).
I tried it and found that you could get the hang of this pretty quickly. I also found that not having a physical center position like with a joystick didn't pose a big problem.
I tried it and found that you could get the hang of this pretty quickly. I also found that not having a physical center position like with a joystick didn't pose a big problem.
I once had a helicopter game and used the mouse as a joystick. I felt it gave a better feel for a real cyclic stick than a joystick did. IMO
Thinking about it, using the mouse movement to activate the slide controls would be interesting to try. I've often thought about that sort of arrangement, so if you could put it in too, I would be grateful.
Thinking about it, using the mouse movement to activate the slide controls would be interesting to try. I've often thought about that sort of arrangement, so if you could put it in too, I would be grateful.
D2X-XL online help system - preview
I am currently building online help for the menu right into D2X-XL.
Here's a preview:
I hope this will make the plethora of options more accessible.
Here's a preview:
I hope this will make the plethora of options more accessible.
Diedel,
1.6.64
I have the \"treat mouse as a joystick\" option set and I have mapped the slide axes to the mouse axes, (assuming this is what I need to do) but the mouse still acts like a mouse. I only slide while the mouse is moving. Have I mapped it incorrectly or what?
Also:
The SP game \"The Apocalyptic Factor XL\" and \"Norlige Electro Depri\" plus a few others load sometimes and othertimes crash to desktop.
Also:
Have a look at the picture below, the cloak icon is missing and so is the invulnerablity one.
1.6.64
I have the \"treat mouse as a joystick\" option set and I have mapped the slide axes to the mouse axes, (assuming this is what I need to do) but the mouse still acts like a mouse. I only slide while the mouse is moving. Have I mapped it incorrectly or what?
Also:
The SP game \"The Apocalyptic Factor XL\" and \"Norlige Electro Depri\" plus a few others load sometimes and othertimes crash to desktop.
Also:
Have a look at the picture below, the cloak icon is missing and so is the invulnerablity one.
Integrated help system
Integrated help system
D2X-XL now contains an integrated help system for the menus, covering most menus with the exception of the rather self-explanatory ones and the entropy options menus, which I will supplement help info for later.
Press F1 to have the currently highlighted option explained.
D2X-XL now contains an integrated help system for the menus, covering most menus with the exception of the rather self-explanatory ones and the entropy options menus, which I will supplement help info for later.
Press F1 to have the currently highlighted option explained.
massive UDP/IP networking bug fixed
massive UDP/IP networking bug fixed
Fixed a massive UDP/IP networking bug causing all kinds of problems today. See the D2X-XL version history.
Fixed a massive UDP/IP networking bug causing all kinds of problems today. See the D2X-XL version history.
Jitter during demo playback removed
Jitter during demo playback removed
I have removed jitter occuring when playing back demos. The new, jitter-free demo files are not compatible with other D2X versions, but D2X-XL can still play back the old format demo files.
I have removed jitter occuring when playing back demos. The new, jitter-free demo files are not compatible with other D2X versions, but D2X-XL can still play back the old format demo files.
Long standing bugs fixed
Today I have managed to nail down a few pretty obnoxious, long standing bugs from D2X-XL:
The first bug makes D2X-XL crash when rendering objects with another than the highest detail level set. Other effects of this bug are mistextured bots or bot morphing not rendered properly. The crash bug when shooting the door straight ahead in D2:CS L1 right after spawning may have been caused by this too.
If you ask yourself how the heck detail level should have been below max on your machine, then the answer can be one of my infamous player file format/contents changes.
The other bug is the constant blinking on and off of servers in the netgame browser list particularly in tracker supported games.
Today I have managed to nail down a few pretty obnoxious, long standing bugs from D2X-XL:
The first bug makes D2X-XL crash when rendering objects with another than the highest detail level set. Other effects of this bug are mistextured bots or bot morphing not rendered properly. The crash bug when shooting the door straight ahead in D2:CS L1 right after spawning may have been caused by this too.
If you ask yourself how the heck detail level should have been below max on your machine, then the answer can be one of my infamous player file format/contents changes.
The other bug is the constant blinking on and off of servers in the netgame browser list particularly in tracker supported games.
Hires textures in D1 missions
D2X-XL v1.6.163 and up now supports usig hires textures in D1 missions! You need to put them in a subfolder named 'd1' of the textures folder (e.g. c:\\games\\descent 2\\textures\\d1).
This was made possible by changes to the texture management. These have caused a bit trouble, but trust me, bearing with me until all flaws have been smoothed out is worth it.
D2X-XL v1.6.163 and up now supports usig hires textures in D1 missions! You need to put them in a subfolder named 'd1' of the textures folder (e.g. c:\\games\\descent 2\\textures\\d1).
This was made possible by changes to the texture management. These have caused a bit trouble, but trust me, bearing with me until all flaws have been smoothed out is worth it.
Palette and color handling improved
To this day, D2X-XL has been plagued by miscolored menu texts and Descent 1 exit sequences. I had figured a solution for this problem a long time ago already, but since it required some major recoding of all color and palette handling in D2X-XL, it was only this week that I finally tackled that task.
Some tech background.
A palette is table containing 'real' (RGB) color values. It's main purpose is to save texture memory: If a texture only contains a limited set of colors (let's say: No more than 256), a palette is created containing these colors, and instead of storing the 4 byte RGBA color value for each pixel, a one byte index into the palette is stored.
Backdraws of this method are:
So far so good. Parallax however chose to use several palettes, depending on image type (one for color fonts, one for background images, one for wall and object textures ...), and that is what the guys porting D2 to OpenGL stumbled over.
Each texture had to be temporarily converted to an RGBA image for rendering by OpenGL. Instead of keeping several palettes and assigning a reference to its palette to each image, the D2X makers chose to use one global palette. To make images being based on another than the current global palette work with it, they created code that remapped such images' colors to the global palette.
Now go figure how easy it is to foul up that remapping process. The entire palette handling introduced by Parallax/D2X team was a mess.
D2X-XL v1.6.178 and up now keeps track of all palettes used in the program, and assigns a reference to the palette its based on to each (palettized) image in the game. That means that there is no (time consuming and error prone) color remapping any more. A nice side effect of this is that Descent 1 textures are now being rendered using the original Descent 1 game palette, and are not being remapped to Descent 2's groupa palette. Above that, palette and color selection operations are now significantly faster than before (you won't notice that speedup though, as it's already in the 'supersonic' realm ).
A second measure I took to steer clear of palette problems was to use true RGB colors wherever applicable (e.g. in-game text and automap). This removes color changes due to use of different game palettes (as Descent 2 has).
In the process of rebuilding this code I had to change a lot. If you notice any miscolored stuff in D2X-XL, please file a bug report on SF.net and attach a screenshot showing the problem.
Thanks
Diedel
To this day, D2X-XL has been plagued by miscolored menu texts and Descent 1 exit sequences. I had figured a solution for this problem a long time ago already, but since it required some major recoding of all color and palette handling in D2X-XL, it was only this week that I finally tackled that task.
Some tech background.
A palette is table containing 'real' (RGB) color values. It's main purpose is to save texture memory: If a texture only contains a limited set of colors (let's say: No more than 256), a palette is created containing these colors, and instead of storing the 4 byte RGBA color value for each pixel, a one byte index into the palette is stored.
Backdraws of this method are:
- It requires extra computing time to rebuild the RGBA picture if it is to be displayed.
- You may be forced to artificially limit the number of colors used in an image to the palette size.
- All images using the same palette are limited to using the same (limited) color set.
So far so good. Parallax however chose to use several palettes, depending on image type (one for color fonts, one for background images, one for wall and object textures ...), and that is what the guys porting D2 to OpenGL stumbled over.
Each texture had to be temporarily converted to an RGBA image for rendering by OpenGL. Instead of keeping several palettes and assigning a reference to its palette to each image, the D2X makers chose to use one global palette. To make images being based on another than the current global palette work with it, they created code that remapped such images' colors to the global palette.
Now go figure how easy it is to foul up that remapping process. The entire palette handling introduced by Parallax/D2X team was a mess.
D2X-XL v1.6.178 and up now keeps track of all palettes used in the program, and assigns a reference to the palette its based on to each (palettized) image in the game. That means that there is no (time consuming and error prone) color remapping any more. A nice side effect of this is that Descent 1 textures are now being rendered using the original Descent 1 game palette, and are not being remapped to Descent 2's groupa palette. Above that, palette and color selection operations are now significantly faster than before (you won't notice that speedup though, as it's already in the 'supersonic' realm ).
A second measure I took to steer clear of palette problems was to use true RGB colors wherever applicable (e.g. in-game text and automap). This removes color changes due to use of different game palettes (as Descent 2 has).
In the process of rebuilding this code I had to change a lot. If you notice any miscolored stuff in D2X-XL, please file a bug report on SF.net and attach a screenshot showing the problem.
Thanks
Diedel
Packet loss handling improved
During testing, simx and I have found that you can multiply available powerups by exploiting packet loss and certain flaws in the network code of Descent 2.
Basically, powerup multiplication can occur when some player doesn't receive a notification that some other player has picked up some powerup in the mine. As picking up powerups is handled locally, that player can now also pick up that powerup (let's say a Mega missile).
Descent contains some code to fix such problems, but it only looks at powerups floating around in the level, not those being onboard ships.
That means that in the extreme case, in a level initially containing one Mega, every player can end up having a Mega on board. Now if one player fires his Mega, it will respawn for each player. Descent will simply look at the max. permissible number of Megas floating in the level, disregarding those on onbard ships, and allow that Mega to spawn. The player with the cloned Mega can now pick it up, too, and so on.
Descent will only (half way) fix this when more Megas are fired and hence respawn than are allowed in the level. Still, every player can end up with a Mega floating in his or her instance of the level.
For UDP games, D2X-XL will therefore now regard the powerups onboard the local player's ship. Unfortunately, Descent never syncs players' ships' loadouts. Therefore I have added ship equipment sync'ing for UDP/IP games to D2X-XL, allowing each local instance of D2X-XL to determine the loadout of every connected player's ship. That means that D2X-XL will pretty quickly recover from any packet loss induced powerup multiplication (it won't remove anything from player ships, but will prevent respawning excess stuff once it is fired or dropped).
As usual, this meant quite some messing around with the network code, so if you detect any irregularities here, particularly in regard of powerup handling, please report it in a bug ticket on SF.net.
Thanks
Diedel
During testing, simx and I have found that you can multiply available powerups by exploiting packet loss and certain flaws in the network code of Descent 2.
Basically, powerup multiplication can occur when some player doesn't receive a notification that some other player has picked up some powerup in the mine. As picking up powerups is handled locally, that player can now also pick up that powerup (let's say a Mega missile).
Descent contains some code to fix such problems, but it only looks at powerups floating around in the level, not those being onboard ships.
That means that in the extreme case, in a level initially containing one Mega, every player can end up having a Mega on board. Now if one player fires his Mega, it will respawn for each player. Descent will simply look at the max. permissible number of Megas floating in the level, disregarding those on onbard ships, and allow that Mega to spawn. The player with the cloned Mega can now pick it up, too, and so on.
Descent will only (half way) fix this when more Megas are fired and hence respawn than are allowed in the level. Still, every player can end up with a Mega floating in his or her instance of the level.
For UDP games, D2X-XL will therefore now regard the powerups onboard the local player's ship. Unfortunately, Descent never syncs players' ships' loadouts. Therefore I have added ship equipment sync'ing for UDP/IP games to D2X-XL, allowing each local instance of D2X-XL to determine the loadout of every connected player's ship. That means that D2X-XL will pretty quickly recover from any packet loss induced powerup multiplication (it won't remove anything from player ships, but will prevent respawning excess stuff once it is fired or dropped).
As usual, this meant quite some messing around with the network code, so if you detect any irregularities here, particularly in regard of powerup handling, please report it in a bug ticket on SF.net.
Thanks
Diedel
D2X-XL SVN source repository
D2X-XL SVN source repository
The D2X-XL source code is now available in a SVN repository on SourceForge.net.
See http://www.descent2.de/d2x.html#downloads for details.
The D2X-XL source code is now available in a SVN repository on SourceForge.net.
See http://www.descent2.de/d2x.html#downloads for details.
D2X-XL on 64 bit Linux
D2X-XL on 64 bit Linux
I have verified today that d2x-xl works on 64 bit Linux.
I have verified today that d2x-xl works on 64 bit Linux.