#dusk-modding
1 messages ยท Page 88 of 1
ah
Basically it stores references to a bunch of faces defining a collision mesh of sorts
And then it specifies what it is, water, solid, etc
Not too hard to generate probably
time to read up on bsp trees again oh boy
actually y'know what I've actually taken my data structures class since the last time I looked at anything BSP related maybe it won't be so bad this time lmao
anyway tl;dr vriska brushes i.e. convex solids are not represented by simple triangles/face and vertices in the .map format, but rather a solid is formed by the intersection of infinite planes
For reference, what you suggest would likely work in og quake and hl too
the biggest issue i see with this is that theres very little added functionality here
yeah the "extra consideration" part was mostly regarding Quake/HL getting collision data from the bsp tree rather than naively from the triangles
personally I'd find a lot of use with it, provided collisions are properly mapped. All of the rocks and cliff faces and etc could've been modeled in blender instead of JACK for my outdoors map which would've saved dozens of hours, for example
although I recognize the extreme level of jank to achieve something that would be relatively easy to add with access to the codebase lmao
a perfection of a model format into .map data would be more ideal tbh
no thank you 
I will not be working with infinite planes today good sir thank u very much
I made that mistake before LOL
yeah I suppose you're right but you're limiting yourself to convex solids exclusively which is not really easy to guarantee in blender
at that point the vertex tools in JACK/TB are fine enough
and tbf a lot of that legwork has been done, its just needs work
it's not so much that it just needs work, it's moreso that convex solid limitation isn't something that can really be worked around. It's non-trivial to convert a potentially non-convex non-solid arbitrary 3d model into something that HAS to be a convex solid
thats correct,like i said, it needs work
it can completely be done
the tooling has to have strong design however
in theory but idk I doubt I'm smarter than the people who already took a crack at it with things like obj2map and bsp decompilers
obj2map is a mess
my point stands 
lmao
im a simple user that doesnt understand shit but obj2map caused monstrous amounts of pain and crashed TB at least 12 times
still, bypassing the convex solid requirement is something I see as highly preferable, so I personally wouldn't go down that route
i think thats a lazy approach tbh
correct
Realistically I have to figure in how much time and effort I am both able and willing to dedicate to this
I am not paid to do this after all
i think its a not great idea considering the dozens of issues with it, and the improvements that are on the way for it
one of the most obvious issues being lightmapping
do we have a timeline on custom model support? if it were within like, six months then yeah I wouldn't bother
i think youll have it in 6 months, but thats by no means a commitment or even an estimation
and that still doesnt solve the lightmapping issue which is shitty
hmmm
I'll see how my free time allows
I'm by no means opposed to working on fruitless projects as long as they improve my learning, which this will
theres the possibility that you could precompile a lightmap and bake it into your models uv2 or something along those lines
You could just run light on it after adding the models in
Shouldn't even be an issue
oh would it really be that easy lmfao
oh yeah it would I forgot light operates on the bsp not the map
yeah its a bsp compiled step
yeah heck that makes things a lot easier
my only real concern for myself is handling bsp tree collision but hey that'll be a learning experience
wait what are we trying to convert to map
no
nothing by me good sir 
no is a good thing to convert to map
its a difficult problem
This is the low level code needed to just read/write a BSP
The sample app will just take a bunch of BSP files as an argument and spit out copies of them through the API
anyway since quake mdls are supported by assimp that could provide a pretty decent workflow. The custom fgd entry would both provide the filepath to my tool and also tell JACK/TB to render it as a preview model in the editor
That's perfect, thanks a bunch!
If I can be assed I could even automatically collect all the textures from the mdls and pack them into a WAD
wouldn't be a bad workflow tbh
wouldnt be a great one either lmao
listen I'm making this for me specifically okay lmao
Aside from lightmaps, this'll be largely superceded by place_model in the end
ye
But even if only for the lightmaps, it could be useful
The problem is defining how the models are placed in the BSP and where
thats both the main drawback, and benefit
Are you going to have dummy entities that it looks for or something
that's the easy part if you use mdls
just an fgd entry
then it's displayed like any other entity with an MDL preview
Bry what specifically are you trying to convert over to a map file
I mean from the perspective of the tool
they arent
how will it know where to insert the vertices, etc
Oh, yes, I misread your message. The dummy fgd entry would give me the file path and location, rotation, scale, etc
then I just delete the dummy entry before outputting the final bsp
You'll need to write a .map parser then, since entities in the BSP are just a copy of the .map with the brushes removed
the entity entry will be in the final bsp unless that's different for quake bsps
Oh I think I'm seeing what you're saying now
You're just going to generate the .mdl and the .fgd and let qbsp shove the model in
correct, the bsp compiler doesn't know the difference
or post process the bsp
I was thinking you were going to inject the mesh data itself into the compiled BSP
As a post-processing step
yeah that was my initial thought as well
well yes but the entity entry tells me where to do that
i.e. the entity entry will contain the filepath to the model file (ideally mdl so editor can display it) and location, rotation, and scale in worldspace
I could fork qbsp to do this I discussed that as a potential possibility way earlier in the thread
thats probably the best path
If it were me I'd do the mesh injection approach since it'd mean I could use any BSP compiler with the map
but that's also a lot more complex
that's trivial
the only non-trivial part really is the bsp tree stuff
right, it is, but its extra work for no benefit
Yeah the harder part is definitely adding the collision info
other than choice of compiler
that depends on how easy it would be to feed non-solids data into qbsp. I have no idea how qbsp works internally so it could either be trivial or very non-trivial
so it's worth taking a look at
for me, that is lol
I'd definitely recommend spending a bunch of time embedding the Quake specs into your brain first
qbsp is not too bad
It's an invaluable source of info
yeee for sure
Oh I definitely wouldn't use vanilla qbsp, there's too many limitations with it. I'd want to fork one of the "modern" qbsp forks
I forget the name of the one I was using when I was mapping last
yup that sounds right
Quake/Hexen 2 Map compiling tools - branch of http://disenchant.net/utils - ericwa/ericw-tools
again though, the important part is the spec
Good ol Ericw
you can extend it however you want, thats why i linked the original
icic thx
Eager to see what you come up with
Could result in some neat maps
Or some really lazy ports
You know, like ones that get exported from another game as a giant mesh, then imported into a bsp via your tool
"hey guys i recreated the entirety of doom 2 BY HAND check this out"
i'd still play that though
lol
reading that many terms that i dont understand led me to actually trying to read on what bsp is and how it works at least on a surface level
wow whoever came up with this is a genius
It's a lot simpler than it's made to sound
its just a data collection
yeah i'm starting to understand what you people were talking about
Like if you break up the words "binary space partitioning" it's like
"huh, it makes sense now"
yup
it took a visual demonstration on top of that but i think i got it
so its important to nope
note*
bsp and .bsp arent the same thing
bsp is the concept, binary space partitioning
where .bsp is a storage format, that makes use of that concept
Yeah, a .BSP is just a collection of models split by a BSP tree
yeah i figured as much
wouldnt make sense if all these games had so many maps made in the same format
i sitll have a lot to figure out about it but things certanly became much clearer
wouldnt make sense if all these games had so many maps made in the same format
Man, figuring out how to make DUSK accurately detect what game a BSP is from was absolute torture
Source and SiN BSP were definitely the most annoying
huh? they're different?
sin just seemed like a half life 2 mod to me
Check out the first ~120 lines or so in BspUtility.cs in that code archive above
SiN Episodes is on Source
SiN is on modified Quake 2
oh jesus christ
why wouldnt they at least name them differently or something
It's insane because other than that, it's impossible to detect the difference
L4D2 is Source BSP v21, but no other BSP v21 game has that change
I don't even get why that change was made because there's no benefit to it
hmm
interns 
the only possible reason i can think of is actually console ports
Even then it's weird because this data is all packed together and is always read in sequence anyway
SiN and Raven (SoF2, Jedi Academy, etc) BSP both start with RBSP so that one was a fun bit of CBT too
i cant say i know enough about the consoles it was ported to , but its like the only possible thing i can think of
thats not lol whoops
you know, i barely understand things like that
but even i wouldnt name 2 different projects by the same name
In this case it was a total coincidence
i'd at least add a number or something to make sure to tell them apart
oh well a coincidence is gets a pass ofc
but that valve stuff like
wtf
Titanfall BSP could've been another mess too
but they seem to have known that RBSP was in use
so it's rBSP instead
CBTSP
yeah id imagine that was the case
(no dusk cannot load titanfall maps, it can only recognize them)
can it run hl2 maps?
The next update can
actually, i recently learned that they used DarkRadiant to make titanfall
oh my fuckin god
as in, the editor for the Dark Mod
huh, I assumed they used a customized hammer or something
will the broken stuff like models and switches be fixed?
Yeah
switches are broken?
(cause the models instead of the hl1 ones switch to the regular dusk ones)
in the sdk
Campaign switches
ohhhh
pretty wild for them to be using a mod's editor for their commercial game
is anything NOT broken in the campaign lol
but if it works, it works
some map switches are broken
The campaign was never intended to be in this version of the SDK
like they go through a wall after being pressed
but people wanting to make texture mods and stuff would've been mad if it wasn't there
lmao
goldsrc and quake maps i mean
broken in what way
When are we getting scrolling textures
also, the loading triggers are replaced with end level screens
yeah because trigger_changelevel do be like that
That will probably not be fixed any time soon
I recall fixing that somehow with FGD stuff
but this was a year and a half ago
So I don't have to use func doors rapidly switching on off in the same place to simulate a moving object
theres also sky problems
Support for those skyboxes is coming later yeah
as in goldsrc and quake maps, it gets replaced by dusk
Dusk has its own skybox system
you mean they "slap a sky texture on a celling brush" skyboxes will be a thing?
the*
Yeah
Light styles might be in the next update too
It's complicated but I've been working on it
lol
Scrolling sky?
will hl1 weapons also work?
and quake weapons
Yea yea
lmao
With the clouds and shit
I thiiiiink potentially if you set the lip value to the distance it WOULD move then the button won't move on a func_button
I assume you mean replacing the pickups
yes
but I like to imagine you mean the actual hl1 guns
and viewmodels
hl1 weapons will have to be implemented as mod weapons
if you want them to work
like the guns themselves
yes and a ton of work
that we get no benefit from
if you want to do the legwork to add hl1 weapons, by all means, youll be able to
that makes me think why doom 1-2 were ported into unity by bethesda
that was indeed the strangest decision of all time
Unity was more like an outer shell in that example
is it just to make them run on moder systems without using a community source port?
The game itself was still the usual C code
yeah think of Unity as almost a VM
Unity was a layer on top providing input and displaying the rendered view
that is.....an interesting decision
ah huh alright
basically using Unity as if it were something like SDL
that makes more sense now
i thought they actually ported doom into unity and was very confused for a long time
no lmfao
A lot of people did, especially since there was a lot of evidence pointing to that
but in time it was shown to be false
probably just didn't want to deal with licensing issues with using a community sourceport commercially
but still a strange decision nonetheless
ye that's what i thought too
I imagine it's more of a "we get all these ports for free" thing
surely would've been easier to build their own SDL port
ope
Unity already runs on a shitload of platforms
there was some code that wasnt supposed to be there iirc
...huh
by "wasnt supposed to be there" do you mean "it's from somewhere else"
i hope doom maps might have compatibility, but theres a doosk mod so, idk
yes
Basically someone on Doomworld several years ago posted some code for loading doom stuff into Unity
wow
yeah possibly but man that's still so strange. Surely writing a makefile for the finite number of platforms Unity runs on is easier than writing an x86 emulator in Unity to run a single game lol
And all that code was just... in there
what the fuck
I assume the Unity port started out as playing with that idea
and then it became a proper port later
and , importantly, the license wouldve required bethesda to open source the port
but the old stuff wasn't removed, and Unity failed to strip it from the build
doom maps are an entirely different can of beans
imagine being the guy that wrote that
yeah it had GPL'd Doom Builder code
There's no emulation
i doubt that guy even knows its in there
It's a native dll that gets compiled and they call functions in it
afaik the list of people who know about that is extremely short
well it just expanded a bit
So they just have a DLL that exports functions like Update, Render, etc or whatever
and they just run those from Unity and then display the result
also yeah there are zero plans to support doom maps in the SDK
okay now that's even stranger since they're porting the DLL to the platforms anyway
supporting BSP is exhausting enough already
also once the sdk gets open sourced you can add your own doom map loader
doom 3 maps tho ๐ณ
or use one thats available already
Using Unity is basically just a way to avoid needing to write code for rendering and getting input on each platform
is there a timeline on that too? ๐
Since Unity does that for you
no theres no timeline
It's being open sourced when it's finished
when its done โข๏ธ
Maybe slightly sooner if a near-final build is tidy enough
there are several major landmarks to go
ngl I considered looking into this
but I don't think they're BSP at all
extremely unlikely theyre bsp
They're basically just .map files
The game loads them raw because >dynamic lighting
its impressive for its time
It'd be funny to support doom 3 maps but the game can load enough gimmick formats as it is lol
i just thought the level designers forgot to put lights at all 
wait until you see the long list of games it can load maps from in the next update
it's comically long
its real silly
got i cant wait
Less than 20?
A lot more than 20
Doom 3 map format is clearly an evolution of the earlier BSP formats but it isn't strictly a .bsp ye
also @ancient depot to be clear does the new version use the clipnode tree for collision or the BSP tree?
ye
okay good to know
I'm thinking my project would better be left as a separate application rather than bodging the functionality into qbsp. Looking through the qbsp source I'd pretty much be doing everything separate and then just coming in at the end and writing my extra stuff to the bsp anyway
workflow would be entirely unchanged anyway other than instead of qbsp->rad->vis you'd set JACK/TB to run qbsp->myapp->rad->vis
and that obviously enables allowing any qbsp compiler so long as I take the format differences into account
the only extra work I'd be doing is creating my own data structures to represent the bsp which is entirely trivial
yeah
I'm very glad you gave me the duh moment of not needing to deal with lightmaps lol that makes this all much easier
Trust me, nobody hates dealing with lightmaps more than I do
oh I know, I remember those corrupted lightmaps early on in the dusk sdk 
They're conceptually simple
It's just that the things I've had to do with them get brain meltingly complex fast
man
dont even remind me
What fucked me up was learning that Darkplaces actually had the same issues
tfw we currently produce better lightmap results than DP
oh my god there's no other feeling than being like "this is unacceptable. I have to fix this." and then after you fix it you go and play a commercial game or big project and realize they decided "fuck it, leave it in" 
I'm pretty sure Quakespasm was the only port that managed to get the lightmaps correct for arxeternal (or whatever the final map was called, I always forget)
i've never used anything aside from quakespasm and never felt the need to
does doom or quake have more source ports?
I'd bet money on doom
prolly
yeah i think its doom
I'd not only attribute that to doom running on far more platforms but also there being several "enhanced" versions of the doom engine
it has a long linage
i.e. Boom and Zdoom and such
In this video, I explore the history of Doom's source ports, beginning with the release of the source code in 1997. I also talk about some of the earliest source ports that came from this release, particularly the ones that still have active descendants to this very day! In addition, I catch up a bit with some multiplayer ports I talked about in...
extremely condesed history of source ports
and then even for boom and zdoom there's at least two or three different ports implementing the enhancements
and 20 years down the line we'll get dusk source ports too
It's criminal that the best Quake port died though
the main "popular" ones rn are prboom+, crispy doom and gzdoom
20 years down the line we'll still be waiting for the rewrite 
Engoo will live on in our hearts
also there's things like chocolate doom
doosk, as a example
yeah chocolate doom was related to crispy, a fork i think
yeah there's so many more doom ports than quake ports lmao
Quake probably wins out in engine derivatives if you count all engine versions
wrath is probably the only game that uses the quake engine on steam probably
With GoldSrc, Source, IW Engine, etc being based on it
it uses darkplaces
oh for sure
true
In general though doom wins no question
I'd consider source ports a different ball game than derivatives for sure
Steel Storm does
like heck isn't the modern CoD engine a derivative of Quake for that matter
oh cool
there are less "foancy grophics ports" for doom, makes sense as its a 2.5d game and it wouldnt work
quake on the other hand well, darkplaces
obviously Source and Source 2 and so on as well
I don't think modern CoD is still Quake
I could be wrong
but I know at least Modern Warfare (the og) still had Quake roots
In fact it still uses the Quake 3 Arena weapon bobbing code
nothing new was ever invented since the quake engine tbh
(obviously joking but still)
yeah Modern Warfare is derived from Q3A and thus Quake that's probably what I was thinking
im just shocked how manu things have some bits and pieces of quake in them
Quake is like the bacteria life evolved from
lmao
Mark 5 evolved into Quakespasm, I believe
honestly if you look at the quake source code you can see why. there's a ton of fundamental stuff in quake that basically boils down to "if it ain't broke, don't fix it"
Man I should make cookie cutouts of my other brush trees
and it's flexible enough to be adapted into pretty much anything that's a first person shooter
Okay no I was thinking of FitzQuake
i use vkquake, which is basically a port that adds vulkan rendering to quakespasm, made by Axel Gneiting
the newest cod engine is no longer based on q3a
be a lot cooler if it was
they broke it off finally with modern warfare
hes now the engine programmer of doom recently
I wonder how much IW BSP differs from Q3BSP
I don't plan to support it, but I'm curious
I know that it uses IBSP which could cause conflicts with idBSP (which also uses IBSP)
but I don't think it shares any version numbers with any idBSP formats so that could disambiguate it
imagine if BSP magic numbers were standardized by ISO
It's a real can of worms

