WC Workshop Online

Yes, I know the Hell thread. maybe that was the trigger for my project as well.

I have downloaded all the available sources and definitely plan to give them a revival.

Btw, I was also unable to get WCNAV running.
I think I also had a problem with the other viewer.

Next I want to release the savegame editor...
 
WCNav does work in Dosbox. I just tried it.

The main four keys you will want to use are: , . c 1
 
Last edited:
Thanks Shades. Verified that.

For the record:

WCNAV works in dosbox, but you have to download eg this:
ftp://ftp.delorie.com/pub/djgpp/current/v2misc/csdpmi5b.zip

extract the contents to the same directory as your wcnav.exe

and run it in dosbox eg with
Code:
wcnav midgame.v00

wc1viewer requires you to have java installed.
start it with:
Code:
java -jar wc1viewer.jar pcship.v01

So it might be convenient to have those executables in the same directory as your resource files.
WCNAV and wc1viewer more or less try to achieve the same goal.
As far as I can tell, wcnav does a better job.

Anyone wanting to run some of the old *.BAS files (ie DOS QBasic source files) should google for qb64.
Unfortunately it's a really large download. But the executable (which is really the only file required) itself is only about 5mb.

You may then be able to run eg WC1.BAS simply by calling

Code:
qb64 wc1.bas
 
I have to admit that this got me reinvigorated in my project.
I was looking through my scrips files and I found one with a new layout which I started working on. I like it much better and I would like to finish it but I don't have time to take the pictures I need.
I can work on the document at work but playing games at work...well, that's kind of frowned up. Even games as good as WC.
If anyone would like to help I need pics from WC1 from every bar scene (with both pilots), pics of every person that talks in the briefing, pics of every debriefing (with both pilots), and pics of each pilot that talks in the debriefing. This would help me get through this much faster.
Pics of the Nav maps too if people want the Nav points put in as well.

Thanks for any help you can give.

Sincerely,
Shades
 
Short update:
No new release yet, but I am just working on some awesome stuff.
Well, developers will find it awesome.
I do, at least.

As some of you might have found out on their own through the years, working on fan projects may become tedious.
At first it's all exciting and new and you learn so much new stuff and you have so many great ideas.
But then, even fan projects consist of daily routine. (just 17 more ships to work on, only 5 scenarios to write, etc...)

It's more or less the same with programming.
To be precise, converting binary files from their binary form to something usable and displayable is amazing at first:
"Wow, look at all those dialogs, with all branches! And here, you see that 'Spirit' string? That's the gal from the game. And it's her name, right inside my application. Directly from the game files! And there ..."
I think you got it.
But after mapping file 1, you map file 2 and then file 3.
And it's all the same. Different content, but same algorithm.

Once you can read all the files, you're not done. Oh no, sir.
You have to be able to generate such binary files as well.
You want your campaign not only to be visible on some sleazy website, you want to play it (you know which site I'm talking about).

So every single binary file which has been read, now has to be written.
So all the same conditions, loops, variables and constants again.
Just the other way around. Going out instead of coming in. For every single file.

And that's exactly why I have come up with something different.
I'm currently working on a mapping library, which allows me (and you, but so far it's all about me) to define properties and offsets in a mapping file.

Some reader algorithm then uses the offsets defined in that mapping file and fills it into some shiny new object inside my application.

The mapping file for the savegames looks like this:
Code:
class=test.Wc1Savegame
size=828
property=name,offset=0,length=16
property=occupied,offset=17
property=scoreboardEntries[],mapping=savegame_scoreboard_entry,offset=18,times=8
property=bronzeStars,offset=364
property=silverStars,offset=365
property=goldStars,offset=366
property=goldenSun,offset=367
property=mission,offset=381
property=series,offset=382
property=pilotStatus[],offset=392,times=8
property=ace1,offset=408
property=ace2,offset=409
property=ace3,offset=410
property=ace4,offset=411
property=day,offset=412
property=promotion,offset=420
property=victory,offset=424
property=campaign,offset=426

That scoreboardEntry property itself has a submapping, which is defined in another file:

Code:
class=test.Wc1SavegameScoreboardEntry
size=38
property=name,offset=0,length=14
property=callsign,offset=14,length=14
property=unknown1,offset=28
property=rank,offset=30
property=sorties,offset=32
property=kills,offset=34
property=unknown2,offset=36

