|
Post by 3t0 on Jun 17, 2022 18:05:07 GMT -5
Just dropping by to report that I like k8vavoom so much (and consider it so worthy ), that I registered even here. Actually, I think, it was the reason why I bothered to register at doomworld too . So, anyway: hello comrades! One thing, that I would really like to propose on this occasion, is to popularize use of the shorthand "k8v" when reffering to the port. It is shamelessly inspired by kubernetes' shorthand k8s (which I deal with lot at work, lol), only in k8v's case it's not some stupid "here goes some random 8 letters" abbreviation shit, but an actual compression sourceport's full name (using most important letters). What do you say?
|
|
|
Post by ketmar on Jun 18, 2022 4:53:50 GMT -5
So, anyway: hello comrades! hi! i'm little ashamed now: people keep coming, and i'm like "oh, great to see you here. now don't expect anything until the end of the year." ok, maybe a maintainance release, we'll see… ;-) One thing, that I would really like to propose on this occasion, is to popularize use of the shorthand "k8v" when reffering to the port. yeah, sure! i'm using it myself too. so if you people are as lazy as i am, feel free to write "k8v", i'm totally ok with it. thanks for writing about it, so i could give it "the official blessing". ;-) @gibbon, i put your resolution request to tickets. now i can happily do nothing about it, because "hey, it's written there, it won't be lost, don't worry!" ;-)
|
|
|
Post by ketmar on Jun 18, 2022 5:40:13 GMT -5
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on Jun 18, 2022 7:27:59 GMT -5
So, anyway: hello comrades! hi! i'm little ashamed now: people keep coming, and i'm like "oh, great to see you here. now don't expect anything until the end of the year." ok, maybe a maintainance release, we'll see… ;-) One thing, that I would really like to propose on this occasion, is to popularize use of the shorthand "k8v" when reffering to the port. yeah, sure! i'm using it myself too. so if you people are as lazy as i am, feel free to write "k8v", i'm totally ok with it. thanks for writing about it, so i could give it "the official blessing". ;-) @gibbon , i put your resolution request to tickets. now i can happily do nothing about it, because "hey, it's written there, it won't be lost, don't worry!" ;-) Excellent! Yep, that is definitely how it is done. At least I can bother you about it in 100 years when it is still there
|
|
|
Post by 3t0 on Jun 19, 2022 18:22:24 GMT -5
Just reading up about nodebuilders, does k8v support zdoom nodes or glnodes, or both. If both which should be considered native format?
|
|
|
Post by ketmar on Jun 20, 2022 2:53:56 GMT -5
actually, none of them. it doesn't even try to read nodes from wads (i physically removed that code). ;-) it is always using built-in AJBSP to rebuild nodes from scratch. i.e. the NODES lump must be there (because it is a part of "map lumps", and it's presence is checked), but the engine doesn't bother to read it.
(i think you'll ask it anyway, so: internally AJBSP is using floating point. there is no reason to NOT use it, and try to work with external nodes which have less precision. even on my core2duo something like Planisphere takes only several seconds to process, so… also, the engine can cache various created data — like nodes and lightmaps — if building takes too long.)
|
|
kvsari
Doomer
I like mapping.
Posts: 335
Member is Online
|
Post by kvsari on Jun 20, 2022 3:05:32 GMT -5
actually, none of them. it doesn't even try to read nodes from wads (i physically removed that code). ;-) it is always using built-in AJBSP to rebuild nodes from scratch. i.e. the NODES lump must be there (because it is a part of "map lumps", and it's presence is checked), but the engine doesn't bother to read it. (i think you'll ask it anyway, so: internally AJBSP is using floating point. there is no reason to NOT use it, and try to work with external nodes which have less precision. even on my core2duo something like Planisphere takes only several seconds to process, so… also, the engine can cache various created data — like nodes and lightmaps — if building takes too long.) So if I understand correctly, you regenerate the map into an internal format? Just in time node building if I may? So AJBSP comes from Eureka DOOM editor. That was the first editor I tried when I started mapping. If this assumption is correct, k8vavoom is running on the same understanding of the map as would a map editor? (In this case Eureka editor). Kind of like how one would build a source port out of the 3D view from Ultimate Doom Builder. Is this roughly what's going on?
|
|
|
Post by ketmar on Jun 20, 2022 3:22:18 GMT -5
So if I understand correctly, you regenerate the map into an internal format? any advanced engine converts map data in one or another way, we're all using pwad data as just a base. Just in time node building if I may? more like "just when loading". ;-) i.e. instead of loading nodes from pwad, the engine simply rebuilds them. this way i have much more precision, so no slime trails, or wobbly walls are possible. So AJBSP comes from Eureka DOOM editor. yeah. it is a rework of GLBSP, and Vavoom was using GLBSP before, so it was a natural decision to switch to AJBSP. ;-) and it is slightly tweaked for UDMF (later, Andrew did it too, but in a slightly different way). If this assumption is correct, k8vavoom is running on the same understanding of the map as would a map editor? (In this case Eureka editor). no, not exactly. Eureka (and other editors) aren't using BSP nodes themselves, they contain node builders to build nodes for the engines to use. and their 3D preview modes using different algorithms. basically, you don't need to do it REALLY FAST in the editor, but you need to deal with moving vertices and such (which never happens in the engine). tl;dr: k8vavoom is just rebuilding mostly the same nodes data that is in pwad, but doing it with a better precision to avoid visual glitches.
|
|
kvsari
Doomer
I like mapping.
Posts: 335
Member is Online
|
Post by kvsari on Jun 21, 2022 7:59:58 GMT -5
Thanks for that. I guess with how fast computers are now rebuilding nodes is trivial. I remember reading that the first nodebuilder during development of doom took twenty minutes to make a map. Would nodebuilding now be fast enough that one could "deform" terrain during play? I daresay new data structures would have to be thought up for this kind of feature.
|
|
|
Post by ketmar on Jun 21, 2022 8:34:44 GMT -5
Thanks for that. I guess with how fast computers are now rebuilding nodes is trivial. yeah, for vanilla maps it doesn't take even a second, and for others it is rarely longer than a second or two. Would nodebuilding now be fast enough that one could "deform" terrain during play? I daresay new data structures would have to be thought up for this kind of feature. no, it won't work. the problem is that you have to rewrite the whole engine from the ground up to make this possible. it's not only about nodes per se, the whole new set of data is created along the way — segs, subsectors, etc. even movable 3d polyobjects in k8vavoom is a gross hack, which works only because we have enough raw processing power to bolt it on top of the idTech1. adding something more complex will simply make the code unmaintainable. i'm experimenting with such changes, but it is not even in pre-alpha yet, just a very early R&D. the problem is, as usual, compatibility: i can create a brand new engine with dynamic geometry, but it won't be Doom, and won't be able to load many Doom maps (because a lot of maps contans bugs which are tolerable for static BSPs, but not for dynamic geometry engine; even vanilla maps are guilty). so yes, the work is slowly progressing, but don't hold your breath yet. ;-)
|
|
tdrr
Doomer
Posts: 68
|
Post by tdrr on Jun 21, 2022 23:10:36 GMT -5
Thank you very much! I'll test more later, need to recompile this on my Linux PC (because my main laptop uses Windows, yeah shame on me and all that ). One issue unrelated to K8Vavoom and the fossil repo. At least here in Venezuela I'm unable to reach it, always times out connecting. Why could that be, if at all fixable on your end? The git repo is fine and it's what I always use if needed, but still weird.
|
|
|
Post by ketmar on Jun 22, 2022 1:59:59 GMT -5
prolly a country ban by my protection system. the whole xUSSR is banned (yeah, including ukraine ;-), china, and "non-mainstream" countries are banned as a whole when protection system sees "enough bot traffic". PM me your IP, i'll check and punch a hole for you. (it is done this way because i don't have any fancy "web server": it's just my working PC; and bots eats resources, so i'm cutting off countries from which i don't expect much visitors — becaise firewall tables are eating resources too, i can't do it ip-by-ip ;-). p.s.: it is a pure VavoomC fix, no need to recomiple the binary. you can simply update basepak.
|
|
kvsari
Doomer
I like mapping.
Posts: 335
Member is Online
|
Post by kvsari on Jun 22, 2022 2:21:11 GMT -5
i'm experimenting with such changes, but it is not even in pre-alpha yet, just a very early R&D. the problem is, as usual, compatibility: i can create a brand new engine with dynamic geometry, but it won't be Doom, and won't be able to load many Doom maps (because a lot of maps contans bugs which are tolerable for static BSPs, but not for dynamic geometry engine; even vanilla maps are guilty). so yes, the work is slowly progressing, but don't hold your breath yet. ;-) This is supremely interesting. I daresay these kinds of map bugs have no unambiguous solutions to them so fixing them in an automated way is impossible (it would be a General Strong AI type problem?). What are the most common of these bugs? Also, is it inherent in the map format with linedefs and such that this kind of ambiguity is inevitable; like a bad grammar design?
I do know that Carmack could have used the BSP tree to do collision detection. He mentions as such in the release of the Doom source code. (It was in Quake that Carmack was taught that the BSP can be used for collision detection). Therefore I've always wondered why the blockmap persists as it's unecessary. But is it necessary? Are there other things missing which force the presence of a blockmap? I also remember reading that Vigilante (who sadly deleted his account) mentioned that the BSP tree is built in a reverse(?) manner with the leaves being empty and this makes things difficult. Or was that you who said it?
Thus, is the Doom map format as it stands impossible to auto-convert into another format which is more dynamic and powerful?
|
|
|
Post by ketmar on Jun 22, 2022 5:50:34 GMT -5
I daresay these kinds of map bugs have no unambiguous solutions to them so fixing them in an automated way is impossible (it would be a General Strong AI type problem?). yeah. sometimes it is possible, but often the machine simply cannot know what the author intention was. What are the most common of these bugs? unclosed sectors, duplicate linedefs, missing or messed line sides, crossing linedefs, and more of that kind. and various tricks mapper are using (actually, engine exploits). sometimes "autofix" works, and sometimes the fixed map is not working as intended at all. Also, is it inherent in the map format with linedefs and such that this kind of ambiguity is inevitable; like a bad grammar design? it is more because of tools being "tolerable" to mapping bugs. bugs are inevitable, it is not possible to eliminate them with map format change. it is the tools (editors, node builders) who should reject broken maps. not "fix", not "accept", not "warn", but refuse to create proper pwads until all the bugs are fixed. but even if new tools will start to do that, we will still have a thouthands of older maps with bugs… just look at GZDoom map fixing thread (and sources), for example. k8vavoom does the same (in spirit, sometimes even in letter) on-the-fly fixing of known maps. Therefore I've always wondered why the blockmap persists as it's unecessary. But is it necessary? Are there other things missing which force the presence of a blockmap? blockmap checks are much faster. it is very hard to implement CCD with blockmap, but simple checks like "is this box occupied by something?" are very fast. and the whole Doom physics is done with "microteleports", so blockmap beats any other method here. i'm still experimenting with BSP CCD too (wrote at least 4 implementations already), but there is a huge problem there: different precision. a lot of code performs checks like "am i stuck?" or "can i move?" by checking current/destination coordinates with blockmap. and here blockmap can report "you're free to move", but BSP can report "nope, you can't" (or vice versa). i have more-or-less solidly working CCD code with BSP, and working "trace box" API, but integrating it into the engine is a PITA, so i haven't done it yet (and i don't know wneh/if i'll do it). I also remember reading that Vigilante (who sadly deleted his account) mentioned that the BSP tree is built in a reverse(?) manner with the leaves being empty and this makes things difficult. Or was that you who said it? i dunno about Vigilante, but i definitely mentioned it several times, yes. this "inversed BPS" doesn't help too. ;-) Thus, is the Doom map format as it stands impossible to auto-convert into another format which is more dynamic and powerful? the problem here is "buggy" maps, not a format per se. to perform a conversion, we need a bugfixer that will properly work, for all cases. so, back to point zero… ;-)
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on Jun 22, 2022 7:03:55 GMT -5
Definitely gonna agree here. Too many maps are released with too many warnings. Most mappers don’t give a darn and thus mapping bugs are bound to happen.
|
|
|
Post by 3t0 on Jun 22, 2022 11:16:53 GMT -5
Definitely gonna agree here. Too many maps are released with too many warnings. Most mappers don’t give a darn and thus mapping bugs are bound to happen. I thinks this not such unsurmountable problem as ketmar believes, but solution is not technical. It is what I call deceptively political education. It could be done with proper marketing, same way redhat used poettering brand to market substandard bullshit wares (dbus, pulseaudio, systemd) pretending them to be innovation. Or how nodejs helped grow "strict" javascript subset. The problem is, this is a longterm pysops (psuchological operation) requires effort and money (or time) and I personally am completely uninterested in running it, I bet ketmar even less . But the scenario would go like this: You need to construct the notion of "wad snob" and infest at least most vocal parts of the (doom) community by it. This must be constructed in such a way that among hip doom fans a few carefully handpicked rules/truths can spread, that are easily digestible and would form cute memetic package. The groups of these rules (or facts) must be emitted in a package, but each must be able to stand on it's own - this is crucial! Picking things/facts here as example: "map with warnings are bad", "old style vanilla hacks are not worth it, especially with modern sourceports", etc. Of course these have to be cute, above examples are not yet cool. With systemd it was shit like "socket activation" (UCSPI and xinet were doing that for decades), "dependency resolution" (runit or s6 can boot system in subsecond intervals nowadays, compared to them 1-3 minute systemd boots are looking like shitty systemv boots, it intended to replace, and they have no fucking dependency resolution whatsoever), "unit files" are terrible ini files, "timers" are broken and shitty cron, you get the the picture. Name it cool and it is cool! Realistically, most people, 99% in fact, wouldn't recognize "socket activation" even if it hit them in a face with a brick, and those of us who did, could do it already without systemd... but you have to admit, "socket activation" sounds sooo "sexy schmexy"! Hipsters and snobs will try to look cool and will use these marketing terms to do so. Now new element adds to the mix: kvaks. Kvaks belong to initial spreaders (I call them kvaks, form the sound frogs make in my language when they quack). If hipsters and snobs are pseudo-intellectuals, kvaks are idiots who believe that hipsters and snobs are real-intellectuals, and they (kvaks) believe that by becoming like hipster or snob, they will become true intelectuals, just like hipsters and snobs. Joke, that hipsters and snobs are not real sages, is lost on them (kvaks), even more so in modern times, where everything is built on appearance and deception. You also must give these initial spreaders some easily digestible micro- but realistic examples, on how to use these marketing terms in a debate as talking points: opponent: yadda yadda yudda, kvak: but "socket activation"; opponent: yadda yadda yudda, kvak: but "dependency resolution"; opponent: yadda yadda yudda, kvak: but "dbus protocol". LOL. If you did right, army of kvaks will emerge and it be growing ang growing, at certain point they will overkvak any opposition and new baseline is set worldwide. So that's how you do it. Eventually everybody, not believing (besides fringe fucks like ourselves) that "socket activation" is an answer, will be shamed by normified kvakmobs into submission, and if they refuse they WILL get branded weirdo. That's a cross to bear, and corosses to bear are heavy. How it all maps to doom? For example UDMF has Kamina from Gurren Lagann levels of coolness. Just say the fucking abbreviation: "yuu deee emm eff". Mother fucking epic, almost like Doomguy himself! Man, that is awesome! We should certainly use UDMF in some psyop like that. Once proper thinkware is installed this way, map will start to fix themselves up - it will be matter of prestige for a mapper to no be seen as "warning ignoring troglodite!"
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on Jun 22, 2022 11:21:03 GMT -5
A much easier approach would be to upgrade all warnings to errors, then watch as everyone leaves your sourceport.
|
|
|
Post by ketmar on Jun 22, 2022 11:30:07 GMT -5
3t0, problem: there are 10,000+ old maps. many of them are buggy (even popular ones). the moment your port cannot run that ancient SuperWad9000 map properly, it is… ahem… doomed. we already have this problem with maps abusing vanilla renderer bugs, and it's only the tip of the iceberg. having all those "legacy" maps is the problem, not newer ones. new maps will become "correct enough" the moment their authors will want to use new features; but even if somebody will go and fix old maps, people will still complain that they cannot play the originals. (and i will be amongst those people! ;-)
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on Jun 22, 2022 11:47:13 GMT -5
A much easier approach would be to upgrade all warnings to errors, then watch as everyone leaves your sourceport. This is quite a problem in the Doom community. Modders and mappers dictate to developers what is acceptable. Should really be the other way around, can’t make a clean mod or map? Then it’ll be an error. I always ensure all my maps are totally bug and warning free, only takes an extra 30 or so minutes for much better quality.
|
|
xeepeep
Banned
Forever
Posts: 2,338
|
Post by xeepeep on Jun 22, 2022 12:03:25 GMT -5
I thinks this not such unsurmountable problem as ketmar believes, but solution is not technical.
|
|
|
Post by Steinkrauz on Jun 22, 2022 13:41:27 GMT -5
|
|
|
Post by 3t0 on Jun 22, 2022 15:05:44 GMT -5
A much easier approach would be to upgrade all warnings to errors, then watch as everyone leaves your sourceport. Come on dashodanger, that is easy way out. It sometimes works, but only if you have real dark side cookies, of which, I admit, k8v has plenty, so perhaps it could, potentially, work? Anyway if you want to solve it on much larger scale, mine is the solution. I mean I just copied capable others, I am standing on the shoulders of giants after all , but you get the idea. having all those "legacy" maps is the problem, not newer ones. new maps will become "correct enough" the moment their authors will want to use new features; but even if somebody will go and fix old maps, people will still complain that they cannot play the originals. (and i will be amongst those people! ;-) Well, ketmar, I am deeply sorry, that I forgot to include <sracasm/> tags ... or should it really have been <satire/>? Not sure . But it was supposed to be just nice little bedtime story. I am fully aware of impossibility of the task, but look, I, <sarcasm> "In the great Ladder of Greatness" see javascript people way below Doom mappers, and they still decided to fight impossible with "strict" . Gotta admit that's rad! In my inner eye I already see the majestic `-strict` argument: k8vavoom -help Log: -strict -- make all assets warnings, map bugs and other ooplas hard errors, turns you into ultimate wad snob
This would be akin to `-Weverything -Werror=all -Wno-compat-anything`. Then you would have discussions like these: Guy1: Maan, I don't know why this other port refuses to load my WAD, it even passes k8vavoom' strict! Guy2: Really? Yeah k8vavoom' strict is brutal maan, you are real hero here, a legend! Fuck that port! Pssing `-strict` would immediately raise your mapping street cred level +100. Then gibbon would sneak somewhere with his secret sock puppet accounts, and start discussions like: Maan this mod sucks, it cannot even pass k8vavoom -strict, what a shame... </sarcasm> Sorry, today I just had a mood for some little fun. This is quite a problem in the Doom community. Modders and mappers dictate to developers what is acceptable. Should really be the other way around, can’t make a clean mod or map? Then it’ll be an error. I always ensure all my maps are totally bug and warning free, only takes an extra 30 or so minutes for much better quality. I too hope, that you gibbon won't mind by being used as a character in my bite sized tidbit - you already seem pedantic, though . Thanks to incredible low barrier to entry, and great mapping and packing tools we have these days, anybody can make a map. I remember writing my own crappy tools in quickbasic back in the day (yeah don't ask). Everything we had back then was just bunch of algortihms with carmack's notes from some kind of "doom editing bible", and promise he won't go against tool writers. I was seriously weirded out when I first rendered doom sprite with it's fucking weird COLUMN(!) order (in wrong colors of course - forgot palette) . Some of us remember DEUs of the time, but does anybody remember DoomCAD (it was quite shitty and ran only in windows)? 486 still choked on the BSP phase, but pentium already flew through it like butter. Man time flies. Mind you what is schizo thread?
|
|
|
Post by ketmar on Jun 22, 2022 15:12:31 GMT -5
Well, ketmar, I am deeply sorry, that I forgot to include <sracasm/> tags ... or should it really have been <satire/>? 'cmon, you know that i am dumb. i need that repeated three times, in big letters, otherwise i'm not getting it. NOT A SARCASM HERE. and you did it only twice, and letters are small, and different…
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on Jun 22, 2022 15:42:45 GMT -5
I guess we are the same age (DETH rocks) and yes I am pedantic, hey don’t blame me, I’m a developer. Warnings piss me off and that goes for maps too, I map like a dev lol. But not as pedantic as ketmar. I don’t know anyone else in Doom that can have a huge codebase compile so damn cleanly as K8Vavoom.
|
|
|
Post by ketmar on Jun 22, 2022 15:52:25 GMT -5
But not as pedantic as ketmar. I don’t know anyone else in Doom that can have a huge codebase compile so damn cleanly as K8Vavoom. it's mostly because i turned off most annoying warnings in cmake. ;-) (i mean all those "-f" to unfuck the compiler.)
|
|