Jump to content

k8vavoom: no good thing ever dies!


ketmar

Recommended Posts

5 hours ago, kaleb. said:

tho it seems skies in Heretic are broken now

oh, shit. i will release a quickfix build soon. thank you!

 

as a workaround, you can create .pk3 file, and put any valid png there, name it "textures/f_sky1.png". the engine should detect it as override, and apply "skyflat" logic. the contents of png doesn't matter.

 

you can load this .pk3 with "-cosmetic" CLI arg instead of "-file". this way it won't be put as required in saves.

 

4 hours ago, Gez said:

Perhaps the engine is confused because Heretic's F_SKY1 flat is technically invalid? (It's like just 4 bytes, IIRC.)

exactly. i fixed F_SKY1 detection for some pk3s where autor for some strange reason put override texture in "textures/", and forgot to check heretic. i guess i will simply ignore sky override textures.

 

i love Doom development! fix one hacky thing, and watch how it broke others! ;-)

Edited by ketmar

Share this post


Link to post

@kaleb. here is quickfix. i won't replace "official" build with it, tho, because i already made some commits i have to properly test before considering this build "official public" (because official public builds meant to be stable, even if it means that some feature is temporarily broken).

Share this post


Link to post

Good job on the new release! The weapon sprite glitches are all gone, amongst a host of other things.

 

A couple of bugs to report using the new build. Playing some Strife, got to the point of defeating the programmer and getting the first Sigil piece. But then I couldn't figure out how to equip the Sigil again after picking another weapon, none of the weapon binds or using previous/next weapon would select it which would be a soft lock against the Bishop (the next boss).

 

Another bug is one I noticed that was also in the last build but didn't figure out how to reproduce it. There seems to be a slight autoaim pulling projectiles down when the player is using mouselook and on a higher elevation than the monster they're aiming at, even when all the autoaim options are off. Doom 2 Map01, heading out to the shotgun secret and standing on the top step while firing at the imps with a rocket launcher creates the bug for me.

Share this post


Link to post
2 hours ago, Khorus said:

But then I couldn't figure out how to equip the Sigil again after picking another weapon, none of the weapon binds or using previous/next weapon would select it which would be a soft lock against the Bishop (the next boss).

oopsie. looks like i broke it when i patched some weapon management code. i completely forgot that Sigil is a weapon by itself, not some powerup. i think i know what is going on, and will try to fix it. but this is not something i can do with a quickfix like the one above, sorry. i'll try to, but it may not appear before the next public build. thank you for your report!

 

2 hours ago, Khorus said:

There seems to be a slight autoaim pulling projectiles down when the player is using mouselook and on a higher elevation than the monster they're aiming at, even when all the autoaim options are off.

please, note that rockets (and plasma, and all other projectiles) are not going through crosshair, they're launched slightly lower. vanilla didn't fire weapons from the proper height, and i fixed this for hitscans, but left it as is for projectile weapons, in case something depends on it. this is prolly what you expirience here. i am playing with autoaim on for projectile weapons, so it is mostly went unnoticed. thank you, i'll think about introducing the same height fix for projectile weapons.

Share this post


Link to post
2 hours ago, Khorus said:

But then I couldn't figure out how to equip the Sigil again after picking another weapon

also, it should be possible use "ForceWeapon Sigil" console command for now (and even bind it to a key) to switch to Sigil until i fix it.

Share this post


Link to post

microoptimisations sux! especially for floating point. how would you check if two floating numbers have the same sign? why not like this:

if (a*b >= 0) ...

and it works... most of the time. except when it doesn't. ;-) if your numbers are small enough (dot products for points lying *almost* on a plane), SSE will round them to zero, while none of the numbers are zeroes. and then you'll have this in your lightmap tracer:

Spoiler

8nvlqa.png

 

now, stop microoptimising, and do it like this:

if (a < 0.0f && b < 0.0f) return true;

if (a >= 0.0f && b >= 0.0f) return true;

 

and you will get this:

Spoiler