Look, ma! No code! It's all declarative!
The programmatical approach took about 80 lines of code. The declarative took about 20. And: the mapping file can also be used by the writer, which would be another 80 lines of code in Java.

The "class" in the first line defines the Java class I'm actually working with in my project.
Every property in the mapping file exists as property in that Java class.
Some loops and some ifs take care of transporting the bytes into the object. And back again.

And, it already works (find the code here, if you're so inclined).
Problem still is, that I have not yet been able to identify every single bit.
So the mapping library still lacks the possibility to conveniently handle "unknown" data (eg fill it with zeroes, fill in some pre-defined bytes, etc).
The game already shows the titles of the savegames in the barracks, but loading one crashes the game.
But the concept works and I'm sure this will help the project to stay alive in the long term.
Less tedious tasks means more time for the awesome stuff.

So much for that (not so) short update.
 
Hi,

a new version of the workshop is available on http://www.wcworkshop.net.

The Savegame Generator is now available.
I have tried to prevent invalid input but it may not be perfect.
So if you manage to provoke some error when trying to download a generated savegame file, please tell me.

All unknown values are filled with data from a savegame that was created just after starting the game.
The possibility of uploading and modifying your own savegames is not yet available.

If the generator works well, I will leave it in it's current state for some while and move on to other things.
First is some code-refactoring. The custom readers which parse the .000 files will be replaced by the generic binary mapping framework I have bragged about.
Maybe the framework will have to be expanded somewhat because the .000 files are more complex than the savegame files.
So it will take some days to get this working.
Besides refactoring, I will continue to work on nav point and ship stuff.

Also, the UI is far from perfect. Scrolling inside the tabs may be incorrect if your window size is too small.
But I think I will not concentrate on the UI until some real editing is possible.

I hope this will be of good use to you, I'm really looking forward to your feedback!
 
Very Nice!
I'm sure when we can upload our own saved files and can compare them we will be better able to figure out the unknown vales.

Nice job! Keep up the good work.
 
New Update:

The cutscreen pages now display more detailed information.
Also, I have finished refactoring. Everything that has been parsed programmatically before, is now parsed by the binary mapping library I wrote.

The commands on the cutscreen pages are not yet visualized very good.
I will take care of this next.

Btw, does anyone know, what the value in the last column ("unknown") means?
Some duration value?

If you find any errors, anywhere in the application, please tell me.

Thanks!
 
!!! U P D A T E !!!

After about a month of coding, I finally have some code in place which is able to fully dynamically generate cutscenes.
I don't have the according user interface yet for you to try, but the following video should show that it's actually working.


I have not messed with phonetics and facial expressions, I just wantet to show some small "technology demo".

Also, you may download the according file here to try on your local installation.
Just replace the BRIEFING.000 file. The new cutscenes are right on the first mission.

If the code generator did everything right, no crashes should occur due to wrong offsets and stuff. The whole game should be perfectly playable.

Hope you like it!

Feedback welcome :-)
 

Attachments

That's AMAZING! Great job!

The phonetics shouldn't be difficult, just time consuming. I would suggest making a phonetics database with all the plane text words and their associated phonetic words. With this incorporated into your program you can have it automatically fill in the phonetics as you are typing the clear text.

I did a quick look, I'm not sure what the "unknown" values are for yet in our cutscenes. At first I was thinking they were the background picture or the close up and far away scene but that doesn't appear to be the case. It doesn't seem to be part of the conversation branch either.

Keep up that great work!

Sincerely,
Shades
 
Thanks, guys!
I really appreciate it!

Shades, that's a good idea with the phonetics database. Shouldn't be too much trouble to implement.

I first thought of the unknown values to be some additional timing info for the scene. But that does not seem to be the case either.
At least it's not something as simple as "display the screen for 6 seconds".

Here's how I will go on:
I was asking myself whether I should continue adding information to the page, or if I should add editing capabilities for the data known so far.
By checking the access logs, I found out that people mostly click through several pages and within a minute, most of them leave the page.

Thus, the answer is clear:
I will start working on providing unique workspaces, where you can upload, modify, save and download generated content.

As the upcomming tasks are quite extensive, there won't be new releases for some time.
As always, anyone who want's to be a little bit more up-to-date, may check my checkin comments at https://github.com/delMar43/wcworkshop.
 
My 2cents and dream sheet.

