cybersphinx wrote:The code should compile with "g++ -fpermissive" (it's quite impossible to make the current code strictly C++-compatible, with all the casting and stuff), but no C++ features are used. I think converting some things into classes will make the code more readable and modular, and Chojun(?) posted something about that a long time ago on rts.net, but there was never any code to integrate.
That's right, when the code first came out, I went through it front-to-back and decided that it was just a big tangled mass of sweaty taco vomit.

IMO the playstation, not Eidos' inferior marketing strategies, was to blame for Warzone's shortcomings and ultimately, its demise. I could see the general form of the orignal code that Pumpkin had brought into the project. Sorta like a human skeleton. However, the original code resembled more of a very morbidly obese man who was consumed by cancerous growths that had eaten away his flesh into a very remotely recognizable mass. Anyway, what I'm saying is that Pumpkin had a good product, but when they started to integrate it into a form that could be run by the PSX, the code became just plain unmanageable.
The reason why we didn't see a Warzone sequel is pretty clear to me... There is no way they could've created a new product from the old code, judging by what a sorry state it was in at its release. Someone early on in the redevelopment project estimated that Warzone's 250,000 lines of code and 4 years of development may have cost around $8,000,000. This is paying the software team a modest wage. Warzone "2" would've needed to be built from the ground up. As the redevelopment or "resurrection" team has probably seen full well, the code will only go so far; a bubble-sort algorithm, no matter how highly optimized it is, is still a bubble-sort algorithm. There is no way a downsizing publisher such as eidos, at the time, would've been on board with Pumpkin Studios spending a few more years dabbling on a brand new project for a game that, dispite its revolutionizing the RTS genre, provided very sub-standard profits (the PSX release, which had apparently been pushed by Eidos, was an utter failure).
Early on, I
did in fact suggest the entire code-base (except for the lower level things, such as memory-management and rendering routines) be converted into a C++ application framework. Modular, object-oriented, portable, and moddable. This would require Warzone to be torn down and rebuilt piece-by-piece, from the ground up. The four attributes are a must for any continued success. Let me explain.
Modularity: Currently, if you pluck out a system in warzone's code, the entire thing breaks down and crashes. Warzone was built like a house of cards. One wrong move, even during runtime, and the whole thing comes plunging down to the ground. This situation cannot exist (and does not exist) in any successful game to-date. The most impressive feat in game-software development is Unreal Tournament (GOTY to 2004). With a game such as this, no super algorithms and so-forth are needed to create a good application. I've seen the source code to Half-Life 2. There is nothing special in there that you won't see anywhere else. What is special, is how the framework was designed. With Warzone, modularity would entail being able to completely isolate the game's systems, and have it still function properly. That is, for instance, being able to completely yank out the sound subsystem and all of its components, and have the game work completely normally, just without sound.
Object-Orientation: This builds on the above... The game's components function as objects, so why not be coded as objects? A tank in Warzone is an object, is it not? It has code, data attributes, functionality, and physics associated with it, doesn't it? Then why not provide them data encapsulation (classes, interfaces, etc)? Currently it is a nightmare trying to add functionality to the game because it requires a myriad of changes to the REST of the game! In the application domain, C is a dead programming language. It is only useful for very low level applications, such as Operating Systems. I've done Operating System programming, and I know. C is useless for the higher-level stuff, and it only causes problems for that kind of stuff.
Portability: This is for our Linux friends. In the early days of the Redevelopment project (NEWST, Pumpkin-2), we had no idea that Linux developers would even take an interest in the game. It wasn't even a thought. Not even an infinitessimally small one. So, the source release was announced on slashdot, in the Linux section, and we were innundated with Linux hopefuls who were sick of twiddling their thumbs and toes and wanted to develop the first cool game for Linux (sarcasm). So at this point, there were those associated with the Pumpkin-2 society, the talkers, and those who came in from Linux society, the doers. The project forked (more appropriately, it changed directions) from where we in Pumpkin-2 had hoped to lead it. Coyote (bless your heart, I love ya man!

) was busy pulling his hair out in large chunks while a few linux folks tinkered around with the code and got it to compile under linux. Anyway, long ramble short, portability is more important to keep the current development society cohesive, and to be able to target as many platforms as possible.
Moddability: Ok, so the debian purists are squabbling with people over whether or not the content on the CDs are covered by the game's release license. Basically, they're not because the majority of the CD's content was not included in the source download. But no-one has ever answered the question I've asked from time-to-time since the source release: Will we get sued if we use (or distribute) the game's CD content? I think they dance around this question bec-- well, nevermind. I'm not going to speculate because it really doesn't make any sense. Eidos is *NOT* going to sue us over a game that was a disappointment to them, and Pivotal Games/SCi are *NOT* going to sue us for something that they're *NOT* going to use in the future, nor for something they're *NOT* currently producing or even making a profit from!
Anyway, without the game's content, a requirement then stands such that we need to provide content for a content-less game. Got it? Warzone was scriptable, but only to a certain extent. It was difficult to add custom units into the game. There was only a very rudimentary map editor. And, people just plain get bored of playing the same game, over and over again. There are many "magic numbers" and so-forth hard-coded into the game (I'm not sure how it stands currently), but Warzone needs to have two domains: The application domain, and the data domain. The data drives the application. Modifying the data modifies the application (nearly everything about it, too). More work must be done to externalize from the game as much as is humanly possible.
Any work that is being done that don't move toward these goals is simply just work being done to code it into a corner. Anyway, these are just some of my feelings. But again, like I said above, there are those, like me, who like to talk, and there are those, like DevUrandom and Per, who like to DO.
(I'd do if I weren't taking so many classes every semester, but alas...)