owh353.png

 

Edited by ketmar

Share this post


Link to post

Silent Steel: Remastered crashes with:

 

K8vavoom Fatal error

 

Script error at Silent.pk3:actors/sfx/spark.txt:760: 'Loop' sprite name is not allowed!

Share this post


Link to post
4 hours ago, Gunrock said:

Silent Steel: Remastered crashes with

yeah, i tried to implement exactly the opposite -- allow such sprite names. but keyword/sprite detection code oopsed. it is already fixed in git, and everything will be ok in the next build. thanks for reporting!

 

i may upload new build at this weekend, because why not? ;-)

Edited by ketmar

Share this post


Link to post

actually... there are no release dates, so i can do it right now! ;-) enjoy.

 

* oops, i accidentally Vavoom-style HUD weapon models; restored (but without fixes for aspect or FOV; i.e. HUD models are semi-broken yet)
* fixed some bugs in GZDoom MODELDEF parser (invalid model merge)
* better "ReplaceActor" parsing in MAPINFO
* slightly better DECORATE parsing (allow sprite names like "loop", better command detection)
* added support for "skyflatname" MAPINFO-gameinfo definition
* fixed Heretic skies i broke in the previous build (thanks, kaleb.)
* implemented DECORATE `PainThreshold` property, and `A_SetPainThreshold()` action
* implemented custom DECORATE damage types
* fix some known DECORATE argument mismatches (`A_CustomMeleeAttack()` without `missound`, for example)
* added "ATAG" ACSE chunk processor (thanks, id0)
* made DECORATE min/max functions vararg
* added simple "yes/no" menu to all confirmation boxes
* misc UI font handling fixes (case-insensitive font names, faster font searching, etc.)
* slightly reduced accuracy loss in lightmap tracer (less "light cracks")
* fixed ammo amount changes from DEHACKED (it should be proprotionally scalled for derived ammos, not simply multiplied by five)
* added support for conditionals in lanugage files
* less strict GLDEF GLOW section parser (should understand more glow definitions now)
* oops; fixed sprite offset calculation for "smart" sprite offset fixing (i prolly was on high when i wrote the first version of that code)
* fixed weapon slot assign for Sigil

Share this post


Link to post

also, here's part of IBM5155 "light and shadows" demo. it was made for several engines, and was using realtime raycasting everywhere except Vavoom. in Vavoom it wasn't working with lightmaps (dynamic lights weren't properly traced), and was VERY slow with stencil shadows.

 

now, you can enjoy it in k8vavoom, in both lighting modes! best viewed with stencil shadows, but works with lightmaps too.

 

in lightmapped mode it can be quite slow, because there are no static lights. yeah, everything is traced in realtime. k8vavoom is not using several CPU cores to trace dynamic lights, but this is something i will implement later. anyway, it goes with 60 FPS on my i3-4160 up until enging credits, and the last room (it is quite big, there's alot to trace).

 

"shadow squareness" is due to dynamic tracing. static lights are traced with more precision, but for dynamic lights i needed something faster.

 

also, i guess that k8vavoom is technically the first non-toy raytracing doom engine, and it doesn't even need RTX GPU to play! ;-)

 

some screenshots:

Spoiler

hmaofg.png

 

sxfpar.png

 

the same scene with stencil shadows:

ftrgop.png

 

 

ibm5155_lighting_demo.zip

Edited by ketmar

Share this post


Link to post

@Voltcom @Jaska thank you! i still must note that most of the hard work was done by Janis, tho. sure, i did alot too, but without Janis i'd never even start. ;-)

 

8 hours ago, Jaska said:

Sector lighting is so boring to implement..

hehe. cheating! ;-)

 

in the future, i'm planning to implement directional lights for outdoor sun, and maybe godrays. currently outdoor lighting is quite slow, because the only way to create it is to use several huge lightsources, and this (big lightsources) is performance hog.

 

also, dynamic lightmap tracer is far from being optimised. it should use other CPU cores instead of doing it all in the main thread, and the engine should aggressively cache calculated visibility info (so stationary dynamic lights could be almost free). join us, we have a bright future ahead! ;-)

