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

k8vavoom: no good thing ever dies!

Recommended Posts

@SilverMiner thank you alot! Boom scrollers always were a PITA: they're closely tied to 35 FPS and very… let's call them weird formulas. as Vavoom is not a lockstep engine, the whole math need to be rewritten (and it's not even always possible to emulate everything 1:1). so test maps are very important. (and whatthefu… is happening there at all?! i've never seen such setup before. ;-)

 

p.s.: replace embedded gifs with links to them, please. they both ~65MB of data for everybody who will open the page. i wrote the extension to block such images, but i guess other people may not have such tool, and their browsers will download both pictures in full. thank you! ;-)

Edited by ketmar

Share this post


Link to post

i already wrote that i implemented overbright support for non-lightmapped renderers, now it's time to show some pictures!

 

no overbright:

Spoiler

f5wmvx.png

 

with overbright:

Spoiler

xprucq.png

 

the effect is quite expensive (it can easily eat 10+ FPS), and it's quite hard to notice, so i turned it off by default. but for artistic maps with complex dynamic lighting it may worth it.

 

if you wonder what "overbright" is — it is a kind of HDR-like rendering, where resulting color intensities can go above [0..1] range. the ceiling on those images is lit to its max possible brightness, so green light from the bottom cannot change anything there without overbrighting — it doesn't matter how hard you will try to add some light when you already reached the limit. yet in overbright mode, light intensity can go above the maximum, and some of the green lights have a better chance to contribute to the scene. also, the whole scene is slightly brighter, because it is really lit by alot of bright lights.

 

sadly, to allow this, the engine has to use floating-point screen texture instead of faster 8-bit one, and then postprocess it. that is the source of FPS loss. it's not about geometry, or number of lights, it's about GPU memory bandwidth. for modern GPUs the loss may be less dramatic, but i prefer to play safe. you can control it from the main video options menu, tho, and switch it on/off on the fly.

Edited by ketmar

Share this post


Link to post

don't worry, everything is alright with k8vavoom. i just got distracted by a small sideproject (very simple web "protection server", if you're interested), so the release (it's a "public build", of course, but we all know that they are releases, right? ;-) will be delayed for some more time. sorry. but there's only so many hours in a day, and alot of interesting things to try! ;-)

 

still, we're alive and good. do not adjust your sets!

Share this post


Link to post
10 minutes ago, ketmar said:

don't worry, everything is alright with k8vavoom. i just got distracted by a small sideproject (very simple web "protection server", if you're interested), so the release (it's a "public build", of course, but we all know that they are releases, right? ;-) will be delayed for some more time. sorry. but there's only so many hours in a day, and alot of interesting things to try! ;-)

 

still, we're alive and good. do not adjust your sets!

I think you're doing a great job.  All these are hobby projects.  I'm the same, I have about 7 other projects in 4 different programming languages :) take it easy, burn out is a real threat.

Share this post


Link to post

@Gibbon thank you! your project is great too (and i'm saying this because i know what it means to work with MBF codebase; Janis spent literally years cleaning it up! ;-).

 

but i don't afraid any burnout, it's just not enough time to do everything, but my will is as strong as ever, if not stronger. ;-) (what a pathos!)

 

