Object Viewer Alpha 1 Released - NemPosted: Feb 17th, 2006 - 7:33:41 pm


Crafty is a 3D object, material, model and file browsing utility targeted towards Half-Life modders or enthusiasts looking for a Steam Independent application for quick previews. It currently supports Half-Life 2 .bsp, .mdl, .vmf and .gl formats along with Half-Life .bsp, .mdl, .map and .rmf formats in a variety of render modes.

Release Schedule:

As I stated before this is a feature incomplete release meaning that some features targeted towards the final release have yet to be implemented and the software, though stable and capable, is not ready for the general users yet, just those who want to get a head start in the game. I will be releasing updated builds weekly up until the time of the final release (hopefully within the next two months).

System Requirements:

The requirements for Crafty change dramatically depending on what you are trying to do with it, but for general usage (say Source .bsp viewing) the minimum and recommended system requirements can be found here.

Note: There are still several optimizations that need to be made on both CPU and RAM utilization so I expect these requirements to come down in the final release.


To set Crafty up:

  1. Start Crafty.
  2. Select Setup then Options.
  3. Under the File System tab, select your Steam Directory then the User Name whose custom content you wish to use.
  4. Click OK.
  5. Click Setup then Profiles and select the modification whose content you wish to open.
  6. Click File then Open and load your level. (Alternately you can use the File System Browser in the View menu to load an object from a (GCF) package.)

Selecting a profile loads all the commercial and custom resources associated with the profile. If you wish to load a Counter-Strike level then a Day of Defeat level, you must change profiles in between loads. You can double check which resources are loaded at any time by opening the File System Browser located under the View menu.


If you experience any bugs using Crafty (specifically crashes) please let me know (at 30,000+ lines of code there are bound to be a few). If you think your bug may simply be a feature I have yet to implement, please hold off until the final release. When posting bugs it helps if you can:

  1. Explain what you did to cause the bug and if it is repeatable.
  2. Post any related error message and the stack trace if it is a crash.
  3. Post the log (in the Console) if you believe it contains valuable information (i.e. red text).
  4. Post any relevant system information (CPU, RAM, GPU, OS, Framework Version etc.).


Object Viewer

Object Viewer

File System Browser

Material Browser

Model Browser


Almost forgot! You can download Crafty here.

Modified: Aug 7th, 2006 - 1:26:00 pm[ 163385 Views ]

[ 1 2 3 4 5 ]

16. BluefangPosted: Feb 22nd, 2006 - 8:42:11 pm
Ok, I've played around with it a bit and the only suggustion I have so far is that double clicking a file in the FSB (currently shell execute) should open the file in Crafty if it can, not shell-execute them. It looks like you are already aware of the issue with mangled models.

17. ilcannibalModified: Feb 23rd, 2006 - 2:44:01 am
The problem I am having is that when I installed crafty2 update 2 then I mounted my dod source dod folder in the file browser. As well as the materials and models.

I open up a dod source map dod_runoff.bsp I get this error below:


2GHz CPU , 1GB RAM , WIN XP PRO, Framework Version 2.0).

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at Crafty.Objects.CVBSPObject.Render(CVBSPObject* , COptions* Options)
at Crafty.Engine.COVEngine.Render(COVEngine* )
at Crafty.Engine.CEngine.Paint(CEngine* )
at Crafty.CObjectViewer.picView_Paint(Object sender, PaintEventArgs e)
at System.Windows.Forms.Control.OnPaint(PaintEventArgs e)
at System.Windows.Forms.PictureBox.OnPaint(PaintEventArgs pe)

18. NemModified: Feb 23rd, 2006 - 2:58:45 am
Alrighty, have added this feature.

What type of Video Card do you have? I think it might be the multitexturing, Crafty doesn't check right now whether you have multitextruing support for BSPs (I'll add this for Alpha 3). Multitextruring is an extension so some video cards do weird things with it.

I've added the lightmap feature, you'll like it, it's quite sexy. I've also discovered that OpenGL's texture resize algorithm sucks (it's making the lightmaps look blocky) so I wrote my own bilinear expansion algorithm which produces much smoother results. I've also figured out the lightmap UV coordinates for the displacment maps. I'm not sure what the lump in the BSP with the Barycentric coordinates is all about (maybe dynamic lighting, indeed I spent a great deal of time trying to figure out how these coordinates somehow translated into UV coordinates) but all there is to it is a linear interpolation between the UV set { [0,0], [0,1], [1,1], [1,0] } starting from the StartPosition. Easy as pie.

Now if I only had some pie...


19. RofPosted: Feb 23rd, 2006 - 11:51:09 am
Ah, good stuff. Congrats on getting displacement lightmaps working. I never worked out what that lump was all about either.

No pie, but have a watermelon: watermelon

20. ilcannibalPosted: Feb 23rd, 2006 - 6:56:15 pm
My Video card is a NVIDIA GeForce 6600 GT I forgot that on my specs above sorry. Thanks for your response I hope Alpha 3 will come out soon.

21. NemPosted: Feb 25th, 2006 - 1:09:01 am
Humm, weird, a GeForce 6600 GT should definitely have multitextruing... Anyways, I reworked a lot of the material system for alpha 3 (which is up now) so give it another shot.

22. ilcannibalPosted: Feb 25th, 2006 - 2:07:11 am
Man Thanks I can see the maps now. Is there a way to have this program create .map files like bsp viewer?