just in case anyone gets any funny thoughts huh
I agonized for a long time figuring out a nice way to model the evolution of the BSP format in the code
Since Q1 & GoldSrc don't even have magic numbers
they just have a version number
Like normally you get a magic number, then the version followed by the lump directory
ahhh the beauty of supporting many slightly different versions of essentially the same thing
fucking allied assault? wow
yeah that's one of the "we can recognize it but not load it" formats
in the code it's treated as a separate BSP format because I haven't actually looked into it yet
so I don't know if it derives from Q3BSP, for example
ah alright
joke idea: if it's a recognized but undersupported format, just load de_dust2
Heavy Metal FAKK 2, Elite Force 2 & Titanfall are the other "I recognize this but I can't load it" cases
crash the game if someone tries to load Heavy Metal FAKK 2 maps
Hilariously, I could actually support DOOM 2016 & Eternal maps to an extent
They're closer than you'd think format-wise
I won't, but the thought is funny
can't wait for the "Big John rips and tears his way through Doom 2016" mod
It'd make for some pretty funny news articles
zombie how big was your fear of releasing the sdk and nobody being able to figure it out
I wasn't worried about that at all tbh
because just a few days ago I developed a whole app for a guy for my job and I made it literally a single drag and drop operation and he still can't figure it out
imo it's less complicated than Source modding and people figured that out
im shocked that people actually understand anything about modding source
aside from garrys mod
i'm shocked I managed to do it in my preteens 
My vision for the SDK has always been combining the best parts of Quake and Doom modding
to be fair there's much nicer tools even for source 1 nowadays
mdl compilation in the olden days was SO fucking complicated
Like look at texture replacements
doesn't get much easier than plopping a png in there
i'll be honest
i've looked at how people make quake mods and stuff
talked to people in that community too
and i dont want a quake community tbh :)
I do wonder if the source ever gets released how many people will choose to create mods at the unity level rather than at the sdk level
doom dudes are so nice
as much as I love Quake SDK tools once the source is available I'll probably just do my own thing from within Unity since I'm just as experienced with Unity stuff if not moreso
I'm more interested in whether or not people will base new games on it
I imagine Titanfall, Titanfall 2, DOOM 2016 and DOOM Eternal maps are too mesh based to really be able to be imported without data loss.
that'd be a cool thing. dusk-engine derivative games lmao
them being mesh based is exactly what makes them easy to import
O.
yeah lol non-mesh stuff is the hard stuff
Okay.
the hard part is just figuring out the formats themselves
Yeah that makes sense I guess.
being mesh based makes them hard to decompile
but not load
or rather, hard to decompile into a brush format
a BSP itself is actually pretty heavily mesh-based
yea if games don't care about the bsp tree info you could just as easily edit the bsp mesh and re-export it, but obviously the bsp tree info is important
the brushes are moreso just what those meshes are authored with
and depending on the format, the brushes might also be used for collision
the main level in a BSP for example is actually just one big static mesh
and the BSP contains information on how you can split it up if you want to render it cheaply
What are the differences between mesh and brushes
ok so i've been trying to figure this out but i'd better ask
when you said "dusk throws out the bsp tree info" do you mean it renders everything ahead in the field of view without considering if the player can see it or not, right?
Yeah that makes sense, I knew most BSP formats these days are meshes of polygons Just kinda dodgily authored ones
a brush is just a set of planes that define a convex shape
a mesh is just a 3d model
bunch of vertices and triangles
A brush is a convex solid defined by the intersection of infinite planes which form its faces. Mesh is just triangles pretty much
And seams, just a bunch of other things.
triangles = faces
Thx
(although in Q1BSP you have to generate triangles yourself, the faces are just polygons)
I assume Dusk just renders the entire map apart from whatever optimizations Unity automatically does for rendering meshes
Which is honestly fine given that the BSPs we're talking about here are in the single digit thousands of triangles
not entirely
Huh, I wonder if this ^ may be what causes the huge lag spike when I look a certain direction on my map
The BSP tree splits up the map into segments that define what each segment is (water, solid, etc) and also connects the geometry to visibility data so you can cull it when it's out of view
DUSK simply just doesn't use that stuff in the current build
bsp tree also defines collision data but I assume Dusk currently just puts all the triangles into a collision mesh
ok yeah that makes more sense
The lag spike is likely not caused by that though
There are... a lot of inefficiencies in the current build
was wondering about that too
on a modern GPU it's usually more efficient to just render the whole map
modern GPUs like static data
I'm gonna guess dusk loads the battery array of explosive barrels and teleporters under the map
unless your maps are ridiculously high detailed (like hundreds of thousands of triangles or millions) it's very unlikely
also this
uh oh
it's fucking massive and very detailed
is it ad_sepulcher tier
still it probably wouldn't necessarily benefit from utilization of the bsp tree
would you kindly boast the map my man
Specifically the bridge part that has a fucking landfill of entities
by far the slowest part of rendering things is buffering data. modern gpus have more than enough VRAM to just hold millions of triangles in VRAM

