|
Post by ketmar on Apr 17, 2022 2:40:02 GMT -5
this mod looks like it was created with k8vavoom in mind! ;-) i modified it so alien blood leaving real damaging acid decals on the floor, and wow, it is scary and dangerous to fight xenomorphs in the close range! of course, acid decals will dissolve quite fast, but in the heat of the battle…
|
|
Lobo
Doomer
Posts: 597
|
Post by Lobo on Apr 17, 2022 3:50:39 GMT -5
We'll never know: the download link doesn't work.
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on Apr 17, 2022 3:56:52 GMT -5
Nice to see it here too. I’ll still be doing those MinGW builds too!
|
|
|
Post by ketmar on Apr 17, 2022 4:06:57 GMT -5
We'll never know: the download link doesn't work. ;) i deliberately didn't put a proper link, because it doesn't work properly in the current public build. ;-) Nice to see it here too. I’ll still be doing those MinGW builds too! yay! thank you!
|
|
|
Post by ketmar on Apr 18, 2022 6:40:53 GMT -5
oops. i just realized that k8vavoom is not the only doom port out there. ;-) i mean, here, original Aliens mod. don't run it with the current k8v public build, tho — there are several engine bugs i fixed to make it work properly.
|
|
Lobo
Doomer
Posts: 597
|
Post by Lobo on Apr 18, 2022 12:17:06 GMT -5
Cheers. Another one for my collection of Aliens mods 😉
|
|
|
Post by ketmar on Apr 20, 2022 12:48:43 GMT -5
as i don't want to work on something really complex yet (like renderer rewrite ;-), i added some useful APIs to allow creating mods like Corruption Cards. basically, almost everything you need for it was already there, i mostly added a way to allow native VavoomC in-game GUIs easily speak to playsim (so you won't need to use ACS to create CC-like menus).
no, don't expect me to port CC, it is too big, and i am too lazy. but i may release a "CC-Demo" later, just to show you all that k8vavoom is at least as powerful as GZDoom.
of course, don't expect that demo to survive for long (because VavoomC API is not designed as a stable one). i just thought that it would be fun to show some REAL POWER of k8vavoom technology.
i'm still against using VavoomC for modding (at least if you aren't ready to learn everything by yourself, and don't want to support your mod until the heat death of the Universe), but sometimes i want to show people that k8vavoom is hiding treasures inside, and it can do almost anything GZDoom can do, and even more. ;-)
p.s.: i also fixed several small bugs while doing it. they are mostly related to VavoomC-based modding, so they won't really affect you, but the only good bug is a dead bug! ;-)
|
|
|
Post by ketmar on Apr 20, 2022 13:02:11 GMT -5
just for fun: GZDoom Entropizer mod port + CC PoC: download video. 2 VavoomC mods, one on top of another, no conflicts. actually, 3, because i'm playing as Zan, and that mod has some VC code too. i didn't really ported all of the CC code, just reimplemented one card ("God Monster"). yet it is implemented in the same way as it is done in CC (i.e. it doesn't have to know about monster packs and such, and can "godify" any monster on a map). the GUI is properly pausing a game (no tricks, no time freezing hackery), and it is a real widget system.
|
|
|
Post by camper on Apr 21, 2022 16:04:29 GMT -5
Sorry, but Windows 10 doesn't like to download files. Need to make a few mouse movements for permissions. I beg you, please make an official channel. Personally, I prefer this one, it does not require special permissions, for example, on the size of the video, like YouTube: open.tube/accounts/camper/video-channels
|
|
|
Post by ketmar on Apr 21, 2022 16:27:19 GMT -5
sorry, but no. i don't want to create any new accounts anywhere, and i won't use the site that cannot work without js at all. catbox has CLI uploader, so i don't even have to open a browser to upload something. also, i am deliberately putting "http" links, because i believe that https craze is BS.
sometimes (well, quite often ;-) i am a stubborn idiot. this is one of those cases. sorry.
|
|
|
Post by ketmar on Apr 21, 2022 21:21:32 GMT -5
and another small video. just for fun, i implemented 3 cards (mostly to test UI). as you can see, i selected two (this is, again, simply for testing), and monsters immediately started to attack me, and they exploding on death. of course, scanning all objects on each tic to check if some monster died is absolutely inefficient. adding some inventory item to all monsters to drop on death could work, but that's not fun. so "explosion" card intercepts `EntityEx.Died()` method instead (this is internal engine method called when something died). besides being faster, it is also possible to know who killed the victim, and with which projectile (if there is any). i wasn't joking when i said that k8vavoom is written in VavoomC! it really is, and VavoomC compiler allows you to use some tricks to extend already existing internal engine classes (`EntityEx`, in this case). and such mods would properly stack too (with proper coding, of course). of course, VavoomC mods are inherently unsafe: techincally they become the engine code. so malicious VavoomC mod can easily crash the engine (but it cannot access arbitrary files or network directly). as VavoomC has pointers, with some trickery it is prolly possible to write an exploit with arbitrary code execution, but i believe that it will be harder than reach the Moon by jumping. ;-) p.s.: just to make things slightly more clear: Vavoom was able to do this more than a decade ago. i only added a way to load VC code from user pk3s (with the same loader that loads the main engine code), and some callbacks. it was THAT powerful when ZDoom couldn't even dream about such things.
|
|
|
Post by ketmar on Apr 23, 2022 17:40:45 GMT -5
by the way, it is possible to use VavoomC mod to implement (at least partial) support for ZDoom SBARINFO. i don't think that i will ever include that into the engine (because SBARINFO is such a disaster) but i may release a standalone mod with its support later.
|
|
|
Post by Steinkrauz on Apr 24, 2022 14:00:54 GMT -5
Sorry, but Windows 10 doesn't like to download files. Need to make a few mouse movements for permissions. I beg you, please make an official channel. Personally, I prefer this one, it does not require special permissions, for example, on the size of the video, like YouTube: open.tube/accounts/camper/video-channelsIt has nothing to do with Win10. Looks like the forum's engine wraps the original url with some spam-oriented site that is blacklisted either in a browser on in an ad-blocker or in an antivirus. But if you click the "Quote" button, you'll get the original link without this nasty addition.
|
|
|
Post by ketmar on Apr 24, 2022 14:05:46 GMT -5
eh. i have JS turned off, so i don't see garbled links. sure, you will lose some forum features, but do you really need them? block JS here!
|
|
|
Post by ketmar on Apr 24, 2022 14:09:58 GMT -5
also. partial support for SBARINFO. standard Doom statusbar: Aliens mod HUD: yeah, "statusbar mode" is that big, because they are designed for 320x200. fullscreen SBARINFO HUDs usually can be scaled down (the option is there too).
|
|
|
Post by Steinkrauz on Apr 25, 2022 14:20:54 GMT -5
Do current sources support this HUD customisation, or it's stiil a WiP? (I've tried with version 796e2b93ea, but got just a classic HUD panel with a changed font colour.)
|
|
|
Post by ketmar on Apr 26, 2022 1:39:02 GMT -5
it will never be in the engine core, SBARINFO is cancer and idiocity. this is a standalone VC mod. i'll prolly make it public after releasing the next build, but don't expect it to support everything, or to be maintained at all. i'm just showing what is possible with VC code, so people won't use it even more. ;-)
|
|
|
Post by camper on Apr 26, 2022 13:21:27 GMT -5
Is it worth waiting for a HUD constructor in the style of the "academy" for the ZX speccy?
|
|
|
Post by ketmar on Apr 26, 2022 15:22:00 GMT -5
Is it worth waiting for a HUD constructor in the style of the "academy" for the ZX speccy? ;) you know what? yes, this is exactly the plan for the long-term HUD rewrite! ;-) currently, many parts of HUD code are duplicated across the games (i.e. Doom/Heretic/Hexen/Strife are using their own copied of HUD code), and non-Doom HUDs are not properly updated. The Plan is to unify that into reusable HUD components, and yeah, one of the features planned is interactive HUD creation by placing and moving widgets. with the ability to save "presets", and maybe even associate them with individual PWADs. but don't expect it to appear in next month or something, of course. ;-) this is just one of the things i have in my REALLY HUGE TODO list, and i have to manage priorities. but i'll implement it sooner or later.
|
|
tdrr
Doomer
Posts: 68
|
Post by tdrr on Apr 26, 2022 23:29:29 GMT -5
Hey! It's a bit inconvenient to have to create another account for this forum, but I'm sure K8Vavoom is more than worth it Had been toying around a bit with VavoomC, and gotta say, it's really good! I like how class definitions are written out, much nicer than in ZScript, where it feels kinda "crampy" for lack of a better word. But I have to wonder. Is there any possibility of it "freezing" later down the line, or there being a "safe" subset of features and classes? It's a real shame to let all the nice things VavoomC rot a bit since you'd need to make sure your mod doesn't break on any update, so at least some features you can know to avoid would be nice, making it so there's less things the modder has to fix. At the same time, I know that's almost an impossibility when the whole language is subject to change Still, I guess it's nice to know for standalone games you could very well just stick to one version and get all the good stuff without worries. Also, the situation with Mesa drivers seems to be improving a bit. Got a newer distro a few days ago with a more modern set of drivers, and K8Vavoom can now run with the lightmapped renderer on my aging PC with an Intel G41, in addition to shadowmapping which already ran well. Only stencil lighting remains broken, all other features seem to work fine so that's great. Runs buttery smooth and looks smooth too!
|
|
|
Post by ketmar on Apr 27, 2022 10:05:24 GMT -5
yay, hi, tdrr! great to see you here! seems that it's time to ask 40oz for some money for bringing new creative users at DB! ;-) Hey! It's a bit inconvenient to have to create another account for this forum, but I'm sure K8Vavoom is more than worth it :p thank you a lot! Had been toying around a bit with VavoomC, and gotta say, it's really good! I like how class definitions are written out, much nicer than in ZScript, where it feels kinda "crampy" for lack of a better word. the language is more… consistent too, i think. at least i love it more. ;-) just to be fair here: most of the work you see was done by Janis, including basically rewriting the whole engine in VavoomC (several times). i extended the language with various useful features, and did some cleanups, but most of the foundation is still from Vavoom. and i must confess that Vavoom codebase was one of the major reasons why i forked it: it was a pleasure to work with. But I have to wonder. Is there any possibility of it "freezing" later down the line, or there being a "safe" subset of features and classes? It's a real shame to let all the nice things VavoomC rot a bit since you'd need to make sure your mod doesn't break on any update, so at least some features you can know to avoid would be nice, making it so there's less things the modder has to fix. i am usually trying to not break things without a good reason, and provide a compatibility workaround if it is possible. but of course, it is hard to promise anything. yet at this stage i believe that you can expect most of the playsim to stay more-or-less stable. basically, there is a usual conflict between speed and extensibility. i would love to make everything extensible, but each such change makes the engine slightly slower. it may be a little here, and a little there, but those slowdowns sum up… for example, you cannot override DECORATE actions yet (`A_xxx()`), they are marked as `final`. this is one of the limitations i want to remove in the future. and i want to add more hooks, so you don't have to override internal engine methods to do various things (like overriding `EntityEx.Died()` to take some action on mobj death) — this will allow me to change engine internals while keeping VC mod API stable. but each such callback is yet another slowdown. i am (slowly) working on JIT compiler, and various other compiler improvements to make this all possible, tho. so yeah, there will definitely be some stable API you can rely on in the future. we just not there yet, and i have a lot on my plate already. but being "VavoomC mods friendly" is one of the project goals. i also started adding comments for VC modders right into the code, so the codebase will eventually become more friendly. i must warn you, tho, that UI part of the code is VERY unstable as for now. the whole UI system is pending a major rewrite: Janis left it in a very unfinished state (tbh, he barely started rewritting it properly), and i'm planning to use this oportunity to redesign the whole thing. Still, I guess it's nice to know for standalone games you could very well just stick to one version and get all the good stuff without worries. yeah. and i am always ready to help too. most of the time when something was changed, you only need to fix one or two minor things here and there to make it work again, and i'm always glad to help with that. Also, the situation with Mesa drivers seems to be improving a bit. Got a newer distro a few days ago with a more modern set of drivers, and K8Vavoom can now run with the lightmapped renderer on my aging PC with an Intel G41, in addition to shadowmapping which already ran well. Only stencil lighting remains broken, all other features seem to work fine so that's great. Runs buttery smooth and looks smooth too! yay! it's great to hear this! tbh, i think that stenciled lighting is not something one should use anyway: it is MUCH slower than shadowmaps on any complex geometry, and it cannot cast shadows from textures. i am mostly leaving it there because it doesn't cost me much (most of the code for stenciled lighting and shadowmaps is shared anyway). but i must confess that i stopped playing with stenciled lighting after implementing shadowmaps, so that code is slowly rotting.
|
|
tdrr
Doomer
Posts: 68
|
Post by tdrr on Apr 27, 2022 13:01:16 GMT -5
the language is more… consistent too, i think. at least i love it more. ;-) just to be fair here: most of the work you see was done by Janis, including basically rewriting the whole engine in VavoomC (several times). i extended the language with various useful features, and did some cleanups, but most of the foundation is still from Vavoom. and i must confess that Vavoom codebase was one of the major reasons why i forked it: it was a pleasure to work with. Gotta agree there, well, at least in that it looks more consistent lol, hadn't seen too much of the language in the original port, though by the docs it looked similar, but perhaps a bit more limited. i am usually trying to not break things without a good reason, and provide a compatibility workaround if it is possible. but of course, it is hard to promise anything. yet at this stage i believe that you can expect most of the playsim to stay more-or-less stable. basically, there is a usual conflict between speed and extensibility. i would love to make everything extensible, but each such change makes the engine slightly slower. it may be a little here, and a little there, but those slowdowns sum up… for example, you cannot override DECORATE actions yet (`A_xxx()`), they are marked as `final`. this is one of the limitations i want to remove in the future. and i want to add more hooks, so you don't have to override internal engine methods to do various things (like overriding `EntityEx.Died()` to take some action on mobj death) — this will allow me to change engine internals while keeping VC mod API stable. but each such callback is yet another slowdown. That's great to hear! Yeah, I can see why it's a hard tradeoff. I think currently VavoomC performs quite a bit better (Haven't actually done any benchmarks, but VC is definitely keeping up well when more of the engine is written in it, and without a JIT compiler just yet!), so hope that the JIT compiler that's in the plans helps keep that up. yeah. and i am always ready to help too. most of the time when something was changed, you only need to fix one or two minor things here and there to make it work again, and i'm always glad to help with that. Nice! That's also great to know. That's definitely a lot more welcoming. I was actually trying to do something with it, something something the equivalent of LevelPostProcessor and spawning lights But apparently I'm missing something. While there's no errors or warnings and nothing goes wrong in-game, nothing appears to change. I know the VavoomC is being loaded but spawning lights there doesn't quite seem to do anything. I'd love to finish that minimod at some point so I'll try to dig up the code again and see if you can spot anything wrong, or if I'm just doing it in the wrong place. VC seems easy to grasp but there's just a couple unexpected "gotchas" that probably come from not having new docs yet. Hopefully the comments help clear that up too. yay! it's great to hear this! tbh, i think that stenciled lighting is not something one should use anyway: it is MUCH slower than shadowmaps on any complex geometry, and it cannot cast shadows from textures. i am mostly leaving it there because it doesn't cost me much (most of the code for stenciled lighting and shadowmaps is shared anyway). but i must confess that i stopped playing with stenciled lighting after implementing shadowmaps, so that code is slowly rotting. Fair enough. I actually really like the sharpness of stencil shadows compared to shadowmapping, but yeah they're much slower and limited. Can live without it anyway, shadowmaps already are quite slow here so stencil shadows would've been even slower (and lightmaps work well enough and very quickly), regardless of them looking "prettier", heh.
EDIT: Oh! Some things missing from this post are the links to mapsets/mods that work really well with K8Vavoom. I can just go to the old thread but still, may be worth keeping them around.
|
|
|
Post by ketmar on Apr 27, 2022 13:51:50 GMT -5
hadn't seen too much of the language in the original port, though by the docs it looked similar, but perhaps a bit more limited. yeah, i mostly added various small things to make my own life easier. like `auto` for variable declarations, UFCS, more sanity checks, some compiler warnings, `foreach` for arrays, etc. one of the major additions is `dictionary` data type (not limited to several compiler-supported variants, like in ZScript), and struct methods. i also implemented some compiler optimisations, and other such things. but the core language is mostly unchanged. well, except that overriding methods now requires explicit `override` keyword, and instantiation is using `!` now (i.e. instead of `class<Actor>`, you should write `class!Actor`). i also removed external declarations for DECORATE methods, and added syntax to mark methods (and constants) as "accessible from decorate". but mostly many small-scale changes here and there that you will prolly not notice… until they are missing. ;-) ah, i also added stack traces on VC code crash. i can't even imagine how Janis managed to debug Vavoom without that feature. That's great to hear! Yeah, I can see why it's a hard tradeoff. I think currently VavoomC performs quite a bit better (Haven't actually done any benchmarks, but VC is definitely keeping up well when more of the engine is written in it, and without a JIT compiler just yet!) the engine is actually cheating like hell. ;-) for example, it completely skips any physics playsim code (which is written in VavoomC) if it can detect that some object is unaffected by physics. i.e. there is no need to call physics code for most dormant mosters, for many pickups, decorations, and such. this way you can still play "Memorial" with it's 4K monsters at acceptable framerate, for example (because most of those monsters are dormant). Gore mod is quite slow, tho, but now you can dynamically turn it on/off, which helps a lot on some slaughtermaps. on my old core2duo the engine is able to process up to 1k active monsters, and still maintain 30-40 FPS. so hope that the JIT compiler that's in the plans helps keep that up. my rough estimation is at least x3-x8 speedup. tbh, the biggest problem is that i have to support several CPU architectures, and none of the existing JIT engines can do exactly what i need. i'd like to avoid writing my own SSA compiler from scratch, so i'm still trying various libs. but it looks like in the end of the day, i'll have to write my own. sigh.yeah. and i am always ready to help too. most of the time when something was changed, you only need to fix one or two minor things here and there to make it work again, and i'm always glad to help with that. Nice! That's also great to know. That's definitely a lot more welcoming. i don't want people to use VavoomC (at least not now, for obvious reasons), but of course, if somebody is brave enough, than it wouldn't be fair to left them without help! ;-) I'd love to finish that minimod at some point so I'll try to dig up the code again and see if you can spot anything wrong, or if I'm just doing it in the wrong place. sure, feel free to drop the code at me. VC seems easy to grasp but there's just a couple unexpected "gotchas" that probably come from not having new docs yet. Hopefully the comments help clear that up too. yeah, you're basically working with the "raw engine", without any intermediate helpers and safety nets here. and engine internals are not as straightforward as it may seem. ;-) due to idTech1 legacy, some things are done in very convoluted ways, and some things should be done exactly one way and in the right time, and… oh, the joys of idTech1! ;-) i'm planning to start documenting at least most obscure parts once i'll get closer to something stable. Fair enough. I actually really like the sharpness of stencil shadows compared to shadowmapping, but yeah they're much slower and limited. yeah, i love their look too, but alas, the algorithm itself doesn't allow to add any fancy features, or make them faster. the main problem is that stencil shadows overdraws like hell. i added various tricks to limit overdraws, but the core algo depends on overdrawing. and it absolutely kills any GPU, eating all memory bandwidth, and still wanting for more. it is possible to add a geometry optimisation pass to make stencil shadows slightly more faster, but they won't realisticaly reach the speed of shadowmaps anyway. and i'm not done with shadowmaps yet, i have some ideas how to optimise them even more. so i prolly won't remove stencil shadows, but i also won't invest much efforts to improve them too. it simply doesn't worth it (cosidering my limited resources). EDIT: Oh! Some things missing from this post are the links to mapsets/mods that work really well with K8Vavoom. I can just go to the old thread but still, may be worth keeping them around. oh, yeah, thank you! i simply forgot to do that. so i added a ticket for that, so it will annoy me and i'll have to redesign the opening post. ;-)
|
|
|
Post by ketmar on May 6, 2022 19:02:05 GMT -5
small info: new public build is on its way. i just got a little distracted with my ZX Spectrum emulator and some Z80 code. ;-)
|
|
|
Post by ketmar on May 8, 2022 23:53:44 GMT -5
hey, folks, here's the promised new build! ;-) and i want to apologise for not being able to test this one up to my usual standards: instead of 5 minutes of gameplay testing i did only 3 minutes this time. sorry. the download link in the first post is updated. 2022, May 09, brief changelog: highlights: * added KVX/KV6 model support (you need to use Vavoom model definition XML to load them) * tried to fix GZDoom undocumented negative texture Y scaling; works only partially (thanks, pramenid!) * ported sound rolloff code from GZDoom; "$rolloff" in SNDINFO should work as expected now * ACS `SetMusic()` API accepts music names longer than 8 chars (thanks, TDRR!) * fixed bug in DECORATE includes (8-char file name w/o extension should be tried too) * slightly faster model loading code (some arrays will be lazily created) * added KVX/KV6 model support (you need to use Vavoom model definition XML to load them) * bouncing projectiles with custom damage function should damage mobjs * many fixes in GZDoom MODELDEF processing (thanks, id0!) * DECORATE GibHealth should be forced to negative values * relaxed requirements for `ThingSpawn()`, so some valid spawn places won't be rejected anymore (thanks, Shot846!) * ACS functions `xxxActorInventory()` with TID 0 should affect all players, not script activator (thanks, Shot846!) * made better code to detect polyobject starting sector (thanks, Shot846!) * better sector sound origin calculation ("gm_compat_sector_sound" cvar) * do not show cluster exit text on secret exit cluster change (thanks, forgettablepyromaniac!) * some fixes in DECORATE parser * added support for `Inventory.ForbiddenTo` and `Inventory.RestrictedTo` DECORATE properties * in `RadiusAttack()`, `DamageSource` should have priority over "don't damage same species" flag * added `WRF_SECONDARY_SAME_AMMO` flag for `A_WeaponReady()` (secondary fire will use primary ammo) * better `A_JumpIf()` DECORATE action parsing, faster DECORATE VM code for cvar checking * added experimental support for "SpawnMulti" skill flag (thanks, Arsinikk!) * darken named DECORATE blood colors (like "green"), to make decals look less "acid" * don't warn about `0` integer color in `A_CustomRailgun()` * implemented `A_SetHealth()`, `A_WolfAttack()`, `A_FireOldBFG()` DECORATE actions * added some Strife actions * implemented "SPECIALFIREDAMAGE" DECORATE flag * published "WEAPON.ALT_USES_BOTH" weapon flag * added support for DECORATE bounce states, and some missing bouncing flags * added support for "Player.Face" DECORATE property * implemented "+NODECAL" and "+FORCEDECAL" puff properties * fixed VERY NASTY bug in "BloodType" DECORATE property parsing * allowed thing-stepping in `A_SpawnItem*()` actions (spawned monster could step on things if not too high) * implemented "PowerDrain" powerup effect * fixed broken `local` flag in `A_PlaySound()`, and made `A_StopSound()` work for players * partially implemented `A_StartSound()` * much faster minimap rendering (using blockmap)
|
|