23. NemPosted: Feb 25th, 2006 - 11:58:55 am
Glad to hear it works. Just out of curiosity, can you see lightmaps?

I don't plan to add .map exportation to Crafty because there simply is no good conversion from something like a .bsp to a .map file. If you are looking to decompile Source .bsp files, look no further than Rof's VMEX.

24. ilcannibalModified: Feb 27th, 2006 - 4:27:02 am
Forgive me for being such a newb. Lightmaps? I can see the textures after i mounted some gcf files.

BTW, if you need a kewl clan web database let me know I have a template if you need it. My Clan Template

25. NemPosted: Feb 27th, 2006 - 12:39:36 pm
If you can see any lighting (shadows etc.) then the lightmaps are working.

26. ilcannibalPosted: Feb 27th, 2006 - 4:04:51 pm
Thanks bud I do Woot! checkingthenews

BTW, Do you know of any sites that create RES files for dod source? I am working on a new map and would like to get RES file to have others get files that belong to the new map.

27. SlackillerPosted: Feb 28th, 2006 - 10:06:14 pm
All the updates you did work great handwalking

28. BluefangPosted: Feb 28th, 2006 - 10:22:29 pm
Am I correct in assuming that the map navigation isn't finished? Because all I can do is pivot the camera. Is is just me or is that not done?

Also, a small annoying thing is that when you are in the model viewer, when you doulble click in a file in the side file browser, it closes the model viewer window. Doing this will cause the model viewer window to be unopenable afterwords.
The material browser dosn't have this problem.

I've also noticed that the View->References option is inconsistant between the model and material browser. for example, when set to 'generic' the model browser will only show folders and the material browser will show the files it can open.
Personally, I don't know what you were trying to do, but I would leave this out. I would just have this as a standard folder tree view by package/folder.

A suggustion regarding the mounting/ map viewing system. It would be nice to have difrent 'profiles' for the difrent games. This way you could select a profile and it would automatically mount the peoper game folder/GCF files in the proper order.

Also, more pretaining to the HL1 side of things, it would be cool if, when mounting a folder/package that contains a WAD/PAK file, that they get mounted also. When mounting a folder, I'd just have it check the folder root because I'd assume that they were mounting the MOD folder. with the GCF packages it would be a bit trickier because they are in a sub folder. On a side note, if you were to do this, remember to exclude certain WAD files (such as cached.wad, gfx.wad and fonts.wad).


I do not think there is a RES file generator for HL2 maps. So it looks like you will have to do it by hand. Unless you made a lot of custom content, it shouldn't be too hard.

29. NemPosted: Feb 28th, 2006 - 11:02:24 pm
Hey Bluefang,

I'm not sure what you mean about the navigation. You should be able to move around (just like in BSP Viewer) using the WASD or arrow keys (you need to click inside the 3D view first to do this) and the right mouse button (do you mean in the Model Browser?).

The reason the Model Browser (and Material Browser) close when you double click an item is because they are supposed to be more like file selection dialogs (looking towards future use). I may be able to add something to prevent this when they aren't used as dialogs. I am also thinking of separating the Model Browser view into a tree and list (like in Hammer) as it lends itself to filtering and you don't have to side scroll as much etc. The bit about not being able to open Model Viewer back up is a bug though, will fix this.

The "References" are not complete at the moment, I'm still trying to think of the beast way to implement the appropriate filtering (from the programming side).

The profile idea is a good one, I do plan to add this option.

There is an automatic mounting option in the File System Browser that will mount mountable children of any package or folder you mount, however I don't recommend using it (in fact I am thinking of removing it) because you can inadvertently mount a lot of stuff (like .bsp files etc.). I plan on updating HLLib later to mount packages more efficiently, right now Crafty needs to load them to memory which is quite slow when you are dealing with large .wad files. You can mount .wad files inside .gcf files though and these settings should be stored between program runs.

Thanks for all the feedback.

30. BluefangPosted: Mar 1st, 2006 - 8:54:40 am
Oops, my bad. It's been such a long time since I've used the BSP viewer that I forgot about the WASD thing.

With the Model and Material browser, all I was getting at was that the behavior was inconsistent. I don't mind which way you decide to go, as long as they both act the same.

I hadn't though about using them as a file selection dialogs and I like the idea. I have a couple ideas on implementation/behavior, but seeing as I don't know how you would possibly implement them as file selectors, I'll hold off on those ideas until you get there.

To work on the profile & auto mount idea, maybe mixing them together may work. The profiles would be stored in specification files (much like the BC's specifications) that would direct the mounting of the packages. Doing it this way would make it really easy to mount all of the needed packages, sub packages and folders. This would also allow people to make custom profiles for third party mods and such.

I do agree though that the auto-mount idea was a pretty bad one.

I did notice that you can mount packages within other packages and that is pretty cool. In the distant future when Crafty is feature complete, relatively bug free, and ready to be polished; when a sub package gets mounted, it would be spiffy if the mount folder was either placed above or below the original file OR the mounted file becomes the root for it's content's file tree. Though, of course, that's just extra fluff ^^

[ 1 2 3 4 5 ]

You must be logged in to post a comment.
New users can register here.
Nem's Tools v2.0 © 2006 Ryan Gregg.
Execution time: 0.037835s; Queries: 17.
dishes served.
Powered by The Wavelength.

Valid XHTML 1.0 Transitional Valid CSS