Halo Wars has gone gold, officially sounding the impending closing of Ensemble Studios. And with the impending job hunt coming along I decided to sharpen my coding teeth and start putting together some various research topics that I've been waiting to find time to do; In the games industry, you get so little time to do REAL research and prototyping that's not aligned to a product time line.
Much to my chagrin however, I realized that in all my years in the industry, I did not have a code base that didn't legally belong to someone else. IE all the code I had been using and prototyping on has been the property of the companies I've worked for at the time. Hypothetically, i could continue to use snippets of code from these companies I've worked for, but legally, that's a bad idea; and on top of that, most useful code is so ingrained in common classes & libraries that extracting small portions of it is just a nightmare of pulling a spegetti noodle out of a plate. AND with MS's legal department eyeballing ES with the impending closure, I decided that it had been high time, and decided to throw together my own code base, that I owned the rights to, rather than some other corporate entity with lawyers who look at me like I'm going to steal the coffee maker...
Now, some of you may not find this interesting, or very rewarding, but for the few of us, this type of process can be very meditative. That is, creating and organizing code bases and categorizing ideas and program flow puts us in a very tranquil and zen state of programming when our tasks are usually quite chaotic. But none the less, I needed to start creating a library of code to use. Firstly, I laid down some ground rules about WHAT type of code i was putting together.
I like to call this library a "Mudbox" (Or "MudBase" like "CodeBase"), not a "Sandbox," specifically for the reasons listed above that this isn't meant to be production & main-line quality code, this is idea code; fast, dirty, and cheap. If I need it to be something more, then I'll re-write it in the context that's needed. (Your first writing of code is usually pretty crappy anyhow. It usually takes 2-3 revs of the 'concept' before it solidifies and actually results in a high quality product.)
At this point, I've got 100% of the code systems done that I originally planned for. Which includes enough functionality to port various demos and code systems that I had using other code bases to my own, and have them work to produce the originally desired results. Which is a very good thing, considering I started entirely from scratch!
To be honest, it's very liberating and free-feeling to be working in this type of code base. And I honestly encourage all of you to break free from your corporate code bases, and make your own mud-base to just hash out ideas and 'fun code' in. I think we as programmers get to focused on lots of minute details : "Well, as I write this file system, I need to take into account the fact that we may be using archives later, so that information needs to propagate into my design."
Yea, you're supposed to think that for a shipping product; After all, you're being paid to not need to re-write code. But for your personal code base, fuck it and just use fopen with no error checking. I mean who's watching, really? And is it really the point to write the most stable system, when you're just testing if the overall concept for your crazy brained idea is going to work at all?
Another great part about breaking free from corporate code bases, is that you can vulture some code from great resources on the internet. TBH I've most likely bought in a little TOO hard to the "Good programmers code, great programmers reuse" concept. I mean really, I can't recall how many times I've re-written a thread safe vector class, that I STILL don't own the rights too; That's quite a defeating feeling.. There's some great resources out there that you can directly look at when making your own mudbase, and quite frankly, you SHOULD be looking at other resource material!
Here's some great resources that you can use when looking for this type of code.
I suppose the moral of this story is: If the corporate owned code keeps grass from being on the field, then write your own code base and play in the mud.
Ok, so I did end up referencing the limerick...
~Main