Friday, July 11, 2014


Usually when programmers look into a new language they have some sort of simple "Hello World" app they write to get a feel for it. Some create hex editors but for me its always been a clone of a certain Russian puzzle that I have spent far to much of my life playing on various platforms. So, I present to you, Dartris after a 10 hour coding marathon. Just don't tell the The Tetris Company I created it.

Monday, September 16, 2013

Defiance Tools v0.5.2 Released

I said  no more releases unless it was a bug fix right? Well this is a bug fix release.  Found a memory leak that made extracting every sound with snd2wav go boom after a while. While I was back in the code I had an idea to boost the performance as well. The snd2wav tool runs a lot faster now.

Thursday, September 12, 2013

ForgeLight Tools in Development

I've been playing PlanetSide 2 since the tech test back in July 2012. As a PlanetSide vet I was fortunate to get in on the first wave. I immediately started to poke around in the game assets and wrote an asset unpacker to get all the DDS files to theme my Twitch channel.  I never did much work on the internal formats at that time. Now that Defiance Tools has wrapped up I've decided to go back to PlanetSide 2 and create more extensive tools like what I have done for other projects.

Since PlanetSide 2 uses the ForgeLight engine that will also power Everquest Next I've decided to name the project ForgeLight Tools with the intention of supporting any other games that use the engine.

So, first off I rewrote my .pack file unpacker to be a lot more flexible and work like the other asset extraction tools I've released.

I also created a tool to compare .pack files between different client versions to track changes. I did this for Defiance Tools and it was invaluable when tracking what the developers were doing between client patches.

I'm in the process of creating a tool to extract and convert the .dme to .obj and .mtl files that you can open in Blender. So far this was A LOT easier than Defiance was to figure out. Trion went a bit crazy with bit flags in the formats compared to SoE. I have a 80% automated process of extracting  the position, texture coords, and diffuse textures.

New Conglomerate MAX
As usual I'll release binaries and the source once I get the tools stable enough to release and working with all the assets.         

Tuesday, September 10, 2013

Defiance Tools v0.5.1 Final Released

I released this on August 8th but never posted about it. I've completed everything I wanted to do with the project and unless it's to fix bugs this will be the final release. Take a look at the project's to see everything you can do with the tools or checkout the Github project page. Thanks for /u/etaew for the testing and suggestions.

You can find all the binary releases on the Github release page along with the source.

I've already started on a new tools project for another game. 
More to come soon.

Friday, July 26, 2013

Defiance Tools v0.2.0 Released

Skinned meshes are now working! You can now extract all the NPCs,  weapons, outfits, and a lot more. Complete overhaul of the command-line switches so you don't have to specify every WAD file. It now just reads and searches the entire WAD directory. mes2obj and ski2obj now allow you to generate a sub directory with the same name as the asset and put all the OBJ, MTL and PNG files in it. Thanks for /u/etaew for the suggestion. Lots of other bug fixes and major code cleanup. 

Defiance Tools v0.2.0

Please report any issues on Github and I'll try and fix them

I've been testing the extracted files with Blender and I did notice one issue. The game's engine stores emissive masks the in some of the diffuse textures alpha channel. This means that when you view the meshes in Blender you get this.

The only way to fix it is to tell Blender to not use the alpha channel to get this result. 


The problem is that the not all the meshes use the alpha in this way and there is no way to test for it and strip out the alpha unless I start digging into the shaders. It's easier to just manually disable the alpha or remove it. In many cases the alpha channel is used for transparency as you would expect like the glass in the Tollbooth here.
Broken Tollbooth Glass

Thursday, July 18, 2013

Defiance Mesh Extractor v0.1.0 Released

The Deck of the New Freedom

I finally have the mesh extractor at a usable state. It can now extract meshes that use the most common shaders to OBJ & MTL files. The OBJ files can then be imported into Blender. The OBJ format is very simplistic and doesn't support decals or normal textures very well so only diffuse (color) textures are supported. Currently the extractor only supports the static meshes like buildings and non-moving vehicles and not animated skins like the Volge or player outfits. That's coming eventually. The formats are almost the same but I'm thinking about switching to the Collada format so I can support more than just the diffuse textures like normal, specular, and emissive textures. I also want to try and get the skeletons extracted so the skins will be already rigged and ready to animate.


Friday, July 12, 2013

Defiance Extraction Tools v0.1.0 Released

I've been working on this project on an off since the Defiance beta. I actually started this project to get the textures to create a Defiance theme for my Twitch channel like I did for PlanetSide 2. With that done I had requests for audio and other assets to be extracted. I was going to wait to release until I had the mesh extraction automated but it was taking longer than I expected so I'm just releasing what I have. If any of you have been on /r/defiance you may have seen the Volge renders of helmets, weapons and mobs I've been releasing so as you can see I'm very close. It's just not completely automated yet and requires some manual steps. There are several different tools but I expect most will be interested in the texture (tex2png) and audio (snd2wav) extraction tools. The mesh extractor mes2obj is not working yet but it dumps a lot of cool information about the materials, material params, vertices, and indices of a mesh mostly for my research. There are other tools but most of the others would only be interesting to you if you are researching the file formats. The waddump tool as you would guess dump the raw assets from the WAD files and wadsdiff allows you to see what assets the devs changed between client patches. If you care about those tools then you probably know how to compile them from source.


The source for all the tools are at my Github repository.