i just worried that people may see commit rate decrease (i'm usually making at least several commits per day on average), and may think that something bad happened. so don't worry, people, i'm as full of ideas and enthusiasm as ever! ;-)

Share this post


Link to post

while i am still distracted, k8vavoom is not forgotten. the next build will add support for Legion of Bones. that's how good mod should be done, btw: use ZScript to add several required DECORATE code pointers, and then use DECORATE for everything else. as VavoomC can do the same, i simply replicated that base actor with VavoomC, and everything else Just Works (well, had to add two more standard GZDoom code pointers, but it worked even without them).

Share this post


Link to post

just for fun, i added built-in option to replace vanilla monster and/or player weapon hitscan attacks with fast projectiles. this is in-engine hack, so you can switch it on/off at any moment.

Share this post


Link to post

Does k8vavoom have either linked portal or something else for room over room level design? I wonder how you handle monster noise alert propagation through such inter-layers.

Share this post


Link to post
2 hours ago, printz said:

Does k8vavoom have either linked portal or something else for room over room level design?

no. i don't want to implement this, and it prolly won't change. it creates so many troubles in playsim (physics, sound propagation, LOS checking, AI, pathfinding, and so on) that i simply don't think it worth the efforts. so far there is only a small number of maps using that feature, some of them are just "gimmick maps", and others prolly can be done with 3d floors, silent teleports, and slight redesign.

 

but ranting aside, what is the problem there? i mean, it doesn't matter if the sector on the other side of a linedef is geometrically adjointed, so line portals should not differ from any other 2S line. and floor/ceiling portals are handled by recursion.

 

the only problem i see is advanced alerting with distance argument. vanilla doesn't do that, but DECORATE does. and distance calculation through portals is PITA.

 

p.s.: actually, the more problematic thing yet is polyobjects (and 3d polyobjects). we can have sight-blocking pobj doors, but sound propagation totally ignores them. so to implement proper sound blocks, one will need alot of ACS scripting for each door. i'm still not sure how to solve this.

Edited by ketmar

Share this post


Link to post

 

I don't think there is any 100% robust way to handle sound propagation through portals. Since the shapes of sectors on both sides of the portal do not match it would become a non-trivial effort to find each and every potential connection. So the best option is an approximation and just peek through the portal at a few spots to avoid problems with sound blocking lines. If the latter wasn't an issue, just peeking through it at a single point would be enough as the sound would properly propagate from there.

 

Doing anything more complex may run into issues with performance that most likely won't be worth the effort to better handle a few unlikely edge cases.

 

Regarding polyobjects, that is indeed more tricky - but the same issue applies to 3D floors as well. If you construct a multi-story building there is no good way to block sound at the 3D floor. The engine simply wasn't made for it.

 

 

Share this post


Link to post

actually, k8vavoom internallly slicing pobjs with subsectors (this is used for view culling), so i think that it can be used somehow. but i haven't decided on the algorithm yet.

Share this post


Link to post

Official Warning: don't worry, the whole repo was rewritten because i switched to Fossil. if you're doing regular "git pull", just clone the repo again. no worries, the new Fossil repo is automatically mirrored to repo.or.cz, this is just a one-time change.

Share this post


Link to post

Nothing against Fossil - but why can't you just use Github, like everybody else? :?

This would increase the visibility of your port ten- or twentyfold and surely motivate potential contributors a lot.

Share this post


Link to post
8 minutes ago, Graf Zahl said:

Nothing against Fossil - but why can't you just use Github, like everybody else? :?

This would increase the visibility of your port ten- or twentyfold and surely motivate potential contributors a lot.

It's probably because of Microsoft owning GitHub that ketmar choose to go for Fossil.

Share this post


Link to post
7 hours ago, Graf Zahl said:

why can't you just use Github, like everybody else?

it helps… exactly how? GZDoom isn't using gh wiki, GZDoom isn't using gh issue tracker, it basically using gh as a backup server. i don't need gh wiki, i don't need gh issue tracker, and i am using repo.or.cz as a backup server. not really different.

 

now, in sheer numbers, how many contributors GZDoom got via gh? and in words — how complex their patches were?

 

and now, divide that to at least 10 (50 or 100, if we're going to be more realistic) for k8vavoom. it doesn't worth the efforts required to register (is it even possible to register on gh these days without having a mobile number? because i don't have one).

 

as for visibility… one release from @Gunrock or @Remilia Scarlet attracts more people than gh could attract in years. gh doesn't magically help anything: there are billions of projects there, and most people don't care about source code at all anyway, they simply want something they could run and play the game. one still have to run around dropping self-promotion spam to be noticed. ;-)

 

so, "everyone is on gh today" is not an important reason at all. and gh importance as a platform is highly overrated.

 

 

now, Fossil is more fitting to my workflow (i am basically using git as Fossil), and having features git doesn't have (at least easily; like multiple working source directories — i can perform bisect in one dir, and keep commiting in another dir, Fossil supports such things out-of-the-box). i can have My Own Github with Fossil out-of-the-box too: just look, i did it in seconds, with near-zero configuration work. we have repo view, wiki, issue tracker, forum, and i can even turn on webchat (and yes, you can use this url for "fossil clone"). you don't need to register too, you can login as "anonymous", no problems. you can refer to any artifact in any text document; and artifact is not only a commit, but a forum post, or a wiki article, or a ticket, or a tech note (basically, blog article attached to some commit). this, btw, is a "local UI" for Fossil too, so i can easily use it without a server, to track things privately, and keep all my documentation and tickers with the source code, pefrectly synced. more than that, everybody cloning the repo will get tickets and wiki too, without any additional efforts. it is a single executable you can just download and run — and anybody who tried to use git with Windows will immediately understand why it is great. ;-) i can continue with this for pages, i barely even started.

 

ah, yes, Fossil doesn't have The Most Important Git Feature: history rewriting. like, at all. all your ugly commits will stay there forever, you cannot pretend writing The Perfect Code with Fossil. ;-)

Share this post


Link to post

I'll tend to agree with Ketmar.  GitHub is nice (I also use Gitlab as a private backup).  But the problem with GitHub is that there are a lot of amateurs who think contributing is just slapping on a PR and that's that.  Only on a few large repo's do I really see any kind of community around it with a professional attitude to software development.  It is a great tool for getting things done but it needs to be managed well.

Share this post


Link to post

 

3 hours ago, ketmar said:

(is it even possible to register on gh these days without having a mobile number? because i don't have one).

 

When I registered my account for work earlier this year I didn't use a phone number. Email verification was enough.

 

1 hour ago, Gibbon said:

But the problem with GitHub is that there are a lot of amateurs who think contributing is just slapping on a PR and that's that.  Only on a few large repo's do I really see any kind of community around it with a professional attitude to software development.  It is a great tool for getting things done but it needs to be managed well.

 

We got several developers that occasionally do some bugfix PRs for both GZDoom and Raze. Granted, it's not big stuff but it surely helps. Of course you also get the occasional nonsense PR that gets closed on sight, but that's a small price to pay for the help we get anyway.

 

3 hours ago, ketmar said:

ah, yes, Fossil doesn't have The Most Important Git Feature: history rewriting. like, at all. all your ugly commits will stay there forever, you cannot pretend writing The Perfect Code with Fossil. ;-)

 

I guess I'd be screwed. History rewriting in my work branches happens so often that I'd consider any VCS to be defective without it. Clearing out the development garbage is important so that the final pushed result does not end up a disaster.

 

Share this post


Link to post
34 minutes ago, Graf Zahl said:

I guess I'd be screwed. History rewriting in my work branches happens so often that I'd consider any VCS to be defective without it.

and my workflow is exactly the opposite: "don't commit until it tested (or at least seems to work)". ;-) the only case i need to commit some non-working crap is when i need to switch to another branch for some reason, and have some unfinished code laying around. but with Fossil i will simply open the repository in another dir, and do a checkout there, no problems — Fossil seamlessly tracks all "opened locations" for me.

 

at the very worst case i can cherry-pick patches, but it's a very rare need (i used cherry-pick maybe a dozen times over a decade).

Share this post


Link to post

The whole "microsoft bad, github bad" narrative is pretty stale considering all the great improvements to github in recent times 😄

That link is a far stretch from "your own github". If it fits your workflow, then great, but let's not pretend this is remotely equivalent. It's missing basic features. I agree with Graf, and there are a surprising amount of contributors that show up randomly with bug fixes in my experience, for a few different source ports I watch. But if it doesn't work for you then it is what it is. 🤷‍♂️

Share this post


Link to post
5 hours ago, ketmar said:

(is it even possible to register on gh these days without having a mobile number? because i don't have one).

I think you can, the only thing they requested when I registered was email verification and that's it.

Share this post


Link to post
3 minutes ago, kraflab said:

That link is a far stretch from "your own github". If it fits your workflow, then great, but let's not pretend this is remotely equivalent.

that's why it is not a "github replacement", but "your own github". ;-)

 

also, as a sidenote, i dropped using gh long before m$ bought it (actually, i had an invite to the first beta of it; oh, so many years passed… ;-).

 

also, i don't think that people can fix something that is not really trivial in a codebase like k8vavoom, much less join the development. it took me years to learn and understand it, and there are still parts i don't fully grok. especially considering that k8vavoom is very different from all other sourceports out there — it's not even a lockstep engine. and you have to know VavoomC and the internal engine architecture, because most of game logic is done with VavoomC. i mean, anybody's welcome, but…

 

for trivial bugs giving me a way to reproduce it is usually enough, i can fix it quite fast. and for non-trivial playsim bugs one have to spend monthes trying to figure out the engine internals — i don't expect people to have no life to such extent. ;-)

Share this post


Link to post

I'm glad this was spoken about, I'm now setting up repositories on there too.  I guess it just made me think how much GH annoys me and the website that doesn't work without non free JS.  GH is good as a public mirror in this case.

 

Have to admit, not having watchers, stars etc does give me a better feeling, like I am not being watched.

Share this post


Link to post
9 minutes ago, Gibbon said:

GH is good as a public mirror in this case.

This is what I've been doing (except with GitLab) for a few Crystal libraries I've written.  Though my reason for this is because the main dependency manager for Crystal only supports git at the moment.  Fossil also seems to fit my workflow and approach a lot better, so I've just stuck with it.  I also find it easier to fix mistakes I make with a repository.

Share this post


Link to post

@Gibbon you can use repo.or.cz as a git backup. they're online for more than a decade already (closer to two decades, if i remember right). sometimes it is down, but usually it's a day or two per year. and they answering emails almost instantly. i've never had any problems with that site, and it's ideal for a simple git repo storage.

Share this post


Link to post
14 minutes ago, ketmar said:

@Gibbon you can use repo.or.cz as a git backup. they're online for more than a decade already (closer to two decades, if i remember right). sometimes it is down, but usually it's a day or two per year. and they answering emails almost instantly. i've never had any problems with that site, and it's ideal for a simple git repo storage.

Yeah that's what I did.  Beautiful setup and great admins.

Share this post


Link to post

Chrome says the file is not safe to download. Could someone tell me if this source port is identical to gzdoom in terms of gameplay? (movement, shooting)

Share this post


Link to post
1 hour ago, game said:

Chrome says the file is not safe to download. Could someone tell me if this source port is identical to gzdoom in terms of gameplay? (movement, shooting)

Chrome is telling you bullshit.

 

Its based off Vavoom, which is based off Quake. So it will be different in subtle ways.

Share this post


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