PDA

View Full Version : [Wanted] Skilled programmer who can work with BlamLib



Gravemind
July 16th, 2012, 07:49 PM
I'm looking for a skilled programmer who would be able to work with Kornman's BlamLib and make methods for resource extraction from Halo3, such as models/bitmaps/animations/sounds etc for use in HaloCE. Its a project I've wanted to do for a long time, but I lack the skills. My first attempt was Adjutant (a program for model and bitmap extraction some of you might know) but it used a different library to BlamLib and had lots of flaws. As far as I know, BlamLib has all the needed tag interfaces to find the resources, it just needs the specific methods to extract them. All I need you to do is the extraction methods, I can make the UI and actual program myself.

If you cant work with BlamLib, I have the source for the HaloDeveloper lib which is much easier to use, but also not as robust from what I know. With BlamLib you probably wouldn't have do much lib editing and could just make methods that use the libs existing methods, but with HaloDeveloper you would actually have to go inside the lib and add all the code.

The project isn't the tool itself, but I'll need the tool to get anywhere (although if it ever gets made I'll probably release it anyway). If you can help PM me, or comment with any questions.

neuro
July 17th, 2012, 04:30 PM
'make this thing for me'

supersniper
July 17th, 2012, 04:59 PM
if he just said that it would've saved so much time. I actually read his post before yours :/

Gravemind
July 17th, 2012, 07:20 PM
If I just said "make this thing for me" then that would be no help to anyone who actually wanted know what I need help with. The thread is aimed at people who can actually help; that's why I described what I wanted to be done.

KantIZBack
July 17th, 2012, 09:45 PM
Blamlib is actually a pretty easy source to read compared to a lot of other halo map libs, if you read the Coding Standard's (https://code.google.com/p/open-sauce/wiki/Doc_CodingStandards) and Using the Code (https://code.google.com/p/open-sauce/wiki/UsingTheCode). I was writing a H3Map library but lost interest because it has already been made, and what is made is better than anything i can make. So i suggest that you just look at blamlib some more its pretty simple, in fact last time i look i think there was a model extraction for some version of Blam.

And there is Here (https://code.google.com/p/open-sauce/source/browse/#hg%2FBlamLib%2FBlamLib%2FRender%2FCOLLADA%2FExpor t)

Gravemind
July 17th, 2012, 10:04 PM
I'll have a look at the COLLADA exporter, I didn't see that in there before. But with animations and sounds, it's not that I can't use BlamLib, the main problem is that I don't know how and where the data is stored in the map file. All I know is that it has something to do with the zone and ugh! tags. For bitmaps, there's nothing in BlamLib to convert them from an xbox formatted bitmap to a PC viewable one. Kornman said he was going to use the XDK to try and do it, but he never got around to it. Also the sounds would need to be converted from xbox WAV to normal WAV.

Even if I knew where to get the needed data, for sounds an animations I'd have no idea how to make it into a useful file.

EDIT: I had a look at the COLLADA exporter and it only has methods for H1 and H2, and I wouldn't be able to add any for H3.

Kornman00
July 18th, 2012, 02:08 AM
Halo3+ resource data interop (loading) is all handled in BlamLib\BlamLib\Blam\Cache\Tags\Code\CacheTagsGen3 rd.cs (I used the same cache_file_resource_layout_table definition from H3 in Reach so I'm assuming I found there were no structural changes). It's up to each game implementation to define their tag resource structures and expose them via their CacheFileResourceDefinitionFactory, as this is what the interop code uses to load specific resource types (bitmap, sound, etc) into usable tag data. ODST introduced a new tag resource type post-H3, which I added support for. IDK if Reach added anything new or not, or if the actual tag resource structures changed from H3.

Our COLLADA exporter interface isn't specific to any one game. Each game that needs support for exporting geometry/animations/etc to COLLADA has to implement the abstract interfaces that we use.