Rasterization vs. Ray Tracing
April 13th, 2008The debate continues.
The debate continues.
Gamasutra has a nice article on marketing Halo 3.
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.
Asian free-to-play MMOs meet one of the coolest European game franchises:
Gamasutra - EA Goes Free-To-Play: Battlefield Heroes’ Producer Speaks
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.
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).
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.
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.
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.
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.