Chaotic week this week – mostly been spent on contract work up in the wilds of Dundee (helps to get some money in the bank), which hasn’t left much time for anything else. On the bright side however, as of Monday I’ll be getting the train up and down rather than a car drive, so I’ll be staking claims on the little ScotRail tables and doing as much design/production work as I can on pen/paper, and transcribing it when I get a chance. For those itching for a chance to wade in and get started on some work, be patient; I’ve not forgotten you, I’m just trying to come up with coherent plans so as not to waste anyone’s effort. The contract itself is due to end somewhere around the 23rd of June, so things should start moving again closer to that date.
Archive for May, 2005
I’m trying not to laugh as I write this, although I must admit I find it a little frustrating that this particular piece of vapourware has already eaten enough funding to run our first project about a hundred times over. I’ll laugh a lot harder when I read the news reports about Infinium folding and the investors crying into their glasses.
Anyway, after a nice holiday weekend up north, I’ve been busy writing up various production things behind the scenes for the last couple of days, the most interesting of which is a walkthrough of the Assault demo. Its accessible to registered members via the Design forums, I hope it captures everyone’s interest.
Coding standards are still under construction (don’t worry, its not taken me four days just to do them, there have been other business related things ongoing this week), but for now on hiatus. As Phil pointed out (since he’s currently fighting a badly written C++ code-base), there are a whole lot more things under C++ that need to be standardised than are required under C. He also recommended Scott Meyer’s Effective C++ as a required read before I finalise the standards, so I’m going to wait until I’ve picked up a copy to finish writing up the document.
In the meantime, I’ve shifted to fleshing out the project plan and task list, so should hopefully come up with a nice long list of things to do, milestones, etc. More on that as it happens later…
Well, another week starts with a flollop onto the work chair. After a lovely sunny weekend, its back in the office, looking out at a damp, humid, gray-skied morning.
Anyway, back to the real stuff. Not a huge amount of demo progress on Friday, as I decided to help the Torque engine people out by fixing all of the Level 2 warnings in the libraries. Since they were pretty much all sloppy coding styles, it meant they were all over the source code, and so I got a whistle stop tour of the code-base and I think I’ve absorbed some of the methodologies they use. I might have an uphill struggle to actually get the developers to merge the fixes into the engine though, as the developer who initially said “that’s great, go for it” has since said “I don’t like typecasts”, which given the fact that the warnings are all because people were ignoring types and implicitely casting between them, is a bit of a cop-out. Luckily, someone there does things properly, because some of the code was cast correctly, so there’s a precedent which should make it more amenable to him.
So, the code I have now compiles at warning level 2, and I can turn on warnings as errors and have it be useful. Looking over the code also gave me quite a lot of reminders as to all the things that need to be specified in the coding standards document, which I’ll be working on today.
Also on the agenda: still to mock up the space station level needed as a test-bed, as well as a first pass at a task-list for the demo. More business/funding things need done this week, but not till Tuesday or Wednesday.
Disclaimer: Warning – code rant ahead
Okay, I’m still tinkering with the Torque engine and trying to figure out the best way to integrate it with our framework project. My first instinct was to define the engine as a big black box – seperate from the main code – so that it was easy to define what is ‘Torque bits’ and what is ‘Assault bits’. Easy enough you’d think – just put it in a subdirectory and wrap it up as a static library.
Bear in mind the Torque engine comes as a big demo project, with all of the code to do anything you like in a big source tree, and nicely it works just straight out of the box. Nice and easy to use, but I feel a bit dirty when I’m hacking other people’s applications to look more like I want mine to look; its good for learning purposes, but once I’m done I like building something clean from scratch which references the engine rather than modifies it.
So the engine-as-a-library approach is nice and clean – it fences the engine code off as ‘something to be used’ and gives the project a bit of modularity. But, and here’s the kicker, its really simple to split Torque off as a library, but the first thing the linker does when it finds that library is it strips out anything it doesn’t think is used; including several vital parts, because it can’t tell that they aren’t used until runtime. When it’s a big monolithic executable project, the compiler just assumes they will be used (otherwise they wouldn’t be in the project), but as a library it tries to be (too) smart. Grrr.
Okay, so I go to the Torque search engine to see if its come up before, and it has – like every 6 months, since 2002. The response is invariably along the lines of either a) “I like a big executable, it keeps everything together”, b) “If it ain’t broke, don’t fix it”, c) “Yeah, we’re thinking about doing that some
time soon, honest”, or d) “why don’t you do it yourself, and we’ll consider putting it in”. I won’t go into why these are poor responses, but I’d say that if its been that way for 3 years, its likely to stay that way.
Anyway, it looks like the hack and slash of the big demo source is the only way to make it work. Maybe I’m just being too picky, but we’re at that nice initial stage of the project where you want to keep things clean and well laid out, because you know its going to go downhill over time. Last thing any developer wants is to have to tell new people on the team – “yeah, we know its bad, but we’re stuck with it now”.
Seeing this article reminded me, I’ll absolutely have to write out a coding standards document for the Company before anyone else starts working on the code-base. Heck, I’ll have to fix all of my code to some kind of appropriate standard as well!
I think the most horrible thing about using 3D modelling tools (apart from my chronic lack of artistic ability), is the fact that they all have different control interfaces. The functionality is pretty much the same in every tool, but it takes so long to learn any tool to the point of being comfortable enough to build anything with it, that you end up sticking with the same tool just because you don’t want to learn another. Admittedly most of my work the last few days has been with the free tools, which obviously haven’t had the tens of thousands of pounds spent developing and refining their UI, but its still a slog.
All I really want to do at the moment is build a mock-up of the Station Assault level so I can use it as a base for future development. After a lot of experimentation with the Torque engine, it seems really quite flexible, and certainly capable of doing what we need functionality-wise. Of course, I’ve still to get any of my own assets into the system, so it may still fall down on that, but I’m confident.
Once the basic project structure and a demo level is in place, I’ll be in a position (finally) to come up with some kind of task list/development strategy for the demo, and things will hopefully move along more smoothly.
Like the new colour layout? Its to match the subBlack theme on the forums, and is a bit more in-keeping with our company name. Now all I need is to figure out what we want in a logo…
A brief hiatus this morning, while staring at a freshly cleaned desk, covered in forms and booklets from the Inland Revenue, trying to figure out how to sort out my status as a new employer (technically I’m not self employed, rather I’m employed by the company of which I’m sole owner. Yes I know that sounds like self-employed, but apparently its not. Go figure). Thankfully, a quick call to the New Employers Helpline revealed that I’ve actually done all the work already, by just calling them up and registering as an employer. So much easier when you’re paying yourself nothing.
Anyway, in more relevant news, I’ve settled on a design for the initial project, and put up a draft of the high-level design on the forums (if you have access there). What does this mean? Well it means that we can concentrate on refining that design, and crack on with getting a demo up and running while we’re refining.