Rasterization vs. Ray Tracing

April 13th, 2008

The debate continues.

Marketing Halo 3

April 12th, 2008

Gamasutra has a nice article on  marketing Halo 3.

Enterprise Architect Recommendation

April 6th, 2008

I’d like to put in a good word for Enterprise Architect. It’s been my tool of choice for UML-ish diagramming for something like two years now, whenever I’ve needed more formal documentation on software architecture, development processes or requirements analysis. I’m even using it to manage the feature set for a relatively complex Agile project.

EA is inexpensive, and by far the best UML tool I’ve tried. It’s pretty much 2.0-complete, with a bunch of useful custom extensions like requirements and UI diagrams. Patches and new features are published once or twice a month. It’s fast even on large projects (with hundreds of requirements and classes, anyway), and stable.

I went through a lot of the other available tools when looking for one that would suit my needs. Most of the other contenders were Java-based, hideously slow, and unstable. One feature stood out however: EA has by far the best round-tripping of C++ code I’ve seen anywhere. It’s not perfect, but it has improved steadily, and can likely reverse any code-base you throw at it (ours is pretty large, complex and advanced in terms of language features like templates) well enough to be useful in presenting the class structure in overview.

Not that I see any point in actually round-tripping anything on a real project; the cost of the required non-essential discipline needed to use the tool consistently would be unjustified. But it is very useful to reverse engineer a codebase in minutes, and then start sketching an extension to it graphically; I like to think visually about object oriented systems, and find basic UML representations of encapsulation, aggregation, composition, association, cardinality and inheritance very intuitive.

Battlefield Heroes

March 31st, 2008

Asian free-to-play MMOs meet one of the coolest European game franchises:

Gamasutra - EA Goes Free-To-Play: Battlefield Heroes’ Producer Speaks

Winforms to WPF

March 30th, 2008

Some thoughts on WinForms vs. WPF from Jeremy D. Miller. We’ve been discussing the same issue in our organization, and have settled on WinForms for now, mainly due to Risk. We’ll keep looking though.

CruiseControl.NET on Vista

March 30th, 2008

Yep. As per the previous post, I got IIS 7 working on Vista Home Premium, and after a bit of fiddling, the web dashboard of ccnet is up and running. The trick is to add the ccnet dashboard as an application using the Classic .NET AppPool application pool. It seems to work with no additional steps (the installer failed to configure it, it’s apparently targeted only for IIS6).

IIS on Vista Home Premium

March 30th, 2008

Turns out you can install IIS on Vista Home Premium. This is good news, as I may be able to test CruiseControl.NET @ home with the Web Dashboard enabled.

 We’ve been experimenting with the python-based BuildBot at work. It’s great for extensibility and distributed building and (possibly, we didn’t get this to work reliably yet) testing, but the API is something of a mess, and we’ve had to customise it quite a lot, just to get it working (well, one guy who could handle the tangle did all the work). Replicating the build system for one of our products three years down the line when we have to do a surprise patch, promises to be a nightmare. We’d ultimately want something a bit simpler to set up, and integrate into the Windows world.

Steam > iTunes

March 28th, 2008

I like iTunes, and I like Steam, but the latter is way ahead of the game in one important aspect: digital ownership management. When I buy a game from Steam, it’s mine (for a given definition…) and Steam actually goes to the trouble of maintaining that ownership for me: it keeps a record, and lets me download the content to any computer I own with a minimum of hassle (I’ll overlook the occasional bandwidth problems, which seem to be easing up), as many times as I might want.

In contrast, when I buy a song from iTunes, it lets me download it, but only once. I then have to handle back-ups, and transferring the music between computers. This is a real hassle: my back-ups are not current, and my home and work computer are out of sync. In addition, iTunes restricts me to five computers for playback, and I have to manage authorization and de-authorization myself.

Steam provides games in return for compensation and wants me to, helps me to play. Meanwhile, iTunes lets me listen to music if I pay, and tries to restrict it in arbitrary ways.

Fun Instinct

March 26th, 2008

Via Gamasutra, an interesting article on fun in games, and how to see it. As always, the task is made harder if the game in question does not exist yet.

Simple Associative Container Iterators are Always Const?

March 24th, 2008

I’ve been re-kindling the Splay Tree project for a while now. Reading through the SGI STL documentation, I found an interesting snippet:

In Simple Associative Containers, where the elements are the keys, the elements are completely immutable; the nested types iterator and const_iterator are therefore the same.

Never thought of that ;-) But then, I started looking at how to implement the begin() member function, or whether to simply typedef const_iterator iterator, or…

It turns out that at least the STL implementation that comes with VS2008 will happily allow you to modify the key stored in a std::set through an iterator. It is yet unclear whether this can corrupt the ordering, or whether the set will detect the change and re-organize (unlikely, and apparently not done, based on a preliminary scan of the <xtree> source code, besides it would make simple dereference + assignment have non-constant time complexity). I will get back to this once I get a small test program working.

I also purchased the C++ standard (been meaning to do that for a long time) and browsed through it. On first reading, there’s nothing there about preventing assignment to set elements through iterators. The standard talks about mutable and constant iterators, but does not require constant iterators for set access. I’ll have to get back to this as well.