PDA

View Full Version : legacy-1 vs legacy-2 (subtitle: Future support of legacy-1)


chippo
January 31st, 2007, 02:06 PM
While I play more legacy-2 than legacy-1, that's because I'm debugging. When I'm just on a stoned monster slaughter escapist trip I play legacy-1. Why? 'Cos legacy-1 is much better (IMHO; on my hardware etc. etc.).

But based on what people say in the forums, not least of which is that there probably will only be one more release of legacy-1, I get the feeling that legacy-2 works better for most people (compared with legacy-1) than for me. I'm interested to know how to configure legacy-2 to be as good as legacy-1.

For these issues (below), I'm using legacy-1 CVS and legacy-2 SVN, running on Linux. My X-server is running in 1600x1200x16bpp on an ancient Riva TNT2 Nvidia card. I'm always using -opengl and whether or not I'm in fullscreen or windowed, the game resolution is alway 1024x768. Unless specified, I'm using the doom1 commercial WAD.

My issues are:

1) The resolution is much better in legacy-1. Here are two screen shot of the same health vial in legacy-1 (http://www.imageviper.com/displayimage/69624/0/legacy-1-dark.png) and legacy-2 (http://www.imageviper.com/displayimage/69623/0/legacy-2.png). Notice that the vial is less jaggered in the legacy-1 pic? On my machine it's like this for objects in the game, the splash screen, the skull menu pointer and the writing in the menus. In fact, the only thing (I've noticed) where the resolution is the same in both, is the wall textures.

2) The brightness slider. In legacy-1 this slider made the game brighter or darker. In legacy-2 it didn't do anything. To be fair, I could achieve the same effect by using the gamma sliders (red, green, blue). So this 'issue/bug' is very minor, but (while I still don't know what gamma correction or brightness are actually about) the brightness slider in legacy-2 should do _something_, or should be removed.

3) Snapshot brightness. This issue is so minor, that I certainly wouldn't want to do legacy-1 work if this was the only 'feature' that legacy-1 had over legacy-2. But since I'm talking about the differences between them... While taking my screenshots for the resolution issue #1 above, I tried to brighten the picture, so that the jaggers were more clearly different from the smoothness. What I discovered was that in legacy-2 if you pump up the rgb gamma values you can brighten the (game) screen nicely, but a external screen grabber (I was using KSnapshot in this case) grabs a PNG that is still dark (like the default settings screenshot). However, with legacy-1, after lightening the screen by pumping up both brightness and gamma (but both individually also make the screen brighter), a screenshot of the same health vial (http://www.imageviper.com/displayimage/69625/0/legacy-1-bright.png) as above turns out brighter. Of course, it could be the effects of one or the other or both of the gamma and brightness sliders.

4) Music & Pausing. Again, a minor issue. In legacy-1 when you hit Pause, the music stops, while in legacy-2 it continues. I much prefer the legacy-1 behaviour, 'cos if I'm taking a work call, or my wife enters my study it easier to act like I'm working, but with the latest soundtest.wad, I'm safe with legacy-2 :-).

5) FPS. I was asking in another thread about how to display the frames per second in legacy. The reason was that it 'feels' to me that it's faster in legacy-1. But it seems that it's locked at 35 fps, so it must just be an illusion.

6) Demo mode. Maybe not important to many, but very important to me. I _love_ watching demos when my hand are too busy (rolling, usually) to play but my eyes are free. This alone is enough for me to keep supporting legacy-1 (for my own needs if nobody else wants) until legacy-2 can show demos.

7) SETUP CONTROLS. I want to configure my fire button to be mouse1 and left-control. In legacy-1 I have no problem configuring this. In legacy-2 when trying to set this configuration, I can only achieve right-control & left-control or right-control & mouse1. I am unable to configure left-control & mouse1

Cheers,
chiphead

Aliotroph?
January 31st, 2007, 03:58 PM
The graphics thing in Legacy one is the bilinear texture filtering. Most people thing it looks better even though the crappy GL fog (turned on by default) puts outlines around sprites. You can even see the black outline in the screen you took. If you turn that filter off in the options it'll look more like Legacy 2.

That and everything else you mention kind of sound like things that nobody has bothered to implement yet. The biggest one is clearly the demos. The keyboard thing is kind of weird sounding.

Legacy 2 is still better for these reasons (that I can think of):

GL nodes: lots of maps, even when built with ZenNode showed holes and cracks in Legacy 1.42. This is more apparent if there's a dynamic light shining on the affected area.
HeXen: 1.43 doesn't even try
Scripting: Legacy 2 does more
Sound: 1.42 has very broken sound. It tends to muffle things a lot and seemingly at random. It also hitches and chugs on looping sounds. The 1.42 sound settings also screw up the Windows mixer because they don't reset its state when the game exits.


It has more polish in some senses and less in others. I sitll play with 1.42 but I haven't had a new binary of 2.0 in ages (not since Pate was trying to make GL playable).

PumpkinSmasher
January 31st, 2007, 06:13 PM
Considering Legacy 2 is still in alpha stages, and hasn't even had an official release, I would expect there to be bugs with it.

