WC1/2 clone (NOT remake) proposal


Rear Admiral
This is a project I've been kicking around for a few years now. WC1 and 2 are arguably some of the most fun games in the series. There have been who knows how many people wanting to remake WC1/2 in modern flight engines, perhaps somewhat similar to Privateer Gemini Gold. These projects rarely get anywhere, and are frequently looked down upon. The point of WC1/2 is the flight experience, which would be practically impossible to replicate in another engine.

Still, how great would it be if you could play the original games if you wanted, but expand them at will in any direction you wanted? That's what I'm going for. What I want to do is write a new flight engine, a very simple one, from the SDL up, with the express purpose of replicating the WC1 experience precisely. In effect, I want a drop in replacement for wc.exe and wc2.exe, which would by default read the same data files and play the same way. However, it could be easily modified in any way desired. Want better graphics? Drop them in. Want full scale cap ships? Flip a switch. Want to fly in a battle royale between the entire Confed and Kilrathi fleets? Write it up and the engine will support it.

I honestly think that the flight engine is going to be relatively easy. I could be wrong, but for now it doesn't matter. My first priority is mapping the Wing Commander 1 data files. My language of choice is Python. I'm working on a graphics file reader now, which is going quite smoothly thanks to HCl's documentation. Basically what I need to do is locate and decode every piece of data required for the WC1 engine. Graphics, briefings, missions, saved games, all of it. I want complete compatibility. Once everything is identified and the code is in place to decipher it, a configuration file can be created for the engine telling it where to look for any piece it wants. If you wanted to replace one particular graphic, for example, you'd just alter the config file to point to whatever graphic you want.

Things to decode include:
Rec room events
Saved games
Ship stats

I believe information for a lot of this is already out there. Ship stats, saved games, missions and graphics I know are documented, or at least editors exist. I have no idea about sounds, cutscenes, briefings, or rec room events, but last I looked (seven or eight years ago), there wasn't anything for most of it.

This isn't an official project right now. It's just me puttering around in Python while I wait for my masters thesis work to synthesize. But I thought it would be of interest to some people here, so I wanted to post it.

Anyone else interested?
Well, in maybe six hours total of coding I've put together a partially working WC1 graphics reader. Right now it only displays one image correctly, but it's proof of concept. The flight engine is going to be the only complex part, I think, and the real trick there is going to be balancing it so that it plays just like the original. The rest is pretty simple, if a little time consuming, so long as Origin didn't do anything completely insane like encrypt their data files. :)

Edit: I should clarify that I certainly don't wish to insult the work of anyone who has attempted a remake of WC1/2 at any point! I very much respect your work. It's just not what I'm interested in right now. Nor am I trying to say that writing a flight engine is easy! I just realized I may have come off as seeming like I thought that, and I'm sure that's certainly not the case. I don't want to devalue anyone else's hard work. I'm just interested in a different kind of project, is all.
If all the data types in the WC1/2 engines have been reverse-engineered, you would end up producing a complete suite of modding tools.

If you can fully edit the game content in its original file formats, then there isn't much point of a writing a clone of the game engine itself.

(Just my $0.02)
There is if you want to overcome the limits hard coded into the original engine, like resolution, mission trees, mission complexity, number of ship classes, and such. That's mainly what I'm after. There might be ways using DLL hacks and such to mod the original engine to do that, of course, but that's probably even more complex than just rewriting the engine.
This sounds really interesting, though there are always misgivings about re-creating WCs 1 and 2. Of course, EA may jump in and naysay. Though, I will say that remakes of WCs 3, 4, and P in the WC1 or 2 flight engine, especially with wc 1 or 2 graphics, would be completely awesome. Of course, as you said, re-makes aren't the point.

But, which way would you go with cap ships and their shields? The mechanics of it were different between wcs 1 and 2. Either way, I'll check back in two years to see how you're doing, because most projects like this that actually go anywhere usually don't come to any sort of fruition for about that long.
Well, the point of my particular project of the moment is to allow extreme flexibility while maintaining the original gameplay. So remakes can be the point, if that's what you're into. :) I'd love to see the newer games remade in the older engine, I hadn't thought of that one. As for cap ships shields, the engine would have to support both kinds. The purpose is to achieve perfect gameplay replication, after all.

As for Python, it's just my go-to language. It's very flexible, has close bindings to SDL, has good file i/o routines, and best of all, it lets me program very very quickly. It's a great language for rapid prototyping of just about anything. Sure, it doesn't execute as fast as C does in some circumstances, but given the limited requirements I'm planning to place on it, and given that the Pygame library is actually not much slower than pure SDL, I don't expect that to be an issue.
Just wanted to say that I think it's a great idea. I've always wanted to see more of the WC universe from that era.

I hope you will be able to do it!
I hope you'll add 3d model/highres sprite support once you've got this game up to the standard you want it to be in.

I also hope that this becomes Open Source, so that people can make their own contributions to your little project. You know...
Oh, model and high res support are definitely on the idea board. And it's open source now! That's why I'm posting it now, to see if anyone wants to help! Otherwise I'd wait until I had something a little more interesting to talk about. :)
I didn't realise the actual mission tree data is hardcoded - how did SM1 get away from not having a separate .EXE file?

My interest in this is actually deciphering the cinematic scripts for WC2 to the point of creating my own scene using the existing assets and writing my own dialogue.

As an aside, can anybody recommend a free Windows-based hex editor that will display all 256 characters in the ASCII table properly? This makes things so much easier to visualise...
I assumed the mission tree data was hardcoded, and that wc.exe was designed with the first secret missions pack in mind. I could easily be wrong, obviously. :)
I also hope that this becomes Open Source, so that people can make their own contributions to your little project. You know...

Because you're all about utilizing others hard work. Instead of just modding what others have done, why not just learn to create your own engine. I apologize to muddy up the thread, but i'm rather annoyed with hearing you constantly begging or requesting in a rather forceful way access to other peoples hard work. Just do it yourself.
Well, that wasn't constructive at all.

I've completed a Python routine that correctly reads all WC1 graphics (at least from KS, I don't have my diskette version handy at the moment), and creates Pygame sprites with them. It turns out that cutscenes and animations are just stored as consecutive frames, which makes life a lot easier. Sounds in the KS version are all stored as WAV files, which as I recall is not the way the original game was. I should be able to revive my diskette version within a few weeks. Hopefully the other formats won't have changed terribly much otherwise.

After finishing that, I'm working on decoding the other files. For the record, I was wrong, mission trees aren't hardcoded. They're stored in the camp.### files. Limitations on those trees probably ARE hardcoded, though. Camp is short for campaign, which I imagine a lot of people figured out in a lot less time than it took me! Looks like there are three blocks of data in there. The second block seems to have 90 bytes per series, the first ten of which include your wingman, the number of missions, the number of victory points, what series you go to if you win or lose, and what ship you fly in those series. The third is interesting too, it contains who sits at the bar before what mission.

I plan to produce clean documentation of all the file formats once I'm done with this.
yeah hcl reverse engineered all the graphics files a while ago. it works for all wc1/2/privateer ship graphics and as far as I know wc 1/2 animations cutscenes etc. a reimplementation of the wc 1/2 engines in python would be excellent as they could run on linux or mac without the over head of dosbox (hello crappy old laptop :D) wc 1/2 used midi music whereas kilrathi saga used .wav. if you want a second challenge after you finish with wc1/2 there's always super wing commander for mac... good luck decoding those audio formats though. I'd love to see this idea taken up with wing commander 3/4 and maybe prophecy as well.
I have Super Wing Commander for the Mac, actually. Decoding that is on the indefinite future to-do list. :)