The piece I'm most looking forward to will be the conversation branching. This is arguably the most difficult and will understandably be the last on the list.
I would love to see an enhanced WCViewer incorporated. One that would not only allow us to view and save the pictures but play the scene and record it or record all the frames and make an animated gif.

What people will like the most would be:
  1. The Save Game Editor mainly because of the import bug in SM and the fact that we can not save our character after the last battle of each game. I think both of these could be patched at some point.
  2. The Ship editor/importer and tutorial . With the amazing import HCl did I think this could take off. I know we have the 3D-Max files of the WC2 ships archived I don't know about WC1. If we do, it would be interesting if someone were to import higher-res spirits of the WC1 ships with more angles, maybe even having different ships sizes, to create a "Wing Commander Enhanced" edition.
  3. A Mission Editor would probably start coming into play here allowing people to start flying in or against the ship just imported.
  4. Understanding the triggers in the missions would hopefully lead understanding how the conversation branching works and create a Scene Editor.
  5. At this point a way to make a new executable might need to be created to allow people to distribute their game.
I hope that thought process makes sense. I doubt I can be of much help with any of this but I might be able to help with creating a spread sheet with all the phonetics. Once this is done maybe the database can be left opensource to allow people to add more words as they write their own conversation in the Scene Editor.

Sincerely,
Shades
 
delMar,
Things I noticed in your Save Game Generator
Kilrathi Aces should have a max-min field. Maybe even make it a drop field. 1=Alive, 0=Dead. (I don't know if this is correct I'm just guessing.)
On the scoreboard, (Maybe make this a drop field also) the rank numbers represent:
  • 0=2 Lt.
  • 1=1 Lt
  • 2=Capt
  • 3=Major
  • 4=Lt. Col (This is achievable in one of the SM but I don't know if this would break WC1. Should be tested.)
Interesting to know that a wingman's rank can change for purposes of story creation.

Since the scoreboard constantly changes could it be that the Unknown values represent how they change?

For example: Tanaka, for every 3 (Unk1) sorties her kill increase by 1 (Unk2).
That thought just came out of thin air but I thought I'd put it out there anyway.

Also what is the value and position for KIA?

Edit: I just remembered a Shareware CD (from 1991) I bought years ago that has some WC editors on it along with 48 missions they made. I never took the time to figure out how to get it to work. It will probably require dosbox but it does have a save game editor and ship editor that you might find helpful. PM me with your email and I'll send it to you. It's will be a 11mb zip file of the while CD. There is a lot of stuff on it that you won't need but just in case I'll send it all. My one request is that when you figure out how to get it working please let me know.
 
Last edited:
Shades,

thanks for the detailed feedback.
It seems we share the same vision :-)

If you could lend a hand in creating the phonetic database, that would be great.
Instead of writing to a spreadsheet, I recommend writing to a plain text file like this
Code:
dismissed=dasmasd
that=tat
that's=tats
all=al
then=ten

A file like this could be directly read by the program. A spreadsheet file would require additional handling before being able to use it.


A mission editor is definitely part of my primary mission objectives on this one. It will be a campaign editor, to be precise :-)
Conversation branching is already known to some degree (see the briefing_format.txt file) and some basic conversation editor is also on my list. And, it's not the last point, btw.

Last are things like cutscene previews (yes, I was thinking about them too. Exporting them to animated gifs did not come to my mind, though). They are cool because you don't have to change to alt-tab to the game every time you make a change. But before creating fancy stuff like this, I'd like to get the basic things done.

Also, I'd love to have the option of being able to import new images of any kind (ships, planets, ...).
Uploading 3D models and automatically generate images in all angles is not so much top priority, though.

Thanks for checking out the savegame editor. Your proposed improvements should not take too much time, so I will try to look into them soon. And they are perfectly viable, by the way.
Your theory about the unknown values might be quite real. It would be great if someone found the time and tried (I will do myself, once I find the time. But if someone else has up to then, great).
Concerning your earlier request in this thread: you should be able to generate savegames for all missions, that could help making screenshots of everything throughout the game much easier for you.

Btw, the Kilrathi ace flags are (hex):
0A=KIA, 01=not seen, 29=fled

I'd love to have the contents from that shareware CD, thanks for offering. I will PM you right away.

Again, thanks for your feedback.
As the festive open letter of thanks to the CIC shows, it's all about the community.
I really appreciate people picking up my ideas and talking about them.
 
Last edited by a moderator:
Back
Top