rustyslacker
January 31st, 2007, 07:22 PM
6) Demo mode. Maybe not important to many, but very important to me. I _love_ watching demos when my hand are too busy (rolling, usually) to play but my eyes are free. This alone is enough for me to keep supporting legacy-1 (for my own needs if nobody else wants) until legacy-2 can show demos.
tee hee!

Anyway. A lot of the graphical issues you mentioned are probably just software behavior as opposed to OpenGL behavior. I'm not sure, though, because there might be OpenGL in the later Legacy 2 alphas.

smite-meister
February 1st, 2007, 04:29 AM
All the renderer issues in Legacy-2 stem from one main source: It is not finished yet. :)

1) A matter of texture filtering and antialiasing. The Legacy-2 OpenGL renderer currently tries to imitate the original software renderer look, but there will be menu/console options for enabling a smoother-looking rendering style. Can be done with 5 lines or code or so.

2) Like most OpenGL menu options, it's not implemented yet.

3) Bug, caused by hardware gamma correction.

4) I personally liked the effect of the music continuing during pause, but I can see your point. :D

5) Currently the Legacy-2 OpenGL renderer does no frustum culling, which can make it really slow compared to the Legacy-1 renderer. When this is done, it should be faster.

6) Unfortunately, the physics engine in Legacy-2 has been changed so much that there is no way of keeping old-style demos in sync. Later on we might think of a new demo format, but for the time being there will be no demo playback or recording in Legacy-2. If you want to view old demos, I recommend PrBoom (http://prboom.sourceforge.net/).

7) I had no problem using left CTRL and mouse1 for firing. Are you sure about this?

chippo
February 1st, 2007, 04:35 AM
The graphics thing in Legacy one is the bilinear texture filtering. Most people thing it looks better even though the crappy GL fog (turned on by default) puts outlines around sprites. You can even see the black outline in the screen you took.

Have a look at these 10 dudes (http://www.imageviper.com/displayimage/69661/0/leg-1-all-10.png). They were all done with legacy-1, 1024x768x16bpp, windowed, opengl on. The top row was done with fog (the default), the bottom row with no fog. The 5 columns, going from left to right are:
- nearest
- nearest_linear
- linear_nearest
- trilinear
- bilinear
for both rows.

Now personally, I can see no difference between fog and no-fog. I also can't distinguish nearest from nearest_linear, and I can't distinguish linear_nearest, trilinear and bilinear from each other. But they must be different, 'cos the screenshots of the various cases differed a lot:chippo@chipnew:~/Desktop$ ls -l nf-* wf-*
-rw-r--r-- 1 chippo chippo 683370 2007-02-01 11:04 nf-bilinear.png
-rw-r--r-- 1 chippo chippo 685335 2007-02-01 11:06 nf-linear_nearest.png
-rw-r--r-- 1 chippo chippo 519224 2007-02-01 11:06 nf-nearest_linear.png
-rw-r--r-- 1 chippo chippo 515933 2007-02-01 11:07 nf-nearest.png
-rw-r--r-- 1 chippo chippo 679614 2007-02-01 11:04 nf-trilinear.png
-rw-r--r-- 1 chippo chippo 676882 2007-02-01 11:19 wf-bilinear.png
-rw-r--r-- 1 chippo chippo 687235 2007-02-01 11:41 wf-linear_nearest.png
-rw-r--r-- 1 chippo chippo 539847 2007-02-01 11:42 wf-nearest_linear.png
-rw-r--r-- 1 chippo chippo 537775 2007-02-01 11:43 wf-nearest.png
-rw-r--r-- 1 chippo chippo 671755 2007-02-01 11:35 wf-trilinear.png


However, in legacy-2 opengl, I believe that fog and texture filtering do nothing at all. I took 2 screenshots, one with fog and bilinear, the other with no fog and nearest. The files are practically the same size, and the first byte that differs between them is 90% of the way through the file. The fact that the files are not 100% identical, is probably explained by KSnapshot putting a timestamp and comment into the file. See:chippo@chipnew:~/Desktop$ ls -ltr leg-2-*
-rw-r--r-- 1 chippo chippo 328068 2007-02-01 12:31 leg-2-wf-bilinear.png
-rw-r--r-- 1 chippo chippo 328087 2007-02-01 12:32 leg-2-nf-nearest.png
chippo@chipnew:~/Desktop$ cmp leg-2-*
leg-2-nf-nearest.png leg-2-wf-bilinear.png differ: byte 290892, line 1094


If you turn that filter off in the options it'll look more like Legacy 2.

Yes, that's right. But it's not what I want. I want legacy-2 to look more like legacy-1. But I know how to do that. I've just got to fix bilinear filtering in legacy-2.

Considering Legacy 2 is still in alpha stages, and hasn't even had an official release, I would expect there to be bugs with it.

I'm not knocking legacy-2's state of readyness. I'm advocating a longer support cycle for legacy-1.

A lot of the graphical issues you mentioned are probably just software behavior as opposed to OpenGL behavior. I'm not sure, though, because there might be OpenGL in the later Legacy 2 alphas.

I assumed legacy-2 had opengl support. I've always run with with -opengl, and I can say that when I don't run with -opengl it looks different. But this might be because I can't change to the same screen resolution as with -opengl. This is because the game seg-faults when I try to change screen resolution when running without -opengl.Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1223063840 (LWP 28248)]
0x0816b3bf in PatchTexture::Draw (this=0x84fc618, x=227.5, y=130, scrn=0)
at v_video.cpp:138
138 while (post->topdelta != 0xff)
(gdb) bt
#0 0x0816b3bf in PatchTexture::Draw (this=0x84fc618, x=227.5, y=130, scrn=0)
at v_video.cpp:138
#1 0x08169d77 in font_t::DrawString (this=0x84da1c8, x=61.5, y=130,
str=0x8218fcd "nds", flags=131072) at v_video.cpp:639
#2 0x0811da43 in M_CenterText (y=130,
str=0x8218fb4 "T to test mode for 5 seconds") at menu/menu.cpp:658
#3 0x0811e284 in Menu::DrawVideoMode (this=0x82b58c0) at menu/menu.cpp:2156
#4 0x0811ed3d in Menu::Drawer () at menu/menu.cpp:3004
#5 0x0804e613 in GameInfo::Display (this=0x82a0220) at g_game.cpp:388
#6 0x08139b76 in D_DoomLoop () at d_main.cpp:203
#7 0x081a85e6 in main (argc=16843009, argv=0x1010101) at i_main.cpp:37
(gdb) p post
$1 = (post_t *) 0x1efda2cc
(gdb) p *post
Cannot access memory at address 0x1efda2cc
(gdb) print p
$2 = (patch_t *) 0x850f620
(gdb) print *p
$3 = {width = 44204, height = 5804, leftoffset = 5654, topoffset = 5654,
columnofs = 0x850f628}
(gdb) p patch_data
$4 = (
byte *) 0x850f620 "���\026\026\026\026\026\026\026\026\202\202\203\20 3\205�������������aaa�0�1�4�788899::\201��������\2 01\202\202\202]]__aaaaaaa������UYY\a\006\006m_\005\006\006\aoO\v\0 06NnO\207\210\210\210\211\211\212\213\213\214\215\ 215\224\217\225\225�\226\226K������������`a\206\20 7\207\207\207\210\222\222\222\223\223\223HH\224I\2 25\225\225��\226\016��\017NOOO`abbbccdeeeffgghh\00 3ijjkklmmmnnooowxxyyzzz"...
(gdb) p col.floor()
$5 = -2
(gdb) p p->columnofs[col.floor()]
$6 = 380415148
I guess that this issue will be my first port of call. But until I've done that, I'm going to keep assuming that legacy-2 has (some sort of ) opengl support.