Share this post


Link to post
On 1/3/2020 at 3:45 AM, ketmar said:

have a very important question for you all. if you're using k8vavoom to play some games, please, tell me if your hardware is OpenGL 3.3-capable.

My desktop has an Nvidia 1080, but my laptop has an Intel HD Graphics that only supports up to OpenGL 2.2.  It's not an old laptop, but it's what I could afford at the time.  One thing that has really pushed me further towards Quake (and away from GZDoom) is that Quakespasm still works with my laptop, and can run my own maps at decent speed on my laptop.  Just my two cents ^_^


Aaaaanyway, I've been looking forward to finally trying this out!  The normal Doom IWADs looked and played fine with it, as did my older Extreme Terror level.  Most of my newer levels won't work with it since they use ZScript, but the one I'm currently working on does not, so I tested it with that next.  It's somewhat slow with the Doom 3-style renderer, but with how many point lights there are, I'm not too surprised.  I could probably remove some anyway.  It still played perfectly.

 

However, I did notice that the brightness of the level in k8vavoom was quite a bit higher than what I expected.  Turning off ambient level lighting helped some, and turning off bloom helped a bit more, but I never could get it dark enough to match what I see in UDB and in GZDoom.  This was the case for both the Doom 3-style lighting and Quake-style lightmaps.

 

Spoiler

k8vavoom, bloom darkness set to 32, ambient lighting set to off:
VjzRecu.jpg

 

GZdoom, defaults:
U4uvmxD.jpg

 

Not a bad thing, but unless I'm doing something wrong, I'll need to adjust my method of lighting quite a bit should I map for k8vavoom.

 

Other small things I noticed were that textures weren't switching via ACS like I expected (like with ChangeFloor()), and it seemed that ANIMDEFS was not working for flats or switches.  In my terminal I saw this:

Spoiler

Warning: remilia-textures.pk3:animdefs.txt:1: Name 'textures/otex-png/FLAT-OWATER01.png' converted to 'textures/otex-png/FLAT-OWATER01'
Warning: remilia-textures.pk3:animdefs.txt:1: Name 'textures/otex-png/FLAT-OWATER01' is too long

 

...[repeated a bunch of times with other textures]...

 

Warning: VTextureManager::NumForName: 'textures' not found (type:3; over:1)

 

And lastly, I noticed this:

Spoiler

Warning: maps/MAP01.wad:textmap: unknown UDMF sector property 'damagetype'
Warning: maps/MAP01.wad:textmap: unknown UDMF sector property 'damageamount'
Warning: maps/MAP01.wad:textmap: unknown UDMF sector property 'damageinterval'

 

Outside of that, I'm glad I finally got around to trying this port.  This quickly became one of my favorites ^_^

Share this post


Link to post
31 minutes ago, Remilia Scarlet said:

Just my two cents ^_^

thank you for answering! i really apreciate it.

 

31 minutes ago, Remilia Scarlet said:

However, I did notice that the brightness of the level in k8vavoom was quite a bit higher than what I expected.

yeah, the fog (it is all done with the fog internally) is somewhat brighter than the vanilla (or various GZDoom modes). i am planning to implement more light fading options in the future, but this is not the highest priority now (and nobody complained yet too ;-). thanks for telling me about it: the more people will tell me about something, the higher it will bubble in my TODO list! ;-)

 

31 minutes ago, Remilia Scarlet said:

turning off bloom helped a bit more

yeah, bloom adds some lighting to the scene. this is the way it is implemented right now (it is easier for GPU to do it this way).

 

i will prolly look into light shading soon. maybe we'll get something for it. (tbh, fog/darkening code is something i didn't touched since i forked, so i simply don't know yet how hard it will be to implement different shading modes.)

 

31 minutes ago, Remilia Scarlet said:

