WC1/2 clone (NOT remake) proposal

Discussion in 'Fan Projects & Editing' started by ZOmegaZ, Nov 19, 2007.

  1. ZOmegaZ

    ZOmegaZ Commodore

    Messages:
    103
    Likes Received:
    0
    Trophy Points:
    12,035
    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:
    Graphics
    Sounds
    Cutscenes
    Missions
    Briefings
    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?
  2. Lt.Death100

    Lt.Death100 Spaceman

    Messages:
    1,163
    Likes Received:
    0
    Trophy Points:
    0
    Location:
    The heart of all evil, Utah.
    Hmm, sounds like a good idea. I don't know about the feasibility of it, though, how easy would that be to do?
  3. eddieb

    eddieb Vice Admiral Staff Member

    Messages:
    975
    Likes Received:
    2
    Trophy Points:
    32,385
    Location:
    Los Angeles
    Hehe, good luck.
  4. ZOmegaZ

    ZOmegaZ Commodore

    Messages:
    103
    Likes Received:
    0
    Trophy Points:
    12,035
    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.
  5. Mincemeat

    Mincemeat Doomsday's Neighbour

    Messages:
    330
    Likes Received:
    0
    Trophy Points:
    12,935
    Location:
    New Zealand
    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)
  6. ZOmegaZ

    ZOmegaZ Commodore

    Messages:
    103
    Likes Received:
    0
    Trophy Points:
    12,035
    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.
  7. overmortal

    overmortal Bearded Person

    Messages:
    2,395
    Likes Received:
    0
    Trophy Points:
    36,885
    Location:
    Middle of nowhere, NC, USA
    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.
  8. Ricochet

    Ricochet Spaceman

    Messages:
    167
    Likes Received:
    0
    Trophy Points:
    0
    sounds cool... good luck with your work... one question though: why python?
  9. ZOmegaZ

    ZOmegaZ Commodore

    Messages:
    103
    Likes Received:
    0
    Trophy Points:
    12,035
    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.
  10. ELTEE

    ELTEE Spaceman

    Messages:
    1,022
    Likes Received:
    7
    Trophy Points:
    50
    Location:
    Nanuet, NY
    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!
  11. Mace

    Mace Vice Admiral

    Messages:
    1,459
    Likes Received:
    12
    Trophy Points:
    33,635
    Location:
    Netherlands
    Hell, just take your shot and let me know of the results. I'll play it.
  12. Kevin Caccamo

    Kevin Caccamo Commodore

    Messages:
    560
    Likes Received:
    3
    Trophy Points:
    16,185
    Gender:
    Male
    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...
  13. Winnyfred

    Winnyfred Captain

    Messages:
    242
    Likes Received:
    0
    Trophy Points:
    10,285
    ...Then when your done right a "How I did it" documentary! I would love to see this come to completion.
  14. ZOmegaZ

    ZOmegaZ Commodore

    Messages:
    103
    Likes Received:
    0
    Trophy Points:
    12,035
    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. :)
  15. Mincemeat

    Mincemeat Doomsday's Neighbour

    Messages:
    330
    Likes Received:
    0
    Trophy Points:
    12,935
    Location:
    New Zealand
    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...
  16. ZOmegaZ

    ZOmegaZ Commodore

    Messages:
    103
    Likes Received:
    0
    Trophy Points:
    12,035
    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. :)
  17. BradMick

    BradMick Spaceman

    Messages:
    980
    Likes Received:
    0
    Trophy Points:
    50
    Location:
    Fort Rucker, AL
    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.
  18. ZOmegaZ

    ZOmegaZ Commodore

    Messages:
    103
    Likes Received:
    0
    Trophy Points:
    12,035
    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.
  19. Darkmage

    Darkmage Vice Admiral

    Messages:
    861
    Likes Received:
    7
    Trophy Points:
    30,535
    Location:
    Australia
    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.
  20. ZOmegaZ

    ZOmegaZ Commodore

    Messages:
    103
    Likes Received:
    0
    Trophy Points:
    12,035
    I have Super Wing Commander for the Mac, actually. Decoding that is on the indefinite future to-do list. :)

Share This Page