Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
ketmar

k8vavoom: no good thing ever dies!

Recommended Posts

Jason Voorhees here, and with new public build!

 

* added more map bugs workarounds (thanks, steinkrauz)
* automatically load "wadname.deh" from zip files if there is no "dehacked" lump in the wad itself
* fixed obj id replacement from DeHacked (it didn't worked at all)
* fixed sprite replacements for DeHacked (somethimes it didn't worked) (i hope that Rowdy Rudy POWERTRIP! works now)
* fixed loader bug with non-transparent patches of exactly 256 pixels high (they were reported as invalid)
* fixed bug with replaced ammo pickups (they could increase amount for the wrong inventory item)
* "run with result" ACS script may call `Delay()`, and should not be destroyed in this case (fixes SHRINE final boss)
* fixed fast projectile velocity clamping (very fast projectiles could go completely out of their way with the old code, which could be seen with some weapon packs, for example) (thanks, id0!)
* do not abort on missing Skulltag weapon replacements
* hack for zero duration in "Line Glow" line special (thanks, id0)
* added option to skip rendering current camera model shadows (video -> advanced)
* ...and options to toggle shadows for different entity types
* write "wadlist.txt" to savegame directory; it is purely informational, and put there to make guessing pwads for hashes easier ;-)
* you can change berserk and envirosuit tints to colormaps (slightly buggy yet)
* use "monster better sight" check only when one of the sight checking entities is monster/player, and entities aren't too far away from each other (speedup)
* added new console command "OpenGZMenu" to open GZDoom MENUDEF menus by name, and autocompletion to console commands "OpenMenu" and "OpenGZMenu"
* added option to show powerup timers in fullscreen HUD (turned on by default)
* more stable state durations -- i forgot to carry over a step leftover time (this affects revenant missiles, for example, as they are sensitive to doom tics)
* fixes for replacement ammo pickups (better ammo matching; D4V altweapon ammo should work now)
* fixed Heretic Imp attack rate
* fixed: Heretic wooden staff when tomed/powered does not spawn the blue glow/puff when it hits (thanks, ReaperAA)
* fixed royal fuckup with `bColideWithThings` (invalid bitmask); this fixes Heretic HolySpirits too (thanks, ReaperAA)
* do not save "class" cvar to config (it may interfere with various game mods, and generally only used in menu class selection; also, it can cause mysterious crashes)
* added gameplay option to control infinitely tall monsters (the feature was always there, but without control UI)
* much faster startup times when pwad has alot of textures (like OTEX, for example)
* fixes to non-FS bloom effect
* added support for MAPINFO "evenlighting" and "smoothlighting" (and advvideo options to control defaults)
* attempted to make non-attenuated GZDoom lights working again (it may break something, i don't know; the whole dynlight code is fubared)
* experimental support for script/function local arrays in ACS (ZDoom extended opcodes and chunks; probably buggy as shit, because nobody bothered to write the proper specs for that)
* some ACS bugfixes; also, implemented more APROP actor properties
* implemented some more ACSF opcodes
* fixed handling of inventory transfer when picking up items (thanks, id0)
* added bottex rendering for floor decorations made with height transfers
* added menu option to control max number of same sounds playing (ear-ripping protection ;-) (engine was doing it all the time, but there was no way to control it)
* specie name comparison should be case-insensitive
* added more ZDoom decorate... specifics emulation (thanks, id0)
* do not render sprite shadow if floor surface is higher than the camera
* instamove floor/ceiling should check for stuck items (thanks, steinkrauz)

Share this post


Link to post

a-a-a-and of course, there is a bug in SARY/FARY ACS chunk parsing. who whould expect it right after uploading a new public build?!

 

will upload a quickfix soon.

Share this post


Link to post

can i see "conlog.log" file? also, can you please run it with "+gl_dump_vendor 1 +gl_dump_extensions 1", so i can see your GPU capabilities?

 

p.s.: i am almost sure that running with "+r_bloom 0" will make it work again.

Share this post


Link to post

thanks. it is a clear regression, so if (when ;-) we'll find the source of the crashes, i'll upload another quickfix. ;-)

Share this post


Link to post

it seems that we found the cause, so quickfix is on its way (after i'll get a confirmation that i really fixed it ;-).

Share this post


Link to post

quickfix!

 

* implemented GZDoom floor/ceiling glow specials
* do not import OpenGL function `glPointParameterf()` (why it is there at all?!) (thanks, Voltcom)
* MUCH faster dynlight visibility checks for complex/detailed maps with alot of dynlight sources (trade precision for speed) (in some maps the engine could drop to single-digit FPS, where it should be at solid 60)

* various lighting microoptimisations

* BDW mod: moved shoutgun support sounds to another sound channel, so shooting sound won't abort too early
* you can press "?" (shift+/) in menu to print menu option cvar to console (i.e. to see which cvar is changed by any menu option)
 

Share this post


Link to post

oh, i finally implemented the feature i wanted for a long time: menu search! now you can search options by name, or by cvar, or by help text, or by any combination of the above. it may not look very polished, but it works! ;-)

 

Spoiler

9qr0rs.png

 

Share this post


Link to post

fun fact: Intel secretly developed a time machine, and they using it to bring GPUs from a very distant future. this is what some Intel video drivers says about supported OpenGL version:

 

Init: OpenGL v100311232.184033360 found

Share this post


Link to post

heh. 20+ y.o. bug with LOS calculation code. was a chance to clean up some copypasta too (still too much; pasta, anybody?). not really solved, but definitely better than it was (and that one test case is working as it should ;-).

Share this post


Link to post

i 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. i'd like to move my code to OpenGL 3.3, because it has some new interesting features, which (may) make rendering somewhat faster on newer GPUs. but it means that older hardware will be dropped, because i don't have enough resources to support both 2.1 and 3.3 renderers, so one of them has to go.

 

easy check: if modern GZDoom runs on your box, than it is good enough for my future plans. ;-)

 

