Not sure quite how technical you want this. The human-readable form is: I wrote a geometry decompiler.
-----BEGIN GEEK ENCRYPTED MESSAGE----- I am working on a family of tools to remove some of the (AFAIK) unnecessary limitations of the current Half-Life tools. Part of doing this was figuring out the exact BSP file format and how it can be abused. A map concept Spook and I've been beating around really would be easier if some of the annoying behaviors of the existing tools were fixed, and some features are needed that would be really nasty to try and hack into Zoner's codebase.
The BSP file format stores world solid/not-solid geometry in a binary space partition tree. My original intent was to grow the solid portions and use that to produce a new clip hull for the onos. Something in my code was majorly bugged, so I added a dump to MAP to help debug the intermediate geometry. Unfortunately the BSP file stores planes as a floating-point normal and radius, while the MAP needs three integer points on each plane. With my usual total brain meltdown when exposed to geometry I still havn't managed to compute those three points correctly, so the MAP output used a rounded approximation.
My job picked up and the code is going to require rearchitecting to be debugable, so may as well let the interested mappers polish off the recovery. -----END GEEK ENCRYPTED MESSAGE-----
As a developer, I try to manage some quality control on my releases: this tool will never be up to scratch without a complete rewrite. As my objective is to produce a compiler rather than a decompiler, fixing it is really not worth the effort.
And as a mapper and member of the community, I have no intention of providing something that will allow chunks of people's maps to be easily ripped and copied. I'd like to believe the average mapper would use a functional decompiler responsibly, but it only takes one.
So, no.
[edit]If there's going to be more questions/discussions about the decompiler someone may wanna start a separate thread. Really not *trying* to threadjack... [/edit]
<!--QuoteBegin--Parasite+Aug 21 2003, 01:23 AM--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (Parasite @ Aug 21 2003, 01:23 AM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> <!--QuoteBegin--ViPr+Aug 21 2003, 06:07 AM--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (ViPr @ Aug 21 2003, 06:07 AM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> i don't think we need the original authors permission as long as we give credits. <!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd--> Has anyone even bothered to look at the Nancy read me or search the forums for anything he may have said on the matter and see Devil Dogs take on that...if there is no mention of permissions, then he probably doesnt care...if he says "noone may use this map as a base for thier own work" then you are only adding insult to injury.
But I must say Lazer found the best way to go about it, recreating a BSP <i>for the origional author</i> with no plans for a public release...A far greater idea than any of the other 500 "nancy recreation" threads. If worse comes to worse, DD doesnt respond and we learn to use "unstuck" on servers that run the origional Nancy. Best case scenario, DD appreciates your efforts and either does the needed updates himself or hands it over to Lazer... <!--QuoteEnd--> </td></tr></table><span class='postcolor'> <!--QuoteEEnd--> Only adding insult to what injury?
But it applies quite well here scince he did lose his friggin map in a HD crash(Injury), and if he made a point of asking people not to recreate or use his map, but people went against his wishes anyway(insult)...
BTW Lazer...I didnt back up my files for 2.0 so I cant compare that cargo screenie to the real one...but damn. Thats gotta be nearly exact.
You guys have done an AWESOME job!!! Big congrats!! Nancy was my favorite map and I was very sad to see it go. I really like your attention to detail and your desire to keep everything from the orginial map. I'm curious though as to how you plan to make changes to it. For example, I hope you make NoName hive alittle differently and plan on adding seperate ways on getting into most hives. Keep up the great work!!
Well I'm not quite sure why noname needs changing. Maybe if I make the vents so you can't shoot out of them? But still I'm not changing anything till its done.
No I haven't all but left the community, so <!--emo&:p--><img src='http://www.unknownworlds.com/forums/html/emoticons/tounge.gif' border='0' style='vertical-align:middle' alt='tounge.gif'><!--endemo--> to whoever said that. I dont browse the forums often, and when I do, its in others (like the PT ones and such). I think I've recieved maybe 2 emails (one recently) about rebuilding nancy, and I had thought it was clear from previous threads I've answered I'm not going to do it, due to time and the desire to work on something new for NS. And I've been in contact with Chris about trying to decompile the map with as little errors as possible. It looks like its coming along well as a copy, but I'm not going to give it my seal of approval and pass that to flay if it looks clunky or poopy, so don't slack off. It may be a copy, but that's still my baby <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif'><!--endemo--> Flushing the vents is a good idea (as for some minor changes) but that map was very borderline in terms of the allocblock full error, so watch out for that when you start getting done at the end.
edit: Noname was originally "Mother" but my last compile to fix a few textures evidently unnamed that hive (just some fyi)
Have fun, I've really gotta get off this and back to my other projects before my supervisor kills me <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif'><!--endemo-->
<!--QuoteBegin--devilblocks+Aug 26 2003, 02:21 PM--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (devilblocks @ Aug 26 2003, 02:21 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> It looks like its coming along well as a copy, but I'm not going to give it my seal of approval and pass that to flay if it looks clunky or poopy, so don't slack off. It may be a copy, but that's still my baby <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif'><!--endemo--> Flushing the vents is a good idea (as for some minor changes) but that map was very borderline in terms of the allocblock full error, so watch out for that when you start getting done at the end.
edit: Noname was originally "Mother" but my last compile to fix a few textures evidently unnamed that hive (just some fyi)
-dd <!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd--> Don't worry about it not being like the original. The structure is either exact or unnoticibly off in some places, all thanks to Chris' decompile. I'm not sure what you mean by flushing the vents. If you mean make them more simplified, I could do that, but I've noticed a lot of people think what made nancy so unique was the maze like feel. (although if you have a general sense of direction they can be VERY helpful) Also, what's the allocblock full error? I don't think I've heard of it before.
And on another note: I started transfering over Auxillery Generator from the decompile today. I haven't started texturing it yet, I'm still finishing reworking the brushes so there isn't any overlapping or twisted faces. (the pipes didn't decompile to well)
By flushing, he meant all those vents that stuck out 2 inches from the wall making it hard for skulks to get in it <!--emo&:p--><img src='http://www.unknownworlds.com/forums/html/emoticons/tounge.gif' border='0' style='vertical-align:middle' alt='tounge.gif'><!--endemo-->
I do believe from older threads that the abundance of allocblockfull in NS mapping was due to bad info_locations. I'll try to find KFS's thread later.
alloctionblock:full error is one of the worst onesz to get by my knowledge. Out of all the errors i have come across this one is not fixable as easier as the others. Just hope you saved it at certain stage before this error occured.
ssjyodaJoin Date: 2002-03-05Member: 274Members, Squad Five Blue
edited August 2003
allocblockfull im pretty sure has something to do with hitting limits of the hl engine. I think it was a brush/face limit. I usually tend to get them when im doin ns maps, thats y i stopped a while ago. I tend to put way way too much detail in and i had decided to wait for a new engine. But after a year, im back to ns. Hope i dont hit it.
Minsk rocks <!--emo&:D--><img src='http://www.unknownworlds.com/forums/html/emoticons/biggrin.gif' border='0' style='vertical-align:middle' alt='biggrin.gif'><!--endemo--> I loaded the .map into hammer, and I'd like to point out a single thing: using parts of the decompile could result in <i>abysmal</i> performance. I've noticed in many, many places how single brushes have been utterly mangled, or fragmented into 10 or more separate brushes.
Yes, this can be done. It's just going to be incredibly hard to use the decompile - I believe Lazer's process to be quite a bit easier. Good luck!
ssjyodaJoin Date: 2002-03-05Member: 274Members, Squad Five Blue
He is using the decompile to start off of. Of course there are errors, things that need touchups. But its a lot easier than doing it all from scratch. And the proportions are all correct already.
I just believe that it would just plain be easier to continue from scratch - from screenshots that he had taken ingame. Looking at the decompile, I can't make heads or tails of it. So many of the brushes are, as Minsk put it "totally whacked" and irreparable. Just looking at the composition of a square wall and noticin that it is made of at least 60 vertices opens one's eyes <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif'><!--endemo-->
The gigantic areas that were created <i>above</i> the map were created straight off of the original ceilings, so those would have to be sorted as well. There are also quite a few brushes that extend outside the boundaries of the map. In short: it's a mess. Iit's a definite start, and a breakthrough, but it's going to take quite the dedication and luck to both clean it up and leave intact the scale and complexity of the architecture.
Of course, maybe some eat this kind of thing for breakfast, and I'm just a lazy nub. Time will tell, now that the source has been released <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif'><!--endemo-->
I'm so confused. I've spent the last three days re-making Port Engine Room from scratch. It's about 30% Done now. Crud, now someone decompiles. I loaded up the .map file however, it makes no sense I have no clue where I am especially because of the AAATRIGGER tex being on everything.
Oh and don;t worry DD, I don't slack off, I'm a perfectionist, so it'll look like Lazer said, "perfect or unnoticably close enough" or something, to the original.
Anyway, Lazer what doy ou want me to do? What are you doing with teh decompile and lastly, how did you decompile taht thing Chris? Some in-house tool? Thanks,
allocbloc full is the worst. Its a generic message that means you ran out of memory somewhere, which obviously isn't very helpful. I believe, if memory serves, I had everything at 70% full and under, and I was still batteling it. KFS IIRC had a correlation between the size of info_loc entities and this, but that is not always the cause. Just be sure to keep several copies of the map so incase 1 build fails, you can go back. Otherwise, prepare for a lot of guess work, moving things, and/or simplifying.
A tip for the vents. When I made them, I just cut the holes in the map where I wanted them to dump playes back in the ship and which holes would connect to others, I really didn't care about the actual twisting of the vents. IIRC there are 3 vent "systems". So if you just make sure the holes are all in the same place, and jumping in hole A lets you get to hole B but not hole C, you should be fine. Oh yeah, and don't put the vents over any halls if you can help it, initially they were right over the halls, but during PT we moved them since it hindered the commander's view.
Oh man, getting excited here. I can't believe you are this close so soon after the release of 2.0. This is great. I can't wait to get back on nancy and stretch my skulk legs. <!--emo&:p--><img src='http://www.unknownworlds.com/forums/html/emoticons/tounge.gif' border='0' style='vertical-align:middle' alt='tounge.gif'><!--endemo-->
Alright, well I'm doing the vent system last, but I'll keep all that in mind.
DarkATi: What you do is select all the brushes making up port engine and copy and paste it into a new .rmf file. Then you will noticed that the brushes are butchered in ways that appear to be illogical. This is because of the decompile process. Make sure you rearrange the brushes to make more sense. <i>Why use 2 blocks next to eachother to make a square object when it can be done with 1?</i> I think that is a good example of what I mean. After all that is done and you have the brushes corrected, do the texturing. If you are unsure of a texture, you can load the original .bsp file into quark and roam around it. This will let you click on faces and see what texture was used. Then when you think you have all that done, feel free to move onto other areas that connect to it.Don't bother with the wide vent in the outside hallway that much because I'm about to prepare it right now for when you're ready to send me port engine. I can easilly connect the two. I believe I had someone woking on the readyroom, but I could probably whip that up from the decompile within an hour or two, so I gotta check with him.
Progress Update: Auxiliary Generator is very close to being done. About 80% of the texturing is done, I just gotta work on the little corner of the room where the res node is. After that I'm either gonna move to the crew lockers or Mother. (I'll call it mother instead of noname since that was the original plan)
Alright well its getting late so I'm going to bed. But here is what I have after a day's work on Auxiliary Generator. (yes the lighting is off, I haven't gotten around to that yet... so more "final" shots of this part tomorrow)
Oh, and DD, you don't happen to have a copy of your lights.rad file anywhere? I really could use the values for those green lights and the little red ones.
Comments
-----BEGIN GEEK ENCRYPTED MESSAGE-----
I am working on a family of tools to remove some of the (AFAIK) unnecessary limitations of the current Half-Life tools. Part of doing this was figuring out the exact BSP file format and how it can be abused. A map concept Spook and I've been beating around really would be easier if some of the annoying behaviors of the existing tools were fixed, and some features are needed that would be really nasty to try and hack into Zoner's codebase.
The BSP file format stores world solid/not-solid geometry in a binary space partition tree. My original intent was to grow the solid portions and use that to produce a new clip hull for the onos. Something in my code was majorly bugged, so I added a dump to MAP to help debug the intermediate geometry. Unfortunately the BSP file stores planes as a floating-point normal and radius, while the MAP needs three integer points on each plane. With my usual total brain meltdown when exposed to geometry I still havn't managed to compute those three points correctly, so the MAP output used a rounded approximation.
My job picked up and the code is going to require rearchitecting to be debugable, so may as well let the interested mappers polish off the recovery.
-----END GEEK ENCRYPTED MESSAGE-----
Chris
And as a mapper and member of the community, I have no intention of providing something that will allow chunks of people's maps to be easily ripped and copied. I'd like to believe the average mapper would use a functional decompiler responsibly, but it only takes one.
So, no.
[edit]If there's going to be more questions/discussions about the decompiler someone may wanna start a separate thread. Really not *trying* to threadjack... [/edit]
Chris
Has anyone even bothered to look at the Nancy read me or search the forums for anything he may have said on the matter and see Devil Dogs take on that...if there is no mention of permissions, then he probably doesnt care...if he says "noone may use this map as a base for thier own work" then you are only adding insult to injury.
But I must say Lazer found the best way to go about it, recreating a BSP <i>for the origional author</i> with no plans for a public release...A far greater idea than any of the other 500 "nancy recreation" threads. If worse comes to worse, DD doesnt respond and we learn to use "unstuck" on servers that run the origional Nancy. Best case scenario, DD appreciates your efforts and either does the needed updates himself or hands it over to Lazer... <!--QuoteEnd--> </td></tr></table><span class='postcolor'> <!--QuoteEEnd-->
Only adding insult to what injury?
But it applies quite well here scince he did lose his friggin map in a HD crash(Injury), and if he made a point of asking people not to recreate or use his map, but people went against his wishes anyway(insult)...
BTW Lazer...I didnt back up my files for 2.0 so I cant compare that cargo screenie to the real one...but damn. Thats gotta be nearly exact.
Sorry.
edit: Noname was originally "Mother" but my last compile to fix a few textures evidently unnamed that hive (just some fyi)
-dd
I'm glad it got the greenlight <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif'><!--endemo-->
Go, lazer, go!
Included:
o ns_nancy_recovery.map: geometry decompile
+-- some angled volumes are weird, some brushes are totally whacked
+-- hope 'ya like AAATRIGGER
o ns_nancy.wad: included textures
o ns_nancy.txt: dump of entities.
+-- "model" "*X" means that the entity is associated with entity X in the decompile
<a href='http://www.easternshores.qc.ca/~cwolfe/nancy_recovery.zip' target='_blank'>http://www.easternshores.qc.ca/~cwolfe/nan...cy_recovery.zip</a>
Have fun, I've really gotta get off this and back to my other projects before my supervisor kills me <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif'><!--endemo-->
Chris
Thats nice of him, I do hope that he at least gives his stamp of approval on the final build, just to show us if he really likes it.
edit: Noname was originally "Mother" but my last compile to fix a few textures evidently unnamed that hive (just some fyi)
-dd <!--QuoteEnd--></td></tr></table><span class='postcolor'><!--QuoteEEnd-->
Don't worry about it not being like the original. The structure is either exact or unnoticibly off in some places, all thanks to Chris' decompile. I'm not sure what you mean by flushing the vents. If you mean make them more simplified, I could do that, but I've noticed a lot of people think what made nancy so unique was the maze like feel. (although if you have a general sense of direction they can be VERY helpful) Also, what's the allocblock full error? I don't think I've heard of it before.
And on another note: I started transfering over Auxillery Generator from the decompile today. I haven't started texturing it yet, I'm still finishing reworking the brushes so there isn't any overlapping or twisted faces. (the pipes didn't decompile to well)
I do believe from older threads that the abundance of allocblockfull in NS mapping was due to bad info_locations. I'll try to find KFS's thread later.
Minsk rocks <!--emo&:D--><img src='http://www.unknownworlds.com/forums/html/emoticons/biggrin.gif' border='0' style='vertical-align:middle' alt='biggrin.gif'><!--endemo--> I loaded the .map into hammer, and I'd like to point out a single thing: using parts of the decompile could result in <i>abysmal</i> performance. I've noticed in many, many places how single brushes have been utterly mangled, or fragmented into 10 or more separate brushes.
Yes, this can be done. It's just going to be incredibly hard to use the decompile - I believe Lazer's process to be quite a bit easier. Good luck!
The gigantic areas that were created <i>above</i> the map were created straight off of the original ceilings, so those would have to be sorted as well. There are also quite a few brushes that extend outside the boundaries of the map. In short: it's a mess. Iit's a definite start, and a breakthrough, but it's going to take quite the dedication and luck to both clean it up and leave intact the scale and complexity of the architecture.
Of course, maybe some eat this kind of thing for breakfast, and I'm just a lazy nub. Time will tell, now that the source has been released <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html/emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif'><!--endemo-->
Oh and don;t worry DD, I don't slack off, I'm a perfectionist, so it'll look like Lazer said, "perfect or unnoticably close enough" or something, to the original.
Anyway, Lazer what doy ou want me to do? What are you doing with teh decompile and lastly, how did you decompile taht thing Chris? Some in-house tool? Thanks,
~DarkATi
A tip for the vents. When I made them, I just cut the holes in the map where I wanted them to dump playes back in the ship and which holes would connect to others, I really didn't care about the actual twisting of the vents. IIRC there are 3 vent "systems". So if you just make sure the holes are all in the same place, and jumping in hole A lets you get to hole B but not hole C, you should be fine. Oh yeah, and don't put the vents over any halls if you can help it, initially they were right over the halls, but during PT we moved them since it hindered the commander's view.
DarkATi: What you do is select all the brushes making up port engine and copy and paste it into a new .rmf file. Then you will noticed that the brushes are butchered in ways that appear to be illogical. This is because of the decompile process. Make sure you rearrange the brushes to make more sense. <i>Why use 2 blocks next to eachother to make a square object when it can be done with 1?</i> I think that is a good example of what I mean. After all that is done and you have the brushes corrected, do the texturing. If you are unsure of a texture, you can load the original .bsp file into quark and roam around it. This will let you click on faces and see what texture was used. Then when you think you have all that done, feel free to move onto other areas that connect to it.Don't bother with the wide vent in the outside hallway that much because I'm about to prepare it right now for when you're ready to send me port engine. I can easilly connect the two. I believe I had someone woking on the readyroom, but I could probably whip that up from the decompile within an hour or two, so I gotta check with him.
Progress Update: Auxiliary Generator is very close to being done. About 80% of the texturing is done, I just gotta work on the little corner of the room where the res node is. After that I'm either gonna move to the crew lockers or Mother. (I'll call it mother instead of noname since that was the original plan)
Oh, and DD, you don't happen to have a copy of your lights.rad file anywhere? I really could use the values for those green lights and the little red ones.