I noticed a bump in bandwidth in my web stats and realized that it was due to a video I posted years ago as a WMV on my site. That was back when Youtube was very restrictive about the size you could post. So I’ve just now done a quick reprocessing of it (taking the opportunity to edit out the most irrelevant bits) and uploaded it to Youtube.
So here I am, waffling for about 10 minutes as I talk about the state of Drivey in early 2005.
And even though that was more than six years ago, I’m sorry to say not much has changed in the time intervening.
In graphics programming, I’ve often found that the most striking/memorable visuals occur during testing and prototyping.
This one is scarily reminiscent of my first forays into 3d terrain rendering almost 20 years ago.
But rather annoyingly slow, about 2.5FPS, which I guess I should not be surprised by. What’s really interesting is the way the processor load scales with this mini version– running at native iPhone3GS resolution means that the actual rendering takes only 22% of CPU time. The rest is taken up by all the curve creation and transformation, which seemed trivial on the desktop.
The reason for this shift is that at a screen resolution of 480 x 320 there are only about 8% the number of pixels to draw as on an average desktop*, whereas the number of objects, shapes and curves to process are currently the same.
I should see some significant improvement relatively easily through optimization of my curve handling routines (mostly to avoid unnecessary memory reallocations), but whether I can ever get it all running “smooth” I can’t say at this point. Of course there’s always OpenGL ES to play with, but Drivey has always been very much about curves and lines and I’m not particularly inclined to deviate from that now. If anything I may actually drift even further from realism, since the last thing I want to do is try to compete with “realistic” driving sims.
PS: for the record I am now building it for OS X as well, where performance is not really such a big concern, so if I ever actually turn it into anything more than an aesthetically pleasing gewgaw it should be available for Windows, OS X and iOS at roughly the same time– although the mobile version will probably have to use [more] simplified maps to be feasible.
* my iPhone3GS has 153,600 pixels; my iMac has 3,686,400 – that’s a ratio of 1:24!
This is the first time I’ve been able to build DriveyC++ in more than two years… thanks largely to an idiotic decision to refactor my codebase back then, when I simply did not have the time to do it properly and so ended up breaking everything. Refactoring is something that many programmers, including myself, feel a compulsive desire to do sometimes. It’s like rearranging the furniture when you’re procrastinating, only instead of ten items you find yourself moving thousands of things, as well as renaming them. So now the chair that was in the corner is called furniture::seat and for some reason ends up in the laundry. Also, because so many changes are made in such a short time frame, you inevitably make terrible mistakes which cause everything to stop working. Usually these are caught and fixed relatively quickly, but if you make all the changes and then immediately stop working on it you get to come back in two years and say WTF! and wonder why nothing seems familiar and even the most basic shit has stopped working.
Couple that with some insanely complicated meta-programming and jumping a few VC versions and you get the situation I have with Jujuscript (and therefore the original Drivey demo) where you have no idea why something was working before and not now (and sometimes it’s hard to see how it even worked in the first place). Is it because of subtle version differences in template argument parsing? All I know is that when I reference an array element in Jujuscript it now shows up as a generic R-Value instead of a typed L-Value, and I’m yet to get to the bottom of it, but it means 90% of my scripts no longer work.
The moral of the story: don’t change several things at once, and don’t refactor unless you have time to follow up and iron out the brand new set of problems this will introduce. Also, just because you have namespaces doesn’t mean it’s ok to use the same type name for different objects– at some point this will bite you in the ass.
Rocket used to like Drivey, and it turns out Ada finds it quite mesmerizing as well. Maybe I should repackage it as HypnoDrivey.
Side note: the iPhone has very crappy low light video.
I received some nice feedback today on Drivey, and decided it was time I collected some of the emails I’ve received over the years and post them here, at least in part to inspire me to revisit the project.
The demo is getting very very old now, and has been downloaded anywhere from 100,000 to 150,000 times since being slashdotted back in 2005. What I was always delighted with was the degree to which people seemed to “get it” and not be particularly bothered by the fact that there was no particular point or goal. So many simply appreciated it for what it was and didn’t seem to expect anything more, and I was surprised at how rarely people tried to tell me what I should do next.
Here, in roughly reverse chronological order, and only slightly abridged, are some of the nice and/or interesting comments I’ve received.
- I am from Malaysia and I really love your work on Drivey Graphical Demo. I have downloaded all two latest executable and .scr file from your website. I also really enjoyed all four environment type that included in Drivey. Since I have Drivey, I cannot stop myself from staring at my monitor that can make me calm and a bit resting from any tension during my daily work. Maybe sooner if you have an improvement for this demo I wish I can be the earliest person who knows about it. Your Drivey runs perfectly on my Windows Vista Basic. Thank you very much for a light application like this but give a big enjoyment for me as a user. Keep up a good work! :]
It’s always interesting coming back to a project that hasn’t been touched in a long time. Often I find it to be much more functional than I remember (in this case the track description language is more sophisticated than I recall) and surprisingly easy to pick up where I left off. This doesn’t necessarily mean that I’ll be releasing any DriveyC++ demos in the immediate future, but if I can just keep a little time aside for this I should be able to make some real progress.
A rough port of the "industrial" landscape to DriveyC++
Still rather conspicuously missing is the ability to create hills. I really should attack that problem soon, since it would open up a whole lot of potential for landscaping– I’m thinking a twilight drive over a quiet mountain pass.
The most countrified landscape I have right now
I think shadows will probably define the daytime look
It’s been so long since I’ve done any substantial work on Drivey that I think many people who were very interested may have forgotten all about it by now. And I wonder how many people reading this would have any idea what Jujuscript is…?
One very good reason to procrastinate is that it’s often the safest option; rather than going on and finishing a job only to realize the product is less than was hoped for, it’s so much easier to just think about what might have been. After a great initial reaction to my first posted demo of Drivey almost two years ago, I’ve added almost nothing to it, so now I think it’s about time I did something to get the ball rolling again.
Specifically, it’s time I quit poking at the Jujuscript version and devoted some time to the more advanced C++ version, and I’ve decided that the best way to make myself do that is to give away the Jujuscript version so others can poke at it instead!
So hurry and download the drivey source code + undocumented Jujuscript interpreter now, before I change my fickle mind.
I was trying to avoid using any filters at all (and Windows Movie Maker doesn’t even let you adjust them), but there’s something about pure black and white that I can’t go past– especially after seeing the almost too slick Renaissance trailer.
PS: the original non-filtered version of my exciting morning drive to work can be seen here.
Driving at night, from work to home, with audio kindly provided by the talented RichardN– who hopefully will create his own page for me to link to sometime. Note that the quality of the video during playback is superior to the default still image which is automatically selected when the video is uploaded.
… and further, software is the only thing that enables me to draw at all these days. It’s been a very long time since I produced a sketch on paper, but I don’t miss it at all. The texture, the weight, the smell etc of paper just doesn’t grab me. Or perhaps I should say it does grab me but it doesn’t inspire me to permanently mark it. The last time I tried "real-life" drawing I sat down with a book and a pen and scribbled an ugly ugly picture of a bay. It took me a long time, and looked like total crap in my opinion– look, here it is now:
Funnily enough it actually looks better in this context than it does in my sketchbook.
Ok, one more post about web stats, then I’ll find something else to talk about. [As a person who spends so much time online, I can't help assuming that other people are curious about this stuff too]
According to my server logs, total Drivey downloads now stand somewhere around the 75,000 mark, although a unknown percentage of those may have failed because of the aforementioned cache problem. Since Sunday all downloads are coming off my own sites again, so I can see for a fact that the newer version (0.15) has been downloaded 2,500 times, which is still pretty impressive for only a few days. It seems to be holding steady now at around 25 per hour.
Intepid saw a huge spike as well, which tailed off rather more quickly, as you can see from this graph representing visits over the past 7 x 24 hours, peaking around 950 in the fourth hour of slashdotting.
The total visitor count for the period was an unprecedented [for me, obviously] 8,600! It’s now back down around 110 visits per day– obviously an enormous drop but still well above pre-slashdot levels. I’m just wondering if I can keep it above 100… Maybe if I try writing about something more interesting than server stats ;)