and please, don't say "oh, keep the old rendering, because Older Is Faster, because this is so for GZDoom", this is not true. using newer OpenGL features is actually faster on newer GPUs, so if your GPU supports 3.3, then the new renderer will be at lest as fast as the old one -- in the worst case. i just want to know if there are people using k8vavoom to play on older PCs, and the importance of k8vavoom for them.

 

don't worry, i won't nuke old GPU support tomorrow, it may take monthes (or even years ;-). i simply need to know it to fine-tune my work plans. ;-)

Share this post


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

i 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. i'd like to move my code to OpenGL 3.3, because it has some new interesting features, which (may) make rendering somewhat faster on newer GPUs. but it means that older hardware will be dropped, because i don't have enough resources to support both 2.1 and 3.3 renderers, so one of them has to go.

 

easy check: if modern GZDoom runs on your box, than it is good enough for my future plans. ;-)

 

and please, don't say "oh, keep the old rendering, because Older Is Faster, because this is so for GZDoom", this is not true. using newer OpenGL features is actually faster on newer GPUs, so if your GPU supports 3.3, then the new renderer will be at lest as fast as the old one -- in the worst case. i just want to know if there are people using k8vavoom to play on older PCs, and the importance of k8vavoom for them.

 

don't worry, i won't nuke old GPU support tomorrow, it may take monthes (or even years ;-). i simply need to know it to fine-tune my work plans. ;-)

 

Great to see that some other port is moving out of the hardware stone age.

About hardware, a few pointers:

 

You are right that just switching to a GL 3.3 interface won't slow down things. That will happen once you start adding new features that require more resources. It happened in GZDoom when the renderer was changed to draw to an offscreen surface instead of directly to the screen.

Of course sometimes an optimization that's great for modern and fast hardware will backfire miserably on slower hardware. GZDoom had this when it changed flat rendering from per-subsector to per-sector. The reduced amount of draw calls was a noticable improvement on anything reasonably fast, but made weaker Intel chipsets' performance tank completely, these were chipsets where pixel fillrate and vertex throughput were the most strongly limiting factors for performance.

 