Other small things I noticed were that textures weren't switching via ACS like I expected (like with ChangeFloor()), and it seemed that ANIMDEFS was not working for flats or switches.  In my terminal I saw this:

yeah, long texture names are not supported (yet). this is the limitiation of the current texture manager i inherited from Vavoom. it is in my TODO list, of course. ;-) thanks for reporting!

 

31 minutes ago, Remilia Scarlet said:

Warning: maps/MAP01.wad:textmap: unknown UDMF sector property 'damagetype'

yeah, those UDMF properties aren't supported yet. not that k8vavoom cannot do that, i just didn't implemented that part (because i don't have good test maps).

 

if you'll give me a very simple test maps for long texture names, and for damaging sectors (just some boxes, and one or two sample textures, so i can easily test it with GZDoom and with k8vavoom without trying to extract it from the complex setup), i'll try to implement it. basically, if something is not working right (or not working at all), giving me a small test map will help alot, and will greatly increase the chances you'll get it fixed/implemented in the next (or next-after-it ;-) public build. ;-)

 

31 minutes ago, Remilia Scarlet said:

This quickly became one of my favorites ^_^

thank you! stay with us, we have a long road ahead, and with each step everything will be only better! ;-)

Edited by ketmar

Share this post


Link to post

yay, how could i botched `A_LookEx()` so hard?! i guess that's what @-TDRR- were trying to tell me about long time ago. that thing was barely working at all (and murky description in zdoom wiki didn't helped too). monsters, monsters, monsters! at k8vavoom we're slashing monsters in half! we got dumb monsters, blind monsters, stupid monsters... but we don't have working monsters. oops.

Share this post


Link to post
11 hours ago, ketmar said:

if you'll give me a very simple test maps for long texture names, and for damaging sectors (just some boxes, and one or two sample textures, so i can easily test it with GZDoom and with k8vavoom without trying to extract it from the complex setup), i'll try to implement it. basically, if something is not working right (or not working at all), giving me a small test map will help alot, and will greatly increase the chances you'll get it fixed/implemented in the next (or next-after-it ;-) public build. ;-)

Sounds good, I'll build a quick one later tonight after I'm back home and get it to you.

Share this post


Link to post

@Remilia Scarlet also, you mentioned some troubles with changing textures from ACS. if you can give me a sample of this, it will be great too. debugging ACS is something i hate with a passion (the VM is a mess!), so minified sample will help alot.

 

p.s.: i think we'll have animated textures with long names in the next build. ;-)

Edited by ketmar

Share this post


Link to post
15 minutes ago, Remilia Scarlet said:

The texture does technically change... but it changes to the blue and white checkerboard pattern.

yeah, that is because of long name. it is "texture not found" situation, and the engine puts a checkerboard placeholder there. i just needed some ACS code so i can pinpoint the exact place. the ACS VM was taken from ZDoom, and then heavily modified, and now it is the single source file, whose size is 253,442 bytes. not the thing you'll want to touch without some guidelines. ;-)

 

thank you alot!

 

p.s.: i need to modify ACS VM because i'm not ready to write a new texture manager yet, so i'll put some band-aid here and there until The Time Comes. of course, in the end of the day i may not need to touch ACS VM at all, but it is a good start anyway. ;-)

Edited by ketmar

Share this post


Link to post
49 minutes ago, ketmar said:

yeah, that is because of long name. it is "texture not found" situation, and the engine puts a checkerboard placeholder there. i just needed some ACS code so i can pinpoint the exact place. the ACS VM was taken from ZDoom, and then heavily modified, and now it is the single source file, whose size is 253,442 bytes. not the thing you'll want to touch without some guidelines. ;-)

 

thank you alot!

You're very welcome!

 

Yeah, that's not a VM I would want to mess with... I've written a smaller VM before and that was complicated enough.  Fun... but complicated.

Share this post


Link to post

