by Spike » Tue Sep 22, 2015 4:14 am
there is supposedly an edit button... somewhere... you might need to use tab to find it, but its there!
yay for minimalist user interfaces!
I'd completely forgotten about that markv patch. I was about to deny working on it too.
I believe it still has a couple of limits, specifically the max_leafs limit, which is imposed by lots of static buffers all over the place. probably also others due to me being lazy.
I kinda wish bsp2 had a concept of clusters, and stored the various brushes too, and lightmap scaling, and embedded rgb lighting. that's not entirely just wishful thinking - all but the first of those are already actually implemented to some degree via extra bspx lumps, but meh, needs tools, and people willing to utilise it, and that requires standards, and that requires harassing people, and I'm lazy, and its easier to just directly load .map files... wait, this isn't the what are you up to thread.</tangent>
bsp2 really is just a case of making dupe versions of the various bsp dfoo_t structures so that all the shorts are either ints or floats. then using one set or the other. the existing byteswapping code means that its all copied over anyway.
and to then make sure all your mfoo_t structures also use ints instead of shorts... hint: msvc has a setting to enable warnings about data type truncations, which can be quite handy in situations like this, yay for easy debugging.
regarding 666, what irks me is that it still has no way to report to the server that a client supports it, so public servers either can't use 666, or many clients crash-to-console. imho, this makes it pointless as far as multiplayer is concerned.
the server is free to implement as little of the protocol as it wishes (see msvc remark above), considering that much of the protocol doesn't contribute to anything to do with map sizes (just precache limits iirc), so long as other clients don't get confused (I think you'd need the nextthink values networked, I don't remember anything else). the client only really needs to implement as much of it as the server does, yay for subsets (stub the rest if you cba to implement it properly yet, ideally with helpful messages about it being you that is lazy rather than the server being buggy). yay for implementing things in phases - the only way to get something working without getting bored before its complete!
its probably worth mentioning rmqe's 999 protocol, which is mostly just 666 but with some extra options for different primative sizes (which allows smoother rotations or larger boundaries to maps). I think it also adds .scale, but meh to that.
EDIT: mwahaha! yay tab!
.