Monthly Archives: November 2005

Where is my playable Riven X?

Update: Part II is now available.

If one reads the Riven X project page, one can read “but I expect something barely playable in November”. Obviously, that’s not going to happen. Without going into boring details, let’s just say it’s been one hell of a semester.

So I thought I’d discuss a particular issue that’s been annoying me with Riven X: how to render a card. Specifically, how to efficiently render what needs to be rendered in a way that will yield the proper display order while allowing reasonably fast object rendering activation and deactivation.

Background theory

Essentially, Riven is made of stacks and cards. Just like in real-life, a stack contains multiple cards. But what does a card contain? Essentially, renderable objects: pictures, movies, sound effects. Obviously, sound effects are completely different from pictures and movies because they are strictly acoustic in nature. That leaves us to deal with pictures and movies as far as graphics are concerned. The biggest problem by far is to respect the display order. You see, initially a card is blank: it has no active renderable objects. But as scripts are executed in reaction to game state changes or user events, renderable objects start getting activated and deactivated. The rule of the game is then simple: whatever gets activated last is drawn on top of everything. In other words, you “pile things up” as you activate them. Deactivating an item means removing it from the stack while preserving the order of the other elements. We can make a simple diagram to illustrate this:

card diagram

This seemingly simple problem has caused me more than one headache, and I’m still unsure the solution I settled upon will be satisfactory. Only sampling will tell, and I’m far from being able to do that. At this point, you may continue reading for details about potential solutions, or wait for my next entry which should be concerned with the solution I have chosen and the unavoidable reasons supporting that choice.

Continue reading

State of the blog

Where to begin…

It has been many months since I last wrote on this journal of mine, quite possibly because college has been taking so much of my time as of late. It’s funny, you’d think moving forward things would get easier, or at the very least stay pretty much the same. But it has been one hell of a Fall semester so far, in part due to the large number of term assignments (4 of them) and the more esoteric courses I’m attending (organic chemistry, Japanese). Still, things are soon coming to an end and the prospects of doing an internship this coming winter are higher than ever.

Which somewhat brings us to /dev/klog. On every copy of my resume, one can read this blog’s address. As such, the thought of someone responsible for hiring interns visiting a pretty much dead blog has been running circles in my mind as of late. I suppose I’m pretty much lazy, in the sense that whatever can be done later will get done later. Unfortunately, lazy execution is a pretty good software engineering strategy, but hardly a successful one in real-life.

Consequently, I’ll be dedicating more time to this blog than I have in the past. Not solely for the sake of my winter internship, but also because I truly believe one should stop and synthesize one’s mind on a regular basis. Structured thinking and discipline is key to success in many fields, and that’s certainly the case of engineering.

I realize this entry is rather short, but it’s a preface of sort to upcoming content. There are many things that need to be talked about, including Apple, Mac OS X, Cocoa, my projects, some of the things I’ve learned this semester, politics, and so on. In addition, my projects will also get some sorely needed attention. Updated news, better descriptions, frequently asked questions, a bug report infrastructure and a few completely new project pages.

Stay tuned!