Thursday, December 21, 2006

Win32 fixes and building a future

Win32 build love
Thanks to leileilol for the Windows build bug report! I fixed the new win32 bundling issues, and I disabled the 60fps cap until I can properly fix the win32 timer. The new bundle has all the model, image, and ui plugins as well as some sample glsl shaders. I spent about the entire day at hospital in a metal donut. It's great I could come home and still knock out some bundling issues so fast.

This should make rendering in Windows builds much, much better. Yes, I'm using only wine to test the Windows builds right now. I'll have to drag out vmware (and maybe an old windows box) more often. ;)

TODO or not TODO
If you read the TODO and BUGS files in the project you might wonder how features and fixes sometimes just 'pop-up' seemingly from out of nowhere. There are two main reasons for this:
  1. I often find and fix bugs with a higher priority than what is in the BUGS file.
  2. I often add features out of order, since I have no 'ship date'.
That's how Python plugins and GLSL support 'poped up' in svn in a single day. I saw a lot of requests for the features, and I found ways to implement both in a day. Sure there are some more basic and flat out more important things I could be doing. I'm just one guy banging this stuff out, so I have to adjust very quickly. Also these same features off loaded a ton of other features from my TODO. How do you ask?

Python let's users write cross platform scripts and plugins with a commonly known language. You can basically do anything you can think of in a freyja Python script/plugin. How did I implement support overnight? I wrote a simple python script to examine my C ABI for libfreyja and generate a working Python API to wrap it. Everyone thought I was nuts shuffling around the ABI, and grinding on it so much relative to easy payoffs like fixing skinning. I can now simply generate C# and Python APIs with scripts instead of just having skinning done, which is the better payoff knowing that? I can always fix skinning later, since 0.9.3 had removed the feature no one expects it right now anyway. I will get that fixed soon I promise. ;)

GLSL offloads all kinds of rendering and effects work from me. I provide a few example shaders like per-pixel lighting and such, however I expect people to be able to do more with the material editor than they dreamed now you can assign shaders per material. It's almost unlimited potential there. I'm going to get the texture control system done soon so multitexture, gloss, normal maps, etc can be done in shaders with a simple to use uniform system. Basically you'll be able to assign a texture list dependency in the material editor and have your shader treat those textures however you want. How is that for moving more work off my stack? I hope these two examples show how I work with Open Source to try and get more bang for my buck in terms of time put into the project. I am working on all those "A" bugs, but if you read the Changelog you'll see they're not on a due list yet. Ah, beta prerelease. Keep sending in those bug reports and feature requests. =)