Ciao,
chiplet

chippo
February 2nd, 2007, 02:55 AM
7) I had no problem using left CTRL and mouse1 for firing. Are you sure about this?

Yup. Here's my procedure:
- svn update
Oops! A whole lotta new stuff! Kewl! We get:
At revision 428.
- make
Better get all the new stuff.
- rm -rf ~/.legacy/
Make sure there is no old config to confuse us.
- ./Legacy -opengl -iwad Doom.wad
This is a doom1 commercial wad.
- Now change the screen res to 1024x768. Make it the default. Go into windowed mode (for snapshotting).
- Go into SETUP CONTROLS
This is what fire is set to: pic (http://www.imageviper.com/displayimage/69746/0/snap-1.png).
- Hit ENTER and then left-control. We now have (http://www.imageviper.com/displayimage/69747/0/snap-2.png).
- Hit ENTER and then click mouse1. We've now got (http://www.imageviper.com/displayimage/69748/0/snap-3.png).

However, with legacy-1, it starts off like this (http://www.imageviper.com/displayimage/69749/0/snap-4.png), which is fine for my needs.

smite-meister
February 2nd, 2007, 04:12 AM
Use backspace to clear the bindings first. I'll see if I can make it more intuitive.

chippo
February 2nd, 2007, 04:56 AM
Use backspace to clear the bindings first.

Oops works perfectly.

I'll see if I can make it more intuitive.

I don't think that necessary. The words are on the screen. I think that my confusion was (in this case) just me being stoopid.

Hurdler
February 2nd, 2007, 08:52 AM
For the filter, the nuance is sometime subtle. If you look at the sprite, there is no difference. where you will see a small difference is in the transition between mipmaps on the floors/walls. The difference is probably more visible when you move than on a screenshot.

Pate
February 3rd, 2007, 05:01 PM
As the coder of the current OpenGL renderer, I feel i should say something here:

- the renderer currently uses nearest neighbor filtering on everything, once we get closer to releasing, I will make it obey the menu settings or something like that

- brightness scale: same thing, maybe we will even have a shader for that

- fog is disabled, it will get added some day

- there are very few optimizations in place, they will get there once I finish making 3D floors and other such stuff work properly