Go to Recent News|
All those who'd like to try out the new client/server networking,
dtest. It is very important that
you read dtest.txt (also included in the zip).
The first test of the new client/server code was encouraging.
I tried a little bit of 2-player action on Heretic's E1M1 and
everything seemed pretty smooth. The server was a P166 running
without graphics and sound. The internet connection was between
a 56k modem and 64kb ISDN (ping was around 180 ms). It remains
to be seen how it will perform when more players join the game
(the limit will be 16 players, btw).
C/S Status Report #1
There are still many things that must be worked on, though
(e.g. chatting and level changes are still missing). At least
players can join and leave the game as they please and the
state of the map on client side is properly updated at all times.
The next version of the Doomsday engine and JHexen will
be the magical 1.0. I'm planning on getting a number of
larger changes done before July 3rd. Let me introduce you
In any case, I'm going to release all the sources before
I must go.
Don't be surprised if my email answers seem a bit sluggish from
now on, I'm really concentrating on getting this done.
JDoom is available at NEWDOOM.com.
This version is mainly an engine update. Changes to it include:
- mouse wheel support (cvar i_mWheelSensi controls sensitivity)
- CalcSectorReverbs() and texture type handling moved into the engine
- spralign 3: align sprites to view plane, but not fully
- console border finally drawn as it should be, with both renderers
- numpad keys have their own key codes (apart from /,*,-,+ and enter)
- scroll lock and num lock can be used in bindings (scrlock and numlock)
- cvar i_mouseInvY: for some reason this wasn't a cvar earlier
- cvar consoleDump: all console text is dumped to Doomsday.out
I'm just about ready to release the first version. What'll it be like,
you ask? Actually, it's to Doom what JHeretic is to Heretic: more of an
enhancement than an extension. If you've been hoping for some kind of
a JZDoom(GL)<insert random letters> hybrid, I'm going to have to
let you down. If you feel that you need to modify Doom and tweak all the
possible variables, JDoom won't be for you (unless you want to do it the
right way and compile yourself a new game DLL). I've tried to retain
the original feel of the game by not changing important aspects
Wait a minute, this is the JHexen site, right? Some news from that
front, then... Unfortunately, other things (such as JDoom and Terry Pratchett's
wonderful Discworld novels) have left me with quite a limited supply
of time for working on JHexen. At the moment the 'impressive' list of
changes contains a fix for lookspring (so that it won't happen when
the mlook key is pressed) and smaller ice shard dynamic
lights, which I already told about.
If you've had problems with Macromedia Flash or just don't want to
have it here on the site, here's the good old HTML version:
An End Is Nearing...
That's right, folks. On July 3rd I'll have to wave you all goodbye
for the rest of the year, hopefully not longer. The time has come
for me to join the army, you see. But that's still a month away,
lots of time to get some serious coding done, eh?
The next version of Doomsday will have a couple of new mobj flags
that scale the dynamic light casted by an object. In practice this
means the lights from the Mage's ice shard weapon won't be so
The Work Continues
The rest of my time I've spent with JDoom. I'm currently rewriting
the menus and adding smaller things like fullscreen HUD information
(health, ammo, etc.). Ultimately, the menus will be much like JHexen's.
The Download page has been updated with the new version.
I recently noticed that jtNet2.dll had the Hidden attribute
on for some reason. This may explain why some of you have had
problems with it. The file is in the zip, though.
Whoa, almost a month since the last update! Time to pick up pace
again. As for what's been going on: I had a number of exams that
took quite a bit of time, plus I admit I've been playing
Gran Turismo 2 on the PSX (heh :-)), but lately I have been working
with the ports again. Version 0.99.5 is done, and available as soon
as the folks at FileLeech get the
zip ready for download. The main improvements are a multiplayer menu
for easier netgame config and startup (no need to use net any more),
and fixes to some bugs that could've crashed network games. You can
also say good-bye to batch files, because now you've got DLaunch!
I recommend you create a Windows shortcut to DLaunch.exe and change
its icon to the one included in the JHexen DLL.
0.99.5 Just Around the Corner
I've begun porting Doom over to the Doomsday engine. At the moment
I'm approximately 70% done so it may still take a while. I'll post
JDoom news here as progress is made, so keep your eyes open!
page is now open, be sure to take a look. :-)
Even though I haven't had much time to work on the project during the last
few days, I've managed to get 3D sounds working quite well for JHeretic.
Also, jumping will be possible (like in Hexen) and there is a countdown
for the Tome of Power. It displays the number of seconds left and by default
plays a warning sound on the last three. Currently I'm setting up a Multiplayer
menu for easier network game config and startup.
Lately I've been working on a launcher for Doomsday:
It's actually quite a generic launcher: all the options are defined
in a simple text file, so it could be used to launch any program.
The small list you can see in the screenshot (the one on the left
with the .cfg files) can be used to quickly fire up a text editor for
the clicked file. The Open and Save buttons above the list are used
to open and save option files, so you can for example choose the
game you want to launch or save your settings into a separate
file. The launcher will be included with the next release of both
JHexen and JHeretic.
Right now I'm copying the high level sound playing code of
JHexen over to JHeretic. This means the next version will sport
3D sounds and reverb effects. It's still quite messy, though, and
sounds very peculiar at places, so it'll take at least a couple
of days to get it right.
If you've noticed that JHeretic sometimes starts to slow down mysteriously
and then finally the whole computer completely locks up, please send
me an email about it (with info about your system). I'd like to know how
common this problem is. I personally encounter it only after the game has
previously crashed, but Windows can be devious...
...is available on the download page.
Temporary JHeretic Page.
...is right here.
- cvar maulatortime: Dark Servant lifetime,
in seconds (cheat, only effective in single-player games)
- chandeliers, torches and the like emit light from the right place
- showmana 2: mana shown above health in the lower left corner
- binding to events that begin the same way ("d" and "down") works
- psprites positioned correctly with a scaled down status bar
I'm going to release 0.99.4 very soon, i.e. sometime today or tomorrow.
- "bind (event)" clears all +(event), -(event) and *(event)
- 2-sided middle textures are rendered correctly
- flares from sprites aligned to the viewplane won't flicker at certain angles
- D3D: gamma correction using DirectDraw's gamma control (fast!)
- option -nogamma: disable DirectDraw gamma, modify texture colors manually
- cvar r_flareminsize: the minimum size for flares that can have secondary
flares (200 is pretty good)
- light source vertical offsets
- ccmd listbindings can take a search parameter: "listbindings a" will list all
bindings to events that begin with A
- faster dynamic lights (better algorithm + clipping)
- cvar dlclip: dynlights are clipped (subsector polygons *not* used when
- spralign 2: attempts to hide sprite flatness (like spralign 0, but stops
slanting sprites if angle > r_maxSpriteAngle)
- cvar r_maxSpriteAngle
A couple of problems with JHeretic have surfaced. First of all,
the Doomsday.wad in the zip was incorrect. Because of this,
all graphics were colored strangely when using palettized textures.
The zip now contains the right WAD, so redownload it if you want
to use -paltex. Secondly, the game likely crashes after entering
the first teleport in E3M8. I'm working on that one.
Download JHeretic here.
...is available on the download page. This version features
mostly bug fixes, for things like the automap background texture and
some crashes with console commands like listbindings.
- cvars r_flarefar and r_flarenear: fade out
flares that are too close (good values are for example
far:100 near:50, or far:200 near:100)
- cvar r_ambient: minimum light level
- cvar dclickuse: double clicked Forward or Strafe equals Use
- Doomsday updated to work with JHeretic
JHeretic Is Here!
It still hasn't got its own page, and the Doomsday Engine website
I'm preparing isn't yet done, so... download it here:
JHtic090.zip See jheretic.txt (in the zip) for some important information.
- crash with listbindings and other long,
one-word commands (!)
- automap background texture
- DrawRealPatch() complained about too small buffers (now clips the data)
Here are the most important changes:
All the source code is also available.
- sounds can be resampled to 22 or 44 kHz and/or 16 bits
using the Sound menu (the original sounds are 8 bit/11 kHz,
so don't expect any miracles)
- crosshair selection in the Gameplay menu
- sound volume in 2D mode fixed
- default controls aren't forced in some cases
- demos work correctly with 3D sounds
- slightly faster texture loading
If you are a 3dfx-enthusiast and feel like writing a renderer
for Glide, please contact me. Having a Glide renderer might
be a good idea, although I think the one for Direct3D works
pretty well for everybody. I'm not going to do this myself
because I don't really care about Glide and I just don't have
In order to improve the quality of the sound effects, in the next
version they can be resampled from the original 11 kHz to 22 or 44 kHz.
It is also possible to convert them to 16 bits for slightly better
interpolation accuracy. The end result is a bit clearer sounds, but
mind you, the original data is only 8 bit / 11 kHz, so the quality
still leaves a lot to hope for.
Version 0.99.2 will also feature bug fixes with the default control
bindings and the 2D sound effects volume (which doesn't work when using
DirectSound), plus other stuff. I'm also going to release all the source
code, both of the engine and the JHexen DLL. I was forced to make some
changes to the Doomsday API to get JHeretic working, so things will be a bit
different in the code compared with 0.99.0.
Do These Ring a Bell?
I started working on JHeretic yesterday, and it's already running
pretty well. At the moment I have all of the original Heretic working,
minus network play. The only new thing is mouse look, apart from all
of Doomsday's features. When things are a bit more polished, JHeretic
will get its own webpage. I might not have much time to work on
anything next week, though, so we'll have to see how things turn out.
See the version history for the changes.
Remember to also download a3d30dll.zip if you want to use A3D.
The reverb effects are now most of the time pretty much credible,
but it may seem that in large rooms the effect is somewhat exaggerated.
Also, A3D and EAX reverbs sound slightly different. You might want to
consider setting the reverb volume a bit lower if you're using A3D.
I also recommend setting dynamic light blending to "Add" (dlblend 1) and
intensity to 0.4 (one left of the center position, if you're using
If you want to play network games, read Network.txt (in the zip).
I just finished writing support for DirectSound3D and EAX2.0. This is
because I noticed that A3D actually was quite slow with my SB Live!
when lots of sounds were being played. I also ended up revising most
of the Hexen higher level sound playing code, but now I have to hunt down
a couple of bugs caused by that. All of this also means I had no time
to work on refining the reverberation calculations yet. On the graphics
front, I tweaked the dynamic lights a bit and added a new cvar, dlfactor,
to control the intensity of the lights. With the new default settings
the lights look a lot better (dlblend 1, dlfactor 0.4).
More About Sound
I now have a version of JHexen that uses the A3D 3.0
sound engine to play 3D sounds with doppler and reverb effects. My code
calculates individual reverb settings for each sector of a map based on
its size and the types of surfaces present (metal, stone, etc.). I will
not yet release it, though, because the calculations sometimes go slightly
wrong (for example, there is a surprising amount of reverb in map 18, which
is full of wooden crates).
But most importantly, you don't need a soundcard that natively supports
A3D (see the Aureal website for more
information). I have an SB Live! myself and all the reverb effects and
3D sounds work perfectly (DirectSound3D is used in the background). But
if you're worried that using A3D will cause slowdowns or just won't work,
the old sound code that uses DirectSound is still there, and can be
enabled with a simple command line option.
Here's a list of things I've already done for 0.99.1:
Features for the Next Version
In addition to those, I'm now going to take a look at A3D 3.0 and
3D sounds. I'm also going to write some documentation for using the
net console command.
- D3D renderer supports palettized textures
- default bindings for the stuff in the Control config menu
- cleric weapon 4 shoots luminous ghosts
- higher mouse sensitivities possible without forcing
- no more player sprites in the way with spralign 1
- graphics effects menu for easier config
- support for glBSP (no more holes in the levels)
- dynamic lights fixed, now rendered with the correct intensities
- dynamic lights rendered with Z bias instead of moving them
away from the walls along the normals
- clipping is correct with all FOV angles
- sprites lit by dynamic lights (sprlight)
I've updated the Help page with some new info, like what the -driver
option does and what to do if the D3D renderer gives you an error message
Help Page Updated
The source code of the JHexen DLL is now available on the
download page. The package contains
all the necessary files for you to make a JHexen mod. You could even
write a Doomsday game DLL from scratch, keeping the source as a guide.
As before, it's an MS Visual C++ 6.0 project.
A Small Patch.
Two small bugfixes to Doomsday.exe:
The patch also includes a config file with
examples of how to use console aliases. The exec console command
can be used to read the file.
- Crashing with Caldera
Caldera has a sky texture that's larger than the normal ones, which
caused a crash when starting a new game. That's now fixed, but
as with earlier versions of JHexen, the sky on the second level
causes the hall of mirrors effect near the horizon.
- Console font
Changing the console font from autoexec.cfg now works as it should.
Here it is, after way too
long a pause, version 0.99.0 of JHexen! There is a number of major
changes compared to 0.98.4, for instance support for Direct3D and
enhanced network play. See the change log
for more information; I'm not going to list all that here.
When installing, you need to delete your old jhexen.exe. Your old
Hexen configuration (hexen.cfg) will not be imported, so if
this is the first time you run Doomsday.exe, you won't have any
controls bound to any keys, mouse or joystick buttons. The new control
configuration menu makes it easy, though, to setup the controls as
you wish. Mind you, there is no support for a mouse wheel yet.
Later, I'm going to write a launcher for Doomsday that helps you set
the command-line options and so on, but for now you'll have to settle
for batch files. There are four of them, for example one for starting
the game using the D3D renderer. Be sure to use the one most suited
for you (Voodoo owners might find 3dfx.bat to be the best choice).
The D3D renderer still lacks display mode changes and palettized
textures, but otherwise it works well. However, you may have problems
with the lens flares in a 32-bit display mode (flicker). I have only been
able to test the OpenGL renderer with the software OpenGL driver and a Voodoo1
(it works perfectly with them), but knowing how video card manufacturers
write their OpenGL drivers, you may run into trouble. If this happens,
just use D3D and you should be fine.
All righty then. Go play some Hexen!
No, just finishing up version 0.99.0 hasn't taken this long. Let
me tell you what's been happening. A couple of days after the last
update I noticed that no matter what I did my computer used only
the Microsoft software OpenGL driver. I tried everything from old
Creative to new NVIDIA drivers but my Riva TNT just wouldn't
accelerate OpenGL. It still doesn't.
What *Is* He Doing??
If the horrible slowness doesn't count, software OpenGL is actually
quite nice. It's probably the only Windows OpenGL driver that
fully implements the API, and in a proper fashion even. But I
really couldn't settle for software and 320x240 with 3 FPS, no
matter how well everything worked. So, what to do? For starters,
I ripped the lowest level rendering code out of the engine and
placed it in a separate DLL, thus making the engine 3D API
independent. Writing a rendering DLL for OpenGL was a painless
operation since I practically had just moved the OpenGL calls into
the DLL. In a couple of days I had a fully functional DLL that
rendered graphics using OpenGL. While I was at it I fixed the
lens flare slowdown problem, by the way.
You've probably guessed what the next step was. Yes, Direct3D. The
D3D rendering DLL is really shaping up. It already renders the 2D
graphics properly, with textures and everything. There are a few
glitches, of course, but on the whole it looks good. So if you
are one of the unfortunate who have had problems with their
OpenGL drivers, help is on it's way!
Unfortunately I'm going to be pretty busy with other stuff the
next few days, so finishing up version 0.99.0 is going to take
longer than I expected. Anyway, here's a screenshot showing what
the new lens flares will look like:
What's the Holdup?
You will also be able to freely change the flare positioning, size,
intensity and textures using the new console command flareconfig.
Build 2 is done and I think it's working quite well. Check the
Beta Test page for more info. Now there's
only a couple of things left before version 0.99.0 is "officially"
Network Test 2
There's an update on the Beta Test page.
Take a look at the screenshot and try to guess what I just did. Hint:
what color are the Cleric's clothes normally? This is a two player game.
A Kodak Moment
Network Test build 2 should be done pretty soon...
It is time for a public test of the new network code. Hold your horses,
though. I can guarantee nothing, but if you have a 3+ computer LAN or
want to venture into the land of Internet gaming, I point you to the
Beta Test page.
In there you can also find detailed information about
the new code and what it really means, in practice.
Public Test #1
Webmaster's Note (Brenton J. Klik):
Hello all, I've recieved a lot of great Email about the new
menubar, and thank you. Also, with the help of Ryan Stotts
(one who was gracious enough to send in a bug letter), I believe
we've fixed that chinese font error that pops up every now and
again. Thanks! =)
Many of you have reported problems with not getting the
new flash page. It's my fault, I created a flash detector that only works
in NS, I've updated that now, if there are any other problems contact me.
One last side note, I didn't want to bother many of you who don't have flash
installed, and don't care to use it. If you don't have it installed, the
page sends you to the old menu. If you want to download flash go to www.macromedia.com. Thank you and have a nice
Hello all, as of today JHexen has switched to a flash4
menubar. I've added a like that allows you all to go back to the old
menubar if you don't have a flash player or don't have the newest flash
player. If links don't work or there are any other issues, please, Email me
They Say It's Progress.
Cool menu, huh? I, too, have been doing something. I've written support
for the paletted texture extension (haven't actually tested it yet, though)
and the network code is really starting to look good. It still uses the
same old peer-to-peer model but I'm going to change that very soon.
Just got the CD volume issue sorted out. It turned out I only gave
the mixer one value when I should've given two (duh, one for each
channel). After that I've been working on the network code again, and
I've found out that ticcmds are exchanged correctly among the connected
computers, so the inconsistancies in the play simulation must be caused
by something else. Well, at least the foundation is working...
Take that, CD bug!
If you've been wondering about the 3D sound stuff, I'm planning on
leaving that for version 0.99.1.
Version 0.99.0 is slowly nearing completion. This is what I still need
A couple of screenshots for your enjoyment: the first one gives you a
glimpse of the Doomsday console and the second shows the rewritten
control configuration menu.
- Hexen-specific network stuff / jtNet 2.0
Practically this is already done, but the network code is still
being haunted by a couple of annoying bugs. The most serious is
that after a while the computers go out of sync and a consistancy
error occurs. Closer inspection revealed that the problems are
caused by the random number generator, but the real reason is
something more complicated.
- Mixer panning bug
I thought it would be nice to be able to change the CD player
volume from within the game. The win32 audio mixer API has been
a bit of a headache, though. At the moment I can change the volume
just fine, but for some obscure reason CD balance is moved to the
leftmost setting when the volume is set.
- Paletted textures
I reckon that using the GL_EXT_paletted_texture extension would
speed the game up considerably with low-memory cards (like the
Voodoo1 that has 2MB for textures).
- New flare graphics
I still haven't tried out the new flare textures you kind people
sent me, would you believe it? :-)
- Minor stuff
For instance: Quakefly, hitting higher floors, fast projectiles,
Here's a delayed little Christmas present for you coders out there:
the source code to version 0.98.4. This time the package contains the full MS Visual C++ 6.0 project files with all the stuff you need. It should compile
right out of the box. Have fun!
The Source to 0.98.4
Work on Doomsday / JHexen has been a bit scarce for the last few days
since I've been toying around with all my presents. :-) I intend to
get back on track in a couple of days, no need to worry.
Finally! After spending hours hunting a couple of really devious bugs
I've managed to get the network code working acceptably. Too many
features are still missing (like choosing your player class, deathmatch,
the level...) but the core is up and running. In the console I can start a
server, connect to it with another computer, do some chatting and then
start the game, which makes the netgame begin on both computers. After
playing for a while I can disconnect the client computer or stop the
server. Then I can do it all again.
Also, Merry Christmas everyone! *<:-)
Debugging sure is a whole lot of fun under Windows. After a few
crashes either Explorer (!) or MSDEV crashes too, or Windows just
locks up completely, which happens most often. I really should
think about developing under Linux or something, but I'm afraid
that's not an option at the moment...
FYI, the code I'm debugging is the new network code. I'm in the
(long and laborious) process of writing jtNet 2.0, a new version
of my networking DLL to be used with Doomsday. Here's my current
plan concerning networking:
If you have any ideas or comments about all of this, let me know.
- No more -net option.
- No more game setup dialogs that show up before the game begins.
- Network games will be configured and started from the console
and later using the menus.
- The networking model will be some kind of a semi-client/server
where the clients exchange ticcmds through the server. It would
be much more difficult to do a full client/server model: the
clients would send ticcmds to the server, which would simulate
all world events and then send the changed data to the clients.
The hard part is figuring out what to send to each client...
- Players won't be able to join a game when it's in progress
for the same reason as demo recording needs to be started from
the beginning of a level: the world must be kept in sync. I think
things would get pretty complicated if all the changed world data
would be sent to each joining player.
I tried running the new Doomsday powered JHexen on my old P166
with a Voodoo Graphics video card (V1, that is). Everything worked
perfectly, from flares (albeit they slowed down the rendering
too much) to fog. The new version will have a console command that
lets you set fog parameters (surprisingly it's called fog!).
Below is a screenshot from map 1 where a mist has suddenly
Tales of a Voodoo Tester
The reason I posted this picture is to show how the V1 can render
per-pixel fog, which looks very good. My Riva TNT seems able to
only render it per-vertex, which doesn't look all that good with
high fog densities.
There were no issues with font rendering anywhere, all the startup
messages and console text were drawn properly. The console font will
be configurable and it'll default to the font that's used with the
startup messages (this is the reason for last week's voodoo test).
Dan Olson suggested a while ago that the game could be split into two
parts just like Quake2: the engine and a game DLL. After doing some
research (the Quake2 game source) I decided to try this out and so far
the results have been good. I squeezed all the generic Doom engine stuff
into a new executable and named it The Doomsday Engine. Then, after a
serious amount of code editing, I was able to compile the JHexen DLL.
It's already working quite nicely.
Because of the split many cool things are now possible. For starters,
writing JDoom and JHeretic will be much easier since they can just be
DLLs for the Doomsday engine to use. Also, because the game DLLs are
99.9% platform independent, porting them to any other operating system
should be a breeze. Unfortunately the engine itself will be a bit more
difficult... I'm not planning on doing any ports yet, though. Additionally,
it'll be easier to write modified versions of the DLLs (just like Quake2
mods) once I release the source code to them.
I haven't had time to work on 3D sound much since splitting the game
has been more important. Nevertheless, I got the EAX2.0 SDK and after
a few glances at it I think it would be great to have for example a
reverb effect in large spaces like caverns.
Version 0.99 will be quite different from 0.98. In addition to all the
engine changes and 3D sound stuff, I'll be doing a Quake style key
bindings system where you can bind any console command to be executed
when a certain type of input event is received. This means you'll be
able to configure all the keys and buttons to do whatever you like.
I'm also planning on some network related improvements, but I have to
try out some things first.
If you're interested in OpenGL, click the logo on the left.
Here's a test version that in theory
should render the startup text correctly. The zip contains only the
executable. Let me know if this helps at all.
If the new version is suddenly running at 1 FPS or something
similar, you most probably have a buggy OpenGL driver that doesn't
like the lens flares. Disabling them by setting the flares
cvar to zero should help.
0.98.4 Very Slow?
Thanks everybody for the lens flare graphics, I now have quite a
selection to pick from!
- lens flares (flares, flaresize, flareintensity)
- support for up to 28 joystick buttons and a 4-dir POV control
- more joystick controls (flying, strafing, inventory)
- help: help about ccmds and cvars, e.g. 'help listfiles'
- immediateuse: use an item immediately when choosing one from the
- crosshair: choose from 6 crosshairs, freely set size and color
- additional console variables: lookspeed, spralign
By default the flares are set to a rather low intensity (50) so you
might like to adjust it a bit. The maximum intensity of 100 looks
very nice but is just too intense in many places. If you don't like
the secondary flares, use the flares cvar to set the number
of flares to draw. Also, if your video card doesn't have a very good
fill rate (Voodoo1?) it may be a good idea to set flares to
a smaller value or reduce the size of the flares with flaresize.
I'm experiencing slight slowdowns (1-4 FPS) with my Riva TNT when
there are many large flares to draw.
- hit monsters above/under you
- maxdl works properly
- psprites won't get stretched with a scaled-down status bar
If you're using dlblend 1 I suggest setting it back to zero
or otherwise the combined effect of the flares and dynamic lights
is too intense, at least in my opinion. If you aren't too particular
about image quality, you might even consider turning off dynamic
lights completely when using flares to achieve better frame rate.
The flares could still be improved in many ways. Currently I'm using
the same texture for them as for the dynamic lights. For example, it
would be cool to have rings and star-shaped flares. If you feel like
drawing some, just send them my way. Remember, they don't have to
be very high quality (256 x 256 at maximum, 8 bit monochrome).
If you're interested in seeing what it would look like to have all
sprites aligned to the view plane at all times, set spralign
to one. I don't recommend it, though...
I've been toying with the idea of having an external camera when
playing back demos. The screenshots below are from demo2. I'm just
not sure if this is very useful...
What Lies Ahead...
I've already started working on 3D sound. I downloaded the A3D 2.0 SDK
and wrote a quick test version, which almost works. I like the API
because it supports both A3D and DirectSound3D and vaguely resembles
OpenGL :-). Alas, I have a couple of exams in the near future so I
don't know how much time I have to work on JHexen...
They've needed a lot of tweaking and adjustments but I think I've
finally gotten the lens flares to work as I want them to. The
screenshot below has been taken in 800 x 600 x 32. The bridge sparkles
don't have secondary flares, but if you look closely you can see that
the ice shards do. I can tell you that once you've seen the lens
flares in action you will never want to turn them off. :-)
What to Expect:
I still have a couple of things to do before I can release 0.98.4,
so hold on to your hats for a few more days...
- lens flares (cvars: flares, flaresize, flareintensity)
- support for up to 28 joystick buttons and a 4-dir POV control
- more joystick controls (flying, strafing, inventory)
- ccmd help: help about ccmds and cvars, e.g. 'help listfiles'
- cvar immediateuse: use an item immediately when choosing one from the
- ccmd crosshair (6 crosshairs, size and color)
- console variables: lookspeed, spralign
- psprites won't get stretched with a scaled-down status bar
It's not very hard to guess what I'm testing in the screenshots
below. Something you'll see in the next version...
Work In Progress
Don't worry about the brightness, though. I'm still trying out
- revised data loading system (flats and sprites merged with
- some sprites are aligned to the view plane (e.g. Afrits, fog clouds)
- sprblend: sprite blending (additive explosions, default: yes)
- full 3D aiming (shoot straight up/down, for example)
- option to disable autoaim (not with demos)
- unload: unload a data file at runtime (even hexen.wad)
- listfiles: list currently loaded data files
- scriptinfo: query script status
- lump dumping (dump and -dumplump option)
- -novideo option (handy with -dumplump)
- additional console commands: clear, suicide
- luminous bridge sparkles
- key config: assigning multiple controls to the same key allowed (again),
trying to assign a control to the tilde key deletes the current assignment
- hotkeys for all items (Mystic Urn, torch, Krater of Might, Dark Servant and
Boots of Speed added)
- more mouse and joystick controls
- joystick look (a bit wobbly with an analog joystick, though)
- controls for changing to next/previous weapon
- recorddemo: in-game demo recording
- stopdemo: stop demo playback/recording
- configurable demo stop key (was hardcoded to Q)
- demo stop key can be used to stop demo playback
- completionmode: controls how console word completion is done
- cd: 'cd map' will play the current map's track, 'cd map #' will play
the specified map's track
- an icon for Windows
Download right away: jhexn983.zip
- a rare crash when a flechette bounces of a wall (happens in original Hexen)
- no mouse looking when paused or dead
- CD player isn't next to useless any more
- cd: resume works, info is more informative now
- possibly a fix for the occasional 'quiet sounds' bug
- maximum number of sound channels is 16, not 8 (also with sndchannels)
Version 0.98.3 is almost done, I just have to see if I can figure
out why sounds are sometimes updated with the wrong volume in
S_UpdateSounds(). It's all very arbitrary...
Here are two screenshots showing some of the things I'm working on.
The first one demonstrates sprite blending and in the other one
you can see how flying monsters are rendered correctly regardless
of look direction.
Work In Progress
While playing with the Fighter and throwing around the green,
explosive bottles, there was a crash when one of them was bouncing
off a wall. I was able to reproduce the crash in the original DOS
Hexen. I already fixed the problem, but it would be interesting to
know how common this error is (well, obviously quite rare since
this is the first time I notice it). If you want to try out for
yourself, do this: start the game normally as a Fighter, type
'give a' in the console or use the indiana cheat, turn around and
walk to the locked, big door. Try to throw a bottle against
the rocky wall on the left. I'm not sure but you might need to
position yourself pretty far from the wall.
Everyone's favourite webmaster, Brenton J. Klik, has been kind enough to whip
up a help page and an archive for news.
- console customization: bgalpha, bglight, bgflat, bgturn
- console: word completion with Tab
- no hardcoded maximum demo size
- cvar maxdl: maximum number of dynamic lights
In addition to those, I've also been rewriting the dynamic lights
a bit. The code sure is structured better but I'm not sure if it's
any faster. You can use the cvar dlblend to change the
blending mode for the lights (only mode 0 is really practical,
- the savegame bug (protection against bad archiveNums)
- proper lookdir reset when player spawns
- occasional problems with ccmd 'reset'
- minor bugs
If JHexen crashes when you load a saved game, you have become a victim
of the Savegame Bug. The problem is that somehow an invalid mobj target
archiveNum is written into the savegame file (those of you who are
familiar with Hexen game saving code should know what I'm talking
about). I already have a fix for this and it'll be included in the
next version. Don't delete the 'corrupt' savegames because AFAIK no
vital information has been lost.
The Savegame Bug
I added some new shots from version 0.98.1 to the
- runtime wad/lump loading (commands: load, reset)
- larger, colored dynamic lights (looks good...)
- hexen.cfg: default_wads: list of WADs to load by default
- console commands: class, clip, give, god, kill, midi, pig,
playdemo, reveal, runscript, warp, where
- configurable key repeat (cvars keywait1/2, keyrepeat_wait1/2
- cvar icecorpse: frozen monsters translucent? (default: no)
- ice chunks are translucent
- simplesky looks the same as normal sky but is rendered
Loading Data in the Console.
With the new console commands load and reset it is now
possible to load WADs and single lumps of data while the game is
running. It should work with all WADs: for example you can load
Deathkings without problems.
- sfx played at the correct volume (louder)
- sound code fixed again (no more crashes)
- yellow messages echoed
- finale: last screen fade in with cleric and mage
- automap: had wrong colors + map cheat mode 2
- minor things (e.g. numpad enter, console shift, item pickup
The Enhanced Dynamic Lights.
They are now scaled according to the size of their source and colored
correctly. Alas, due to their larger size (in some cases) it's possible
that they are a bit slower than before. I'm working on making them
faster, but meanwhile if things slow down too much, just turn them
off with the dynlights cvar.
Using Default WADs.
You can now specify the WADs to load when the game starts by using
the default_wads config variable. This is helpful e.g. if you
have your hexen.wad in a different directory.
Sky Is Very Slow?
If you experience extreme slowdowns when the sky is rendered, try
setting the simplesky cvar to 1. This changes the way the sky is
rendered, hopefully getting rid of the problem.
Here's a little something you can expect in the next version.
The version number will be 0.98.1 and it'll probably be released by
- sound code fix #2 (louder sfx, no more crashes)
- runtime wad/lump loading
- larger, colored dynamic lights (looks good...)
- option to make frozen monsters translucent
- translucent ice chunks
- minor console bugfixes
Christopher Little informed me that Windows NT with SP5 installed should
include DirectPlay 6.1, which means you actually can play network games
DX/Net + NT == OK?
Here it is! The changes:
The network code is still using DirectX 6 so
it shouldn't work in Windows NT. Also, don't get carried away with the
resolution menu. Windows can't determine with 100% certainty when a
resolution change has been successful, so when you try to change to
a higher resolution than your hardware supports you might end up with
unpredictable results. There is also something strange going on with
the Pause key (the real one, in your keyboard). In DirectInput there
is a keycode for it but when the Pause key is pressed, DirectInput
returns something like Left Ctrl + NumLock... And finally, thanks to
the sprite color translation tables, each player's clothes are of the
correct color in multiplayer games.
- Windows NT compatible (tested with NT4+SP5)
- DirectX 3 compatible (apart from network stuff)
- sound code fixed (hopefully no more Aureal-related crashes)
- resolution menu
- default resolution in hexen.cfg
- -width and -height work again
- game window sized correctly with -nofullscreen
- pause key can be configured (but not to the Pause key)
- scrolling key config menu
- sprites aren't forced to stay under ceilings
- darker and a bit thicker fog (matches the sky)
- mouse cursor hidden after network init (duh)
- save/load menu slightly nicer to use
- all messages are echoed to the console (cvar: echomsg)
- textures reloaded automatically when gamma correction changes
- simplesky cvar for those who have problems with the sky
- sprite color translation tables in use
- console commands: pause, cheat
I'd like to know if anyone has succeeded in playing a multiplayer game.
JHexen works pretty well on my faked LAN (two computers and a serial
cable) but how about a real one? If you're having problems, be sure
to send me your jhexen.out since it most probably contains some hints
as to what went wrong.
Source Code to Version 0.97.2.
Those who are interested can now download the source code to version
0.97.2. This is the only source I'm going to release for a while.
I'm almost ready to release the next version, just a few little things
to check out.
The next version, which will be released sometime this week, should be
Windows NT compatible. I have information that it works at least on NT4
with SP5 installed, albeit a little slowly (thanks Rob).
Several people have informed me that the Deathkings expansion pack works
fine. Thanks everybody. In order to play it, you start the game like this:
jhexen -file hexdd.wad
If you don't have the Deathkings WAD in your JHexen folder, just specify
the appropriate directory, too (for example: -file hexendk\hexdd.wad).
It seems the -width and -height parameters of 0.97.2 aren't working. Don't
worry, you should be able to change the resolution using hexen.cfg
(screen_width and screen_height).
If you have been really quick at downloading the new version, you should do
it again. I'm sorry for the inconvenience, but a nasty oversight is causing
really weird things to happen in the main hall of map01.
Deathkings of the Dark Citadel?
Those of you who have this expansion pack, would you be kind enough to answer
a few questions? I remember playing it but now I seem to have misplaced it.
First of all, has anyone succeeded in using it with JHexen? How is it started?
Is there a .BAT file or something?
- dynamic lights no longer flicker badly when seen for the first time
- dynamic lights rendered with correct intensity
- -nosound and -nosfx work
- startup message font renderer modified
- maxvissprites set to 1024
- small lighting adjustments
- mouse button for moving backward
- inverse mlook option
- several controls can't be assigned to a single key any more
- floors and ceilings don't break up in the distance nearly as much as before
(e.g. on maps 8 and 12)
JHexen now has a new page. Hope you all like it. It's a little more aestheticaly pleasing then the last one. If you find any dead links, of errors with the page, please write them to...
email@example.com (Webmaster: Brenton J. Klik)
Remember, all JHexen problems should be sent to...
firstname.lastname@example.org (Author: Jaakko Keränen)
Steven Livingston sends word that he was able to get rid of the Voodoo3
missing textures problem by placing the 3dfx beta 2.1 opengl32.dll in the
same directory with JHexen.exe. Thanks Steven. Also other people have been
successful in using the V3, so if you are having problems don't lose hope yet.
People with Voodoo3's seem to be having problems (missing textures etc.). If you
have a Voodoo3 and experience no difficulties, please let me know. It
would be helpful to find out how widespread this thing is. And remember, the
Voodoos are only capable of 16 bit rendering. If your desktop color depth is 32
bits, please be sure to change it to 16 bits for JHexen. (Then again, I might be
totally wrong since I don't have a Voodoo3.)
Includes features such as an item hotkey config and mouselook activation key/mouse
button. Check the version history for more information. I have also made
some changes in the multiplayer game start procedure, and as a result you may or
may not be successful in starting a network game. If you run into trouble (which
should be expected) please send me the jhexen.out (a copy of the startup
messages) found in the JHexen directory.
More About Networking.
The current network code is a straight port of the original code, which was
designed for serial/modem links and an IPX network. I'd be very surprised if you
can play JHexen over the Internet without any problems or huge lag. The probable outcome of such a game is that it'll die from a consistency failure.
Some people are having problems with their mice. Don't fall into despair, I'm
looking into it. Meanwhile, you can try to get all the latest drivers and examine
the startup messages to see what is said after I_StartupMouse. If there is
nothing about the mouse after that, the mouse isn't even initialized for some odd
reason. Make sure use_mouse is set to 1 in Hexen.cfg.
Go to Recent News