oh my
on that note, ad_sepulcher loads in around a second or two on my PC now
how the hell does he even open that in any Hammer-like editor
is it in the default arcane dimensions?
just to put into perspective how slow the old SDK code is
because i will try to load it if it is
ad_sepulcher used to take several minutes to load
mostly due to lightmap atlasing time
Did he make that in Trenchbroom? I honestly can't imagine opening that in JACK let alone Hammer lmao

I wrote my own texture packer to replace Unity's and now the atlasing is only a fraction of the load time
im downloading and trying it out on my crappy laptop
let's goooo
ye im downloading it rn
and it requires its own build of Quakespasm (or at least, it did at the time) because the map is so huge it goes past the engine limits
I use it to benchmark things in the SDK
because it's like the most complex map out of anything we support lmao
why the hell is it so huge did he model a bunch of trees in the editor
it's just ridiculously detailed
cripes
ok wow it loaded almost instantly
like here it is without textures
and i have my browser open
it's MASSIVE
JESUS
holy fucking shit
I feel like this is some sort of war crime
How many fucking rooms are there
that's a long piss
here's quakemash
hard to judge since ad_sepulcher is very bunched up
but file size wise, ad_sepulcher is nearly 2x as large
absoluetely insane
it can take me up to a month to make a small shitty map
and that's when i have free time
cant even begin to imagine how long it must have taken
how tf do they handle keys
doommash when hm
already exists
If it's anything like the Doom in one map mod, they changed the keys to switches for specific doors
o nice didn't know that was a thing in Quake
Capture of a flight around the entire world of Half-Life: Source. The gameplay of the game itself is mostly continuous, so it is possible to glue large series of maps together in one giant mesh. No textures except lightmaps are loaded.
Utility that does this is OpenSource (https://github.com/w23/OpenSource) and available for several platforms: ...
this is even cooler
the fucking compiling of that quake map honestly kind of scares me
the tool that does it loads Source engine maps so you can do this with HL2 as well
the compiling doesn't scare me, the lightmapping time does
wasn't there something with the HL2 in one map thing where it was like "wait a minute we need to add a massive bridge to the coast otherwise it just appears out of nowhere" lol
doom one?
and he used soft lights too
its different from vanilla doom, adding some stuff
OpenCL/Cuda accelerated RAD WHEN
yeah, look up the doom compile project
I think it's dead now but they at least finished doom 1 iirc
btw zombie is that ubershader project still on the backburner? 
yes, I'm not even sure if I'll go through with that lol
it's an insane idea to solve a problem that shouldn't exist
I might do something on a MUCH smaller scale to support quake 3 material definitions though
Honestly, if you just provide a nice library of relatively flexible shaders, that's probably more than enough for modding tools
yeah
and then if/when source eventually gets released it'll be easy enough to add in shaders there
even without that, there are ways we could let people add shaders through asset bundles or whatever
as much as I hate those
Out of the major engines it is
Yea I was just typing Unreal is even worse
lmao

I've ranted so much about Unreal with regard to mod support that I couldn't stomach doing it again
also it's a shame because unity USED to support runtime shader compilation, albeit probably unintentionally
I build shaders, renderers, games, and other stuff that's fun to stare at.
back in Unity 4 you could do new Material({shader_code_here});
It was very limited and only supported certain types of shaders
Oh really? I thought it supported p much anything GLSL
I don't remember the specifics
but I know it had limitations that made it unsuitable for a lot of cases
eh doesn't matter, it's long been deprecated and removed
You can still sort of hack in runtime shader compilation
but it's so much work
You need to invoke the Unity shader compiler (which requires IPC to interface with) and then compile the shader
then generate an asset bundle in-memory with the shader
and load it through that
yea I mean realistically how many Half-Life 2 mods, which do support custom shaders, actually use custom shaders
almost none of them
yeah exactly
Given, though, HL2 had a pretty nice library of shaders to choose from to start with
I ultimately decided that if someone wants custom shaders, a better approach might be to ask them what exactly they want to do
and just offer that built in
yea p much
although ubershaders are totally one of those projects that are just so insane you want to do it just because lol
the structure of the SDK would let us then give that user a dev build while they waited for the update to come out proper
since we don't have to distribute actual game files
yee
wouldn't be worth the effort but it would be cool to see some kind of blender cycles node editor type of thing
i.e. a bunch of flexible built-in shaders that can be combined in unique ways with a visual scripting sort of thing
I just want to see a new shader language to replace GLSL/HLSL
something a bit more modular
LOL wouldn't that be nice yeah
Like imagine how much nicer it'd be if I could just "override" a shader's function for sampling the lightmap or whatever
and then it'd compile to the equivalent of doing it manually
would be nice if nvidia stopped being pricks about open source tech they didn't produce themselves. even if AMD or someone else came out with a better way to do shaders, nvidia would just have to do their own and then you'd have to support both
Not if it just compiled to SPIR-V or something
The GPU manufacturers wouldn't even be part of the process
oh interesting never heard of that. I'm not as well versed in shader tech
ahh I see
It replaces the antiquated concept that OpenGL had where you submitted shader source code to the API
the extent of my graphics programming knowledge pretty much starts and ends with N64 microcode 
Which required drivers to have their own parsers, which meant you'd have driver-specific bugs from parsing shaders
but now the actual compilation happens in software and you pass the binary along
nice nice
You can also now just use SPIR-V for everything because there are cross compilers for it
I briefly dabbled with Vulkan before getting distracted so I somewhat knew of this but not the name of it
ooo nice
Not that SPIR-V is perfect or anything, but it's a MASSIVE improvement over just submitting shader sources
SPIRV must be pretty extensive if you can produce readable GLSL and etc from it
Yeah
just throw modern gpus out, replace them with massive fpga arrays
submit shaders as bitstreams
based
I was literally thinking that LOL
highly performant
completely independent
replicatable regardless of mfg
runtime configurable
but imagine how much worse crypto miners would be if GPUs were just ultra powerful FPGAs
probably less so?
but yeah speaking of SPIR-V, the ubershader idea was to implement SPIR-V in a shader
thats why they already buy ASICs
since a SPIR-V module can actually be sent pretty easily as a texture, since they're just a binary file filled with nothing but 32-bit integers
god shit like that always reminds me of that one dudes project where he encoded time into textures
that reminds me of when I was converting various elements of opengl framebuffers into textures so I could composite two separate opengl contexts together in a highly cursed application lmao
absolutely based
i dont think you can
check the spawnflags i guess
but i dont rmemeber that being a thing
i hope im wrong
Someone said to me that I can remove it for my arena with the enemies
@gritty forge i've checked the quake wiki and it says spawnflag 1 should do it
but i don't know if it works in dusk
i swear i tried to do that same thing before and couldnt
but it's neat to know if it works
the no message flag is implemented, yeah
wow i really missed out then
Are there doom styled mods for dusk?
Iโd like to jam out to Andrews other works.
none that i'm aware of
Darn.
good change to be the first
I like the Brutal Doom music stuff.
oh wait actually there is a recreating of E1M1 from doom 2
recreation*
but it's old
yea
There is also doosk
Isnโt that for doom 2 tho?
ye
DOOM IS DOOM
I consider doom 2 not all that different from 1
but you shoot cultists
yeah
Just extra weapons and a couple more monsters
doom 2 is more of an addon than a sequel
cant wait to see
Just realized something - in both Quake and HL, mdl props inserted into maps don't have collision, do they?
If that's the case then my utility inserting mdls with collisions could actually have utility for quake and hl as well
for more advanced mesh-based maps
hell this could even be a really janky way to have mesh-based terrains in HL1 lmao
kinda lost motivation for my 2nd map before but now it's completely back
I was planning to just do some small finalizing touches and now I'm like rebalancing and fixing a bunch of errors and adding more cool stuff
is fun
Man, d1_trainstation_01 looks so messed up without all of the trains and entities around
does func_detail actually improve performance
i don't think so
well
considering we don't have VIS support
but hey that's just a guess
I believe it should help in some form
aight
why is it that my level appears a bit jittery when I move my mouse even though it says ~100fps
before the update I might throw out a little BSP viewer or something for testing the expected performance of the patch
simple answer is that the public build has a lot of missing optimizations
so its the SDK?
anything I can do to improve it a bit for now?
I dont use candles
lol
(by the way)
fucking candles god
Probably not, the bottlenecks aren't really solvable from the user end
look so good but chug so bad
agreed
yeah personally I can't imagine how awesome it would be to have particles and fog
too awesome to explain
whole new dimension of immersion
yup
though I will say, for being a huge map with 125 enemies my level has really good performance lol
80-140fps on my pc
though I have a good gpu
so correct me if im wrong here
but i THINK enemies with particle effects affect performance more than those without them
like mages
they do, yeah
I reduced the amount of mages for that reason
but also
in favour of soldiers mostly
the low spec mode should turn them off anyway right?
it should, but for all we know custom maps might not work with it somehow
With the new SDK update you might not even need to use it
It's on track to running better than the base game
what a blessing that would be wow
I've been thinking about testing vis support for the update after it, too
the new codebase makes it WAY easier to do
I mean, the fact that ad_sepulcher loads in like 2 seconds now should say it all lol
will maps be broken after said update
Some will, but there's an automatic mod updater tool in the works
So you can just run your mod through that and release a new version
dope
what will be broken in terms of old maps? Or is that case by case
cause if there are specific things I'd like to avoid doing those things for the sake of futureproofing
The biggest break will be texture, model, etc mods
Since all the assets have been reorganized
lmao
hey you can't leave out finally fixing the fucking model/sound/etc replacements 
the what
the new
you mean that some models only make sounds the first time you start the map when booting the SDK?
That too
once particles come out someone is going to have to physically restrain me otherwise I might just overuse them and create a black hole somehow
hl2 spark effect x10000
I just want to add flies and electricity for substations and shit
gosh
flies on gore textures

and STINK CLOUDS IN BATHROOMS
exposing the campaign's particle effects is pretty easy
but custom particle effects will be annoying
mostly because I don't even know how I want that to work
I mean, couldn't you theoretically make some kind of "node" like the light nodes for example, then link a texture like you would link music to a changemusic trigger for it and then set things like particle count, width, height etc manually inside said node
you wouldn't see particles in the editor but it would be a pretty good way to do it I think
Yeah but that wouldn't allow for the level of customization that we could provide with Unity particles
I was thinking maybe having a json file that defines a particle effect, and then making a separate particle editor program
could be something generic enough for other games to use too
idk how unity operates but can't you like make the particles and get a particle file via unity and then use it?
instead of making a dedicated editor I mean
Unfortunately it isn't that simple, and even then I wouldn't want to require people to install Unity just to make particles
That's the plan
pog
It was meant to be out a while ago but some personal stuff happened which slowed things down a bit
Melee is shit in Dusk
I dunno if I'd go that far
Besides the sword
why
The sickles arenโt good in later missions lol
well it is your "last resort" weapon
Its pointless to use on duskmare
The sickles are extremely useful because they can deflect projectiles
Oh yeah
The sword can deflect projectiles but it requires armor
Yeah it's more of a defensive weapon
i love the sword charge
you know... A meathook for the SSG would be insane for dusk
as an avid doom eternal enjoyer
maybe throw off some balancing but like it would be fun as hell
Iโm tired of using the jump pads
Bounce
Can't wait for Dusk โข๏ธ The Zombie Rewrite โข๏ธ Version 16.3.4
no
the way func_detail & it's variants works is that it improves on compiling time, not performance
in most situations
plus its dusk not quake so i doubt there's any way it'd improve performance
if you wanna go insane use func_detail on everything that isn't necessary for sealing, the Hammer way
it'll cause overdraw on lighting but it'll give the compiler a little break
LETS FUCKING GO
see yall in 6 months 
well I mean we're not even half way thru the year yet
we're gettin there
whats another half of a year
Per my understanding the point of func_detail is to stop the func_detail entity from splitting the BSP tree around it, meaning potentially less faces to render and a more efficient BSP tree. Obviously the latter doesn't matter in Dusk (currently) but the former might help in some cases. It's also just good practice.
the bottom case is, as you may imagine, relatively unideal for the BSP tree
this is also why func_detail helps with compile times
again just good practice to do and probably worth it if only for the compile times
func_detail on the right, world brush on the left
And now imagine making a very intricate detail onject like a small gun from a dozen brushes and not making it a func detail
Throughout the entire map
I did that and bitched about the compile times
i think it's hammer
func_detail is used liberally there
also, found some very good stuff on level design
first words has "starcraft" and "halo" so you know its worth a read
now i go back to recording blocking out that otex map 
semi-related it WOULD be nice if bsp generation was multithreaded 
I think you could do it where each time the tree is split you could have the main thread continue down the left branch and optionally a new thread continue down the right branch
and just do that for an arbitrary number of splits to start an arbitrary number of threads to handle bsp tree generation
ahhh feels gud to actually be able to place objects & props correctly in dusk maps
feels real good
what tools were you using?
Blender .obj exporter, noesis to adjust scale and port into .mdl
And rotations were fucked 80% of the time
Like blender would export and turn thd model 90 degrees
My workflow would've mostly just been export smd from blender -> use a generate qc to compile -> mdl done
And noesis would flip it
yeah that's fixed with the proper blender SMD exporter
I remember you mentioned using an MDL exporter which is not what ya wanna use generally
It was fucked but i dont remember why
did noesis generate compiled MDLs for you or SMDs?
Mdls
yeah, so how MDLs work is they're not like OBJs or FBX files or whatever
the equivalent to obj/fbx/whatever in this workflow is the smd file
which is the actual mesh and animations and whatever
Noesis loads smds?
probably but I wouldn't use noesis here, no point
you compile the MDL by having the SMDs and textures and then using a qc file to tell the mdl compiler how to make an mdl from the smds
so all the issues you had with the models would've been fixed basically automatically by exporting proper SMDs from Blender then using a proper qc file
if you decompile an mdl you can check out the smds and a generated qc to recompile it
what you were doing basically was letting blender or noesis generated a compiled MDL for you, and they were malformed because it didn't know how to handle what you were giving it properly. that would be something you define in a qc file
traditionally this is done with the classic command line tools but there's a great all-in-one tool someone made for HL1 and HL2 MDLs (maybe quake too?)
Also: Unpack, view, and search Valve VPK, Garry's Mod GMA, Vampire: The Masquerade - Bloodlines VPK, Tactical Intervention FPX, and Fairy Tale Busters APK package files. Pack folders to Valve VPK and Garry's Mod GMA package files. Download items from Workshop. Publish items to Workshop of several games. Requirements and Features ( Request a feat...
OOOO there was a crowbar update as recently as december 2020 hell yeah
Fuck
Yeah I hate to say it but that process could've been mostly automated
sorry bud
Oh well i knew that it could be kibda automated but
That's why I was so eager to get my hands on the models I could've pumped out the MDLs in like a day or two cuz I already have a whole workflow for Blender -> Half-Life MDLs set up
A lot of objects were of different size and rotation from tge start, adjusted afterwards in unity
Some were .obj from tge start, some were .blend that zom gave me, some i had to rip from the game and had tgeir own problems
So here's an example of a really simple qc file to compile an mdl with a single "body" (i.e. smd file). It's just a soda can
You can define things like rotation, scale, position, etc from it
so you would've only had to open the model in blender then export it to smd once
and then all the adjustments could've been done in the qc
then you just click "compile" in crowbar or what have you and then you have an MDL with the adjustments
Considering my non existent knowledge of qc - that was way beyond me
And i was quick enough with my way anyway
yea tru but it's probably worth learning for when custom model support is a thing
Eh i already port them witgout much trouble with the .iqm exporter
Still should learn thus stuff
This*
for simple models it's p trivial. you could just adjust that can qc to pretty much any static model really. MDL decompilation through crowbar is really good so it's super helpful for referencing qc files
highly recommend crowbar
you can adjust origin of the model and whatnot too
Given all my knowledge is based on Half-Life MDLs but Quake MDLs should be mostly the same apart from animation stuff
once you start wanting to do animated stuff or stuff with different skins and etc etc you can't rely on noesis or blender or what have you to automatically export a working MDL for ya
So uh forgive me if this is a dumb thing to say but
Would any of this mdl stuff be useful to me considering we use iqm
OH WAIT iqm!
For dusk models
Its the only format dusk suppoerted for custon models yea
For anything mapping related both Trenchbroom and JACK do not yet support iqm so MDLs are preferred there
otherwise you won't be able to preview the model in the editor
Yea i figured as much bu
yeah that's up to you whether or not it's worth pursuing learning lul
Zom said hell make a custom fgd tool that just ports them
The custom models into the editor
huh interesting
At one point I considered forking Sledge to just add iqm support but I never went through with it, partially because I prefer JACK to sledge anyway
JACK is closed source and doesn't get updates anymore unfortunately
Thank fuck the j.a.c.k "enthusiast" got muted lmao
oh god was someone being annoying about it lmao
Uhhhhhhh well
He was here for like a week, amd posted "J.A.C.K > trenchbroom" over 20 times while shitting all over tb because he spemt 10 minutes on it, refused to look up how to use it and uh yeah
lmfao nice
yeah I'll fully admit I did exactly that and that's why I don't use TB but like I don't care if other people use TB lmao
I use JACK because I'm used to Hammer and JACK is just better Hammer
Thats fine by me, at least you dont smear modders for trying to learn something
yea nah people should use what they want
and I'll fully admit TB is probably better for beginners
Hammer paradigms are etched into my brain stem so I can never leave
I really want to give Source 2 Hammer a try I hear it's a treat
wonder if we'll get Source 2 BSP support 
half the reason I bought Half-Life Alyx was just for the sdk 
good
IQM is great except for its animation support which is disappointingly lackluster