Also another thing: If you go 3.3 you virtually have to use the core profile - I have no idea how far you are with that. On macOS and Mesa drivers for Linux there is no support for GL 3.3 with a compatibility profile.

Share this post


Link to post
On 1/4/2020 at 5:50 PM, Graf Zahl said:

About hardware, a few pointers

yeah, thank you. i know that such move is not something magical, and will require some huge changes in renderer code -- that's why i'm saying that i won't be able to support both old and new renderers, and the transition can take alot of time.

 

On 1/4/2020 at 5:50 PM, Graf Zahl said:

If you go 3.3 you virtually have to use the core profile

yeah. as much as i don't like it, i don't really have a choice here. yet i was moving in that direction almost from the beginning, by dropping OpenGL1.1 support, moving everything to shaders, replacing OpenGL matrix API with my own, and so on. models already using VBOs, and i am planning to heavily cache all other data (if it is possible) on the GPU too. i am also gradually replacing OpenGL context/shader management with my own, so i can defer state switches/uniform changes, or even allow videodriver to regroup some calls if it feels so.

 

On 1/4/2020 at 5:50 PM, Graf Zahl said:

It happened in GZDoom when the renderer was changed to draw to an offscreen surface instead of directly to the screen.

lucky me, i switched to FBOs long ago. ;-) and i'm not planning to add advanced features GZDoom has -- no materials, no bumpmaps, no user shaders, etc. i don't feel that chasing GZDoom in gfx dept is the right way to go. i mean, we already have GZDoom for that, and i want to explore some other areas, and i won't have enough resources for that if i'll go after GZDoom in gfx features. but upgrading to newer OpenGL version will allow me to clean up some mess, got rid of some copypasta, and so on.

Share this post


Link to post

it is only possible in multiplayer mode, because bots are not just helper monsters, but full-featured players. in SP, there is only one player allowed.

 

still, MP is fubared for now (and bot AI too), so there is no reason to try it yet (that's why "Multiplayer" menu is grayed out). it will be eventually restored, and bots will get a brand new AI (i hope that they will be able to finish almost any map on their own). but for now it is not the highest priority. sorry. i really have too much things to do, and i never liked multiplayer games anyway, so i need some... let's call it "inspiration" to work on that parts. ;-)

 

(also, network code is one of the parts where my understainding is quite limited for now. i know what Janis wanted to do there, and i understand "the big picture", but not small details yet.)

 

 

p.s.: yet i did some work on bot AI earlier, and have some proof-of-concept code. so the work is going on, just very slow. for now. i need to implement `TraceBox()` API first (aka new collision detection code), and some other changes, because i cannot work on bot AI without those things. still, i have no plans to give up. ;-)

Edited by ketmar

Share this post


Link to post

i think that today is a perfect day to give you a new build! at least it is as good as any other day. so, here we go!

 

