#3
Posted 25 July 2016 - 12:25 AM
I'll have a look at map v9 if I can find the specs (or maybe look into Mapster's source), but I'm not sure I'll support it because I bank on the fact that a sector is only a floor and a ceiling, there's nothing below the floor and nothing above the ceiling... I feel this format might throw a monkey wrench in my plans.
And now for the main event: "why writing a converter from Build maps to Quake is a stupid idea" (that should cover pretty much everything, except lighting, which is its own can of worm)
3D Space:
There's a huge fundamental difference between Build and Quake. While Build represent "empty spaces", Quake thinks in "solids". Needless to say it translates very poorly: there are multiple places just in E1L1 where the architecture collapses on itself (the secret apartment is merged with the arcade, the projection room clips through the hall near the elevator, etc). Moving objects would probably make the situation even worst as elevator and sliding doors could clip through the floor and collide with things located below or above, or move through walls and be seen from the other side.
Another thing: working with Build is more like respecting an agreement: it tells you how it works, and trusts you enough for not screwing everything up. Quake on the other hand is more like a set of rules you are unable to break. That's why conversion can be tedious at times: right now I'm having issues with the kitchen in E4L1 simply because one inner loop shares at least one edge with the parent sector; so I can't even count on the basic concept that a sector should contain the entirety of its inner loops when making the "empty space" to "solid" conversion.
Sectors are completely arbitrary delimitations. In E1L1, you have this light effect in the arcade that is created using a moving sector. Do you skip it's conversion, or do you keep it? How do you tell the difference from that usage of the sector effector to say, the cup merry-go-round in Babe Land? It could probably be decided by checking the height of the floor and compare it with the parent sector, but I have the feeling someone out there made some funky voodoo with this effect.
At some point, I wanted to move underwater sectors to the proper place, but quickly gave up on the idea. Because Build treats this effect like a teleporter you can create a huge hall, put two small pools on each side, and have a water transit system that connects the two pools only a few units away from one another. If I were to move these sectors, the distance wouldn't add up. But wait, it can get worst: in Hotel Hell, the underwater sector can be seen from a "dry" area, and the water surface is also connected to that dry area. So which sector should be moved to which, and how? Same with Cradle to the Grave room over room effect in Blood.
And let's not get started on scaling issues. While Shadow Warrior to Kingpin seem to be okay, Duke feels like playing in a doll house. I still have to try Blood and Powerslave, but I think I'll get yet different scales. Which means that areas you could easily access in one game becomes impossible to reach in another: Duke can jump his height but the Quake guy can only jump a few inches (forget climbing up that crate at the beginning of E1L1). Doorways also seem to be too narrow.
Interactive stuffs:
I don't think it will ever be possible to make a proper conversion with everything working (like doors, transports, light switches and the rest). Maybe if you decide to only convert maps from one very specific game to another very specific game, you could convert a handful of elements, but I'm not even sure how reliable that would be (it's a tricky problem involving the way you create your brushes in Quake, and the behavior of the element in game, what the target game code is able to do)
Exploding walls could work in Quake II, Kingpin and Half-Life, but not in Quake. I don't know what game could handle trains. Rotating doors could be converted though (I've got an idea to make them work, but that would require some sector optimization I still cannot do properly -- the join function in Build is buggy and I need to rewrite something entirely from scratch).
Engine limitations:
Build's masked walls could be converted in Kingpin, Half-Life and Quake III Arena, but Quake and Quake II wouldn't be able to handle it. Extending bridges (which modifies the shape of the sector) can't be re-created with brushes. The floor wave effect would also be impossible to translate, same for the waving wall effect in Blood and Shadow Warrior. Sector swapping in Redneck Rampage and Shadow Warrior cannot be reproduced... when you think about it: Quake engines cannot handle interactive objects with multiple functions (for instance, a switch in an elevator, moving along with the elevator -- they had to fake it in Half-Life; I think the LithTech was able to do things like that though)
TL;DR:
You either decide to only convert certain maps you know will work with another engine (their 3D representation is accurate and no fancy trick is used), or you decide to convert as much as you can, but you can only be sure about the static geometry (and even then, you can get screwed over). You may use a converter to obtain the layout and speed up the porting process of a map, but I wouldn't bet on the converter to do much more.
0