Duke4.net Forums: Build to Quake - Duke4.net Forums

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Build to Quake

#1

Hey.

I've been working on this thing to convert a map to Kingpin (which uses the Quake II engine) and thought I might as well drop a copy over here (sorry, I didn't feel like necro-bumping a 4 years old thread)

So here it is: a Build map to Quake II map converter (there's minor differences between Quake and Quake II maps -- that format is also used by Quake III Arena I believe), it supports almost every build map format (standard v4 to v7, and Monolith custom v6.3 and v7). It's still in early alpha, yet outputs a pretty decent geometry (still need to clean up some sectors so they can be converted). There's no support for textures (I think I'll have to learn about matrices for that), no support for entities either (even though it doesn't sound like a big deal to put some markers here and there), and no option whatsoever (it's really alpha, the input file must be called "input.map" and it must be in the same directory as cutAlpha). Don't expect to convert, compile and play; it's not going to work.

(I should probably update the universal map converter too, now that I have enough info about the Blood map format)

EDIT: Latest version here, supports GRP files, better MAP support, added ART extraction, and some other things.

EDIT: A quick edit, a little less than a year later (just in case you found this thread via a Google search or something): I rewrote most of cutAlpha and renamed the program sectorCut, it's not perfect yet but does a far better job than cutAlpha to create viable Quake maps (plus, it also support Doom engine games). You can get the latest version here, and I'm also attaching the current version to this thread in case the link goes down.

Attached File(s)



This post has been edited by alias conrad coldwood: 29 April 2017 - 09:21 AM

6

User is offline   Paul B 

#2

A few questions for ya:

1) How will the special sprites (Sector Tags, Sector Effectors) work in the Quake II engine?

2) I'd imagine multi-player will now work with these maps?

3) Even if you could get the HRP textures working with the new engine that would be decent. I am not sure which version of Mapster first supported TROR, does your conversion tool take TROR (True Room over Room) into consideration?

4) The latest map format is now at Version 9 do you plan on adding future support for version 9 maps going forward?
(Wish the WIKI had more information on the differences between map versions.

I haven't played Kingpin since the late 90's & this conversion could bring new life to it through Mapster as the medium.

This post has been edited by Paul B: 24 July 2016 - 03:43 PM

0

#3

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

User is offline   Micky C 

  • Honored Donor

#4

Given all that, I'm pretty amazed you got any kind of conversion working as much as you did.
0

#5

 Micky C, on 25 July 2016 - 01:54 AM, said:

Given all that, I'm pretty amazed you got any kind of conversion working as much as you did.

The map format is really crazy. Here's another oddity I just figured out: I think sector[368] in E4L1 (the kitchen I had trouble to convert) is messed up. I initially thought it was because doors were touching the edges of the parent sector (which is partially true), but in the map internals it looks like the sector itself is stored AFTER the first inner loop, so it looks like this: the first loop has 4 walls (maybe the table), the second has about 20 (that'd be the sector), and the third has 4 again (could be the fridge door). Build doesn't seem to care (and I'm not sure why it would), but yeah... I wasn't expecting that.

Basically, I check for inner loops in sectors, get the rightmost point for each, and sort them right to left. Then I trace I ray from that point to the right, expecting to eventually reach a wall from the parent sector. When I got the intersection, I "cut" the shape using the ray (so every walls are just one continuous string of clockwise points). It didn't work that one time because I foolishly assumed the very first loop to always be the main sector, which has always been true until then.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic


All copyrights and trademarks not owned by Voidpoint, LLC are the sole property of their respective owners. Play Ion Fury! ;) © Voidpoint, LLC

Enter your sign in name and password


Sign in options