* fixed (at least partially) creation of "outer" top/bottom texture surfaces for boom fake floors (thanks, simc)
* added gameplay option to put view camera into DoomGuy eyes (just4fun)
* added options to control "death roll" (misc options menu); also, death roll direction is randomised now
* increased number of save slots to 10 (but yeah, i still believe that this number should be limited ;-)
* quicksave slot is always the last one in autosaves list now
* added "menu search" options submenu, so you can search in options with various substrings
* it is now possible to specify class name for "KillAll" console command (and you can use "-noblood" option to avoid blood spawning)
* added experimental weapon bobbing control (experimental, because i may change the formula later)
* fix for Boom silent teleports (destination position was offset too far)
* better tossable item creation; added support for `amount` in `A_DropInventory()`
* Boom scrollers (transporters) should carry a thing even if it barely touches a scroller (and carrying sectors should do the same)
* fixed (i hope) bug with Boom accelerative scrollers (invalid, almost random speed)
* new algorithm for "better thing rendering", which will allow me to implement `RenderRadius` actor property
* ...and iplemented (mostly) `RenderRadius`
* it is now possible to run the game with "+cfg_saving_allowed 0" to disable saving any config changes
* it is now possible to use "-configdir dir" to specify directory with "config.cfg" and savegames (also, "-savedir dir" now works too)
* allow to automatically jump out of the water if we aren't submerged too deep (i.e. the player is "ankle deep", but pool border is already too high to climb up without jumping)
* if "map complete" line special was triggered, and we have cluster exit text, proceed with normal intermission sequence (fixes SHRINE finale)
* fixed(?) ancient bug in sight checking code (see https://forum.zdoom.org/viewtopic.php?f=2&t=66777 for some background)
* added renderer hack to properly render jail cells in Doom II MAP31
* gldefs conditional includes, like this: "#include brightmaps/doom_sprites.bm : ifnotwads (D1SPFX19, D2SPFX19)"; supported conditions: `ifanywad`, `ifnotwads`
* fix: ui text wrapper should carry on color codes to wrapped lines
* do not load "mapinfo" from anything that is not "*.wad", and not "*.pk3" (prevents accidental "MapInfo.txt" parsing from zip archives with real pwads)
* changed polyobject manager a little (because pobj can move between subsectors, it can cross a sector boundary too, and suddenly jump on a new height)
* `A_Fall()` decorate action should not drop monster items (`A_KeenDie()` is using it, for example)
* slightly faster sound propagation code (you probably won't notice it, but it looks good in the changelog)
* added k8vavoom-specific decorate extension to limit number of some actors on the map (used to limit number of blood splats and empty cases, for example)
 

Share this post


Link to post

Tried to PM this to you but apparently you have receiving messages disabled.

 

Having some issues:

Trying to change the screen resolution in settings, the game disappears but the music keeps playing.   I bring up task manager and it's not listed under running programs but the process k8vavoom is there and I have to end it to stop the music.

 

I tried editing config.cfg to 800x600 or 640x480 and the screen resolution appears way squished skinny horizontally and the statbar is invisible with the pistol floating high with space below the hand sprites.  Changing the resolution back, the display remains messed up so, until I just delete config.cfg and let k8vavoom generate a new one.

 

idmus# doesn't work and the berserk cheat idbeholds is changed to idbeholdb.

 

Sprites seem a little high to avoid GL hardware rending clipping them into the floor.   Corpses appear to be floating above the ground.   Seems offset just a few pixels too high.

 

Anyway, the port looks like it has a really cool variety of options and it's cool to see decorate stuff working in another port.   Music sounds pretty great with fluidsynth and that Roland soundfont.

Share this post


Link to post
33 minutes ago, Gokuma said:

but apparently you have receiving messages disabled

sorry, my bad. playing with options sometimes gives funny results. ;-) but it is ok to report bugs here too. i think it is even better to report bugs here, so other people may see that something was already reported.

 

33 minutes ago, Gokuma said:

Trying to change the screen resolution in settings, the game disappears but the music keeps playing.

sadly, it's quite hard to debug, as i don't have windows, and it works on my GNU/Linux and in Wine. i'll take a look, tho.

 

33 minutes ago, Gokuma said:

and the screen resolution appears way squished skinny horizontally

the engine tries to maintain integral scaling for HUD, and for some resolutions HUD/menus may look stretched. sadly, non-integral scaling distorts fonts alot, so i had to choose. and i can't simply left it smaller, because Vavoom UI system is tightly coupled with in-game messages and ACS printing. this is something i'm planning to change, but for now it works this way. sorry.

 

as for weapon sprites and status bar... strange, it should work at those resolutions. i'll take a look too, thanks.

 

33 minutes ago, Gokuma said:

idmus# doesn't work and the berserk cheat idbeholds is changed to idbeholdb.

support for vanilla keyboard cheats is very rudimentary, the console is the way to go. for music, it is "music play songname", for example. for giving you various powerups and such, there is "gimme" command. press "tab" to see what it can do for you.

 

it is quite hard to support vanilla cheats in the engine, tbh, they conflict with input system. i will prolly remove them altogether -- i think it is better to not have them implemented, than to have them half-working. the console is always there anyway. ;-)

 

33 minutes ago, Gokuma said:

Sprites seem a little high to avoid GL hardware rending clipping them into the floor.   Corpses appear to be floating above the ground.   Seems offset just a few pixels too high.

oops. there was a setting to move them up/down, but it somehow disappeared. prolly stolen by some imp. it is hard to guess sprite offsets (GZDoom is using tables with hardcoded values for some sprites, for example), so k8vavoom does its best. i'm not quite happy with the current code too, but for now i don't know how to do it better. yet i'll prolly return the option, and maybe will add support for sprite offset tables too.

 

33 minutes ago, Gokuma said:

Anyway, the port looks like it has a really cool variety of options and it's cool to see decorate stuff working in another port.   Music sounds pretty great with fluidsynth and that Roland soundfont.

thank you for trying k8vavoom, and for spending your time reporting things, i really appreciate it! feel free to report other things you'll find too. i may not fix every reported thing immediately, but i'm putting all the reports in my buglist db, they won't be lost! ;-)

Share this post


Link to post

another screenshot. in this one, take a look at numbers. basically, it has stable 15-19 FPS. surely not smooth, but playable!

 

yes, i know that GZDoom can do it much better. but i'm not done yet, i simply did some small optimisations here and there.

 

(it was around single-digit FPS before).

 

Spoiler

vys431.png

 

Share this post


Link to post

still not dead. hope to push a public build this week. among other features in HUGE changelog are fixed aspect ratio (almost, non-default FOVs are still not right), and restored support for hires textures.

Share this post


Link to post
2 hours ago, ketmar said:

still not dead. hope to push a public build this week. among other features in HUGE changelog are fixed aspect ratio (almost, non-default FOVs are still not right), and restored support for hires textures.

I for one look forward to the outcome.

 

Too much to chew in regards of writing and documenting, but i totally love K8Vavoom getting some more love. Through the power of the pen (Or the tendency of the typist! ;)) it shall be done!

Share this post


Link to post
3 hours ago, ketmar said:

among other features in HUGE changelog are fixed aspect ratio (almost, non-default FOVs are still not right)

 

So fixed aspect ratio is finally coming. Great news 👍

Share this post


Link to post

@Redneckerz thanks! the changelog is really big this time, it was a month of some hard work. ;-)

 

2 hours ago, ReaperAA said:

So fixed aspect ratio is finally coming.

yeah. and fixes for 4K mouse handling too. i am doing final touches and testing now (which means that i'll inevitably miss some Fatal Bug, as always ;-).

Share this post


Link to post

Scrolling through the git log shows an insane amount of work. Can't wait for the new build, ketmar! :)

Share this post


Link to post

a-a-a-nd... here we are! this time changelog is so long that i decided to put it into spoiler.

 

good news for all people with different-sized monitors: i tried hard to made aspect ratio great working again, and fixed (i hope ;-) issues with HUD weapon sprites for FOV != 90. also, i added letterbox mode for scaled fullscreen. of course, there are more, as usual.

 

enjoy. and remember: we are the last stand between mankind and forces of Hell! good luck, marine!

 

p.s.: don't forget to try new Miracle soundfont (the link is in the first post). it is only 8MB, but i think that it sounds good. yet i never had a good ear for music, so you'd better check yourself! ;-)

 

Spoiler

