No, Joel is talking about a system that's had a far longer development cycle, in use, sustaining a business and still under continuous development. Throwing away that would be a difficult choice, but we have much less to lose with Allegiance. Note I'm talking about Allegiance here, not games in general. And architecture has little to do with it overall.cashto wrote:QUOTE (cashto @ Feb 9 2013, 01:21 AM) I don't see what makes games special in this regards. That is to say -- "the old code is a mess, but we know what the problems are, so our second system will be better architected" -- is exactly the sort of hubris Joel describes in that article. The truth is, in any mature system, a rewrite is essentially throwing away years hard-earned knowledge, years of bugs that had to be dug up and fixed. When you see messy code, when you see complexity, you can't just assume it's accidental, unnecessary, avoidable complexity. The code just might be complex because the problem domain is more complex than you thought.
As for games in general, think why Doom series (I'm using them as an example since the source is available) don't share code. Technology changes.
QUOTE And in the specific case of Allegiance, I guarantee you none of us are privy to the thousand little lessons the original developers had to learn in the process of building the system.[/quote]
...which is another reason in favor of a rewrite, because we don't have their lessons, insight, documentation and development setup.
QUOTE I'm curious what specific improvements either one of you would make to the architecture of Allegiance, the "fundamental aspects" that you would improve if you had the time and motivation to do so.[/quote]
Like I said architecture has little do with it - although it's fairly tightly coupled in places and proper testing is pretty much impossible, and these are not simple refactoring issues. In the end it's the effort required to extend the existing code base vs effort required to rewrite from scratch, and the quality of the resulting product, and it's fairly obvious to me that if you want to go beyond anything that's currently assigned a milestone on Trac, you have to rewrite:
1) You will hit walls with the existing code base if you want a marketable, modern product.
2) Even when it can be done, for the implementation of a given functionality, you will spend far more time trying to shoehorn into the old one. This is true for almost anything the original game wasn't designed to handle.




