|
Post by JadingTsunami on Sept 18, 2022 10:11:17 GMT -5
Interesting, why do you say this? Genuinely curious. Can take it to a different thread if it will become a separate topic.
|
|
|
Post by ketmar on Sept 18, 2022 10:35:17 GMT -5
there were some talks about it, but i forgot the exact topic, sorry. in a short, there was no sane reason to not base it on a DECORATE subset instead of DeHacked (which is a misfeature itself). i see it as a turn in a wrong direction, and i refuse to go that way.
but sadly, that fight is already lost (at least i don't want to take it).
|
|
|
Post by 3t0 on Sept 21, 2022 19:24:19 GMT -5
I remember playing with deh and exe hacking some decades ago, and I understand a process behind it, because at that time I already learned 86 assembly (A86 assembler, I wish I could afford A386 back then lol). I even am guilty myself writing few of personal doom.exe hacking utils in qbasic/quickbasic myself - man what times!
The whole thing is atrocious in retrospect, flaky and stupid, but that what doom community was, raw talent and nobody could direct it. People did what they wanted. I remember playing with DEU a lot, until I got hands on BUILD, then I lost uncountable hours on Blood - and DEU was flaky as shit (crashing everitiem).
So I see Deh occasionaly being mentioned and even on doom wiki. I assumed it would die with source release, especially since there are even dos ports now, and you can make doom do anything, but somehow the atrocity still lives on?
Do really some sourceports support it?
|
|
|
Post by ketmar on Sept 21, 2022 19:42:30 GMT -5
yeah, basically all sourceports support DeHackEd, because we need it to be there to run old mods. and for some reason some sourceports chose to extend it instead of switching to something sane. so we have DEHEXTRA (yay, more slots in that now-virtual table that was hardcoded in Doom binary! what could be better!), and then MBF21 (let's stick to the same table, but this time add more actions and flags!).
DeHackEd was a great tool, but keep "extending" it today is a sheer madness, i believe. therefore i refuse to support anything based on it — just let the poor thing die already…
|
|
|
Post by camper on Sept 23, 2022 14:39:11 GMT -5
These doom ghosts (DeHacked, DEHEXTRA, DoomHack...) make my head spin. I can get lost in the logic of what should be used and what should not. It would be nice to have a short description for k8 in terms of structure and extensions.
|
|
|
Post by ketmar on Sept 23, 2022 14:46:18 GMT -5
DECORATE is the way to go for new monsters/weapons/items. ACS is for environmental scripting (things like button puzzles and such). VavoomC is when you absolutely missing some feature, and want to expose it to DECORATE (but try to go without it first). something like that.
|
|
|
Post by camper on Sept 24, 2022 9:32:59 GMT -5
I like it.
Is it correct that k8 uses the DECORATE code of the ZDoom version 2.3.0 standard?
|
|
|
Post by ketmar on Sept 24, 2022 14:45:05 GMT -5
the code in the engine is completely original, no ZDoom parts there. and there is no "standard" for DECORATE per se. ;-)
it's like that: most of the things works, for others there are logfile diagnostic messages. what definitely doesn't work is morphing, and weapon overlays. k8vavoom also has its own decorate extensions (it is possible to run DECORATE code to check if something should be picked up, and when something is picked up; for example, weapons in Zan mod are picked up with a random ammo in them, and it is done via DECORATE).
|
|
tdrr
Doomer
Posts: 66
|
Post by tdrr on Sept 24, 2022 20:10:50 GMT -5
It's closer to being at GZDoom 2.4's level actually. It's not perfectly compatible but I believe the vast majority of the functions (if not all) are there. I dunno if it supports anonymous functions though. Happened to check around back here and wow! Now I can actually view the fossil repo, that's great Did you end up unblocking or is it just pure luck? EDIT: Nevermind, I had changed ISP, just forgot I hadn't checked the fossil link since then.
|
|
|
Post by ketmar on Sept 24, 2022 20:30:46 GMT -5
I dunno if it supports anonymous functions though. yes, you can use `{}` code blocks as actions, and declare local variables there with `local` keyword. but loops are forbidden, and `return` semantics is slightly different (yet most of the time it is compatible with ZDoom). `user_` vars are supported too (and contrary to ZDoom, inventory items have proper `user_` variables, they aren't mixed with player pawn; it is used in BDW/Zan mods, for example). Happened to check around back here and wow! Now I can actually view the fossil repo, that's great you can always ask me to unban your IP range. my protection bot is overly aggressive sometimes. ;-)
|
|
|
Post by camper on Oct 3, 2022 17:18:50 GMT -5
|
|
|
Post by ketmar on Oct 4, 2022 0:17:53 GMT -5
i wonder what is wrong with "-iwad" arg, which was designed exactly to specify custom game files.
|
|
|
Post by camper on Oct 4, 2022 3:37:40 GMT -5
I run this: k8vavoom -iwad MyStandaloneGame.ipk3 cheeki_ogg.pk3 At the same time, the empty doom2.wad mentioned above should be located in the iwad folder. Files and folder with zscript have been removed from MyStandaloneGame.ipk3, and cheeki_ogg.pk3 is needed to define playerclasses, which is defined in ipk3 via zscript (I haven't modified ipk3 specifically for k8 yet, not sure about established minimum standards yet). cheeki_ogg.pk3 can be found here www.doomworld.com/forum/topic/102766-k8vavoom-no-good-thing-ever-dies/?page=68&tab=comments#comment-2416604
|
|
|
Post by ketmar on Oct 4, 2022 3:43:15 GMT -5
lol, i get it, this is a bug: the engine tries to check for standard iwads presense even when "-iwad" is used. it doesn't load them, but want to see them in place. i'll fix it, thank you!
|
|
tdrr
Doomer
Posts: 66
|
Post by tdrr on Oct 7, 2022 13:21:53 GMT -5
A couple things I've been meaning to ask for a while now.
What are all the K8Vavoom exclusive ACS functions? Are they the extra polyobject functions and the Calc*Light ones in p_acs_extfunc.h? I want to try and see if K8Vavoom-specific headers could be added to GDCC, given that compiler works really nicely with K8Vavoom too, and ACC is terrible.
How is multiplayer currently? I recall a few years ago it wasn't exactly functional even on the same PC lol, but I've noticed there's now some replication blocks in VavoomC (or they were always there and I just noticed them now but yeah) and got curious again about the current status of it.
|
|
|
Post by ketmar on Oct 7, 2022 13:31:49 GMT -5
What are all the K8Vavoom exclusive ACS functions? Are they the extra polyobject functions and the Calc*Light ones in p_acs_extfunc.h? yep. 3d pobj functions are in the documentation, calclight ones are highly experimental and subject to change (so far they are used only in the unreleased project by Remilia Scarlet). I want to try and see if K8Vavoom-specific headers could be added to GDCC, given that compiler works really nicely with K8Vavoom too it was a fuckin' PITA to make its code work, though. ;-) How is multiplayer currently? not much better than it was. it might work, or might not, might be stable, or might be not. i am really not interested in that feature, so once in a several years i check if it doesn't crash right away, but that's mostly all love it get.
|
|
tdrr
Doomer
Posts: 66
|
Post by tdrr on Oct 7, 2022 14:31:50 GMT -5
it was a fuckin' PITA to make its code work, though. ;-) All the more reason to add it, then, gotta make it worth the effort! (can I disable "text emojis" being turned into actual emojis on this forum? It's a bit annoying) The author seems to be okay with including them so hopefully I'll have them ready before the next version. not much better than it was. it might work, or might not, might be stable, or might be not. i am really not interested in that feature, so once in a several years i check if it doesn't crash right away, but that's mostly all love it get. Aw, shame. Can't really blame you, and it's still a wonderful engine, multiplayer or not.
|
|
|
Post by ketmar on Oct 7, 2022 14:42:21 GMT -5
i'm absolutely not playing MP games at all, so it would be a lot of efforts spent on something i myself wouldn't use. i understand that other people may have a radically different opinion on the importance of that feature (wow, i'm sooo polite!), and i even spent several monthes making network code better, but… i know what to do, i mostly know how, but it's quite tedious work (and a lot of it). tbh, i'd happily nuke MP part altogether, but i can't (due to my self-imposed rule "do not remove anything that was in Vavoom without THE VERY GOOD reason"). maybe someday i'll feel inspired again, and return to it…
|
|
tdrr
Doomer
Posts: 66
|
Post by tdrr on Oct 7, 2022 20:19:10 GMT -5
Multiplayer stability is actually fairly good for something supposedly not touched in several years! Gave it a test run on vanilla, one PC was running Slacko64 8.2.2-259, while the other was running Windows 7. For some reason the game crashed if I hosted on the Linux PC and joined from the Windows one, not sure why, with an error about a message assert IIRC. So I did it the other way around, and the game plays pretty much fine, both co-op and deathmatch. Weapon offsets (bobbing, lowering, raising) don't work for clients for some reason, but otherwise everything appears to be fine functionality-wise. After a while, the client disconnects with a message like this: 192.168.1.204:58678: ERROR: Channel timed out; time delta=4002.2; sent 12236 packets (12334 datagrams), received 19552 packets (19558 datagrams) May well be due to packet loss, the Windows PC is connected via wifi, but the Linux PC is connected via ethernet cable. All in all, multiplayer is pretty okay currently. Certainly leagues better than in PrBoom+ lol.
|
|
|
Post by ketmar on Oct 8, 2022 2:24:41 GMT -5
those exactly the bugs i really need to fix. we also need proper predictor and lag compensator. yet it's quite hard to reproduce bugs on localhost, and i need a proper dev with network code knowledge on the remote side anyway. also, the code should be rewritten to dynamically shape itself, and i need proper state diagram (because i suspect that spurious timeout bugs are either from state misses, or from the shaper). sure, it's all doable, but…
(i even created detacheable objects, so it is possible for clients to track some projectiles locally, for example; blood is detached from the server too; and so on.)
but yeah, the core is there and working, and it is slightly less unfinished that it was in Vavoom. ;-) but tbh, i'm not really happy with its design. don't get me wrong: the design is great, but the whole thing is very complicated, with full-featured RPC and such. i'm not sure that we need such complicated system — it tries to automate too much things, and that makes it very complex.
tbh, i need to experiment with various MP implementations to find out what fits us better (and i already rewrote the existing one two times). but it's way more time and efforts than i have at my hands, especially if they need to be invested into MP. sorry.
in the ideal world k8vavoom could do much better than Zandronum (and basically any other MP-oriented sourceport), due to much better engine architecture. we only need some dedicated devs for network code. ah, a pipe dream… ;-)
|
|
|
Post by camper on Oct 8, 2022 4:46:53 GMT -5
(thinking out loud) It would be nice to get fans of the assaultcube into k8vavoom's multiplayer...
|
|
|
Post by 3t0 on Oct 12, 2022 17:48:09 GMT -5
So how does this MP part work? Is this true/client server Quake style? Does it use updated state diffing UDP/"TCP"-like hybrid like Quake 3 does? From your posts I assume there is even some client side prediction going on and there are even client side object classes. Seems like pretty advanced stuff overall. I heard and read that original idTech 1 networking is tragedy. I don't know much about how Quake or how modern Doom does things (it seems incredibly hard to add proper client server proto to modern dooms) and I am too lazy to check. But how does the networking marry to k8v's gameloop? Is there something like select/poll/kqueue (synchronous eventloop - js-kiddies "async" lol) used to intersperse gameloop with net IO part? When we are in SP mode, does k8v use quakian approach to actually send pretend "network" packets among two buffers? I myself am not much of a multiplayer gamer myself either. But one thing where networking is valuable for single player lone wolves like us is: coop. There is nothing so good like coop with friends and family. Great thing that maybe we will get iwads working. I have not had time for this spelunking though. what definitely doesn't work is morphing I am boomer and what is this? yet it's quite hard to reproduce bugs on localhost You know if you really wanted you could build yourself a little virtual network with little virtual cables and cute little bridges and everyhting . In different namespaces . What kernel are you on? 5.x series? It would be nice to get fans of the assaultcube into k8vavoom's multiplayer... What do you hope this would accomplish? Just curious. I really need to ask for unblock I still have only git mirror I think. To little time for everything.
|
|
|
Post by ketmar on Oct 13, 2022 8:46:45 GMT -5
So how does this MP part work? it is so closely modelled after Unreal, so almost anything you could find about Unreal 1 networking will apply. sometimes even down to script sytnax. it is mostly UDP diffs with some RPC calls, and some congestion control built on top of that. From your posts I assume there is even some client side prediction going on it is planned, but not implemented yet. there is some totally broken attempt on it, but it never worked (nor even finished even to reach a PoC state). and there are even client side object classes. Seems like pretty advanced stuff overall. yes, it is possible to "detach" objects from the server and receive only notifications about some "interesting" events (like projectile collisions), or "detach and discard", leaving client in full control (useful for blood splats and other decorative things), and such. the foundation is there, it's simply not polished well enough. But how does the networking marry to k8v's gameloop? Is there something like select/poll/kqueue (synchronous eventloop - js-kiddies "async" lol) used to intersperse gameloop with net IO part? it basically calls network I/O code on each frame. the very same code is used to record and play demos too (and that's why you can't have a stable demo format here: there is simply no such thing as "network protocol" here beyond the bare minimum, everything else is just sending script states and doing RPCs; any script change may reorder the fields and RPCs, and everything will break). When we are in SP mode, does k8v use quakian approach to actually send pretend "network" packets among two buffers? the code is still separated to "client" and "server" parts, but not in the way one may expect it to be. you can't do it that way, because each object in Doom could access and modify state of any other object. that's why we can't have multicore playsim, and that's what "server" part is. the "client" part is mostly about various VFX like particles and such. also, local client can directly access server state, so it does. but yes, you still can see "spawning a server" and "disconnecting" messages in SP game, because that's what "server" code prints. I myself am not much of a multiplayer gamer myself either. But one thing where networking is valuable for single player lone wolves like us is: coop. There is nothing so good like coop with friends and family. yes, i'd like to see more coop wads, where coop is really required. i mean, where you need your friends to actually cooperate to finish the map by doing different things in different map parts, coordinated and such, not just a simple "the same as SP, but with more firepower". yet, even with such maps you actually have to have somebody to play with, which is rarely the case for me, for example. ;-) what definitely doesn't work is morphing I am boomer and what is this? in Heretic, the player could be morphed into a chicken. ZDoom generalized it to a common "player morphing", so the player (pawn) could be "morphed" into some other player class. that's how some mods are doing vehicles, for example — by "morphing" the player into "vehicle". while Vavoom supports chickens, the whole morphing thing is very different from how it is done in ZDoom, and isn't as flexible as ZDoom one. You know if you really wanted you could build yourself a little virtual network with little virtual cables and cute little bridges and everyhting . In different namespaces . yes, i know. but the problem is much deeper than that, actually: for example, my video drivers sometimes makes the whole network system to starve, even on 127.0.0.1. but somehow it mostly manifests itself when i run a "combined" client-server, not for a dedicated one (with dedicated, clients are working ok). i still don't know if it is some fault in my code, or i am triggering some OS/driver bug. that's why i really need separate physical boxes to properly test things. What kernel are you on? 5.x series? still 4.14, and see no reasons to upgrade. ;-) I really need to ask for unblock I still have only git mirror I think. To little time for everything. there are some ongoing missile attacks here, leading to power outages. so expect my server to be inaccessible quite often for now. sorry.
|
|
|
Post by camper on Oct 13, 2022 10:31:55 GMT -5
It would be nice to get fans of the assaultcube into k8vavoom's multiplayer... What do you hope this would accomplish? Just curious. I like to indulge myself with the illusion that if you translate all the content of the "assaultcube" to the k8 engine, then this would attract attention. Many resources from the "assaultcube" are not exclusive only to him and I think that from a moral point of view this is acceptable. In addition, k8 is already an advanced single player engine. Ketmar disagrees with me, but I think "chasm: the rift" style polygonal monsters are very good for doom. Especially when I saw the chasm project on the gzdoom engine.
|
|
tdrr
Doomer
Posts: 66
|
Post by tdrr on Oct 13, 2022 16:02:03 GMT -5
I don't think polygonal monsters are bad per se, but usually the models are atrociously bad. The ones in Risen3D or those that supposedly came bundled with Vavoom for some time were downright horrible. Doesn't help they usually don't change animation framerate so they look really janky and unrealistic with their motion. I think Tea Monster is working on some, but too high polycount to really fit. At least they do look good. EDIT: Oh, and the voxel monsters. They're good, but... hot dang, my framerate! Too expensive in terms of performance. Someone got a Zandro-compatible version of those around, would be nice to see how much faster K8Vavoom runs it with all the nice optimization. EDIT2: Hmm, nothing seems to happen. Here's the file I'm using, which works fine in Zandronum. (Yes, it has ZScript, but it's not required, just used -ignore-zscript)
|
|