* changed aspect ratio code to maintain vertical FOV instead of a horizontal one; now it should work much better
* ...but status bar is not properly "aspected" yet; will be fixed later; 'cmon, FS HUD is much better anyway! ;-)
* added option for strict class->modeldef matching (read menu help, or simply don't touch the default ;-)
* automatically disable/tone down some known blood mods if built-in gore mod is active (NashGore, Ketchup, Bolognese)
* better map detection in "-k8runmap" (i hope ;-)
* show warnings about duplicate levelnums in mapinfo
* pickups hidden in fully closed sectors (floor height >= ceiling height) won't spawn dynamic lights and/or partictles
* fixed picking up health bonuses if current health is too high -- don't reset health (thanks, id0)
* hacked around invalid powerup givers (without explicit `Powerup.Type`) (thanks, id0)
* check for scrollers only if object was moved, and the map has scrollers at all (noticeable speedup for maps with 1100+ monsters and objects)
* other various optimisations in VavoomC code for massive amount of entities (nothing really huge, but still... ;-) Eternal's "memorial" is now playable with ~19 FPS on my box (but you have to turn off ceiling and floor blood splats in gore mod)
* small optimisations in physics, and marked some entities as "nointeraction"
* oops, i accidentally broke wind thrusing; restored (mostly)
* do not copy translations from RandomSpawner to spawned actor (thanks, id0)
* VavoomC: compiler will coerce dynamic arrays and dictionaries to boolean (so `if (arr)` is possible now)
* limit blood spawning from ripper projectiles (slowly moving rippers can spawn enormous number of blood entities); control with "blood_ripper_delay" cvar (thanks, id0)
* do not render sky flats on textured automap
* added "pitch" and "roll" support for UDMF things; added experimental SpotLight dynlight entities support
* added `accurate` param to hitscan `A_M_Fire*()` decorate actions
* do not autoswitch to a weapon without SelectionOrder set (thanks, id0)
* "map" console command will autocomplete only pwad map lumps if pwad contains any maps
* marked empty/invalid save slots with a different color
* experimental new algorithm for sprite offset fixing (it is the default now)
* support for "sprofs" lumps (for new sprite offset fixing algo)
* texture parser should load the latest "TEXTUREx" lump in archive, not the first one
* better doom flat texture detection (i hope)
* added `CustomBridge` and `ThrustFloor` actors
* much faster `MapSpot` actor processing (actually, there is no need to process it at all)
* fake shadow of "bobbing" sprites should not blink anymore
* fixed minor decal bug (segs from side 1 were not flipped, sometimes rejecting a valid decal as out-of-seg one)
* tried to fix decal spreading for some edge cases (adjacent sectors built with different linedef directions)
* drop empty casings slightly further than the player origin, so casing won't end up on a windowsill (thanks, steinkrauz)
* VavoomC: added lump type check API (IWAD/PWAD, WAD/PK3)
* added support for Boom extra help screens (https://www.doomworld.com/forum/topic/111465; thanks, fraggle)
* added master sound volume
* more hacks to DECORATE parser (recognizing quoted constant names)
* some old-style mapinfo parser fixes
* empty/zero states in some DECORATE actions are not bugs (you can't even imagine how broken decorate is...)
* "TeleportNewMapEx" console cheat now accepts "+" as map name (move to the next map)
* correctly set "game_name" cvar for guessed games
* old-style DECORATE parser fixes (i hope you won't encounter such wads...)
* experimental lightmap code fixes for hires/scaled textures (previously it was absolutely wrong, now it should be only slightly wrong ;-)
* reactivated support for high-resolution textures (and added partial support for Doomsday hires packs)
* added optional letterbox mode for scaled fullscreen
* fixed "fontdef" parsers (they were expecting chars in strict order)
* changed mouse handling code, 4K resolutions should work now (thanks, Khorus)
* added support for "scale*" UDMF property for things (thanks, Khorus)
* added support for more SpotLight types (thanks, Khorus)
* fixed offsets for UDMF scaled flats (thanks, Khorus)
* do not interpret DECORATE jump labels like "01" as numeric offsets if current class has a label with the corresponding name
* slightly better autojumping out of water
* engine: added "gm_corpse_limit" cvar to limit number of corpses on the map (default is unlimited)
* added "fulscreen with statusbar" and "fullscreen without HUD" modes (use "+"/"-" to change)
* fixed GZDoom skybox support (it was wrongly rotated, and with wrong top/bottom caps orientation) (thanks, id0)
...and more! ;-)

 

Edited by ketmar

Share this post


Link to post

yesss finally i can use this port with a high FOV and be able to see my weapon at the same time, great update 👍

 

tho it seems skies in Heretic are broken now:

Spoiler

broken.png.ec25ac3a34381d8a37e916f6ddfec60e.png

 

Share this post


Link to post

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

Share this post


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