actually, i love writing compilers and VMs (i'd like to work solely on VavoomC*, and leave other engine parts to somebody else). but this particular VM is not fun at all. ;-) to add some spice onto it, newer ZDoom defined more opcodes and ACSE chunks. of course, nobody ever bothered to properly document that. and GZDoom internals changed quite significantly over 10+ years. your case with textures is easier, but when i encounter some ACS with unimplemented opcodes... or even worse: ACS that works wrong, and i don't know if i implemented some opcode wrong, or if Janis forked before some very important fix was made, or if it is just wrong Moon phase. ;-)

 

don't get me wrong, this is fun work too, but it is very time-consuming. especially considering the fact that the bug is usually in some big mod with alot of scripts. so i can't even start to express my gratefulness and appreciation to people sending me small test maps. thank you all!

 

* i now have libvavoomc, nicely separated from the engine, and usable in other projects, for example.

Edited by ketmar

Share this post


Link to post

Hi, nice looking port.

 

In Heretic is there a way to bind a specific artifact to a key, other than the tome of power?

 

Also in Linux the music is often distorted, which I think is a fluidsynth issue. I can't seem to get timidity to work though. Any obvious things to try?

Share this post


Link to post
1 hour ago, plums said:

Hi, nice looking port.

thank you!

 

1 hour ago, plums said:

In Heretic is there a way to bind a specific artifact to a key, other than the tome of power?

currently no, sorry. nobody ever asked ;-), and i am not playing H/H games myself. i have to add game-specific binding system (currently there is only Strife/others, need to make it more selective), and then i could add it. thanks, i will prolly implement it in one of the next builds.

 

1 hour ago, plums said:

Also in Linux the music is often distorted, which I think is a fluidsynth issue. I can't seem to get timidity to work though. Any obvious things to try?

i don't know, sorry. FluidSynthLite (bundled in the source tree) works for me without any problems (and this is preferred option, tbh), and timidity works too. maybe turning off reverb in FluidSynth options would help, or dropping another soundfont in "~/.k8vavoom/soundfonts/" (the engine will automatically load .sf2 from that dir; if there are several sf2 soundfound there, the order is undefined ;-). or you can put

snd_sf2_file "/path/to/soundfont/font.sf2"

to config.cfg (currenly there is no way to change it from UI, but if you'll put it into config file, it will stay there).

 

if i'll remember something else, i'll drop you a note.

Share this post


Link to post

@Remilia Scarlet so, i implemented support for "fullpath textures" in animdef and in ACS. you can test it with the current git master if you want. damaging sectors aren't there yet, tho.

Share this post


Link to post
7 hours ago, ketmar said:

@Remilia Scarlet so, i implemented support for "fullpath textures" in animdef and in ACS. you can test it with the current git master if you want. damaging sectors aren't there yet, tho.

AWESOME!  I'll pull the commits and recompile later today.  I didn't expect it to get in this soon ^_^;

Share this post


Link to post
29 minutes ago, Remilia Scarlet said:

I didn't expect it to get in this soon

good test map can do wonders! ;-)

Share this post


Link to post
11 hours ago, ketmar said:

snd_sf2_file "/path/to/soundfont/font.sf2"

 

Thanks, changing the soundfont seems to help at least somewhat, though oddly not completely. It's good enough though.

 

edit: this setting doesn't seem to get preserved in the cfg file. (Neither does the pushable barrels option...) Adding the soundfont to the directory works, though.

Edited by plums

Share this post


Link to post
6 hours ago, plums said:

this setting doesn't seem to get preserved in the cfg file. (Neither does the pushable barrels option...)

something is very-very wrong here. both that vars are persistent. i just checked pushable barells -- yes, it seems to not be stored. wtf?! thanks for reporting! sf2 works right for me, though.

 

aaand yeah, i forgot to put "archive" attribute to sv_pushable_barrels. fixed. yet "snd_sf2_file" should be properly archived. you can specify it from the command line too, with "+" (+snd_sf2_file path), and it *should* be saved after quiting.

 

anyway, sorry for troubles, and for my inability to help.

Share this post


Link to post
Guest
This topic is now closed to further replies.
×
×
  • Create New...